iptables
是 Linux 内核中一个强大的防火墙工具,它通过 Netfilter 框架实现网络数据包的过滤和处理。iptables
提供了对网络流量的精细控制,允许用户根据 IP 地址、端口号、协议等条件定义规则。
基本概念
iptables
规则分为几个主要链(chains):
- INPUT:处理进入本机的流量。
- OUTPUT:处理从本机发出的流量。
- FORWARD:处理转发的流量,即从一个网络接口到另一个接口的流量。
每个链由一组规则(rules)组成,当数据包到达时,iptables
根据这些规则逐一检查。
示例
以下是多个 iptables
配置示例,涵盖了不同的场景和需求:
允许指定 IP 的访问:
iptables -A INPUT -s 192.168.1.10 -j ACCEPT
拒绝指定 IP 的访问:
iptables -A INPUT -s 10.0.0.5 -j DROP
允许 SSH 访问(端口 22):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
拒绝所有其他 SSH 访问:
iptables -A INPUT -p tcp --dport 22 -j REJECT
允许 HTTP 访问(端口 80):
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
允许 HTTPS 访问(端口 443):
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
允许 ping 请求:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
记录并拒绝所有其他流量:
iptables -A INPUT -j LOG --log-prefix "Dropped packet: " iptables -A INPUT -j DROP
限制连接速率(每秒最多 5 个连接):
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m limit --limit 5/minute -j ACCEPT
允许从内部网络转发流量:
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
限制特定 IP 的连接数(最多 3 个):
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 3/minute -j ACCEPT
允许 FTP 访问(端口 21 和 20):
iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 20 -j ACCEPT
允许 DNS 查询(端口 53):
iptables -A INPUT -p udp --dport 53 -j ACCEPT
拒绝来自特定国家的流量(需 IP 黑名单):
iptables -A INPUT -s 1.2.3.0/24 -j DROP # 示例 IP 范围
允许从特定网段的 FTP 连接:
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 21 -j ACCEPT
启用 IPv6 支持(需要使用 ip6tables):
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
允许 NTP 访问(端口 123):
iptables -A INPUT -p udp --dport 123 -j ACCEPT
允许从特定 IP 地址的所有流量:
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
允许 localhost 流量:
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
查看当前的 iptables 规则:
iptables -L -v -n
评论前必须登录!
注册