CentOS作为企业级服务器常用的Linux发行版,默认安装后会启用部分存在安全漏洞风险的网络协议和服务,比如Telnet、FTP、RSH等明文传输协议,以及不必要的RPC、CUPS等服务,这些组件很容易成为攻击者入侵系统的入口。对生产环境的CentOS系统进行安全加固时,禁用这些不安全的网络协议和服务是必不可少的操作步骤。

一、识别系统中不安全的网络协议和服务
在禁用操作前,首先需要明确当前系统运行了哪些存在风险的组件,可以通过以下两种方式排查。
1. 查看运行中的服务
使用systemctl工具列出所有正在运行的服务,筛选不必要的高风险服务:
# 列出所有运行中的服务 systemctl list-units --type=service --state=running # 查看指定服务的状态,比如telnet服务 systemctl status telnet.socket
2. 查看开放的端口
通过ss命令查看系统当前开放的端口,对应端口的监听程序就是运行中的网络服务:
# 查看所有监听的TCP和UDP端口 ss -tulnp
常见的高风险端口包括23(Telnet)、21(FTP)、512-514(RSH相关)、631(CUPS打印服务)等,对应这些端口的服务都需要优先处理。
二、禁用不安全的网络服务
1. 停止并禁用高风险服务
对于确认不需要的不安全服务,先停止当前运行实例,再设置开机不自动启动:
# 停止telnet服务 systemctl stop telnet.socket # 设置telnet服务开机不启动 systemctl disable telnet.socket # 停止vsftpd服务(FTP服务) systemctl stop vsftpd systemctl disable vsftpd # 停止cups打印服务 systemctl stop cups systemctl disable cups # 停止rsh相关服务 systemctl stop rsh.socket systemctl stop rlogin.socket systemctl stop rexec.socket systemctl disable rsh.socket rlogin.socket rexec.socket
2. 卸载不必要的服务软件包
如果确认后续不会使用这些服务,可以直接卸载对应的软件包,避免误启动:
# 卸载telnet相关包 yum remove telnet telnet-server -y # 卸载vsftpd yum remove vsftpd -y # 卸载rsh相关包 yum remove rsh rsh-server -y # 卸载cups yum remove cups -y
三、禁用不安全的网络协议
1. 禁用不安全的传输层协议
部分老旧协议如TLS 1.0、TLS 1.1存在已知安全漏洞,需要在系统层面禁用,以SSH服务为例,修改配置文件限制协议版本:
# 编辑SSH配置文件 vi /etc/ssh/sshd_config # 找到Protocol行,修改为仅支持SSH 2协议,去除SSH 1相关配置 Protocol 2 # 重启SSH服务生效 systemctl restart sshd
2. 禁用IP转发和源路由等风险网络特性
修改内核参数关闭不必要的网络特性,编辑sysctl配置文件:
# 编辑sysctl配置 vi /etc/sysctl.conf # 添加以下内容,禁用IP转发、源路由、ICMP重定向等 net.ipv4.ip_forward = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 # 加载配置生效 sysctl -p
四、通过防火墙限制风险端口
即使已经停止了风险服务,也可以通过防火墙进一步限制端口访问,作为额外的安全层:
# 关闭防火墙中风险端口,以firewalld为例 # 移除23端口(Telnet)的开放规则 firewall-cmd --permanent --remove-port=23/tcp # 移除21端口(FTP)的开放规则 firewall-cmd --permanent --remove-port=21/tcp # 移除631端口(CUPS)的开放规则 firewall-cmd --permanent --remove-port=631/tcp # 重新加载防火墙规则 firewall-cmd --reload
五、验证禁用效果
完成所有操作后,需要再次验证风险组件是否已经成功禁用:
# 再次查看运行中的服务,确认风险服务不在列表中 systemctl list-units --type=service --state=running | grep -E "telnet|vsftpd|cups|rsh" # 再次查看开放端口,确认风险端口没有监听 ss -tulnp | grep -E "23|21|631|512|513|514"
如果以上命令没有返回任何结果,说明不安全的网络协议和服务已经成功禁用,系统安全等级得到提升。