以前設定防火牆時是直接使用 iptables 指令,但畢竟使用 iptables 頗有難度,所以基本上我都參考鳥哥的 "第九章、防火牆與 NAT 伺服器" 這篇文章,然後使用鳥哥提供的範例來設定。幸好,我手上的機器只需要 SSH 和 Samba 兩個服務,通常只要允許這兩個服務使用的埠 (port) 可以進入就行了。
後來,發現 ufw 這個工具後,我一直覺得 ufw 是個好東西,因為它不像 iptables 那麼複雜,對於一般防火牆的設定其實已經很足夠了。不過,若要對防火牆更進一步控管,建議還是學學 iptables 吧!
在 Debian 上安裝 ufw 很簡單,只要一行指令即可:
$ sudo apt-get install ufw
安裝完畢後,接著要先啟用 ufw:
$ sudo ufw enable
然後,將 ufw 的 defualt 設定改成 Deny:
sudo ufw default deny
這樣一來,INPUT 及 FORWARD 兩個 Chain 都會被設定成 DROP。
接著,就可以開始設定要允許的連線,由於我的機器只提供了 SSH 和 Samba 的服務,因此首先將 SSH 監聽的埠打開,此時可以執行這個指令直接允許 22 這個埠的 TCP 及 UDP 連線:
$ sudo ufw allow ssh
然後,再允許 Samba (SMB/CIFS 通訊協定) 監聽的幾個埠:
$ sudo ufw allow proto tcp to any port 135 from 192.168.1.0/24 $ sudo ufw allow proto udp to any port 137 from 192.168.1.0/24 $ sudo ufw allow proto udp to any port 138 from 192.168.1.0/24 $ sudo ufw allow proto tcp to any port 139 from 192.168.1.0/24 $ sudo ufw allow proto tcp to any port 445 from 192.168.1.0/24
其中,135 (Remote Procedure Call)、139 (NetBIOS Session Service) 和 445 (Microsoft-DS) 是 TCP 埠,而 137 (NetBIOS Name Service) 和 138 (NetBIOS Name Service) 是 UDP 埠。
參考閱讀: