一般人都知道的iptables操作

以下是常用的 iptables 命令及示例,在此列出 100 条:

  1. 清除所有规则链中的规则和自定义链
iptables -F
iptables -X
  1. 设置默认策略
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
  1. 允许回环接口的流量
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
  1. 允许已经建立和相关的连接通过
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  1. 允许指定 IP 地址或网段的访问
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
  1. 允许指定端口的访问
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  1. 允许指定协议的访问
iptables -A INPUT -p icmp -j ACCEPT # 允许 ICMP 协议包通过
iptables -A INPUT -p udp --dport 53 -j ACCEPT # 允许 DNS 协议包通过
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许 SSH 协议包通过
  1. 禁止指定 IP 地址或网段的访问
iptables -A INPUT -s 192.168.1.0/24 -j DROP
  1. 允许指定 MAC 地址的访问
iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT
  1. 允许指定网卡的访问
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
  1. 允许指定用户的访问(需要配合 sudoers 文件)
iptables -A OUTPUT -m owner --uid-owner www-data -j ACCEPT
  1. 允许制定的包头进行转发
iptables -A FORWARD -p tcp --syn -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -p udp -d 192.168.2.0/24 -j ACCEPT
  1. 拒绝指定端口的访问
iptables -A INPUT -p tcp --dport 25 -j REJECT
  1. 拒绝指定 IP 地址或网段的访问
iptables -A INPUT -s 192.168.1.0/24 -j DROP
  1. 限制速率控制
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/sec -j ACCEPT
  1. 将脚本中的规则添加到 iptables 中
bash script.sh
  1. 查看当前规则
iptables -L
  1. 查看指定规则链的规则
iptables -L INPUT
  1. 查看指定规则链的详细规则
iptables -L INPUT -v
  1. 显示在添加规则时实际生效的规则格式
iptables -S
  1. 允许指定 MAC 地址的数据包通过
iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT
  1. 拒绝所有 TCP 包除了 SYN 数据包
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
  1. 从 IP 地址或网段限制 SSH 访问
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport ssh -j ACCEPT
  1. 允许指定 IP 地址或网段的 ICMP 协议包通过
iptables -A INPUT -p icmp -s 192.168.1.0/24 -j ACCEPT
  1. 允许指定端口来自指定 IP 地址或网段的访问
iptables -A INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT
  1. 允许来自指定端口和 IP 地址或网段的 UDP 数据包通过
iptables -A INPUT -p udp --sport 53 -s 192.168.1.0/24 -j ACCEPT
  1. 允许指定IP地址或网段的数据通过已经建立的连接
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -s 192.168.1.0/24 -j ACCEPT
  1. 设置 SNAT 均衡负载
iptables -t nat -A PREROUTING -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 192.168.1.2:80
  1. 允许通过 HTTP 代理服务器访问外部网络
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -A INPUT -p tcp -m tcp --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 8080 -m state --state ESTABLISHED -j ACCEPT
  1. 转发 HTTP 请求到内部 Web 服务器
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -A FORWARD -p tcp -m tcp --dport 80 -d 192.168.1.2 -j ACCEPT
  1. 拒绝特定 IP 地址流量
iptables -A INPUT -s 192.168.1.10 -j DROP
  1. 拒绝特定 TCP 端口访问
iptables -A INPUT -p tcp --dport 22 -j DROP
  1. 允许来自特定 IP 地址的特定服务
iptables -A INPUT -s 192.168.1.10 -p tcp --dport 80 -j ACCEPT
  1. 只允许来自特定 IP 地址的 SSH 访问
iptables -A INPUT -p tcp --dport ssh -s 192.168.1.10 -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j DROP
  1. 允许指定范围的端口访问
iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
  1. 禁止外网IP访问内网(本地)服务器
iptables -I INPUT -i eth0 ! -s 192.168.0/24 -j DROP
  1. 将本地主机作为一个 NAT 网关
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
  1. 开启 SSH 的 X11 转发功能
iptables -A INPUT -i eth0 -p tcp --dport 6000 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 6000 -m state --state ESTABLISHED -j ACCEPT
  1. 防止 SYN 泛洪攻击
iptables -N syn_flood
iptables -A INPUT -p tcp --syn -j syn_flood
iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
iptables -A syn_flood -j DROP
  1. 限制同一 IP 在指定时间内的连接数
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP
  1. 允许 ICMP 工具ping可达性测试
iptables -A INPUT -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT
  1. 设置 IP 地址转发
sysctl -w net.ipv4.ip_forward=1 # 启用IP地址转发
echo 1 > /proc/sys/net/ipv4/ip_forward # 启用IP地址转发
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 添加 NAT 规则
  1. 允许流量转发
echo 1 > /proc/sys/net/ipv4/ip_forward # 启用 IP 转发功能
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT # 接受接口1到接口0的转发
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT # 接受回复数据包并通过接口1发回

猜你喜欢

转载自blog.csdn.net/m0_55877125/article/details/130849072