Cloudsgo 雲遊

Ubuntu防火牆ufw安裝教學與常用指令

一般來說新版的Ubuntu都有內建防火牆,但如果沒有怎辦?

別擔心在這教您用簡單的ufw來架設防火牆,它一樣是基於iptables來的功能

注意如果是雲端主機設置防火牆請別急的把所有連線都關閉否則登入不進去就…

已下指令照著輸入即可切記要照順訊否則被自己的防火牆鎖在牆外就慘了

常用的指令有

防火牆版本:
sudo ufw version 

查看防火牆狀態:  
sudo ufw status 

Status: inactive(表示狀態為閒置)

關閉防火牆:
sudo ufw disable 

安裝命令:
sudo apt-get install ufw

當然在沒有安裝防火牆的情況下才需要安裝,可以利用查看防火牆狀態查詢防火牆是否有啟用或安裝

sudo ufw default deny 所有連線都拒絕(在防火牆還沒啟用時這是必經安全過程)

都禁止後一個一個新增可連線規則

允許所有的外部IP訪問本機的25/tcp (smtp)端口(信箱用)
sudo ufw allow smtp

允許所有的外部IP訪問本機的22/tcp (ssh)端口(終端機用)
sudo ufw allow 22/tcp 
 
允許所有的外部IP訪問本機的ssh端口(終端機用)這很重要
sudo ufw allow ssh
 
允許外部訪問53端口(tcp/udp) (DNS訪問)這很重要
sudo ufw allow 53 
 
允許外部訪問80端口(tcp/udp) 網頁用
sudo ufw allow 80
 
允許外部訪問443端口(tcp/udp)網頁用 
sudo ufw allow 443 
 
允許來自 127.0.0.1 (本機) 的 3389 埠口連線 (xrdp)(用於遠端連線)
sudo ufw allow from 127.0.0.1 to any port 3389

允許此IP訪問所有的本機端口(非必要)
sudo ufw allow from 192.168.1.100

允許此IP訪問所有的本機端口(非必要)如果有固定IP,建議輸入一組防止往後登不進

允許來自 192.168.1.2 上所有連線
sudo ufw allow from 192.168.1.2

啟動 UFW 服務 (enable)(啟用防火牆)請檢查ssh是否有打開否則遠端操作可能被中斷
sudo ufw enable

查詢防火牆狀態還記得嗎?
sudo ufw status

Status: active 狀態已啟用

 

禁止外部訪問smtp郵件服務(選用)
sudo ufw deny smtp 

刪除上面建立的某條規則(選用)
sudo ufw delete allow smtp 

阻擋來自 27.16.3.1 ~ 27.16.3.254 的所有連線(舉例選用)
sudo ufw deny from 27.16.3.0/24

遇到DDos時知道對方IP時手動封鎖對方IP

 

恭喜您防火牆已成功建置

以下可忽略除非需要用到時再回來看

進階

 

觀察iptables目前的設定
iptables -L -n

iptables -t nat -L -n

來自 192.168.0.1 這個 IP 的封包都予以接受
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.1 -j ACCEPT

來自 192.168.1.0 這個 C Class 的網域的任何一部電腦,就予以接受
iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 -j ACCEPT

來自 192.168.7.121 的封包都給它丟棄
iptables -A INPUT -i eth0 -p tcp -s 192.168.7.121 -j DROP

來自 192.168.0.24 這個 IP 的封包,想要到我的 137,138,139 埠口時,都接受
iptables -A INPUT -i eth0 -p tcp -s 192.168.0.24/24 –dport 137:139 -j ACCEPT

參數說明:

-A  :新增加一條規則,該規則增加在最後面,例如原本已經有四條規則,
    使用 -A 就可以加上第五條規則!
-I  :插入一條規則,如果沒有設定規則順序,預設是插入變成第一條規則,
    例如原本有四條規則,使用 -I 則該規則變成第一條,而原本四條變成 2~5
 INPUT :規則設定為 filter table 的 INPUT 鏈
 OUTPUT :規則設定為 filter table 的 OUTPUT 鏈
 FORWARD:規則設定為 filter table 的 FORWARD 鏈
 
-i    :設定『封包進入』的網路卡介面
-o    :設定『封包流出』的網路卡介面
 interface :網路卡介面,例如 ppp0, eth0, eth1….
 
-p  :請注意,這是小寫呦!封包的協定啦!
 tcp :封包為 TCP 協定的封包;
 upd :封包為 UDP 協定的封包;
 icmp:封包為 ICMP 協定、
 all :表示為所有的封包!
 
-s :來源封包的 IP 或者是 Network ( 網域 );
–sport:來源封包的 port 號碼,也可以使用 port1:port2 如 21:23
     同時通過 21,22,23 的意思
-d :目標主機的 IP 或者是 Network ( 網域 );
–dport:目標主機的 port 號碼;
 
-j   :動作,可以接底下的動作;
 ACCEPT :接受該封包
 DROP  :丟棄封包
 LOG  :將該封包的資訊記錄下來 (預設記錄到 /var/log/messages 檔案)

各個規則鏈的預設政策可獨立自主的設定,不必受其它鏈的影響。