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)和操作(如read、execute)。
4. 防火墙限制端口访问
Oracle监听器默认使用1521端口(TCP),需通过防火墙限制仅允许信任IP访问。以ufw为例:
sudo ufw allow from to any port 1521/tcp # 仅允许trusted_ip访问1521端口
sudo ufw enable # 启用ufw
若使用iptables,可添加如下规则:
sudo iptables -A INPUT -p tcp --dport 1521 -s -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)
以上就是关于“Ubuntu中lsnrctl的安全设置有哪些”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm