温馨提示×

Ubuntu中lsnrctl的安全设置有哪些

小樊
41
2025-10-25 14:47:32
栏目: 智能运维

Ubuntu中lsnrctl的安全设置措施

1. 文件权限与所有权管理

确保lsnrctl二进制文件的权限严格受限,仅允许授权用户(如oracle)访问。通常需将文件所有者设为root,组设为oracle,并设置权限为750(所有者可读、写、执行;组可读、执行;其他用户无权限)。例如:

sudo chown root:oracle /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl  # 修改所有者和组
sudo chmod 750 /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl        # 设置权限

此外,监听器配置文件(listener.ora,位于$ORACLE_HOME/network/admin)需设置为600权限,防止未授权修改:

sudo chmod 600 $ORACLE_HOME/network/admin/listener.ora

2. sudoers配置限制执行权限

通过sudoers文件控制哪些用户可以执行lsnrctl命令,避免直接赋予普通用户root权限。使用visudo命令安全编辑/etc/sudoers,添加如下规则(以oracle用户为例):

oracle ALL=(oracle) NOPASSWD: /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl *  # 允许oracle用户无需密码执行lsnrctl

此配置仅允许指定用户以oracle身份运行lsnrctl,降低权限滥用风险。

3. SELinux/AppArmor强制访问控制

若系统启用SELinux或AppArmor,需配置相应策略限制lsnrctl的访问:

  • SELinux:检查状态(sestatus),若为Enforcing模式,可为lsnrctl设置正确的安全上下文:
    sudo chcon -t oracle_exec_t /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl
    
  • AppArmor:检查状态(sudo aa-status),编辑/etc/apparmor.d/usr.sbin.lsnrctl文件,添加允许lsnrctl访问的路径(如$ORACLE_HOME)和操作(如readexecute)。

4. 防火墙限制端口访问

Oracle监听器默认使用1521端口(TCP),需通过防火墙限制仅允许信任IP访问。以ufw为例:

sudo ufw allow from <trusted_ip> to any port 1521/tcp  # 仅允许trusted_ip访问1521端口
sudo ufw enable                                      # 启用ufw

若使用iptables,可添加如下规则:

sudo iptables -A INPUT -p tcp --dport 1521 -s <trusted_ip> -j ACCEPT  # 允许trusted_ip
sudo iptables -A INPUT -p tcp --dport 1521 -j DROP                   # 拒绝其他IP

5. 监听器配置安全参数

修改listener.ora文件,增强监听器的安全性:

  • 密码验证:设置强密码(通过lsnrctl set password命令),并定期更换;
  • 加密通信:启用SSL/TLS,要求客户端使用加密连接,指定加密类型(如AES256)和版本(如TLS1.2):
    SECURITY_LISTENER = (ENCRYPTION_CLIENT = REQUIRED)
    ENCRYPTION_TYPES_CLIENT = (AES256, AES192, AES128)
    SSL_VERSION = 1.2
    SSL_CIPHER_SUITES = (TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256)
    
  • 访问控制:通过HOST参数限制监听器绑定的IP地址(如仅绑定内网IP),或启用ADMIN_RESTRICTIONS阻止运行时修改(需停止监听器后修改):
    ADMIN_RESTRICTIONS_LISTENER = ON
    LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))))
    

6. 强密码策略与审计

  • 强密码:为数据库用户和监听器设置复杂密码(包含大小写字母、数字、特殊字符,长度≥8位),并通过PAM模块强制密码复杂度;
  • 安全审计:启用auditd服务记录数据库活动,监控listener.log(位于$ORACLE_HOME/network/log)中的异常访问(如频繁失败登录、非法IP尝试连接),及时预警潜在攻击。

7. Oracle Wallet管理证书

若启用SSL加密,需使用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):
    WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /path/to/wallet)))
    SQLNET.AUTHENTICATION_SERVICES = (TCPS)
    

0