成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用防火墻讓你的Linux更加強大

系統 Linux
所有人都聽說過防火墻(哪怕僅僅是在網絡犯罪片里看到過相關的情節設定),很多人也知道他們的計算機里很可能正運行著防火墻,但是很少有人明白在必要的時候如何駕馭防火墻。

[[270515]]

掌握防火墻的工作原理,以及如何設置防火墻來提高 Linux 的安全性

所有人都聽說過防火墻(哪怕僅僅是在網絡犯罪片里看到過相關的情節設定),很多人也知道他們的計算機里很可能正運行著防火墻,但是很少有人明白在必要的時候如何駕馭防火墻。

防火墻被用來攔截那些不請自來的網絡流量,然而不同網絡需要的安全級別也不盡相同。比如說,和在外面一家咖啡館里使用公共 WiFi 相比,你在家里的時候可以更加信任網絡里的其它計算機和設備。你或許希望計算機能夠區分可以信任和不可信任的網絡,不過最好還是應該學會自己去管理(或者至少是核實)你的安全設置。

防火墻的工作原理

網絡里不同設備之間的通信是通過一種叫做端口port的網關實現的。這里的端口指的并不是像 USB 端口 或者 HDMI 端口這樣的物理連接。在網絡術語中,端口是一個純粹的虛擬概念,用來表示某種類型的數據到達或離開一臺計算機時候所走的路徑。其實也可以換個名字來稱呼,比如叫“連接”或者“門口”,不過 早在 1981 年的時候 它們就被稱作端口了,這個叫法也沿用至今。其實端口這個東西沒有任何特別之處,只是一種用來指代一個可能會發生數據傳輸的地址的方式。

1972 年,發布了一份 端口號列表(那時候的端口被稱為“套接字socket”),并且從此演化為一組眾所周知的標準端口號,幫助管理特定類型的網絡流量。比如說,你每天訪問網站的時候都會使用 80 和 443 端口,因為互聯網上的絕大多數人都同意(或者是默認)數據從 web 服務器上傳輸的時候是通過這兩個端口的。如果想要驗證這一點,你可以在使用瀏覽器訪問網站的時候在 URL 后面加上一個非標準的端口號碼。比如說,訪問 example.com:42 的請求會被拒絕,因為 example.com 在 42 端口上并不提供網站服務。

Navigating to a nonstandard port produces an error

Navigating to a nonstandard port produces an error

如果你是通過 80 端口訪問同一個網站,就可以(不出所料地)正常訪問了。你可以在 URL 后面加上 :80 來指定使用 80 端口,不過由于 80 端口是 HTTP 訪問的標準端口,所以你的瀏覽器其實已經默認在使用 80 端口了。

當一臺計算機(比如說 web 服務器)準備在指定端口接收網絡流量的時候,保持該端口向網絡流量開放是一種可以接受的(也是必要的)行為。但是不需要接收流量的端口如果也處在開放狀態就比較危險了,這就是需要用防火墻解決的問題。

安裝 firewalld

有很多種配置防火墻的方式,這篇文章介紹 firewalld。在桌面環境下它被集成在網絡管理器Network Manager里,在終端里則是集成在 firewall-cmd 里。很多 Linux 發行版都預裝了這些工具。如果你的發行版里沒有,你可以把這篇文章當成是管理防火墻的通用性建議,在你所使用的防火墻軟件里使用類似的方法,或者你也可以選擇安裝 firewalld

比如說在 Ubuntu 上,你必須啟用 universe 軟件倉庫,關閉默認的 ufw 防火墻,然后再安裝 firewalld

  1. $ sudo systemctl disable ufw
  2. $ sudo add-apt-repository universe
  3. $ sudo apt install firewalld

Fedora、CentOS、RHEL、OpenSUSE,以及其它很多發行版默認就包含了 firewalld

無論你使用哪個發行版,如果希望防火墻發揮作用,就必須保持它在開啟狀態,并且設置成開機自動加載。你應該盡可能減少在防火墻維護工作上所花費的精力。

  1. $ sudo systemctl enable --now firewalld

使用網絡管理器選擇區域

或許你每天都會連接到很多不同的網絡。在工作的時候使用的是一個網絡,在咖啡館里是另一個,在家里又是另一個。你的計算機可以判斷出哪一個網絡的使用頻率比較高,但是它并不知道哪一個是你信任的網絡。

一個防火墻的區域zone里包含了端口開放和關閉的預設規則。你可以通過使用區域來選擇一個對當前網絡最適用的策略。

你可以打開網絡管理器里的連接編輯器(可以在應用菜單里找到),或者是使用 nm-connection-editor & 命令以獲取所有可用區域的列表。

Network Manager Connection Editor

Network Manager Connection Editor

在網絡連接列表中,雙擊你現在所使用的網絡。

在出現的網絡配置窗口中,點擊“通用”標簽頁。

在“通用”面板中,點擊“防火墻區域”旁邊的下拉菜單以獲取所有可用區域的列表。

Firewall zones

Firewall zones

也可以使用下面的終端命令以獲取同樣的列表:

  1. $ sudo firewall-cmd --get-zones

每個區域的名稱已經可以透露出設計者創建這個區域的意圖,不過你也可以使用下面這個終端命令獲取任何一個區域的詳細信息:

  1. $ sudo firewall-cmd --zone work --list-all
  2. work
  3.   target: default
  4.   icmp-block-inversion: no
  5.   interfaces:
  6.   sources:
  7.   services: ssh dhcpv6-client
  8.   ports:
  9.   protocols:
  10.   [...]

在這個例子中,work 區域的配置是允許接收 SSH 和 DHCPv6-client 的流量,但是拒絕接收其他任何用戶沒有明確請求的流量。(換句話說,work 區域并不會在你瀏覽網站的時候攔截 HTTP 響應流量,但是 攔截一個針對你計算機上 80 端口的 HTTP 請求。)

你可以依次查看每一個區域,弄清楚它們分別都允許什么樣的流量。比較常見的有:

  • work:這個區域應該在你非常信任的網絡上使用。它允許 SSH、DHCPv6 和 mDNS,并且還可以添加更多允許的項目。該區域非常適合作為一個基礎配置,然后在此之上根據日常辦公的需求自定義一個工作環境。
  • public: 用在你不信任的網絡上。這個區域的配置和工作區域是一樣的,但是你不應該再繼續添加其它任何允許項目。
  • drop: 所有傳入連接都會被丟棄,并且不會有任何響應。在不徹底關閉網絡的條件下,這已經是最接近隱形模式的配置了,因為只允許傳出網絡連接(不過隨便一個端口掃描器就可以通過傳出流量檢測到你的計算機,所以這個區域并不是一個隱形裝置)。如果你在使用公共 WiFi,這個區域可以說是最安全的選擇;如果你覺得當前的網絡比較危險,這個區域也一定是最好的選擇。
  • block: 所有傳入連接都會被拒絕,但是會返回一個消息說明所請求的端口被禁用了。只有你主動發起的網絡連接是被允許的。這是一個友好版的 drop 區域,因為雖然還是沒有任何一個端口允許傳入流量,但是說明了會拒絕接收任何不是本機主動發起的連接。
  • home: 在你信任網絡里的其它計算機的情況下使用這個區域。該區域只會允許你所選擇的傳入連接,但是你可以根據需求添加更多的允許項目。
  • internal: 和工作區域類似,該區域適用于內部網絡,你應該在基本信任網絡里的計算機的情況下使用。你可以根據需求開放更多的端口和服務,同時保持和工作區域不同的一套規則。
  • trusted: 接受所有的網絡連接。適合在故障排除的情況下或者是在你絕對信任的網絡上使用。

為網絡指定一個區域

你可以為你的任何一個網絡連接都指定一個區域,并且對于同一個網絡的不同連接方式(比如以太網、WiFi 等等)也可以指定不同的區域。

選擇你想要的區域,點擊“保存”按鈕提交修改。

Setting a new zone

Setting a new zone

養成為網絡連接指定區域的習慣的最好辦法是從你最常用的網絡開始。為你的家庭網絡指定家庭區域,為工作網絡指定工作區域,為你最喜歡的圖書館或者咖啡館的網絡指定公關區域。

