如何在Linux上安裝和使用UFW防火牆

2021-02-19 青檸Linux
Introduction

UFW也稱為非複雜防火牆,它是iptables的接口,特別適合基於主機的防火牆。UFW為不熟悉防火牆概念的初學者提供了易於使用的界面。它是源自Ubuntu的最受歡迎的防火牆工具,它同時支持IPv4和IPv6。在本教程中,我們將學習如何在Linux上安裝和使用UFW防火牆。

Installing UFWUbuntu

默認情況下,UFW在大多數基於Ubuntu的發行版中可用。如果已刪除,則可以通過運行以下linux命令來安裝它。

Debian

可以通過運行以下linux命令在Debian中安裝UFW。

CentOS

默認情況下,UFW在CentOS存儲庫中不可用。因此,您需要將EPEL存儲庫安裝到系統中,可以通過運行以下linux命令來安裝。一旦安裝了EPEL存儲庫,就可以來安裝UFW。

# yum install epel-release -y# yum install --enablerepo="epel" ufw -y

安裝UFW之後,通過運行以下linux命令來啟動UFW服務並使其在啟動時啟動,查看其狀態。

# ufw enable # ufw status Status: active

通過運行以下linux命令來禁用UFW防火牆。

Set UFW Default Policy

默認情況下,UFW默認策略設置為阻止所有傳入流量並允許所有傳出流量。可以使用以下linux命令設置自己的默認策略。

# ufw default allow outgoing # ufw default deny incoming

Add and Delete Firewall Rules

可以使用埠號或服務名稱兩種方式添加用於允許傳入和傳出流量的規則。例如,如果要同時允許HTTP服務的傳入和傳出連接,然後使用服務名稱運行以下linux命令。

# ufw allow http (服務名稱方式)# ufw allow 80 (埠方式)

如果要基於TCP或UDP過濾數據包,請運行以下命令。

# ufw allow 80/tcp # ufw allow 21/udp

使用以下linux命令檢查已添加規則的狀態,會看到以下輸出。

root@limelinux-server:~# ufw status verbose Status: activeLogging: on (low)Default: deny (incoming), allow (outgoing), disabled (routed)New profiles: skip
To Action From-- - ----22/tcp ALLOW IN Anywhere 139 ALLOW IN Anywhere 445 ALLOW IN Anywhere 80/tcp ALLOW IN Anywhere 21/udp ALLOW IN Anywhere 22/tcp (v6) ALLOW IN Anywhere (v6) 139 (v6) ALLOW IN Anywhere (v6) 445 (v6) ALLOW IN Anywhere (v6) 80/tcp (v6) ALLOW IN Anywhere (v6) 21/udp (v6)                ALLOW IN    Anywhere (v6)             root@limelinux-server:~# 

使用以下命令拒絕服務傳入和傳出流量。

# ufw deny 80 # ufw deny 21

如果要刪除HTTP允許的規則,只需在原始規則前加上delete即可。

#ufw delete allow http #ufw delete deny 21

Advanced UFW rules

還可以添加特定的IP位址以允許和拒絕訪問所有服務,運行以下命令以允許IP 192.168.0.200訪問伺服器上的所有服務:

# ufw allow from 192.168.0.200

要拒絕IP 192.168.0.200訪問伺服器上的所有服務,請執行以下操作。

# ufw deny from 192.168.0.200

可以在UFW中允許IP位址範圍,運行以下命令以允許從IP 192.168.1.1到192.168.1.254的所有連接。

# ufw allow from 192.168.1.0/24

要允許IP位址192.168.1.200使用TCP訪問埠80,請運行以下linux命令。

# ufw allow from 192.168.1.200 to any port 80 proto tcp

要允許訪問2000到3000之間的tcp和udp埠範圍,請運行以下linux命令。

# ufw allow 2000:3000/tcp # ufw allow 2000:3000/udp

