iptables防火墙

1、匹配优先级

表优先级:raw表 > mangle表 > nat表 > filter表

链优先级:数据包进入主机网络接口后,首先会经过 ‌PREROUTING‌ 链,在此链中可以对数据包的目的 IP 地址或端口进行修改(如DNAT)。

然后内核根据数据包目的IP地址查询路由表判断该数据包是发往本机、还是需要转发,如果目的IP地址是本机(host),那么数据包途经INPUT链流向host然后途经OUTPUT链后从POSTROUTING链出站;否则使用路由转发,途径FORWARD链后从POSTROUTING链出站。

规则优先级:在链中,规则的匹配优先级是从上到下,先匹配规则链的第一条规则,接着第二条,如果都不匹配,根据规则链的默认策略处理。

2、规则命令格式

iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]
-t 表名

这个表名就是规则表的名字,因为规则是在链中,然后链在表中,所以操作先指定表的名字,然后不指定表名的时候则默认为filter表。
管理选项

对链中的防火墙策略进行管理,常用选项如下

-A:在链尾追加一条新的规则

-I:在指定位置(或链首)插入一条新的规则

-R:修改、替换指定位置或内容的规则

-P:设置指定链的默认策略

-D:删除指定位置或内容的规则

-F:清除表中的所有规则

-L:列表查看各条规则信息

-N:创建一条新的规则链(自定义链)

-X:删除自定义的规则链

--line-numbers:查看规则使显示规则的行号

-n:以数字形式显示IP地址、端口等信息

-v:显示已捕获的数据包个数、字节数等详细信息
链名

指定该表中哪条链进行修改,当不指定链名的时候,默认表示该表内所有链
条件匹配

与管理选项相结合,通常是添加/删除/修改的规则(后面有实例)。除非设置规则链的默认策略,否则需要指定匹配条件。常用条件匹配参数如下

-p 协议名:这个指定计算机网络中协议名,可以指定的协议名在/etc/protocols文件中查看,常用的协议包括tcp、udp、icmp等。通过使用--dport指定目的端口,--sdport指定源端口。

-s 源地址/-d 目的地址:地址可以是单个IP地址,也可以是网络地址(带掩码长度)

-i 网卡/-o 网卡:-i对应接受数据包的网络接口,-o对应发送数据包的网络接口

--tcp-flags 检查范围 被设置的标记:--tcp-flags SYN,RST,ACK 表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件

--icmp-type ICMP类型:进行icmp类型匹配,ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Req、Echo-Reply

MAC地址匹配:使用-m mac 结合 --mac-source MAC地址的形式

多端口匹配:使用-m multiport结合--sports源端口列表或--dports目标端口列表的形式

IP地址范围匹配:使用"-m iprange"结合"--src-range 源IP范围"或者"--dst-range目标IP范围"的形式,以"-"符号连接起始IP地址、结束IP地址
-j 目标动作或跳转

当链表中的规则匹配时,防火墙对数据包处理的方式。有四种方式。

DROP:直接删除数据包,不进行任何结果的返回。

REJECT:删除数据包,但是会有返回消息(委婉的DROP)

ACCEPT:接受数据包

LOG:记录数据包,将其信息写入系统日志中,方便分析和管理(记录在/var/log/messages)
示例

