iptables防火墙

iptables  [-t 表名]  管理选项  [链名]  [匹配条件]  [-j 控制类型]

1. 表:

  • filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表

  • nat:network address translation 地址转换规则表

  • mangle:修改数据标记位规则表

  • raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度

  • security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现

2. 链:

  • INPUT: 处理入站数据包,匹配目标IP为本机的数据包。

  • OUTPUT: 处理出站数据包,一般不在此链上做配置。

  • FORWARD: 处理转发数据包,匹配流经本机的数据包。

  • PREROUTING链: 在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。

  • POSTROUTING链: 在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

3. 规则:

  • 规则定义了如何处理特定的数据包。
  • 每个规则都包含匹配条件和对匹配数据包的动作。

4.管理选项

Command  描述 示例命令
-A Append - 在指定链的末尾添加规则 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-D Delete - 删除指定链上的规则 iptables -D INPUT -s 192.168.1.2 -j DROP
-I Insert - 在指定链的指定位置插入规则 iptables -I INPUT 3 -p udp --dport 53 -j ACCEPT
-P Policy - 设置指定链的默认策略 iptables -P INPUT DROP
-F Flush - 清空指定链上的所有规则 iptables -F INPUT
-L List - 列出指定链上的所有规则 iptables -L INPUT
-N New Chain - 创建一个新的用户自定义链 iptables -N MYCHAIN
-X Delete Chain - 删除指定的用户自定义链 iptables -X MYCHAIN
-Z Zero Counters - 将指定链上的计数器归零 iptables -Z INPUT
-t Table - 指定要操作的表,如 filter、nat、mangle 等 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

5.匹配条件

Parameter  说明 示例命令
-s, --source 指定源 IP 地址 iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
-d, --destination 指定目标 IP 地址 iptables -A OUTPUT -d 8.8.8.8 -j ACCEPT
-p, --protocol 指定协议(如 tcp、udp、icmp) iptables -A INPUT -p tcp --dport 80 -j ACCEPT
--sport 指定源端口 iptables -A OUTPUT --sport 1024:65535 -j ACCEPT
--dport 指定目标端口 iptables -A INPUT --dport 22 -j ACCEPT
-i, --in-interface 指定输入接口 iptables -A INPUT -i eth0 -j ACCEPT
-o, --out-interface 指定输出接口 iptables -A OUTPUT -o eth0 -j ACCEPT
--state 指定连接状态 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-j, --jump 指定要采取的动作(ACCEPT、DROP、REJECT 等) iptables -A INPUT -j DROP
-m, --match 加载扩展模块 iptables -A INPUT -m comment --comment "Allow SSH"

6. 动作:

ACCEPT 允许通过 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
DROP 丢弃(拒绝)数据包 iptables -A INPUT -p tcp --dport 80 -j DROP
REJECT 拒绝数据包,并给发送者一个拒绝的响应 iptables -A INPUT -p udp --dport 53 -j REJECT
LOG 记录数据包到系统日志 iptables -A INPUT -p tcp --dport 22 -j LOG --log-level 4 --log-prefix "SSH traffic: "
RETURN 结束当前链的处理,返回到上一级链 iptables -A INPUT -p icmp -j RETURN

7. 基本用法:

  • 查看规则:sudo iptables -L
  • 清空规则:sudo iptables -F
  • 允许特定 IP 地址:sudo iptables -A INPUT -s -j ACCEPT
  • 拒绝特定端口:sudo iptables -A INPUT -p tcp --dport <端口号> -j DROP

你可能感兴趣的:(网络,服务器,运维)