如果要阻止從IP 192.168.0.4和192.168.0.10訪問埠22,但允許所有其他IP訪問埠22,請運行以下命令。

# ufw deny from 192.168.0.4 to any port 22 # ufw deny from 192.168.0.10 to any port 22 # ufw allow from 192.168.0.0/24 to any port 22

要允許網絡接口eth0上的HTTP通信,請運行以下linux命令。

# ufw allow in on eth0 to any port 80

默認情況下,UFW允許ping請求,如果要拒絕ping請求,則需要編輯 /etc/ufw/before.rules 文件,刪除相關行,完成後並保存文件。

# nano /etc/ufw/before.rules #刪除以下行#-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT -A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT -A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT -A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

如果需要重置UFW刪除所有規則,則可以通過以下linux命令來進行。

Configure NAT with UFW

如果要對UFW從外部接口到內部的連接進行NAT,可以通過編輯/etc/default/ufw和/etc/ufw/before.rules文件來執行此操作。/etc/default/ufw 使用nano編輯器打開文件。

# nano /etc/default/ufwDEFAULT_FORWARD_POLICY="DROP" #更改為ACCEPT#DEFAULT_FORWARD_POLICY="ACCEPT" #

還需要允許ipv4轉發,可以通過編輯 /etc/ufw/sysctl.conf 文件來做到這一點

#nano /etc/ufw/sysctl.confnet/ipv4/ip_forward=1 #默認沒有啟用

將NAT添加到ufw的配置文件中,可以通過編輯 nano /etc/ufw/before.rules 文件,添加以下行。

# NAT table rules*nat:POSTROUTING ACCEPT [0:0]
# Forward traffic through eth0 - Change to match you out-interface-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't# be processedCOMMIT #這個在末尾一定不要刪除

保存文件退出,需要重新啟動。

# ufw disable# ufw enable

Configure Port Forwarding with UFW

如果想轉發來自公共IP的流量,例如 150.129.148.155 埠80和443連接到IP位址為192.168.1.120的另一臺內部伺服器,可以通過編輯文件 nano /etc/default/before.rules ,更改如下。

:PREROUTING ACCEPT [0:0] -A PREROUTING -i eth0 -d 150.129.148.155 -p tcp --dport 80 -j  DNAT --to-destination 192.168.1.120:80 -A PREROUTING -i eth0 -d 150.129.148.155 -p tcp --dport 443 -j  DNAT --to-destination 192.168.1.120:443 -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE

重新啟動UFW。

# ufw disable# ufw enable

接下來,還需要允許埠80和443通過防火牆。

# ufw allow proto tcp from any to 150.129.148.155 port 80# ufw allow proto tcp from any to 150.129.148.155 port 443

翻譯自:

https://linuxconfig.org/how-to-install-and-use-ufw-firewall-on-linux

END