一旦你為所有常用的網絡都指定了一個區域,在之后加入新的網絡的時候(無論是一個新的咖啡館還是你朋友家的網絡),試圖也為它指定一個區域吧。這樣可以很好地讓你意識到不同的網絡的安全性是不一樣的,你并不會僅僅因為使用了 Linux 而比任何人更加安全。

默認區域

每次你加入一個新的網絡的時候,firewalld 并不會提示你進行選擇,而是會指定一個默認區域。你可以在終端里輸入下面這個命令來獲取你的默認區域:

  1. $ sudo firewall-cmd --get-default
  2. public

在這個例子里,默認區域是 public 區域。你應該保證該區域有非常嚴格的限制規則,這樣在將它指定到未知網絡中的時候才比較安全。或者你也可以設置你自己的默認區域。

比如說,如果你是一個比較多疑的人,或者需要經常接觸不可信任的網絡的話,你可以設置一個非常嚴格的默認區域:

  1. $ sudo firewall-cmd --set-default-zone drop
  2. success
  3. $ sudo firewall-cmd --get-default
  4. drop

這樣一來,任何你新加入的網絡都會被指定使用 drop 區域,除非你手動將它制定為另一個沒有這么嚴格的區域。

通過開放端口和服務實現自定義區域

Firewalld 的開發者們并不是想讓他們設定的區域能夠適應世界上所有不同的網絡和所有級別的信任程度。你可以直接使用這些區域,也可以在它們基礎上進行個性化配置。

你可以根據自己所需要進行的網絡活動決定開放或關閉哪些端口,這并不需要對防火墻有多深的理解。

預設服務

在你的防火墻上添加許可的最簡單的方式就是添加預設服務。嚴格來講,你的防火墻并不懂什么是“服務”,因為它只知道端口號碼和使用協議的類型。不過在標準和傳統的基礎之上,防火墻可以為你提供一套端口和協議的組合。

比如說,如果你是一個 web 開發者并且希望你的計算機對本地網絡開放(這樣你的同事就可以看到你正在搭建的網站了),可以添加 httphttps 服務。如果你是一名游戲玩家,并且在為你的游戲公會運行開源的 murmur 語音聊天服務器,那么你可以添加 murmur 服務。還有其它很多可用的服務,你可以使用下面這個命令查看:

  1. $ sudo firewall-cmd --get-services
  2. amanda-client amanda-k5-client bacula bacula-client \
  3. bgp bitcoin bitcoin-rpc ceph cfengine condor-collector \
  4. ctdb dhcp dhcpv6 dhcpv6-client dns elasticsearch \
  5. freeipa-ldap freeipa-ldaps ftp [...]

如果你找到了一個自己需要的服務,可以將它添加到當前的防火墻配置中,比如說:

  1. $ sudo firewall-cmd --add-service murmur

這個命令 在你的默認區域里 添加了指定服務所需要的所有端口和協議,不過在重啟計算機或者防火墻之后就會失效。如果想讓你的修改永久有效,可以使用 --permanent 標志:

  1. $ sudo firewall-cmd --add-service murmur --permanent

你也可以將這個命令用于一個非默認區域:

  1. $ sudo firewall-cmd --add-service murmur --permanent --zone home

端口

有時候你希望允許的流量并不在 firewalld 定義的服務之中。也許你想在一個非標準的端口上運行一個常規服務,或者就是想隨意開放一個端口。

舉例來說,也許你正在運行開源的 虛擬桌游 軟件 MapTool。由于 MapTool 服務器應該使用哪個端口這件事情并沒有一個行業標準,所以你可以自行決定使用哪個端口,然后在防火墻上“開一個洞”,讓它允許該端口上的流量。

實現方式和添加服務差不多:

  1. $ sudo firewall-cmd --add-port 51234/tcp

這個命令 在你的默認區域 里將 51234 端口向 TCP 傳入連接開放,不過在重啟計算機或者防火墻之后就會失效。如果想讓你的修改永久有效,可以使用 --permanent 標志:

  1. $ sudo firewall-cmd --add-port 51234/tcp --permanent

