我无法理解 iptables 规则
我需要:
- 允许来自任意位置的 HTTP 流量到 80 和 443
- 内部允许 MySQL 流量 3306
- 允许从特定 IP 地址列表进行 SSH 访问
有任何想法吗?
答案1
根据 fwbuilder(推荐)和快速检查,以下执行操作 1 和 3。执行(2)在很大程度上取决于您对“内部”的定义(在接口上,两个接口等)
$IPTABLES -N RULE_0
$IPTABLES -A INPUT -p tcp -m tcp -s 1.2.3.4 --dport 22 -m state --state NEW -j RULE_0
$IPTABLES -A FORWARD -p tcp -m tcp -s 1.2.3.4 --dport 22 -m state --state NEW -j RULE_0
$IPTABLES -A RULE_0 -j LOG --log-level info --log-prefix "RULE 0 -- ACCEPT "
$IPTABLES -A RULE_0 -j ACCEPT
#
# Rule 1 (global)
#
echo "Rule 1 (global)"
#
$IPTABLES -N RULE_1
$IPTABLES -A OUTPUT -p tcp -m tcp -m multiport --dports 80,443 -m state --state NEW -j RULE_1
$IPTABLES -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -m state --state NEW -j RULE_1
$IPTABLES -A FORWARD -p tcp -m tcp -m multiport --dports 80,443 -m state --state NEW -j RULE_1
$IPTABLES -A RULE_1 -j LOG --log-level info --log-prefix "RULE 1 -- ACCEPT "
$IPTABLES -A RULE_1 -j ACCEPT
例如对于 192.168.1.0/254 内部网络:
$IPTABLES -N In_RULE_0
$IPTABLES -A INPUT -i eth0:1 -p tcp -m tcp -s 192.168.1.0/24 -d 192.168.1.0/24 --dport 3306 -m state --state NEW -j In_RULE_0
$IPTABLES -A FORWARD -i eth0:1 -p tcp -m tcp -s 192.168.1.0/24 -d 192.168.1.0/24 --dport 3306 -m state --state NEW -j In_RULE_0
$IPTABLES -A In_RULE_0 -j LOG --log-level info --log-prefix "RULE 0 -- ACCEPT "
$IPTABLES -A In_RULE_0 -j ACCEPT
$IPTABLES -N Out_RULE_0
$IPTABLES -A OUTPUT -o eth0:1 -p tcp -m tcp -s 192.168.1.0/24 -d 192.168.1.0/24 --dport 3306 -m state --state NEW -j Out_RULE_0
$IPTABLES -A FORWARD -o eth0:1 -p tcp -m tcp -s 192.168.1.0/24 -d 192.168.1.0/24 --dport 3306 -m state --state NEW -j Out_RULE_0
$IPTABLES -A Out_RULE_0 -j LOG --log-level info --log-prefix "RULE 0 -- ACCEPT "
$IPTABLES -A Out_RULE_0 -j ACCEPT