您好,登錄后才能下訂單哦!
Firewalld入門簡介
從CentOS7開始,默認是沒有iptables的,而使用了firewall防火墻,FirewallD 提供了支持網絡/防火墻區域(zone)定義網絡鏈接以及接口安全等級的動態防火墻管理工具。
什么是動態防火墻?回憶一下iptables service 管理防火墻規則的模式:用戶將新的防火墻規則添加進/etc/sysconfig/iptables 配置文件當中,再執行命令 service iptables reload 使變更的規則生效。
這整個過程的背后,iptables service 首先對舊的防火墻規則進行了清空,然后重新完整地加載所有新的防火墻規則,而如果配置了需要 reload 內核模塊的話,過程背后還會包含卸載和重新加載內核模塊的動作,而不幸的是,這個動作很可能對運行中的系統產生額外的不良影響,特別是在網絡非常繁忙的系統中。
哪怕只修改一條規則也要進行所有規則的重新載入的模式稱為靜態防火墻的話,那么 firewalld 所提供的模式就可以叫做動態防火墻,它的出現就是為了解決這一問題,任何規則的變更都不需要對整個防火墻規則列表進行重新加載,只需要將變更部分保存并更新到運行中的 iptables 即可。
firewalld 和 iptables 之間的關系, firewalld 提供了一個 daemon 和 service,還有命令行和圖形界面配置工具,它僅僅是替代了 iptables service 部分,其底層還是使用 iptables 作為防火墻規則管理入口。firewalld 使用 python 語言開發,在新版本中已經計劃使用 c++ 重寫 daemon 部分。
Firewalld將網卡對應到不同的區域(zone),zone 默認共有9個,block dmz drop external home internal public trusted work.
不同的區域之間的差異是其對待數據包的默認行為不同,根據區域名字我們可以很直觀的知道該區域的特征,在CentOS7系統中,默認區域被設置為public.
在最新版本的fedora(fedora21)當中隨著 server 版和 workstation 版的分化則添加了兩個不同的自定義 zone FedoraServer 和 FedoraWorkstation 分別對應兩個版本。
使用下面的命令分別列出所有支持的 zone
firewall-cmd --get-zones
block dmz drop external home internal public trusted work
查看當前的默認 zone
firewall-cmd --get-default-zone
public
區域(zone)說明如下:
iptables service 在 /etc/sysconfig/iptables 中儲存配置
firewalld 將配置儲存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各種 XML 文件里
/etc/firewalld/的區域設定是一系列可以被快速執行到網絡接口的預設定。列表并簡要說明如下:
drop(丟棄)
任何接收的網絡數據包都被丟棄,沒有任何回復。僅能有發送出去的網絡連接。
block(限制)
任何接收的網絡連接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒絕。
public(公共)
在公共區域內使用,不能相信網絡內的其他計算機不會對您的計算機造成危害,只能接收經過選取的連接。
external(外部)
特別是為路由器啟用了偽裝功能的外部網。您不能信任來自網絡的其他計算,不能相信它們不會對您的計算機造成危害,只能接收經過選擇的連接。
dmz(非軍事區)
用于您的非軍事區內的電腦,此區域內可公開訪問,可以有限地進入您的內部網絡,僅僅接收經過選擇的連接。
work(工作)
用于工作區。您可以基本相信網絡內的其他電腦不會危害您的電腦。僅僅接收經過選擇的連接。
home(家庭)
用于家庭網絡。您可以基本信任網絡內的其他計算機不會危害您的計算機。僅僅接收經過選擇的連接。
internal(內部)
用于內部網絡。您可以基本上信任網絡內的其他計算機不會威脅您的計算機。僅僅接受經過選擇的連接。
trusted(信任)
可接受所有的網絡連接。
指定其中一個區域為默認區域是可行的。當接口連接加入了 NetworkManager,它們就被分配為默認區域。安裝時firewalld 里的默認區域被設定為公共區域。
在 /usr/lib/firewalld/services/ 目錄中,還保存了另外一類配置文件,每個文件對應一項具體的網絡服務,如 ssh 服務等.
與之對應的配置文件中記錄了各項服務所使用的 tcp/udp 端口,在最新版本的 firewalld 中默認已經定義了 70+ 種服務供我們使用.
當默認提供的服務不夠用或者需要自定義某項服務的端口時,我們需要將 service 配置文件放置在 /etc/firewalld/services/ 目錄中.
service 配置的好處顯而易見:
第一,通過服務名字來管理規則更加人性化,
第二,通過服務來組織端口分組的模式更加高效,如果一個服務使用了若干個網絡端口,則服務的配置文件就相當于提供了到這些端口的規則管理的批量操作快捷方式。
每加載一項 service 配置就意味著開放了對應的端口訪問,使用下面的命令分別列出所有支持的 service
firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp open*** pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
查看當前 zone 種加載的 service
firewall-cmd --list-services
dhcpv6-client ssh
動態添加一條防火墻規則如下:
假設自定義的 ssh 端口號為 12222,使用下面的命令來添加新端口的防火墻規則:
firewall-cmd --add-port=12222/tcp --permanent
如果需要使規則保存到 zone 配置文件,則需要加參數 –permanent
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。