如何在Ubuntu中用UFW配置防火牆

UFW,即簡單防火牆(uncomplicated firewall),是一個 Arch Linux、Debian 或 Ubuntu 中管理防火牆規則的前端。 UFW 經過命令行使用(儘管它有可用的 GUI),它的目的是使防火牆配置簡單(即不復雜(uncomplicated))。前端

開始以前node

一、 熟悉咱們的入門指南,並完成設置服務器主機名和時區的步驟。服務器

二、 本指南將盡量使用 sudo。 在完成保護你的服務器指南的章節,建立一個標準用戶賬戶,強化 SSH 訪問和移除沒必要要的網絡服務。 但不要跟着建立防火牆部分 - 本指南是介紹使用 UFW 的,它對於 iptables 而言是另一種控制防火牆的方法。網絡

三、 更新系統ssh

Arch Linuxtcp

sudo pacman -Syu Debian / Ubuntu命令行

sudo apt-get update && sudo apt-get upgrade 安裝 UFW設計

UFW 默認包含在 Ubuntu 中,但在 Arch 和 Debian 中須要安裝。 Debian 將自動啓用 UFW 的 systemd 單元,並使其在從新啓動時啓動,但 Arch 不會。 這與告訴 UFW 啓用防火牆規則不一樣,由於使用 systemd 或者 upstart 啓用 UFW 僅僅是告知 init 系統打開 UFW 守護程序。日誌

默認狀況下,UFW 的規則集爲空,所以即便守護程序正在運行,也不會強制執行任何防火牆規則。 強制執行防火牆規則集的部分在下面。接口

Arch Linux

一、 安裝 UFW:

sudo pacman -S ufw 二、 啓動並啓用 UFW 的 systemd 單元:

sudo systemctl start ufw sudo systemctl enable ufw Debian / Ubuntu

一、 安裝 UFW

sudo apt-get install ufw 使用 UFW 管理防火牆規則

設置默認規則

大多數系統只須要打開少許的端口接受傳入鏈接,而且關閉全部剩餘的端口。 從一個簡單的規則基礎開始,ufw default命令能夠用於設置對傳入和傳出鏈接的默認響應動做。 要拒絕全部傳入並容許全部傳出鏈接,那麼運行:

sudo ufw default allow outgoing sudo ufw default deny incoming ufw default 也容許使用 reject 參數。

警告:

除非明確設置容許規則,不然配置默認 deny 或 reject 規則會鎖定你的服務器。確保在應用默認 deny 或 reject 規則以前,已按照下面的部分配置了 SSH 和其餘關鍵服務的容許規則。

添加規則

能夠有兩種方式添加規則:用端口號或者服務名錶示。

要容許 SSH 的 22 端口的傳入和傳出鏈接,你能夠運行:

sudo ufw allow ssh 你也能夠運行:

sudo ufw allow 22 類似的,要在特定端口(好比 111)上 deny 流量,你須要運行:

sudo ufw deny 111 爲了更好地調整你的規則,你也能夠容許基於 TCP 或者 UDP 的包。下面例子會容許 80 端口的 TCP 包:

sudo ufw allow 80/tcp sudo ufw allow http/tcp 這個會容許 1725 端口上的 UDP 包:

sudo ufw allow 1725/udp 高級規則

除了基於端口的容許或阻止,UFW 還容許您按照 IP 地址、子網和 IP 地址/子網/端口的組合來容許/阻止。

容許從一個 IP 地址鏈接:

sudo ufw allow from 123.45.67.89 容許特定子網的鏈接:

sudo ufw allow from 123.45.67.89/24 容許特定 IP/ 端口的組合:

sudo ufw allow from 123.45.67.89 to any port 22 proto tcp proto tcp 能夠刪除或者根據你的需求改爲 proto udp,全部例子的 allow 均可以根據須要變成 deny。

刪除規則

要刪除一條規則,在規則的前面加上 delete。若是你但願再也不容許 HTTP 流量,你能夠運行:

sudo ufw delete allow 80 刪除規則一樣可使用服務名。

編輯 UFW 的配置文件

雖然能夠經過命令行添加簡單的規則,但仍有可能須要添加或刪除更高級或特定的規則。 在運行經過終端輸入的規則以前,UFW 將運行一個文件 before.rules,它容許迴環接口、ping 和 DHCP 等服務。要添加或改變這些規則,編輯 /etc/ufw/before.rules 這個文件。 同一目錄中的 before6.rules 文件用於 IPv6 。

還存在一個 after.rule 和 after6.rule 文件,用於添加在 UFW 運行你經過命令行輸入的規則以後須要添加的任何規則。

還有一個配置文件位於 /etc/default/ufw。 今後處能夠禁用或啓用 IPv6,能夠設置默認規則,並能夠設置 UFW 以管理內置防火牆鏈。

UFW 狀態

你能夠在任什麼時候候使用命令:sudo ufw status 查看 UFW 的狀態。這會顯示全部規則列表,以及 UFW 是否處於激活狀態:

Status: active To Action From


22 ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6) 啓用防火牆

隨着你選擇規則完成,你初始運行 ufw status 可能會輸出 Status: inactive。 啓用 UFW 並強制執行防火牆規則:

sudo ufw enable 類似地,禁用 UFW 規則:

sudo ufw disable UFW 會繼續運行,而且在下次啓動時會再次啓動。

日誌記錄

你能夠用下面的命令啓動日誌記錄:

sudo ufw logging on 能夠經過運行 sudo ufw logging low|medium|high 設計日誌級別,能夠選擇 low、 medium 或者 high。默認級別是 low。

常規日誌相似於下面這樣,位於 /var/logs/ufw:

Sep 16 15:08:14 <hostname> kernel: [UFW BLOCK] IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=123.45.67.89 DST=987.65.43.21 LEN=40 TOS=0x00 PREC=0x00 TTL=249 ID=8475 PROTO=TCP SPT=48247 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0 前面的值列出了你的服務器的日期、時間、主機名。剩下的重要信息包括:

[UFW BLOCK]:這是記錄事件的描述開始的位置。在此例中,它表示阻止了鏈接。 IN:若是它包含一個值,那麼表明該事件是傳入事件 OUT:若是它包含一個值,那麼表明事件是傳出事件 MAC:目的地和源 MAC 地址的組合 SRC:包源的 IP DST:包目的地的 IP LEN:數據包長度 TTL:數據包 TTL,或稱爲 time to live。 在找到目的地以前,它將在路由器之間跳躍,直到它過時。 PROTO:數據包的協議 SPT:包的源端口 DPT:包的目標端口 WINDOW:發送方能夠接收的數據包的大小 SYN URGP:指示是否須要三次握手。 0 表示不須要。

做者:Linode 來源:51CTO

相關文章
相關標籤/搜索