Issuu on Google+

網工班 88 期 Linux30% 報告 Iptables + Fwbuilder

學員:張文鑫 指導老師:林旺聰 彭學勤 楊宏文 王吉祥 1


目錄 1. Iptables 簡介-------------------------------------------3 2. 軟硬體防火牆比較---------------------------------------5 3. 實驗拓樸圖---------------------------------------------6 4. 測試環境-----------------------------------------------7 5. 防火牆規則---------------------------------------------8 6. Fwbuilder---------------------------------------------13 7. 參考資料----------------------------------------------14

2


Iptables 簡介 Iptables 架構圖

表格(table)與鏈(chain)的說明

filter

主要跟進入 Linux 本機的封包有關

INPUT

與進入 Linux 本機的封包有關

OUTPUT

與 Linux 本機送出的封包有關

FORWARD

可以『轉遞封包』到後端的電腦中

nat

進行來源與目的之 IP 或 port 的轉換

PREROUTING

進行路由判斷之前所要進行的規則

POSTROUTING

進行路由判斷之後所要進行的規則

OUTPUT

與發送出去的封包有關

3


mangle 與特殊的封包的路由旗標有關(較少使用) Linux 的防火牆本身由 Linux 核心所提供,由於直接經過核心來處 理,因此效能較好,不同核心版本所使用的防火牆軟體是不一樣的, 核心支援的防火牆的演進: Version 2.0:ipfwadm Version 2.2:ipchains Version 2.4 與 2.6 :主要使用 iptables 這個防火牆機制 Liunx內建的防火牆屬於一種封包過濾式的防火牆,可以針對IP封包 的表頭欄位與管理者制定的規則進行過濾

4


軟硬體防火牆比較

Hardware firewall 強調高效能,實用性,處理速度。 Software firewall 設定較為彈性,可自行微調,作業系統多有內建各自 的軟體防火牆。 軟硬體防火牆比較 比較項目

軟體防火牆

硬體防火牆

延展性

有限

簡易度

較複雜

較簡易

可靠度

視規格而定

效能

視硬體配備

整合能力

價格

5


實驗拓樸圖

這是整組的拓樸圖,除了防火牆之外我還負責內部網路的 DHCP、DNS 伺服器的建置,這幾台 Server 主要配合 Nagios 及 Cacti 的監控,另 外建置 DMZ 區,架設一台 Web Server 配合 Nagios 跨網段監控功能的 實驗。

6


測試環境 1.實體機器: Cpu: INTEL(R) CORE(TM)2 DUO 2.2GHz Ram: 4GB OS: Ubuntu 11.10

2.虛擬機器: Server

OS

RAM

NIC Eth0 10.120.15.254

Iptables

512MB

SUSE Linux

Eth2 192.168.3.254

Enterprise DHCP&DNS

Eth1 192.168.11.254

Server11

WEB&DNS Client 測試電腦 Windows XP SP2 註: 使用虛擬軟體 VirtualBox NIC 皆為橋接介面卡

7

512MB

Eth0 192.168.11.1

512MB

Eth0 192.168.3.1

512MB

192.168.11.101


防火牆規則 下列的防火牆規則是驗收完後,經過 Guru 老師的指正,個人在家裡 又重覆一次實驗,經過不斷地測試及修訂後增加安全性的防火牆規 則。 小提醒:10.120.15.14 是學校主機的 IP Host 代表實體主機電腦

★清除所有規則 iptables –F (清除鏈中的所有規則) iptables –X (清除自訂鏈中的所有規則) iptables –Z (將所有 chain 中的封包計數器歸零)

★預設全部流量拒絕 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP

★開放 SSH iptables -A INPUT -p tcp --sport 22 -s 10.120.15.14 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -s 10.120.15.14 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -d 10.120.15.14 -j ACCEPT iptables -A OUTPUT -p tcp --dport 22 -d 10.120.15.14 -j ACCEPT (只開放 Host 遠端登入防火牆主機)

★暫時開放全部 PING 流量方便測試 iptables -A FORWARD -p icmp -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT iptables -A OUTPUT -p icmp -j ACCEPT

★讓 client 端能透過 NAT 來存取外部的服務 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.11.0/24 -j SNAT --to 10.120.15.254 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -j SNAT --to 10.120.15.254

8