相關焦點

  • Linux中UFW防火牆配置
    有更簡單的替代品可供使用,例如UFW。UFW實際上是包含Linux的Iptables防火牆的CLI或命令行界面,該界面為我們提供了一種更簡單的方法來管理和配置Iptables。 對於UFW,甚至還有一個名為GUFW的GUI或圖形界面,我們可以在桌面PC或筆記本電腦上使用它來管理和配置防火牆。
  • 如何在Ubuntu 18.04上使用UFW設置防火牆
    安裝UFWufw防火牆應該默認安裝在Ubuntu 18.04中,但是如果它沒有安裝在你的系統上,你可以通過鍵入以下命令來安裝它:sudo apt install ufw這意味著任何試圖訪問您的伺服器的用戶都將無法連接,除非您專門打開該埠,而伺服器上運行的所有應用程式和服務都將能夠訪問外部世界。默認策略在/etc/default/ufw文件中定義,可以使用sudo ufw default <policy> <chain>防火牆策略是構建更詳細和用戶定義規則的基礎。
  • Linux 防火牆 ufw 簡介 | Linux 中國
    ufw(簡單防火牆(Uncomplicated FireWall))真正地簡化了 iptables,它從出現的這幾年,已經成為 Ubuntu 和 Debian 等系統上的默認防火牆。而且 ufw 出乎意料的簡單,這對新管理員來說是一個福音,否則他們可能需要投入大量時間來學習防火牆管理。
  • 在 Ubuntu 中用 UFW 配置防火牆
    UFW 通過命令行使用(儘管它有可用的 GUI),它的目的是使防火牆配置簡單(即不複雜uncomplicated)。開始之前1、 熟悉我們的入門[1]指南,並完成設置伺服器主機名和時區的步驟。2、 本指南將儘可能使用 sudo。 在完成保護你的伺服器[2]指南的章節,創建一個標準用戶帳戶,強化 SSH 訪問和移除不必要的網絡服務。
  • 如何在Ubuntu 18.04上安裝Nginx
    本教程將概述在Ubuntu 18.04機器上安裝和管理Nginx的步驟。安裝NginxNginx的軟體包在Ubuntu默認軟體倉庫中可用。安裝非常簡單,只需鍵入以下命令:sudo apt updatesudo apt install nginx安裝完成後,請檢查Nginx服務的狀態和版本:linuxidc@linuxidc:~$ sudo systemctl status nginx[sudo] linuxidc 的密碼:輸出:● nginx.service
  • 如何在Ubuntu 18.04 LTS上安裝帶有TLS的VsFTPD伺服器
    本教程介紹如何在Ubuntu系統上安裝和配置眾所周知的、安全的VsFTPD(非常安全的文件傳輸協議守護程序)伺服器。
  • 如何在 Linux 上安裝 Xrdp 遠程桌面服務(Ubuntu/CentOS/Redhat 7)
    您使用什麼工具來訪問遠程桌面?Xrdp是一個開源工具,允許用戶通過Windows RDP訪問Linux遠程桌面。 除了Windows RDP之外,xrdp工具還接受來自其他RDP客戶端的連接,如FreeRDP,rdesktop和NeutrinoRDP。 Xrdp現在支持TLS安全層。在本文中,我將展示如何使用Xrdp工具從Windows機器遠程連接到Ubuntu桌面。
  • Ubuntu默認防火牆安裝、啟用、配置、埠、查看狀態相關信息
    sudo ufw version防火牆版本: ufw 0.29-4ubuntu1 Copyright 2008-2009 Canonical Ltd.ubuntu 系統默認已安裝ufw.,再使用sudo ufw allow開啟。
  • 10分鐘學會在Ubuntu 18.04 LTS上安裝NFS伺服器和客戶端
    通過NFS,您可以允許系統通過網絡與其他人共享目錄和文件。在NFS文件共享中,用戶甚至程序可以訪問遠程系統上的信息,就像它們駐留在本地計算機上一樣。在本文中,我們將逐步說明如何設置NFS伺服器和客戶端,使您能夠將文件從一個Ubuntu系統共享到另一個Ubuntu系統。
  • Linux 防火牆入門教程 | Linux 中國
    合理的防火牆是你的計算機防止網絡入侵的第一道屏障。你在家裡上網,通常網際網路服務提供會在路由中搭建一層防火牆。當你離開家時,那麼你計算機上的那層防火牆就是僅有的一層,所以配置和控制好你 Linux 電腦上的防火牆很重要。如果你維護一臺 Linux 伺服器,那麼知道怎麼去管理你的防火牆同樣重要,只要掌握了這些知識你才能保護你的伺服器免於本地或遠程非法流量的入侵。
  • 如何在 Ubuntu 上安裝和優化 Apache | Linux 中國
    Apache (又名 httpd) 是最受歡迎和使用最廣泛的 web 伺服器,所以這應該對每個人都有用。開始安裝 Apache 之前在我們開始之前,這裡有一些要求和說明:◈ Apache 可能已經在你的伺服器上安裝了,所以開始之前首先檢查一下。你可以使用 apachectl -V 命令來顯示你正在使用的 Apache 的版本和一些其他信息。
  • 樹莓派系統安裝配置,Java MySQL 的安裝,ufw apt-get 常用命令的總結
    鏡像寫入工具:balenaEtcher-Portable-1.5.115SD卡格式化工具:DiskGenius使用 balenaEtcher 按照提示把 img 成功寫入到 SD 卡,就表示安裝成功了。
  • 在 Ubuntu 上安裝 Memcached
    在本文中,在Ubuntu 18.04上安裝和配置Memcached的詳細過程,同樣也適用於任何基於Ubuntu的發行版。在安裝使用 Memcached之前,請確認你是以具有sudo權限的用戶身份登錄才能執行安裝。
  • Linux 防火牆:關於 iptables 和 firewalld 的那些事
    (點擊上方公眾號,可快速關注)英文:David Clinton,翻譯:Linux中國/heguangzhilinux.cn/article
  • 統一作業系統UOS 安裝寶塔Linux面板實戰
    四、下面是寶塔的安裝步驟注意:必須為沒裝過其它環境如Apache/Nginx/php/MySQL的新系統,推薦使用centos 8.X的系統安裝寶塔面板桌面右鍵打開終端。切換到root用戶輸入命令一鍵安裝即可。
  • 如何在 Ubuntu 下安裝和配置 FTP 伺服器
    然而, FTP 最初的時候並不安全,因為它僅通過用戶憑證(用戶名和密碼)傳輸數據,沒有進行加密。警告:如果你打算使用 FTP, 需要考慮通過 SSL/TLS(將在下篇文章[1]中討論)配置 FTP 連接。否則,使用安全 FTP,比如 SFTP[2] 會更好一些。
  • 在 Ubuntu Server 16.04 LTS 上安裝 LAMP
    LAMP 是那些需要安裝和構建動態網頁應用的基礎平臺,比如WordPress、Joomla、OpenCart 和 Drupal。在這篇文章中,我將描述如何在 Ubuntu Server 16.04 LTS 上安裝 LAMP,眾所周知 Ubuntu 是一個基於 Linux 的作業系統,因此它構成了 LAMP 的第一個部分,在接下來的操作中,我將默認你已經安裝了 Ubuntu Server 16.04。
  • 在Linux系統上配置微軟Windows遠程桌面服務
    前言本文主要講解如何在Ubuntu 20.04系統上安裝和配置Xrdp遠程桌面。Xrdp是微軟的遠程桌面協議(Remote Desktop Protocol, RDP)的開源版本。在Linux系統上安裝Xrdp後,用戶可以使用RDP客戶端遠程訪問Linux桌面。現在我們來一起看看如何在Ubuntu桌面20.04和18.04上安裝Xrdp吧。
  • 如何在 Ubuntu 和其他 Linux 發行版中啟動、停止和重啟服務 | Linux 中國
    如果你是普通桌面用戶,你可能會遇到需要重啟服務的情況,例如安裝 Barrier 來用於在計算機之間共享滑鼠和鍵盤。或在使用 ufw 設置防火牆時。今天,我將向你展示兩種管理服務的方式。你將學習在 Ubuntu 或任何其他 Linux 發行版中啟動、停止和重啟服務。
  • 如何在 Ubuntu 20.04 上使用 Let's Encrypt 保護 Nginx
    目前,獲取和安裝證書的整個過程在 Apache 和 Nginx 上都是完全自動化的。在本教程中,您將使用 Certbot 在 Ubuntu 20.04 上為 Nginx 獲取免費的 SSL 證書,並將您的證書設置為自動續訂。本教程將使用單獨的 Nginx 伺服器配置文件而不是默認文件。我們建議為每個域創建新的 Nginx 伺服器塊文件,因為它有助於避免常見錯誤並維護默認文件作為後備配置。