iptables 允许来自任何地方的 HTTP,MySQL 内部,并将 SSH 锁定到特定 IP

iptables 允许来自任何地方的 HTTP,MySQL 内部,并将 SSH 锁定到特定 IP

我无法理解 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

相关内容