Debian (Linux)安装UFW防火墙
Debian (Linux)安裝UFW防火墻
1ufw簡介
UFW,即簡單防火墻,是iptables的接口,旨在簡化防火墻的配置過程。 盡管iptables是可靠且靈活的工具,但對于初學者而言,可能很難學習如何使用它來正確配置防火墻。 如果您希望開始保護網絡安全并且不確定使用哪種工具,UFW可能是您的正確選擇。
2先決條件
要遵循本教程,您將需要一臺具有sudo非root用戶的Debian 10服務器。
2.1設置非root用戶獲得root權限
1修改 /etc/sudoers文件權限 執行以下操作
sudo chmod 740 /etc/sudoers假設你的用戶名是“yunmuyao”。你可以在sudoers文件中加上一下兩行的任意一行
yunmuyao ALL=(ALL:ALL) ALL
yunmuyao ALL=(ALL:ALL) NOPASSWD:ALL (出于方便,推薦使用此設置)
解釋說明:
第一行:允許用戶yunmuyao執行sudo命令(需要輸入密碼)。
第二行:允許用戶yunmuyao執行sudo命令,并且在執行的時候不輸入密碼。
2將文件權限改回以防止誤操作。執行以下操作
sudo chmod 440 /etc/sudoers3驗證sudo是否賦給yunmuyao
sudo ls出現如下字符說明成功
3.安裝ufw
3.1下載ufw
下載地址http://mirrors.163.com/debian/pool/main/u/ufw/ufw_0.33-2_all.deb3.2
下載ufw的安裝包,然后用遠程文件傳輸工具服務器上,運行sudo dpkg -i *.deb(i指的是安裝包名稱),這樣即成功安裝ufw
sudo dpkg -i *.deb安裝完成
4.在UFW中使用IPv6(可選)
本教程是在考慮IPv4的前提下編寫的,但是只要啟用它就可以在IPv6上使用。 如果您的Debian服務器已啟用IPv6,則需要確保UFW已配置為支持IPv6;否則,請執行以下步驟。 這將確保UFW除了管理IPv4外,還將管理IPv6的防火墻規則。
nano /etc/default/ufw確保IPV6值為yes 。
5.設置默認策略
如果您剛開始使用防火墻,則定義的第一條規則是默認策略。 這些規則處理未明確匹配任何其他規則的流量。 默認情況下,UFW設置為拒絕所有傳入連接并允許所有傳出連接。 這意味著嘗試訪問您的服務器的任何人都將無法連接,而服務器中的任何應用程序都將可以訪問外部。
sudo ufw default allow outgoing sudo ufw default deny incoming這些命令將默認設置設置為拒絕傳入并允許傳出連接。 這些防火墻默認值僅夠一臺個人計算機就足夠了,但是服務器通常需要響應外部用戶的傳入請求,如果此時開始防火墻,就會中斷ssh連接。 接下來,設置允許ssh連接
6.允許SSH連接
如果我們現在啟用UFW防火墻,它將拒絕所有傳入連接。 這意味著如果我們希望服務器響應那些類型的請求,我們將需要創建規則,以明確允許合法的傳入連接(例如SSH或HTTP連接)。 如果使用的是云服務器,則可能需要允許傳入的SSH連接,以便可以連接并管理服務器。
要將服務器配置為允許傳入的SSH連接,可以使用以下命令:
sudo ufw allow ssh這將創建防火墻規則,該規則將允許端口22上的所有連接,端口22是SSH守護程序默認監聽的端口。 UFW知道allow ssh意味著什么端口,因為它在/etc/services文件中被列為/etc/services 。
但是,我們實際上可以通過指定端口而不是服務名稱來編寫等效規則。 例如,此命令產生與上面相同的結果:
sudo ufw allow 22現在,防火墻已配置為允許傳入的SSH連接,可以啟用它。
7.啟用UFW
要啟用UFW,請使用以下命令:
sudo ufw enable您將收到一條警告,指出該命令可能會破壞現有的SSH連接。 我們已經設置了允許SSH連接的防火墻規則,因此可以繼續。 用y響應提示,然后按ENTER 。
該命令默認會將UFW設置為開機啟動,如果發現重啟后UFW并沒有自動啟動,可以手動設置UFW服務開機自動啟
#可以手動設置UFW服務開機自動啟 sudo systemctl start ufw sudo systemctl enable ufw如果發現重啟后UFW并沒有自動啟動,執行
systemctl list-unit-files | grep ufw查詢發現這個服務的狀態是即不是enable也不是disenable,是generated
說明Systemd只是包裝了一下這個服務,可以使用systemctl status ufw查看這個服務的狀態,但不能對其進行管理,管理還是需要使用 update-rc.d
#update-rc.d添加到系統啟動 update-rc.d ufw defaults #update-rc.d從系統啟動中刪除 update-rc.d ufw remove如果以上操作都不能做到ufw開機自啟 那么可以手動執行以下命令,直接在rc2.d中做一個符號鏈接想要了解update-rc.d請看該文檔13標題
ln -s /etc/init.d/ufw /etc/rc2.d/S01ufw此時輸入
#查看ufw服務狀態 sudo systemctl status ufw #查看ufw狀態 sudo ufw status此時防火墻已經正常啟動 運行sudo ufw status verbose命令以查看您設置的規則
sudo ufw status verbose8.允許其他連接
此時,您應該允許服務器正常運行所需的所有其他連接。 您應允許的連接取決于您的特定需求。允許基于服務名稱或端口進行連接; 我們已經在端口22上針對SSH進行了此操作。 您也可以這樣做:
端口80上的HTTP,這是未加密的Web服務器使用的端口。 要允許這種類型的流量,您可以輸入
sudo ufw allow http 或 sudo ufw allow 80端口443上的HTTPS,這是加密的Web服務器使用的端口。 要允許這種類型的流量,您可以輸入
sudo ufw allow https 或 sudo ufw allow 443但是,除了指定端口或已知服務之外,還有其他允許連接的方法。 接下來我們將討論這些。
8.1特定端口范圍
您可以使用UFW指定端口范圍。 例如,某些應用程序使用多個端口而不是單個端口。
例如,使用端口6000 - 6007 ,使用這些命令:
sudo ufw allow 6000:6007/tcp sudo ufw allow 6000:6007/udp使用UFW指定端口范圍時,必須指定規則應適用的協議( tcp或udp )。 我們之前沒有提到這一點,因為未指定協議會自動允許這兩種協議,這在指定單個端口情況下是可以的。
8.2特定的IP地址
使用UFW時,您還可以指定IP地址。 例如,如果要允許來自特定IP地址的連接,例如203.0.113.4的工作或家庭IP地址, 203.0.113.4需要指定from ,然后指定IP地址:
sudo ufw allow from 203.0.113.4您還可以通過添加to any port后跟端口號to any port指定允許IP地址連接的特定端口。 例如,如果要允許203.0.113.4連接到端口22 (SSH),請使用以下命令:
sudo ufw allow from 203.0.113.4 to any port 228.3子網路
如果要允許IP地址的子網,可以使用CIDR表示法指定網絡掩碼。 例如,如果要允許所有IP地址從203.0.113.1到203.0.113.254 ,可以使用以下命令:
sudo ufw allow from 203.0.113.0/24同樣,您也可以指定允許子網203.0.113.0/24連接到的目標端口。 同樣,我們將使用端口22 (SSH)作為示例:
sudo ufw allow from 203.0.113.0/24 to any port 228.4與特定網絡接口的連接
如果要創建僅適用于特定網絡接口的防火墻規則,可以通過allow in on指定allow in on ,然后指定網絡接口的名稱來實現。
您可能需要先查找網絡接口,然后再繼續。 為此,請使用以下命令:
ip addr突出顯示的輸出指示網絡接口名稱。 它們通常被命名為eth0或enp32 。
如果您的服務器具有名為enp32的公共網絡接口,則可以使用以下命令允許HTTP流量流向該服務器:
sudo ufw allow in on enp32 to any port 80這樣做將允許您的服務器從公共互聯網接收HTTP請求。
或者,如果您希望您MySQL數據庫服務器(端口3306 )偵聽專用網絡接口lo上的連接,則可以使用以下命令:
sudo ufw allow in on lo to any port 3306這將允許您專用網絡上的其他服務器連接到MySQL數據庫。s
9.拒絕連接
如果您尚未更改傳入連接的默認策略,則UFW被配置為拒絕所有傳入連接。 通常,這要求您創建明確允許特定端口和IP地址通過的規則,從而簡化了創建安全防火墻策略的過程。
有時,您可能想基于源IP地址或子網拒絕特定的連接,也許是因為您知道服務器正受到來自那里的攻擊。 另外,如果要將默認傳入策略更改為允許 (不建議這樣做),則需要為不想允許連接的任何服務或IP地址創建拒絕規則。
要編寫拒絕規則,您可以使用上述命令,將allow替換為deny 。
例如,要拒絕HTTP連接,可以使用以下命令
sudo ufw deny http或者,如果您要拒絕203.0.113.4所有連接, 203.0.113.4可以使用以下命令:
sudo ufw deny from 203.0.113.410.刪除規則
知道如何刪除防火墻規則與知道如何創建防火墻規則一樣重要。 有兩種方法可以指定要刪除的規則:按規則編號或按規則本身。 這類似于創建規則時如何指定規則。 我們將從解釋按規則編號刪除方法開始。
如果您使用規則號刪除防火墻規則,則要做的第一件事就是獲取防火墻規則列表。 UFW status命令具有numbered選項,該選項在每個規則旁邊顯示數字:
sudo ufw status numbered如果我們決定刪除規則1 (該規則允許端口22上的ssh連接),則可以在以下UFW delete命令中指定此規則:
sudo ufw delete 210.1按實際規則
規則編號的替代方法是指定要刪除的實際規則。 例如,如果要刪除allow http規則,則可以這樣編寫:
sudo ufw delete allow http您還可以使用allow 80代替服務名稱來指定規則:
sudo ufw delete allow 8011.檢查UFW狀態和規則
您可以隨時使用以下命令檢查UFW的狀態:
sudo ufw status verbose12.禁用或重置UFW
如果您決定不想使用UFW,則可以使用以下命令將其禁用也就是關閉ufw:
sudo ufw disable如果已經配置了UFW規則,但是您決定要重新開始,則可以使用reset命令 也就是重置ufw規則:
sudo ufw reset至此debian的ufw防火墻安裝完成
13update-rc.d開機自啟詳解
debian中的運行級別
- 0(關閉系統)
- 1(單用戶模式,只允許root用戶對系統進行維護。)
- 2 到 5(多用戶模式,其中3為字符界面,5為圖形界面。)
- 6(重啟系統)
update-rc.d命令詳解
update-rc.d是一個Perl腳本,是用來自動升級System V類型初始化腳本,簡單來說就是哪些東西是你想要在系統引導初始化的時候運行的,哪些是希望在關機或重啟時候停止的,你都可以用它來設置。這些腳本的鏈接位于/etc/rcN.d/下(N代表0~6),對應腳本位于/etc/init.d/下。
實際上,任意目錄/etc/rcN.d/中的腳本都是指向/etc/init.d/的符號鏈接(軟件鏈接#ln-s源文件目標文件名).然而,每個/etc/rcN.d/目錄中文件的名稱用來指定/etc/init.d相應腳本的運行方式.特別是,在進入任何運行級別之前,所有名稱以’‘K’‘打頭的腳本均被運行,這些腳本的工作是中止進程.然后,所有名稱以’‘S’‘打頭的腳本被運行,這些腳本的工作是啟動進程.名稱中跟在’‘K’‘或’‘S’'后的兩位數規定了腳本運行的先后次序,數字小的腳本先運行.
1.從所有的運行級別中刪除指定的啟動項
update-rc.d -f <basename> remove2.按指定順序、在指定運行級別中啟動或關閉
設置啟動項:
update-rc.d <serviceName> start <order> <runlevel>設置停止項:
update-rc.d <serviceName> stop <order> <runlevel>設置啟動和停止可以寫在一起,例如:
update-rc.d <basename> start|stop <order> <runlevels>實例:update-rc.d apachectl start 20 2 3 4 5 . stop 20 0 1 6 .
解析:表示在2、3、4、5這五個運行級別中,由小到大,第20個開始運行apachectl;在 0 1 6這三個運行級別中,第20個關閉apachectl。這是合并起來的寫法,注意它有2個點號,效果等于下面方法:
3.A啟動后B才能啟動,B關閉后A才關閉
update-rc.d A defaults 80 20 update-rc.d B defaults 90 104.啟動和關閉順序為90,級別默認
update-rc.d <basename> defaults 90總結
以上是生活随笔為你收集整理的Debian (Linux)安装UFW防火墙的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚幻引擎(16)-简易血条
- 下一篇: 使用扫描枪扫描条码时字符识别写入缓慢问题