CentOS系统作为常用的服务器操作系统,默认安装后会启用部分网络协议和后台服务,其中很多组件在实际业务场景中并不需要。这些多余的组件会占用CPU、内存等系统资源,同时也会扩大系统的攻击面,增加安全风险。因此合理禁用不必要的网络协议和服务,是CentOS系统优化和安全加固的重要环节。

识别当前运行的服务和网络协议
在禁用操作前,首先需要明确系统当前开启了哪些服务和网络协议,避免误禁用必要的组件导致业务故障。
查看系统运行的服务
使用systemctl命令可以查看系统所有服务的运行状态,执行以下命令列出所有已启动的服务:
# 查看所有处于active状态的服务 systemctl list-units --type=service --state=active
如果需要查看所有服务的状态包括未启动的,可以去掉--state参数:
# 查看所有服务状态 systemctl list-units --type=service --all
查看系统监听的网络端口和协议
通过ss命令可以查看系统当前监听的端口和对应的协议,判断哪些网络协议正在被使用:
# 查看所有监听的TCP和UDP端口 ss -tulnp
输出结果中,Proto列会显示协议类型,Local Address列显示监听的地址和端口,Program name列显示对应的服务进程,根据这些信息可以匹配到对应的系统服务。
禁用不必要的系统服务
CentOS系统中使用systemctl工具管理服务,禁用服务分为停止当前运行的服务和禁止服务开机自启两个步骤,避免服务重启后再次运行。
停止运行中的服务
使用systemctl stop命令可以停止当前正在运行的服务,例如要停止cups打印服务,执行以下命令:
# 停止cups服务 systemctl stop cups
禁止服务开机自启
停止服务后,还需要禁止服务开机自启,否则系统重启后服务会再次运行:
# 禁止cups服务开机自启 systemctl disable cups
常见可禁用的非必要服务示例
以下是CentOS系统中常见的非必要服务,可根据实际业务场景选择禁用:
- cups:打印服务,无打印需求可禁用
- avahi-daemon:零配置网络服务,局域网无自动发现需求可禁用
- bluetooth:蓝牙服务,服务器无蓝牙设备可禁用
- telnet:明文远程登录服务,已有ssh服务可禁用
- postfix:邮件发送服务,无邮件发送需求可禁用
禁用不必要的网络协议
除了禁用对应的服务,还可以通过内核参数和防火墙规则限制不必要的网络协议,比如禁用IPv6、限制UDP协议访问等。
禁用IPv6协议
如果业务仅使用IPv4,可以禁用IPv6协议减少系统开销,编辑sysctl配置文件添加内核参数:
# 编辑sysctl配置文件 vi /etc/sysctl.conf # 在文件末尾添加以下内容 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 # 加载配置使生效 sysctl -p
通过防火墙限制协议访问
使用firewall-cmd工具可以配置防火墙规则,限制不必要的协议访问,例如禁止UDP协议的53端口(DNS)外部访问:
# 禁止UDP 53端口的入站访问 firewall-cmd --permanent --add-rich-rule='rule protocol value=udp drop' # 重新加载防火墙规则 firewall-cmd --reload
如果仅允许特定协议的特定端口访问,可以先删除默认允许规则,再添加指定端口的允许规则,减少不必要的协议暴露。
操作验证
完成禁用操作后,需要验证操作是否生效,避免误禁用必要组件。
验证服务状态
使用systemctl status命令查看服务状态,确认服务已停止且不会开机自启:
# 查看cups服务状态 systemctl status cups
输出中如果显示Active: inactive (dead)且Loaded: disabled说明禁用成功。
验证网络协议状态
再次使用ss命令查看监听端口,确认对应的协议端口已经不再监听:
# 再次查看监听端口 ss -tulnp
如果之前对应的服务端口已经不在输出列表中,说明协议对应的服务已经成功禁用。
注意事项
禁用服务和协议前一定要确认业务是否依赖该组件,建议先在测试环境操作验证,确认无影响后再在正式环境执行。如果误禁用了必要服务,可以使用systemctl start和systemctl enable命令重新启动并启用服务。对于内核协议相关的修改,修改后建议重启系统验证配置是否持久生效。