iptables -t nat -A POSTROUTING -o eth0 -s 192.168.3.0/24 -j SNAT --to 10.120.15.254 (由 192.168.11.0/24 192.168.3.0/24 192.168.2.0/24 這三個網段所過來的封 包,在經過 Routing table 後、尚未出 eth0(防火牆外網卡)介面前,將其來源 IP 位址轉換成 10.120.15.254)

★啟用偽裝功能 iptables iptables iptables echo "1"

-t nat -A POSTROUTING -s 192.168.11.0/24 –j MASQUERADE -t nat -A POSTROUTING -s 192.168.3.0/24 –j MASQUERADE -t nat -A POSTROUTING -s 192.168.2.0/24 –j MASQUERADE > /proc/sys/net/ipv4/ip_forward

★開放查詢外部 DNS iptables -A OUTPUT -p udp --dport 53 --sport 1024:65535 -j ACCEPT iptables -A INPUT -p udp --sport 53 --dport 1024:65535 -j ACCEPT iptables -A FORWARD -p udp --dport 53 --sport 1024:65535 -s 192.168.11.1 -j ACCEPT iptables -A FORWARD -p udp --sport 53 --dport 1024:65535 -d 192.168.11.1 -j ACCEPT iptables -A FORWARD -p udp --dport 53 --sport 1024:65535 -s 192.168.3.1 -j ACCEPT iptables -A FORWARD -p udp --sport 53 --dport 1024:65535 -d 192.168.3.1 -j ACCEPT iptables -A FORWARD -p udp --dport 53 --sport 1024:65535 -d 192.168.3.1 -j ACCEPT iptables -A FORWARD -p udp --sport 53 --dport 1024:65535 -s 192.168.3.1 -j ACCEPT

★開放 LAN 與外部網路之間的 HTTP 流量 iptables -A FORWARD -p tcp --sport 80 --dport 1024:65535 -d 192.168.11.0/24 -j ACCEPT iptables -A FORWARD -p tcp --dport 80 --sport 1024:65535 -s 192.168.11.0/24 -j ACCEPT

★開放 LAN 與外部網路之間的 HTTPS 流量 iptables -A FORWARD -p tcp --sport 443 --dport 1024:65535 -d 192.168.11.0/24 -j ACCEPT iptables -A FORWARD -p tcp --dport 443 --sport 1024:65535 -s

9


192.168.11.0/24 -j ACCEPT

★開放 vpn 用戶端與外部網路之間的 HTTP 流量 iptables -A FORWARD -p tcp --sport 80 --dport 1024:65535 -d 192.168.2.0/24 -j ACCEPT iptables -A FORWARD -p tcp --dport 80 --sport 1024:65535 -s 192.168.2.0/24 -j ACCEPT

★開放 vpn 用戶端與外部網路之間的 HTTPS 流量 iptables -A FORWARD -p tcp --sport 443 --dport 1024:65535 -d 192.168.2.0/24 -j ACCEPT iptables -A FORWARD -p tcp --dport 443 --sport 1024:65535 -s 192.168.2.0/24 -j ACCEPT

★開放 LAN 與外部網路之間的 SMTP 流量 iptables -A FORWARD -p tcp --sport 1024:65535 --dport 25 -s 192.168.11.0/24 -j ACCEPT iptables -A FORWARD -p tcp --sport 25 --dport 1024:65535 -d 192.168.11.0/24 -j ACCEPT

★開放 LAN 與外部網路之間的 POP3 流量 iptables -A FORWARD -p tcp --sport 1024:65535 --dport 110 -s 192.168.11.0/24 -j ACCEPT iptables -A FORWARD -p tcp --sport 110 --dport 1024:65535 -d 192.168.11.0/24 -j ACCEPT

★開放 vpn 用戶端與外部網路之間的 SMTP 流量 iptables -A FORWARD -p tcp --sport 1024:65535 --dport 25 -s 192.168.2.0/24 -j ACCEPT iptables -A FORWARD -p tcp --sport 25 --dport 1024:65535 -d 192.168.2.0/24 -j ACCEPT

★開放 vpn 用戶端與外部網路之間的 POP3 流量 iptables -A FORWARD -p tcp --sport 1024:65535 --dport 110 -s 192.168.2.0/24 -j ACCEPT iptables -A FORWARD -p tcp --sport 110 --dport 1024:65535 -d 192.168.2.0/24 -j ACCEPT

10


★開放 vpn 用戶連入所需流量 iptables -A INPUT -p udp --dport 1194 -j ACCEPT iptables -A OUTPUT -p udp --sport 1194 -j ACCEPT

★開放 DMZ 區的 WEB SERVER 供外部網路存取 iptables -t nat -A PREROUTING -p tcp --dport 80 -d 10.120.15.254 -j DNAT --to 192.168.3.1

★開放 DMZ 區的 DNS 供外部查詢 iptables -t nat -A PREROUTING -p udp --dport 53 -d 10.120.15.254 -j DNAT --to 192.168.3.1:53

★開放管理員(10.120.15.12)可以連線到 CACTI 的管理頁面 iptables -A FORWARD -p tcp --dport 888 --sport 1024:65535 -j ACCEPT iptables -A FORWARD -p tcp --sport 888 --dport 1024:65535 -j ACCEPT iptables -t nat -A PREROUTING -s 10.120.15.12 -d 10.120.15.254 -p tcp --dport 888 -j DNAT --to 192.168.11.13:888 (改用 Port888)

★開啟 SNMP 流量(讓 CACTI 可以抓取防火牆的資訊) iptables -A INPUT -p udp --sport 1024:65535 --dport 161 -j ACCEPT iptables -A OUTPUT -p udp --sport 161 --dport 1024:65535 -j ACCEPT

★開放管理員(10.120.15.9)可以連線到 NAGIOS 的管理 WEB 頁面 iptables -A iptables -A iptables -t --dport 777 (Port777)

FORWARD -p tcp --dport 777 --sport 1024:65535 -j ACCEPT FORWARD -p tcp --sport 777 --dport 1024:65535 -j ACCEPT nat -A PREROUTING -s 10.120.15.9 -d 10.120.15.254 -p tcp -j DNAT --to 192.168.11.9:777

★封鎖 DMZ 區到 LAN 的所有流量 iptables -t nat -A PREROUTING -p all -s 192.168.3.0/24 -d 192.168.11.0/24 -j DROP

11


★開放 DMZ Webserver 與 LAN 192.168.11.9 之間的流量 iptables -t nat -I PREROUTING -p all -s 192.168.3.1 -d 192.168.11.9 -j ACCEPT iptables -t nat -I PREROUTING -p all -s 192.168.11.9 -d 192.168.3.1 -j ACCEPT

★開放 CACTI 透過 SNMP 抓取 DMZ WEB SERVER(192.168.3.1)的資訊 iptables -A FORWARD -p udp --sport 161 --dport 1024:65535 -j ACCEPT iptables -A FORWARD -p udp --dport 161 --sport 1024:65535 -j ACCEPT

★限定 VPN 用戶端只能與 LAN 的 DNS 及 Ifolder 主機溝通 iptables -t nat -A PREROUTING -s 192.168.2.0/24 -d 192.168.11.0/24 -j DROP iptables -t nat -I PREROUTING -s 192.168.2.0/24 -d 192.168.11.3 -j ACCEPT iptables -t nat -I PREROUTING -s 192.168.2.0/24 -d 192.168.11.1 -j ACCEPT

建置流程 防火牆: 規則設計及測試 安裝套件 net-snmp php5-snmp DMZ 區: 架設 WEB Server 設計一個簡單網頁 架設 DNS 對外部提供服務 安裝套件:nagios-nsca、nagio-plugins、net-snmp、php5-snmp LAN: 架設 DHCP 供內部電腦取得 IP 架設 DNS 對內部提供服務 安裝套件:nagios-nsca、nagio-plugins、net-snmp、php5-snmp

12


Fwbuilder

Firewall Builder 是多平台的防火牆配置和管理工具。 包括一個圖形用戶介面和一系列的各種防火牆平台的編譯器。

官方網站: http://www.fwbuilder.org/ 安裝所需套件: http://etherkiller.org/fwbuilder/ fwbuilder-3.0.1-b565.i586.rpm libfwbuilder-3.0.1-b565.i586.rpm libfwbuilder-devel-3.0.1-b565.i586.rpm

13


參考資料 鳥哥的 Linux 私房菜 http://linux.vbird.org/

柏青哥的 SUSE Linux http://www.suse.url.tw/sles10/

李柏辰、許俊賢,99 學年度畢業專題計劃書(防火牆的建置與維護)國立台東大學資訊管理學系,2009 年 9 月。

14


88期-Linux 30% LAB個人報告-張文鑫