ubuntu

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运行:

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

0
看了该问题的人还看了