CentOS 7 iptables配置
一、背景介绍
CentOS 7是一款广泛使用的Linux操作系统,其安全性是用户关注的重点之一,默认情况下,CentOS 7使用firewalld作为防火墙管理工具,但iptables作为一种强大的基于包过滤的防火墙工具,在许多场景下仍然被广泛使用,本文将详细介绍如何在CentOS 7上安装、配置和管理iptables,以确保系统的安全性。
二、iptables简介
iptables是Linux内核中的一个子系统模块,用于设置、维护和检查IP包过滤规则,它功能强大且灵活,可以对流入、流出和流经服务器的数据包进行精细的控制,CentOS 7默认并没有安装iptables,需要用户自行安装和配置。
三、安装与配置步骤
检查并禁用firewalld
在安装iptables之前,需要先检查并禁用firewalld防火墙:
查看firewalld状态 systemctl status firewalld
如果firewalld处于开启状态,执行以下命令关闭它:
关闭firewalld systemctl stop firewalld
并禁止其在开机时启动:
禁止firewalld开机自启 systemctl disable firewalld
安装iptables
我们需要安装iptables:
安装iptables yum install y iptablesservices
启动iptables
安装完成后,启动iptables服务:
启动iptables systemctl start iptables
并设置其在开机时自动启动:
设置iptables开机自启 systemctl enable iptables.service
查看iptables状态与规则
启动iptables后,我们可以查看其当前状态和默认规则:
查看iptables状态 systemctl status iptables
输出结果中绿色的“active (exited)”表示iptables已经成功启动。
查看默认规则:
查看iptables默认规则 iptables L
这将列出当前系统中的所有iptables规则。
备份iptables规则
在进行任何修改之前,建议先备份当前的iptables规则:
备份iptables规则 cp a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
6. 添加或修改规则(以放行80端口为例)
假设我们需要开放HTTP服务的80端口,可以使用以下命令添加规则:
添加规则放行80端口 iptables I INPUT p tcp dport 80 m state state NEW j ACCEPT
查看规则是否生效:
查看规则是否生效 iptables L
生效后保存规则:
保存添加的规则 iptablessave > /etc/sysconfig/iptables
并确保iptables在开机时加载这些规则:
设置iptables开机自启 systemctl enable iptables.service
至此,我们已经完成了在CentOS 7上安装、配置和管理iptables的基本步骤,重启服务器后,新的iptables规则将生效。
四、常见配置案例与示例
IP过滤
禁止特定IP地址的所有类型数据接入:
禁止192.168.200.113 IP地址的所有类型数据接入 iptables A INPUT ! s 192.168.200.113 j DROP
开放多个端口或端口范围
开放TCP协议的多个端口或一个端口范围:
开放TCP协议的22和80端口 iptables A INPUT p tcp dport 22 j ACCEPT iptables A INPUT p tcp dport 80 j ACCEPT
或者开放一个端口范围:
开放TCP协议的2280端口范围 iptables I INPUT p tcp dport 22:80 j ACCEPT
禁止特定端口流出
不允许HTTP服务的80端口数据流出:
禁止80端口流出 iptables I OUTPUT p tcp dport 80 j DROP
配置自定义链与复杂规则
用户可以根据需求自定义链,并在其中添加复杂的匹配条件和目标动作,以实现更精细的网络流量控制,创建一个名为“DDOSguard”的自定义链来防止DDoS攻击:
创建一个自定义链DDOSguard iptables N DDOSguard 在INPUT链中引用DDOSguard链 iptables A INPUT j DDOSguard 定义DDOSguard链中的规则(示例:限制每分钟来自同一IP的连接数不超过100) iptables A DDOSguard m connlimit connlimitabove 100/min connlimitmask 64 connlimitrep HC connlimitzone 32 connmarkset 1 j REJECT rejectwith tcpreset
规则将限制每分钟来自同一IP的连接数,超过限制的连接将被拒绝并发送TCP重置报文。
五、注意事项与最佳实践
备份规则:在修改iptables规则之前,务必备份当前的规则集,以防万一出现问题可以快速恢复。
最小权限原则:只开放必要的端口和服务,减少潜在的攻击面。
定期更新:保持系统和软件的最新状态,及时修复已知的安全漏洞。
日志记录:启用iptables的日志功能,记录被拒绝的连接和可疑活动,以便后续分析和审计。
测试环境:在生产环境应用新规则之前,建议在测试环境中充分测试,确保规则的正确性和有效性。