RHCSA 系列(十一): 使用 firewalld 和 iptables 來控制網路流量
簡單來說,防火牆就是一個基於一系列預先定義的規則(例如流量包的目的地或來源,流量的型別等)的安全系統,它控制著一個網路中的流入和流出流量。
RHCSA: 使用 FirewallD 和 Iptables 來控制網路流量 – Part 11
在本文中,我們將回顧 firewalld 和 iptables 的基礎知識。前者是 RHEL 7 中的預設動態防火牆守護程式,而後者則是針對 Linux 的傳統的防火牆服務,大多數的系統和網路管理員都非常熟悉它,並且在 RHEL 7 中也可以用。
FirewallD 和 Iptables 的一個比較
在後臺, firewalld 和 iptables 服務都透過相同的介面來與核心中的 netfilter 框架相交流,這不足為奇,即它們都透過 iptables 命令來與 netfilter 互動。然而,與 iptables 服務相反, firewalld 可以在不丟失現有連線的情況下,在正常的系統操作期間更改設定。
在預設情況下, firewalld 應該已經安裝在你的 RHEL 系統中了,儘管它可能沒有在執行。你可以使用下面的命令來確認(firewall-config 是使用者介面配置工具):
# yum info firewalld firewall-config
檢查 FirewallD 的資訊
以及,
# systemctl status -l firewalld.service
檢查 FirewallD 的狀態
另一方面, iptables 服務在預設情況下沒有被包含在 RHEL 系統中,但可以被安裝上。
# yum update && yum install iptables-services
這兩個守護程式都可以使用常規的 systemd 命令來在開機時被啟動和開啟:
# systemctl start firewalld.service | iptables-service.service
# systemctl enable firewalld.service | iptables-service.service
另外,請閱讀:管理 Systemd 服務的實用命令
至於配置檔案, iptables 服務使用 /etc/sysconfig/iptables
檔案(假如這個軟體包在你的系統中沒有被安裝,則這個檔案將不存在)。在一個被用作叢集節點的 RHEL 7 機子上,這個檔案看起來是這樣:
Iptables 防火牆配置檔案
而 firewalld 則在兩個目錄中儲存它的配置檔案,即 /usr/lib/firewalld
和 /etc/firewalld
:
# ls /usr/lib/firewalld /etc/firewalld
FirewallD 的配置檔案
在這篇文章中後面,我們將進一步檢視這些配置檔案,在那之後,我們將在這兩個地方新增一些規則。現在,是時候提醒你了,你總可以使用下面的命令來找到更多有關這兩個工具的資訊。
# man firewalld.conf
# man firewall-cmd
# man iptables
除了這些,記得檢視一下當前系列的第一篇 RHCSA 系列(一): 回顧基礎命令及系統文件,在其中我描述了幾種渠道來得到安裝在你的 RHEL 7 系統上的軟體包的資訊。
使用 Iptables 來控制網路流量
在進一步深入之前,或許你需要參考 Linux 基金會認證工程師(Linux Foundation Certified Engineer,LFCE) 系列中的 配置 Iptables 防火牆 – Part 8 來複習你腦中有關 iptables 的知識。
例 1:同時允許流入和流出的網路流量
TCP 埠 80 和 443 是 Apache web 伺服器使用的用來處理常規(HTTP)和安全(HTTPS)網路流量的預設埠。你可以像下面這樣在 enp0s3 介面上允許流入和流出網路流量透過這兩個埠:
# iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
# iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
例 2:從某個特定網路中阻擋所有(或某些)流入連線
或許有時你需要阻擋來自於某個特定網路的所有(或某些)型別的來源流量,比方說 192.168.1.0/24:
# iptables -I INPUT -s 192.168.1.0/24 -j DROP
上面的命令將丟掉所有來自 192.168.1.0/24 網路的網路包,而
# iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT
將只允許透過埠 22 的流入流量。
例 3:將流入流量重定向到另一個目的地
假如你不僅使用你的 RHEL 7 機子來作為一個軟體防火牆,而且還將它作為一個硬體防火牆,使得它位於兩個不同的網路之間,那麼在你的系統上 IP 轉發一定已經被開啟了。假如沒有開啟,你需要編輯 /etc/sysctl.conf
檔案並將 net.ipv4.ip_forward
的值設為 1,即:
net.ipv4.ip_forward = 1
接著儲存更改,關閉你的文字編輯器,並最終執行下面的命令來應用更改:
# sysctl -p /etc/sysctl.conf
例如,你可能在一個內部的機子上安裝了一個印表機,它的 IP 地址為 192.168.0.10,CUPS 服務在埠 631 上進行監聽(同時在你的列印伺服器和你的防火牆上)。為了從防火牆另一邊的客戶端傳遞列印請求,你應該新增下面的 iptables 規則:
# iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631
請記住 iptables 會逐條地讀取它的規則,所以請確保預設的策略或後面的規則不會過載上面例子中那些規則。
FirewallD 入門
firewalld 引入的一個變化是區域(zone) (注:翻譯參考了 https://fedoraproject.org/wiki/FirewallD/zh-cn )。這個概念允許將網路劃分為擁有不同信任級別的區域,由使用者決定將裝置和流量放置到哪個區域。
要獲取活動的區域,使用:
# firewall-cmd --get-active-zones
在下面的例子中,public 區域是啟用的,並且 enp0s3 介面被自動地分配到了這個區域。要檢視有關一個特定區域的所有資訊,可使用:
# firewall-cmd --zone=public --list-all
列出所有的 Firewalld 區域
由於你可以在 RHEL 7 安全指南 中閱讀到更多有關區域的知識,這裡我們將僅列出一些特別的例子。
例 4:允許服務透過防火牆
要獲取受支援的服務的列表,可以使用:
# firewall-cmd --get-services
列出所有受支援的服務
要立刻生效且在隨後重啟後都可以讓 http 和 https 網路流量透過防火牆,可以這樣:
# firewall-cmd --zone=MyZone --add-service=http
# firewall-cmd --zone=MyZone --permanent --add-service=http
# firewall-cmd --zone=MyZone --add-service=https
# firewall-cmd --zone=MyZone --permanent --add-service=https
# firewall-cmd --reload
假如 -–zone
被忽略,則使用預設的區域(你可以使用 firewall-cmd –get-default-zone
來檢視)。
若要移除這些規則,可以在上面的命令中將 add
替換為 remove
。
例 5:IP 轉發或埠轉發
首先,你需要檢視在目標區域中,偽裝(masquerading)是否被開啟:
# firewall-cmd --zone=MyZone --query-masquerade
在下面的圖片中,我們可以看到對於外部區域,偽裝已被開啟,但對於公用區域則沒有:
檢視偽裝狀態
你可以為公共區域開啟偽裝:
# firewall-cmd --zone=public --add-masquerade
或者在外部區域中使用偽裝。下面是使用 firewalld 來重複例 3 中的任務所需的命令:
# firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10
不要忘了重新載入防火牆。
在 RHCSA 系列的 第九部分 你可以找到更深入的例子,在那篇文章中我們解釋瞭如何允許或禁用通常被 web 伺服器和 ftp 伺服器使用的埠,以及在針對這兩個服務所使用的預設埠被改變時,如何更改相應的規則。另外,你或許想參考 firewalld 的 wiki 來檢視更深入的例子。
總結
在這篇文章中,我們已經解釋了防火牆是什麼,介紹了在 RHEL 7 中用來實現防火牆的幾個可用的服務,並提供了可以幫助你入門防火牆的幾個例子。假如你有任何的評論,建議或問題,請隨意使用下面的評論框來讓我們知曉。這裡就事先感謝了!
via: http://www.tecmint.com/firewalld-vs-iptables-and-control-network-traffic-in-firewall/
作者:Gabriel Cánepa 譯者:FSSlc 校對:wxy
相關文章
- iptables和firewalld
- Linux 防火牆配置(iptables和firewalld)詳細教程。Linux防火牆
- 深入剖析容器網路和 iptables
- Linux 防火牆:關於 iptables 和 firewalld 的那些事Linux防火牆
- CentOS 7關閉firewalld啟用iptablesCentOS
- RHCSA 系列(八): 加固 SSH,設定主機名及啟用網路服務
- 在Windows作業系統上,有一些流量控制工具可以幫助使用者監視、管理和控制網路流量。以下是一些常見的Windows網路流量控制工具:Windows作業系統
- 【網路協議】TCP的流量控制機制協議TCP
- Linux系統iptables與Firewalld防火牆區別?Linux防火牆
- iptables 及容器網路分析
- RHCSA 系列(十五): 虛擬化基礎和使用 KVM 進行虛擬機器管理虛擬機
- TCP流量控制和擁塞控制TCP
- iptables系列五
- iptables系列二
- [iptables] 基於iptables實現的跨網路通訊
- 利用網路分段和訪問控制來抵禦攻擊
- 網路流量模型模型
- 容器網路中的 Iptables 包路徑
- Imperva:全球52%的網際網路流量來自機器人機器人
- 研究顯示51%網際網路流量來自非人為操作
- 網路安全系列之十一系統命令注入攻擊
- 網路流量預測入門(三)之LSTM預測網路流量
- mrtg網路流量分析, 簡單安裝mrtg分析網路流量(轉)
- 網路安全之iptables實驗篇一
- 詳解網路知識:iptables規則
- 網際網路女皇:流量排名前十公司有四家來自中國
- 網路流量測試工具
- Redis 與網路流量整形Redis
- Iptables 使用
- Zokem:行動網路50%流量來自智慧手機應用
- SimilarWeb:英國成人網站流量佔所有網際網路流量的8.5%MILAWeb網站
- 騰訊是如何大幅降低頻寬和網路流量的
- 《計算機網路微課堂》5-4 TCP的流量控制計算機網路TCP
- Android UI控制元件系列:WebView(網路檢視)AndroidUI控制元件WebView
- iptables基礎原理和使用簡介
- 美國網際網路大流量網站和社交網路一天資料分佈圖網站
- 流量控制--4.軟體和工具
- 網路流量抓包庫 gopacketGo