一、基本概念
iptables 是在 Linux 内核中实现的强大的防火墙工具,它可以用来检查、修改数据包,且还可以充当 NAT 服务器使用,是 Linux 服务器必备防护工具之一。
在 CentOS 中,安装 iptables 后,通常要配置防火墙规则,以保证服务器安全。
二、iptables配置文件详解
CentOS 中 iptables 配置文件为 /etc/sysconfig/iptables,使用文本编辑器打开该文件:
$ sudo vi /etc/sysconfig/iptables
可以看到此文件中包含有关规则和链的信息,以下是一些基本的规则说明:
- -A:增加规则
- -D:删除规则
- -I:插入规则
- -j:规则动作
- -p:协议
- --dport:目标端口
- -s:源地址
- -d:目标地址
- -i:输入接口
- -o:输出接口
三、iptables 命令详解
以下是几个常用的 iptables 命令:
- iptables -L [-n]:列出所有规则,-n 表示不进行主机名和端口号的解析。
- iptables -A INPUT -p tcp --dport 22 -j ACCEPT:添加允许 SSH 连接的规则。
- iptables -A INPUT -s 192.0.2.0/24 -j DROP:拒绝来自 192.0.2.0/24 网络的所有连接。
- iptables -D INPUT 1:删除 INPUT 链中的第一个规则。
- iptables -P FORWARD DROP:将 FORWARD 链上的默认策略设为 DROP。
- iptables-save > /etc/sysconfig/iptables:将当前 iptables 规则保存到 /etc/sysconfig/iptables 文件中。
四、常用防火墙规则详解
1. 允许本地回环接口
本地回环接口是指接口地址为 127.0.0.1 的网络接口。在 CentOS 中,可以使用以下命令添加这个规则:
iptables -A INPUT -i lo -j ACCEPT
2. 允许 SSH 连接
SSH 服务是连接到 CentOS 服务器的必要服务之一,可以使用以下 iptables 规则允许 SSH 连接:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
3. 开启 HTTP 和 HTTPS 服务
在 CentOS 中启用 HTTP 和 HTTPS 服务需要开启 80 和 443 端口。可以使用以下命令添加规则:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
4. 拒绝 ICMP 请求
由于 ICMP 协议的存在,攻击者可以使用 ping 等命令进行网络扫描。可以使用以下命令阻止 ICMP 请求:
iptables -A INPUT -p icmp -j DROP
5. 限制连接数
为防止恶意访问,可以限制对服务器的连接数。以下是一个适用于 HTTP 服务器的示例规则:
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP
五、iptables 配置实例
以下是一个基本的 iptables 配置实例:
# 开启回环接口 iptables -A INPUT -i lo -j ACCEPT # 开启 SSH 连接 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 开启 HTTP 和 HTTPS 服务 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 拒绝 ICMP 请求 iptables -A INPUT -p icmp -j DROP # 限制连接数 iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP # 默认规则 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT
以上规则允许本地回环接口、SSH 连接、HTTP 和 HTTPS 服务,拒绝 ICMP 请求,限制 HTTP 连接数,并将 DEFAULT 策略设置为 DROP。
总结
以上就是 CentOS iptables 配置的详解,希望能够帮助到你。