bash 复制代码
# 清空所有链规则
iptables -F
# 设置链的默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# 通过变量定义一个ip
#BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -s "SBLOCK_THIS_IP" -j DROP
# 允许所有的SSH
#iptables -A INPUT-i eth0-p tcp --dport 22 -m state --state NEW,ESTABLISHED -j
ACCEPT
iptables -A OUTPUT-o ethO-p tcp --sport 22-m state --state ESTABLISHED-jACCEPT
# 允许一个网段访问SSH
iptables -A INPUT -i eth0 -p tcp -s X.Y.Z.0/24 --dport 22 -m state -state
NEW,ESTABLISHED -j ACCEPT
iptables-A OUTPUT-o eth0 -p tcp --sport 22-m state --state ESTABLISHED-j ACCEPT
# 允许HTTP
iptables -A INPUT-1 ethO -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables-A OUTPUT-o eth0-p tcp --sport 80-m state --state ESTABLISHED -jACCEPT
# 允许 HTTPS
iptables -A INPUT -i ethO-p tcp--dport 443-m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT-o eth0-p tcp--sport 443 -m state --state ESTABLISHED-jACCEPT
# 7. 多端口 (允许 SSH, HTTP, and HTTPS)
iptables -A INPUT-i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state
NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state
ESTABLISHED -j ACCEPT
# 出方向允许 SSH
iptables -A OUTPUT -o eth0 -p tcp --dport 22-m state--state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ethO -p tcp --sport 22-m state --state ESTABLISHED -j ACCEPT
# 出方向允许一个特定网段访问SSH
iptables -A OUTPUT -o eth0 -p tcp -d A.B.C.0/24 --dport 22 -m state --state
NEW,ESTABLISHED -j ACCEPT
iptables -AINPUr-i eth0-p tcp--sport 22-m state --state ESTABLISHED -jACCEPT
# 出方向允许 HTTPS
iptables-A OUTPUT-o eth0-p tcp --dport 443-m state-state NEW,ESTABLISHED-j ACCEPT
iptables -A INPUT -i eth0 -p tcp -sport 443 -m state --state ESTABLISHED-j ACCEPT
# 进方向HTTPS负载均衡
iptables -A PRERoUTING -i etho -p tcp --dport 443 -m state --state NEW -m nth
--counter 0--every 3 --packet 0 -j DNAT --to-destination 192.168.x.Y1:443
#iptables -A PRERoUrING -i ethO -p tcp --dport 443 -m state =-state NEW -m nth
--counter 0--every 3--packet 1 -j DNAT --to-destination 192.168.x.Y2:443
#iptables -A PREROUTING -ietho -p tcp --dport 443-m state --state NEW-m nth
--counter 0--every 3 --packet 2 -J DNAT --to-destination 192.168.x.Y3:443
# Ping 从内到外
iptables -A OUTPUT-picmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -picmp --icmp-type echo-reply -j ACCEPT
# Ping 从外到内
iptables -AINPUT -picmp --icmp-type echo-request -j ACCEPT
iptables -A ouTPUT-picmp--icmp-type echo-reply -jACCEPT
# 允许loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -0 lo -] ACCEPT
# 15. Allow packets from internal network to reach external network.
# if ethl is connected to external network (internet)
#if eth0 is connected to internal network (192.168.1.x)
iptables -A FORWARD -i etho-o ethl -j ACCEPT
# 16. Allow outbound DNS
fiptables -A OUTPUT -p udp -o eth0--dport 53 -j ACCEPT
#iptables -A INPUT -p udp -i etho --sport 53 -j ACCEPT
# 17. Allow NIS Connections
#rpcinfo -p I grep ypbind ; This port is 853 and 850
fiptables -A INPUT -p tcp --dport 1ll -j ACCEPT
#iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 853 -j ACCEPT
iptables -A INPUT -p udp --dport 853 -j ACCEPT
iptables -A INPUT -p tcp --dport 850 -j ACCEPT
#iptables -A INPUT -p udp --dport 850 -j ACCEPT
# 18. Allow rsync from a specific network
iptables -A INPUT -i eth0 -p tcp -s 192.168.x.0/24 --dport 873 -m state =-state
NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT-o ethO-p tcp--sport 873- state --state ESTABLISHED-jACCEPT
#19. Allow MysQL connection only from a specific network
iptables -A INPUT -ieth0-p tcp -s 192.168.Y.0/24--dport 3306 -m state --state
NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT-o ethO-p tcp-sport 3306 -m state --state ESTABLISHED -jACCEPT
# 20. Allow Sendmail or Postfix
iptables -A INPUT -i etho -p tcp --dport 25-m state --state NEW,ESTABLISHED -j ACEPT
iptables -A oUTPUT -o etho-p tcp--sport 25-m state -state ESTABLISHED-j ACEPT
#21. Allow IMAP and IMAPS
iptables -A INPUT -ieth0-p tcp--dport 143-m state --state NEW,ESTABLISHED-jACCEPT
iptables -A oUrPUT-o ethO-p tcp--sport 143-m state --state ESTABLISHED-jACCEPT
iptables-AINPUT-iethppdport99mstate--stateNEw,ESTABLISHED-ACCEPT
iptables -A OUrPUT-o eth0 -p tcp --sport 993 -m state--state ESTABLISHED-jACCEPT
# 22. Allow POP3 and POP3S
iptables-A INPUT-ieth0-p tcp-dport 110-m state --state NEW,ESTABLISHED-jACCEPT
iptables-A OUTPUT-o eth0-p tcp-sport 110-m state --state ESTABLISHED-jACCEPT
iptables-A INPUT-ieth0-p tcp--dport 995-m state--state NEW,ESTABLISHED-jACCEPT
iptables -A oUTPUT-o ethO-p tcp--sport 995-m state --state ESTABLISHED-jACCEPT
# 23. Prevent DoS attack
iptables -A INPUT-p tcp--dport 80-m limit--limit 25/minute --limit-burst 100 -j ACCEPT
# 24. Port forwarding 422 to 22
iptables -t nat -A PREROUTING -p tcp -d 192.168.A.B--dport 422 -j DNAT --to
192.168.102.37:22
iptables -A INPUT -1 ethO-p tcp --dport 422-m state =-state NEw,ESTABLISHED -j ACCEPT
iptables-A OUTPUT-o eth0-p top-sport 422-m state --state ESTABLISHED-jACCEPT
# 25. Log dropped packets
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LoGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet
Dropped:" --log-level 7
iptables -A LOGGING -j DROP
相关推荐
txg66617 小时前
HgtJIT:基于异构图 Transformer 的即时漏洞检测框架
人工智能·深度学习·安全·transformer
zyl8372121 小时前
前端开发网络安全注意事项
安全·web安全
OpenAnolis小助手21 小时前
Anolis OS Linux Dirty Frag 漏洞安全声明
linux·安全·web安全·龙蜥社区
tingting011921 小时前
敏感目录扫描及响应码
安全
智慧医养结合软件开源1 天前
规范新增·精准赋能,凝聚志愿力量守护老人安康
大数据·安全·百度·微信·云计算
KKKlucifer1 天前
数字安全浪潮下国产数据安全企业发展图鉴
大数据·安全
淼淼爱喝水1 天前
Pikachu 靶场 RCE 模块乱码问题解决方法
网络·安全·pikachu
hahaha 1hhh1 天前
用SSH 建立了一个本地端口转发隧道,用于安全地访问远程服务器上的服务,后台运行。autodl
服务器·安全·ssh
IT23101 天前
国产OpenClaw产品崛起:博云BoClaw如何破解AI智能体的「安全与自主」双命题
人工智能·安全
MicroTech20251 天前
量子安全赋能协同智能,微算法科技(NASDAQ :MLGO)研发PQS-BFL后量子区块链联邦学习框架
科技·算法·安全