温馨提示×

ubuntu lsnrctl安全设置

小樊
37
2025-10-08 15:34:53
栏目: 智能运维

Ubuntu环境下lsnrctl的安全设置指南

lsnrctl是Oracle数据库的核心管理工具,用于控制监听器服务。在Ubuntu系统中,需通过权限管理、配置加固、加密通信、访问控制及监控审计等多维度措施,确保其运行安全。以下是具体实施步骤:

一、权限与所有权管理

  1. 修改lsnrctl文件权限
    lsnrctl通常位于Oracle软件目录(如/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl)。通过chmod命令限制权限,仅允许所有者(root或oracle)执行:

    sudo chmod 750 /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl 

    或更严格的700(仅所有者可读、写、执行)。

  2. 调整文件所有者和组
    将lsnrctl的所有者设为root,组设为oracle(Oracle数据库默认组),避免普通用户篡改:

    sudo chown root:oracle /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl 
  3. 配置sudoers文件
    若需允许特定用户(如admin)以oracle身份运行lsnrctl(无需密码),使用visudo安全编辑/etc/sudoers文件,添加:

    admin ALL=(oracle) NOPASSWD: /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl * 

    此配置限制仅admin用户可免密调用lsnrctl。

二、监听器配置文件安全

  1. 设置listener.ora权限
    listener.ora(位于$ORACLE_HOME/network/admin/)包含监听器端口、地址等敏感信息,需限制为oracle用户和oinstall组可读写:

    sudo chown oracle:oinstall $ORACLE_HOME/network/admin/listener.ora sudo chmod 660 $ORACLE_HOME/network/admin/listener.ora 
  2. 启用ADMIN_RESTRICTIONS
    在listener.ora文件末尾添加以下参数,禁止动态修改监听器配置(如端口、地址),需重启监听器生效:

    ADMIN_RESTRICTIONS_LISTENER = ON 

    此设置可防止未授权用户通过lsnrctl命令修改监听器行为。

三、加密通信配置

  1. 启用SSL/TLS加密
    为保护数据传输安全,需配置监听器使用SSL。步骤如下:

    • 生成SSL证书:使用OpenSSL创建自签名证书(有效期365天):
      openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem 
    • 配置listener.ora:添加SSL监听地址及加密参数,启用TCPS协议(默认端口1522):
      LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521)) # 普通TCP端口 (ADDRESS = (PROTOCOL = TCPS)(HOST = your_host)(PORT = 1522)) # SSL加密端口 ) ) SECURITY_LISTENER = (ENCRYPTION_CLIENT = REQUIRED) # 强制客户端使用加密 (ENCRYPTION_TYPES_CLIENT = (AES256, AES192, AES128)) # 支持的加密算法 (SSL_VERSION = 1.2) # 使用TLS 1.2及以上版本 
    • 重启监听器:使配置生效:
      lsnrctl stop && lsnrctl start 
  2. 配置Oracle Wallet管理证书
    使用Oracle Wallet安全存储证书和私钥,避免明文泄露:

    • 创建Wallet:
      mkstore -wrl /path/to/wallet -create 
    • 导入证书和私钥:
      mkstore -wrl /path/to/wallet -importcert -alias server_cert -file cert.pem mkstore -wrl /path/to/wallet -importkey -alias server_key -file key.pem 
    • 配置sqlnet.ora:指定Wallet路径及TCPS协议:
      SQLNET.AUTHENTICATION_SERVICES = (TCPS) WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /path/to/wallet))) 
    • 更新tnsnames.ora:将服务地址改为TCPS协议(端口1522)。

四、访问控制设置

  1. 限制监听器访问IP
    在listener.ora文件中,通过HOST参数指定允许访问监听器的IP地址(如仅允许内网IP192.168.1.0/24):

    LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) # 仅允许指定主机 ) ) 

    此配置可阻断外部非法IP的连接请求。

  2. 配置防火墙规则
    使用Ubuntu的ufw(Uncomplicated Firewall)限制1521(TCP)和1522(TCPS)端口的访问,仅允许信任IP:

    sudo ufw allow from 192.168.1.0/24 to any port 1521 proto tcp # 允许内网访问普通端口 sudo ufw allow from 192.168.1.0/24 to any port 1522 proto tcp # 允许内网访问SSL端口 sudo ufw enable # 启用防火墙 

    或使用iptables实现更细粒度的控制。

五、密码与审计管理

  1. 设置强密码
    为监听器设置复杂密码(包含大小写字母、数字、特殊字符),并定期更换(每90天):

    lsnrctl LSNRCTL> SET PASSWORD # 进入密码修改界面 输入旧密码:****** 输入新密码:*********** 确认新密码:*********** LSNRCTL> EXIT 
  2. 启用日志审计
    监听器日志(位于$ORACLE_HOME/network/log/listener.log)记录了所有连接请求和配置变更,需定期检查异常行为(如频繁的失败登录尝试)。可通过tail命令实时监控:

    tail -f $ORACLE_HOME/network/log/listener.log 

    或配置日志轮转(如使用logrotate),避免日志文件过大。

六、SELinux/AppArmor配置(可选)

若系统启用SELinux或AppArmor,需调整策略允许lsnrctl运行:

  • SELinux:检查状态(sestatus),若为Enforcing模式,使用audit2allow生成自定义策略:
    sudo ausearch -c 'lsnrctl' --raw | audit2allow -M my-lsnrctl sudo semodule -i my-lsnrctl.pp 
  • AppArmor:编辑/etc/apparmor.d/usr.sbin.lsnrctl文件,添加允许的文件和目录访问规则(如/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl)。

通过以上步骤,可全面强化Ubuntu环境下lsnrctl的安全性,有效防范未授权访问、数据泄露及恶意篡改等风险。实施前需备份相关配置文件(如listener.ora、sqlnet.ora),并在测试环境验证配置的正确性。

0