CentOS系统作为常用的服务器操作系统,默认的网络配置较为开放,若直接暴露在公网环境中,容易遭受端口扫描、恶意请求等风险,同时也可能导致系统运行产生的敏感数据被非法获取。通过合理的设置限制网络访问,能够有效提升系统安全性,保护用户隐私。

一、使用firewalld限制入站网络访问
CentOS 7及以上版本默认搭载firewalld防火墙工具,相比传统的iptables更易操作,我们可以通过它来过滤不必要的入站请求。
1. 基础规则配置
首先确保firewalld服务处于运行状态:
# 启动firewalld服务 systemctl start firewalld # 设置开机自启 systemctl enable firewalld # 查看当前服务状态 systemctl status firewalld
默认情况下firewalld会拒绝大部分入站请求,仅开放SSH服务的22端口,我们可以根据实际需求添加允许访问的端口:
# 开放80端口(HTTP服务) firewall-cmd --permanent --add-port=80/tcp # 开放443端口(HTTPS服务) firewall-cmd --permanent --add-port=443/tcp # 重新加载规则使配置生效 firewall-cmd --reload # 查看当前开放的端口列表 firewall-cmd --list-ports
2. 限制特定IP访问
如果需要仅允许指定IP访问系统服务,可以添加富规则实现:
# 允许192.168.1.100访问22端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' # 拒绝10.0.0.0/8网段的所有请求 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" drop' # 重新加载规则 firewall-cmd --reload
二、配置iptables实现更细粒度的流量管控
如果需要更复杂的规则控制,也可以使用iptables工具,适合熟悉底层网络规则的用户。
1. 基础过滤规则设置
首先安装iptables服务并关闭firewalld避免冲突:
# 停止并禁用firewalld systemctl stop firewalld systemctl disable firewalld # 安装iptables服务 yum install -y iptables-services # 启动并设置开机自启 systemctl start iptables systemctl enable iptables
设置默认规则,拒绝所有入站请求,允许所有出站请求,允许已建立的连接:
# 清除现有规则 iptables -F # 设置默认入站规则为拒绝 iptables -P INPUT DROP # 设置默认出站规则为允许 iptables -P OUTPUT ACCEPT # 设置转发规则为拒绝 iptables -P FORWARD DROP # 允许本地回环接口流量 iptables -A INPUT -i lo -j ACCEPT # 允许已建立的连接和相关连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许SSH端口访问 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 保存规则 service iptables save
三、网络参数优化保护隐私
除了防火墙规则,调整系统网络参数也能减少隐私泄露风险,避免系统被轻易探测。
1. 关闭ICMP响应
关闭ICMP协议响应可以避免系统被ping探测,减少暴露风险:
# 临时关闭ICMP响应 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all # 永久配置,编辑sysctl配置文件 echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf # 加载配置生效 sysctl -p
2. 隐藏系统版本信息
系统默认会在网络响应中携带版本信息,我们可以修改相关配置隐藏这些信息:
# 修改SSH配置隐藏版本 sed -i 's/#Banner none/Banner none/' /etc/ssh/sshd_config sed -i 's/#DebianBanner yes/DebianBanner no/' /etc/ssh/sshd_config # 重启SSH服务 systemctl restart sshd # 修改内核版本显示,编辑/etc/issue.net文件清空内容 echo "" > /etc/issue.net
四、限制不必要的出站流量
除了入站限制,控制出站流量可以避免系统被入侵后作为跳板发起攻击,也能防止敏感数据外传。
我们可以通过firewalld限制仅允许系统访问必要的外部服务:
# 仅允许访问指定域名的DNS解析结果,先获取目标IP
# 假设仅允许访问ipipp.com的服务器
target_ip=$(dig +short ipipp.com | head -n 1)
# 添加规则允许访问目标IP的443端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination address="'${target_ip}'" port protocol="tcp" port="443" accept'
# 拒绝其他所有出站请求
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -j DROP
# 重新加载规则
firewall-cmd --reload
五、禁用不必要的网络服务
系统默认运行的一些非必要网络服务可能成为攻击入口,我们可以关闭这些服务:
# 查看当前运行的服务 systemctl list-units --type=service --state=running # 关闭不必要的服务,比如telnet、rsh等 systemctl stop telnet.socket systemctl disable telnet.socket systemctl stop rsh.socket systemctl disable rsh.socket
完成以上设置后,CentOS系统的网络访问会被严格限制,大部分恶意探测和非法请求都会被拦截,同时系统暴露的敏感信息减少,能够有效保护用户隐私。后续可以根据业务需求调整规则,定期查看防火墙日志排查异常访问。