概述
netfilter/iptables 为 Linux 内核级有状态防火墙。支持连接跟踪,包含四种有效状态:ESTABLISHED、INVALID、NEW、RELATED。
一、安装与检测
- 检测安装:
whereis iptables
- 安装命令:
apt-get install iptables
- 加载内核模块:
modprobe ip_tables
二、规则配置
编辑策略文件:vi /etc/iptables.rules
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0]
-A INPUT -s 59.109.149.221 -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 7080 -j ACCEPT -A INPUT -p tcp -m tcp --dport 7180 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o lo -p all -j ACCEPT -A INPUT -i lo -p all -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT -A OUTPUT -p tcp --sport 22 -j ACCEPT
-I INPUT -p icmp --icmp-type echo-request -j ACCEPT -A INPUT -p ICMP --icmp-type timestamp-request -j DROP -A INPUT -p ICMP --icmp-type timestamp-reply -j DROP -A INPUT -p ICMP --icmp-type time-exceeded -j DROP -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP -A OUTPUT -p ICMP --icmp-type time-exceeded -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited -A INPUT -p tcp -m tcp --dport 8080 -j DROP COMMIT
|
[!NOTE]
INPUT 为入口,OUTPUT 为出口,REJECT 为禁止。若需完全开放出口,将默认策略改为 -A OUTPUT -j ACCEPT。
三、加载与持久化
- 加载生效:
iptables-restore < /etc/iptables.rules
- 查看规则:
iptables -L -n
- 开机自启配置:
- 创建软链:
ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/
- 编辑服务:
vi /lib/systemd/system/rc-local.service,末尾追加 [Install] 段
- 创建脚本:
vi /etc/rc.local,写入 iptables-restore < /etc/iptables.rules
- 赋权:
chmod +x /etc/rc.local
四、常用命令速查
4.1 基础管理
1 2 3 4 5 6 7 8
| iptables -L -n
iptables -P INPUT ACCEPT
iptables -F iptables -X iptables -Z
|
4.2 端口与协议
1 2 3 4 5 6 7
| iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
|
4.3 策略与黑白名单
1 2 3 4 5 6 7 8 9
| iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
iptables -I INPUT -s ***.***.***.*** -j DROP iptables -D INPUT -s ***.***.***.*** -j DROP
|
4.4 保存规则
五、核心概念对照
| 链 |
方向 |
说明 |
| INPUT |
入站 |
目标为本机的数据包 |
| OUTPUT |
出站 |
源为本机的数据包 |
| FORWARD |
转发 |
经本机路由转发的数据包 |
| 状态 |
说明 |
| ESTABLISHED |
已建立的连接 |
| NEW |
新连接请求 |
| RELATED |
与已有连接关联的数据包 |
| INVALID |
无法识别或无效的数据包 |