你也可以將這個命令用于一個非默認區域:

  1. $ sudo firewall-cmd --add-port 51234/tcp --permanent --zone home

在路由器的防火墻上設置允許流量和在本機上設置的方式是不同的。你的路由器可能會為它的內嵌防火墻提供一個不同的配置界面(原理上是相同的),不過這就超出本文范圍了。

移除端口和服務

如果你不再需要某項服務或者某個端口了,并且設置的時候沒有使用 --permanent 標志的話,那么可以通過重啟防火墻來清除修改。

如果你已經將修改設置為永久生效了,可以使用 --remove-port 或者 --remove-service 標志來清除:

  1. $ sudo firewall-cmd --remove-port 51234/tcp --permanent

你可以通過在命令中指定一個區域以將端口或者服務從一個非默認區域中移除。

  1. $ sudo firewall-cmd --remove-service murmur --permanent --zone home

自定義區域

你可以隨意使用 firewalld 默認提供的這些區域,不過也完全可以創建自己的區域。比如如果希望有一個針對游戲的特別區域,你可以創建一個,然后只有在玩兒游戲的時候切換到該區域。

如果想要創建一個新的空白區域,你可以創建一個名為 game 的新區域,然后重新加載防火墻規則,這樣你的新區域就啟用了:

  1. $ sudo firewall-cmd --new-zone game --permanent
  2. success
  3. $ sudo firewall-cmd --reload

一旦創建好并且處于啟用狀態,你就可以通過添加玩游戲時所需要的服務和端口來實現個性化定制了。

勤勉

從今天起開始思考你的防火墻策略吧。不用著急,可以試著慢慢搭建一些合理的默認規則。你也許需要花上一段時間才能習慣于思考防火墻的配置問題,以及弄清楚你使用了哪些網絡服務,不過無論是處在什么樣的環境里,只要稍加探索你就可以讓自己的 Linux 工作站變得更為強大。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-03-18 08:00:48

Chrome工具前端

2025-03-10 08:00:00

開源VS Code開發

2022-07-24 14:49:17

NetfilterLinux防火墻

2009-12-21 14:44:06

2011-03-15 15:47:26

LinuxIptables防火墻

2009-01-18 09:16:00

2009-02-22 09:30:24

2020-04-07 13:20:52

Linux防火墻ufw

2011-03-15 16:35:27

2009-08-28 18:12:26

防火墻規則測試

2022-01-06 07:59:05

Linux 防火墻進程

2009-09-28 10:06:09

Linux防火墻Linux規則

2011-03-17 16:00:57

2024-01-18 10:40:35

2010-08-03 09:39:45

路由器

2020-05-14 22:00:43

FirewallD防火墻系統運維

2009-09-25 11:25:39

2011-03-15 17:12:11

2009-09-04 10:58:14

2010-09-14 13:08:52

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99爱免费| 亚洲精品久久嫩草网站秘色 | 久久中文视频 | 在线观看www | 婷婷丁香在线视频 | 亚洲日本一区二区 | 欧美亚洲免费 | 香蕉一区 | av在线影院 | 国产精品日韩一区二区 | 亚洲一级av毛片 | 久久久精品一区二区三区 | 精品91 | 午夜免费福利片 | 中文av网站| 国产免费又色又爽又黄在线观看 | 日韩成人在线视频 | 久久精品日产第一区二区三区 | 在线免费黄色小视频 | 久久久成人精品 | www.亚洲视频 | 日韩精品在线播放 | 日本高清不卡视频 | 超碰伊人久久 | 第一福利社区1024 | 韩国成人在线视频 | 99re热这里只有精品视频 | 欧美在线视频不卡 | 国产男女猛烈无遮掩视频免费网站 | 在线成人免费视频 | 欧美亚洲国语精品一区二区 | 97精品超碰一区二区三区 | 精品av| 久久久久国产一区二区三区 | 欧美日韩在线视频一区 | 亚州国产 | 亚洲免费视频在线观看 | 亚洲精品91 | 久久久av | 鸳鸯谱在线观看高清 | 久久乐国产精品 |