1、安装 iptables
2、默认配置文件位于 /etc/sysconfig/iptables
vim /etc/sysconfig/iptables
# 星号开头的指的是表
# 这里为 filter 表
*filter
# 冒号开头的指的是链,三条内建的链
# 该规则表示 INPUT 链 默认策略是 ACCEPT
:INPUT ACCEPT [0:0]
# 该规则表示 FORWARD 链 默认策略是 ACCEPT
:FORWARD ACCEPT [0:0]
# 该规则表示 OUTPUT 链 默认策略是 ACCEPT
:OUTPUT ACCEPT [0:0]
# 意思是允许进入的数据包只能是刚刚我发出去的数据包的回应
# ESTABLISHED 已建立的链接状态,RELATED 该数据包与本机发出的数据包有关
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许 icmp 包通过,也就是允许 ping
-A INPUT -p icmp -j ACCEPT
# 这条很重要,针对本机内部接口开放!
-A INPUT -i lo -j ACCEPT
# 放行 22 端口
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
# 这两条的意思是在 INPUT 表和 FORWARD 表中拒绝所有其他不符合上述任何一条规则的数据包
# 并且发送一条 host prohibited 的消息给被拒绝的主机
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
# 提交
COMMIT
3、iptables 规则
iptables [-t tables] [-L] [-nv]
参数说明
-t:后面接表,例如 nat 或 filter,若省略此项目,则使用默认filter表
-L:列出目前表规则
-n:不进行 IP 与 HOSTNAME 的反查,显示讯息的速度会快很多
-v:列出更多的信息,包括通过该规则的封包总位数、相关的网络接口等
(1)直接命令行操作
这种方法,规则会立即生效,但是电脑重启后会失效,这时就需要执行 service iptables save 进行保存,默认文件保存的路径: /etc/sysconfig/iptables
# 查看 filter 表的规则
# filter 表包含 INPUT、OUTPUT、FORWARD 三个规则链
iptables -n -L
# 查看 nat 表的规则
iptalbes -t nat -nL
# 放行 80 端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 显示行号
iptables -nL --line
# 删除 filter 表,INPUT链 行号 1 的规则
iptables -D INPUT 1
# 删除 nat 表, POSTROUTING 链 行号 1 的规则
iptables -t nat -D POSTROUTING 1
(2)我们可以直接编辑 /etc/sysconfig/iptables 这个文件
值得注意的是这种方法,不需要运行 service iptables save 命令,直接运行 service iptables restart 即可以生效!service iptables save 本质上也是执行的保存到 /etc/sysconfig/iptables 这个文件
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [24:3232]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
# ---自定义规则 START ---
# 放行 443 端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 禁止 整个网段
iptables -A INPUT -s 35.61.78.0/24 -j DROP
# 禁止 35.61.78.109 访问
iptables -A INPUT -s 35.61.78.109/32 -j DROP
# ---自定义规则 END ---
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT