基礎防火牆設定 使用ufw
防火牆的設置對於伺服器,或是一般個人使用的電腦都是很重要的一環,避免 電腦埠號沒有管理,為駭客、有心人士提供入侵裝置的大門。
搜尋「Linux」「防火牆」,大部份可以找到的資料不是ufw,就是iptables,而又會有加註說明一般入門、初學者使用ufw,進階人員使用iptables。因為ufw真的太容易了,所以這邊我就使用ufw來建置我伺服器上的防火牆。
先來一張我的伺服器防火牆設置狀態,以及如何查看目前的狀態。
#顯示防火牆狀態
sudo ufw status
#顯示防火牆狀態,並且標記次序
sudo ufw status numbered
防火牆設定
上圖中顯示埠號的啟用狀態,相關設定與說明如下所述:
埠號3389,此為遠端桌面連線所使用的埠號,可能看到這個項目有一個很不一樣的設定「來自 192.168.1.0/24」,這邊指的是3389這個埠號,只能由IP位址為192.168.1.XXX的裝置連入,意即只有在區網內的電腦,才可以利用遠端桌面的方式連接到此機器,設置的指令如下:
#指定來源IP
sudo ufw allow from 192.168.1.0/24 to any port 3389
接下來埠號22、80、443,分別為ssh、http、https,如果裝置為網頁伺服器,一般都會啟用http、https這兩個埠號,而會啟用22這個埠號,主要原因是伺服器並非日常使用的電腦,所以平常都會把圖形化關閉,讓伺服器只執行在文字模式,可以降低CPU、RAM的負擔,但是總不可能每次要調整伺服器就只能跑到伺服器前,開啟螢幕並且設定(一般情況下,伺服器都會拔掉所有IO裝置,使用遠端的方式設定),所以這個時候就會開啟22這個埠號,讓管理人員可以遠端設定,這個部份也可以與3389一樣設定只允許內網設定(安全性較佳),不過如果啟用為Anywhere的話,其實會彈性很多,可能剛好人不在機器旁,但又需要做設定,或是重啟機器,這個時候就可以由外網連線,設置的指令如下:
#新增Anywhere的規則
sudo ufw allow 22
但是,如果22大開的話,可能會有安全性問題,所以這個部份可以為機器加入「兩階段認證」,不過這個功能非本篇的重點,所以不會加以說明,有興趣的可以搜尋「Linux + 兩階段認證」,設定的方式不難,不過多多少少可以增加伺服器的安全性。
接下來說明其他常用的指令:
#刪除規則(num代入查詢status numbered的數值)
sudo ufw delete num
條件都設定完畢後,其實可以查看iptables的內容,使用指令:
#查詢iptables規則
sudo iptables -l
其實有提供很多資訊,不過目前先列出上述使用ufw建立的規則,意即使用ufw設定規則,一樣會把這些規則加入到iptables,但是我們可以使用比較親民簡單的ufw達成。