因為我的機器配置不高,firestarter也太不穩(wěn)定,在我的breezy上老崩潰,新手指南上面的shorewall不是針對單機用戶,語法規(guī)則shorewall3.0.4有所改變。
本機情況:電信ADSL,ISP動態(tài)分配ip。單機單網(wǎng)卡連接adsl modem(PPPoE)上網(wǎng),全新安裝shorewall。
一、linux防火墻基本知識:
除了軟件和硬件防火墻的分類外,如果以封包抵擋機制來分類,大概可以分為proxy和IP Filter。
基本上linux的IP Filter有兩個最基本的防火墻機制,分別是:Ip Filter和TCP_Wrapper。
這里我們談IP Filter,因為shorewall可以通過IPTABLES簡單設(shè)置IP Filter的規(guī)則。
或者說:如果你不麻煩iptables的語法規(guī)則,或者可以自己寫一些shell程序批處理iptables指令,完全可以不安裝shorewall或者其他防火墻。因為linux下的防火墻基本都是通過設(shè)置iptables的規(guī)則完成的。
1.首先確定(uname指令確定核心,lsmod確定當(dāng)前載入模塊,如果是ipchains,請執(zhí)行rmmod ipchains。 然后modprobe ip_tables即可將iptables裝入現(xiàn)在使用的模塊)你的內(nèi)核是采用哪種抵擋機制,是不是我們需要的iptables(Ubuntu5.10的是iptables)
Linux Kernel Version 2.0:使用 ipfwadm
Linux Kernel Version 2.2:使用的是 ipchains
Linux Kernel Version 2.4:主要是使用 iptables 但為了兼容 ipchains ,因此Version 2.4 版本中,同時將 ipchains 編譯成模組供使用,好讓使用者仍然可以使用來自 2.2 版的 ipchains 的防火墻規(guī)則。
---------------
然后執(zhí)行下面代碼來觀看現(xiàn)在的防火墻規(guī)則(聯(lián)網(wǎng)情況下,root用戶)
$ sudo iptables -L -n (L的含義是列出目前的 table 的規(guī)則,n含義是不進(jìn)行IP與HOSTNAME的相互轉(zhuǎn)換,這樣可以加快顯示速度)
$ sudo iptables -t nat -L -n (-t nat的含義是顯示nat的filter。iptables會有nat tables和filter tables,不加參數(shù)為filter。有興趣的兄弟可以參看其他關(guān)于iptables的介紹,介于太長,此處不做介紹;)
---------------
接下來我們就要清除掉現(xiàn)在所有的防火墻規(guī)則(聯(lián)網(wǎng)情況下)
root@*** root]# /sbin/iptables [-t tables] [-FXZ]
其中參數(shù)含義為:
-F :清除所以已經(jīng)建立的規(guī)則;
-X :殺掉所有使用者建立的 chain ( tables );
-Z :把所有的 chain 的計數(shù)和流量統(tǒng)計歸為0;
範(fàn)例:
[root@*** root]# /sbin/iptables -F
[root@*** root]# /sbin/iptables -X
[root@*** root]# /sbin/iptables -Z
[root@*** root]# /sbin/iptables -t nat -F
---------------
二、具體安裝Shorewall3.0.4
下載shorewall最新的穩(wěn)定版本3.0.4(tarball安裝,即為源代碼make安裝。確定你的機器跟隨‘新手指南’裝了基本編譯工具),由于新立得里面還是2.多的版本,在官方網(wǎng)站看的是3的介紹,所以安裝3.0.4。而且安裝很簡單,不會出現(xiàn)其他依賴性問題.
------------
1.下載地址:http://www1.shorewall.net/pub/shorewall/3.0/shorewall-3.0.4/
2.安裝前需要:iptables(前面提到的)+iproute (檢查這個的指令是sudo Which ip )(基本上ubuntu5.10都具備了,所以可以不考慮)
3.盡量不要在ms-windows里面編輯shorewall的配置文件,因為ms和lin的文字排版不太一樣,比如回車。
4.cd到你解壓之后的目錄,然后./install.sh 回車,看見沒有錯誤信息,就OK了。但是此刻shorewall沒有啟動。等會兒我們來啟動。默認(rèn)安裝之后就是每次啟動就自動啟動防火墻(設(shè)置文件在 /etc/shorewall/shorewall.conf。找到STARTUP_ENABLED=Yes
,yes代表開機自動啟動!)
5.安裝之后所有文件分別位于:/usr/shorewall 和/sbin 和 /etc/shorewall,我們需要注意的就是/etc/shorewall。這里是配置文件。(個人建議,對于一些重要的,經(jīng)常不需要變動的文件可以將隱藏屬性chattr +i 上去,具體指令信息,請找‘男人’man )
6.查看安裝后的版本:sudo shorewall version 可以得到3.0.4的消息
三、配置Shorewall3.0.4
詳細(xì)的官方文檔位于:http://www.shorewall.net/Documentation.htm ,shorewall的文件很多,但是一般用戶用到的不多,特別是我們這種單機撥號的用戶。
-------------
1.首先配置/etc/shorewall/zones文件,瀏覽至最后,添加代碼如下:
#ZONE TYPE OPTIONS
fw firewall #文件原本存在的這行,fw為防火墻本身,必須
net ipv4
loc ipv4
#LAST LINE -- DO NOT REMOVE
其中關(guān)于各個type,options的解釋,該配置文件前面部分有,大家如果嚴(yán)格要求,可以參照文件配置,一般用戶配置成上面就可以了。
2.配置/etc/shorewall/interfaces
(這里用到的ZONE的名字是在上個文件/etc/shorewall/zones中定義的名字,所以順序不要弄錯了。這種zone名字的方法是比較簡單的,推薦這種方法。)
#ZONE INTERFACE BROADCAST OPTIONS
net ppp0
#LAST LINE -- DO NOT REMOVE
同樣配置文件對各個參數(shù)進(jìn)行了詳盡的解釋
--------------
3.配置/etc/shorewall/rules 和 /etc/shorewall/policy
關(guān)系: policy是定義默認(rèn)的策略給所有的連接(從一個zone到另外一個zone, 比如我們定義的從loc到net);
rules是定義特殊的防火墻規(guī)則,即是policy里面沒有的。
先后條件:任何連接,防火墻先檢查rules,如果rule中沒有關(guān)于這個連接要求的描述,就調(diào)用policy的默認(rèn)配置。
/etc/shorewall/policy的配置如下(默認(rèn))
#SOURCE ZONE DESTINATION ZONE POLICY LOG LIMIT:BURST
# LEVEL
loc net ACCEPT
net all DROP info
all all REJECT info
#LAST LINE -- DO NOT REMOVE
我一般改為下面,省得每次開端口麻煩。
fw net ACCEPT
net all DROP info
all all REJECT info[!--empirenews.page--]
上面的含義是允許本機所有連接網(wǎng)絡(luò)的要求;網(wǎng)絡(luò)連接到我的所有zones(比如防火墻fw,本地loc)都丟棄該連接要求的tcp封包,并記入日志。拒絕所有連接要求并記入日志(當(dāng)連接被拒絕了,防火墻就會返回一個RST (加入?yún)f(xié)議是TCP) 或者一個 ICMP端口不能到達(dá)的包給其他協(xié)議)
-------------
/etc/shorewall/rules配置如下(一般不需要太大配置,除非你的機器運行了比如想web服務(wù)器之類的東西。需要端口開放時候再來配置該文件)
#
這里我選擇保持默認(rèn),就是沒有定義的東西。如果你以后想開什么端口,就自己在這個上面寫就是了。關(guān)于各個選項,配置文件里面有很詳細(xì)的描述。比如 ACCEPT net loc icmp echo-request就是讓網(wǎng)絡(luò)可以ping到本機的設(shè)置。你以后要開ftp,bt,pop3等端口的時候,自己可以在這個上面設(shè)置!
---------------
四、啟動shorewall。
sudo shorewall start (注意再建立一個/var/lock/subsys這個文件夾,程序需要,但是ubuntu沒有該目錄,所以要自己建立!不然會有錯誤信息提示)
或者重新啟動計算機就自動啟動了,修改/etc/default/shorewall的文件,把starup改為1即可。(一般情況下,如果你的運氣實在不好,就請自己把該程序ln一個連接到rcS.d中)