萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 防火牆進階配置範例:NAT、SQUID 透明代理、DNAT 埠映射、FORWARD 策略與 MIRROR 反射防禦

適用於 ADSL/動態 IP 環境的綜合防火牆腳本,整合 NAT 上網、Squid 透明代理、內網伺服器埠映射 (DNAT)、服務轉發控制 (FORWARD) 以及實驗性的 MIRROR 反射防禦。

環境定義

  • eth0:ADSL 介面 (動態 IP,啟動不自動啟用)
  • eth1:內網介面 192.168.0.1/24

完整防火牆腳本

#!/bin/bash
# 載入 FTP 連線追蹤模組
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp

# 清空現有規則
/sbin/iptables -F -t filter
/sbin/iptables -F -t nat

# 預設策略
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT

# 允許本地回環與內網介面所有連入
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -j ACCEPT

# NAT:內網流量偽裝上網
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

# DNAT:外部存取內網伺服器 (埠映射)
# RADMIN 到 192.168.0.2
/sbin/iptables -t nat -A PREROUTING -p tcp -s ! 192.168.0.0/24 --dport 4899 -j DNAT --to 192.168.0.2:4899
# 第二組 RADMIN 映射到不同內網主機同埠
/sbin/iptables -t nat -A PREROUTING -p tcp -s ! 192.168.0.0/24 --dport 5000 -j DNAT --to 192.168.0.3:4899

# SQUID 透明代理:攔截內網 HTTP 導向本地 3128 埠
/sbin/iptables -t nat -A PREROUTING -p tcp -s 192.168.0.0/24 --dport 80 -j DNAT --to 192.168.0.1:3128

# FORWARD:允許轉發的服務埠
/sbin/iptables -A FORWARD -p tcp --dport 21  -j ACCEPT  # FTP
/sbin/iptables -A FORWARD -p tcp --dport 22  -j ACCEPT  # SSH
/sbin/iptables -A FORWARD -p udp --dport 53  -j ACCEPT  # DNS
/sbin/iptables -A FORWARD -p tcp --dport 80  -j ACCEPT  # HTTP
/sbin/iptables -A FORWARD -p tcp --dport 443 -j ACCEPT  # HTTPS
/sbin/iptables -A FORWARD -p udp --dport 8000 -j ACCEPT  # QQ
/sbin/iptables -A FORWARD -p tcp --dport 25  -j ACCEPT  # SMTP
/sbin/iptables -A FORWARD -p tcp --dport 110 -j ACCEPT  # POP3
/sbin/iptables -A FORWARD -p tcp --dport 4899 -j ACCEPT  # RADMIN
/sbin/iptables -A FORWARD -p tcp --dport 1863 -j ACCEPT  # MSN (需配合 443)
/sbin/iptables -A FORWARD -p icmp -j ACCEPT             # ICMP

# 狀態模組:允許已建立/相關連線
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# MIRROR 反射防禦:將外部封包源/目的互換後送回 (實驗性,慎用)
/sbin/iptables -A INPUT -j MIRROR

關鍵說明

  • 動態 IP 適用:使用 MASQUERADE 而非 SNAT,自動適應 IP 變動。
  • DNAT 來源限制:-s ! 192.168.0.0/24 僅對外部請求做埠映射,避免內網回環。
  • Squid 透明代理:需 Squid 設定 httpd_accel_host virtual、httpd_accel_port 80、httpd_accel_with_proxy on、httpd_accel_uses_host_header on。
  • MIRROR 目標:將攻擊封包原路返回,可能造成雙方流量放大,**生產環境不建議啟用**,僅供實驗研究。
  • 持久化: service iptables save (RedHat) 或 iptables-save > /etc/sysconfig/iptables。

參考來源

原文參考:ChinaUnix BBS

copyright © 萬盛學電腦網 all rights reserved