防火墻是數(shù)據(jù)包進(jìn)入主機(jī)前的第一道關(guān)卡,是一種位于內(nèi)部網(wǎng)絡(luò)與外部網(wǎng)絡(luò)之間的網(wǎng)絡(luò)安全系統(tǒng),是一項(xiàng)信息安全的防護(hù)系統(tǒng),依照特定的規(guī)則,允許或是限制傳輸?shù)臄?shù)據(jù)通過。防火墻主要通過Netfilter與TCPwrappers兩個(gè)機(jī)制來管理的
管理防火墻的兩種工具:firewalld(相對(duì)簡(jiǎn)單)和iptables(復(fù)雜,功能強(qiáng)大)
兩種管理工具的區(qū)別
firewalld工具簡(jiǎn)介:
firewall檢查數(shù)據(jù)包源地址的規(guī)則:
1. 若源地址關(guān)聯(lián)到特定的區(qū)域(即源地址或接口綁定的區(qū)域有沖突),則執(zhí)行該區(qū)域所制定的規(guī)則。
2. 若源地址未關(guān)聯(lián)到特定的區(qū)域(即源地址或接口綁定的區(qū)域沒有沖突),則使用傳入網(wǎng)絡(luò)接口的區(qū)域并執(zhí)行該區(qū)域所制定的規(guī)則。
3. 若網(wǎng)絡(luò)接口也未關(guān)聯(lián)到特定的區(qū)域(即源地址或接口都沒有綁定特定的某個(gè)區(qū)域),則使用默認(rèn)區(qū)域并執(zhí)行該區(qū)域所制定的規(guī)則。
firewalld查詢相關(guān)常用命令
- 查詢防火墻版本:`firewall-cmd --version`
- 查詢防火墻啟動(dòng)狀態(tài):`systemctl status firewalld.service` 或 `firewalld-cmd --state`
- 查看防火墻配置
- 查看防火墻當(dāng)前作用域:`firewall-cmd? --get-active-zone`, (如果返回為空,表示啟用默認(rèn)zone,默認(rèn)zone一般為public)
- 查看當(dāng)前作用域所允許的端口:`firewall-cmd --permanent --zone=public --list-ports`, (如果返回為空,表示當(dāng)前防火墻規(guī)則中沒有開放任何端口。這意味著防火墻沒有限制任何進(jìn)出該計(jì)算機(jī)的網(wǎng)絡(luò)流量)
- 查看當(dāng)前作用域所允許的端口:`firewalld-cmd`
- 查看作用域(zone)相關(guān)配置:
- 查看防火墻的所有作用域:`firewall-cmd --list-all-zones`
- 查看防火墻默認(rèn)作用域:`firewall-cmd --get-default-zone`
- 查看防火墻默認(rèn)作用域的所有規(guī)則:`firewall-cmd --list-all`
- 查看服務(wù)(service)相關(guān)配置:
- 查看防火墻預(yù)定義的服務(wù)列表:`firewall-cmd? --get-services` 列出所有可用的服務(wù)列表,這些服務(wù)列表是FirewallD防火墻預(yù)定義的,并且可以用于設(shè)置防火墻規(guī)則
- 查看默認(rèn)區(qū)域內(nèi)允許訪問的所有服務(wù):`firewall-cmd --list-service`
- 查看防火墻某個(gè)作用域是否允許某個(gè)服務(wù):`firewall-cmd --zone=public --query-service=sshd`
- 查看防火墻端口(port)相關(guān)配置:
防火墻常見設(shè)置:
- 防火墻開啟/關(guān)閉:systemctl start/stop firewalld.service
- 防火墻開機(jī)自啟動(dòng)設(shè)置:systemctl enable/disable firewalld
- 設(shè)置永久允許ssh連接:firewall-cmd? --zone=public? --add-service=ssh --permanent。注意:使用permanent選項(xiàng)將規(guī)則設(shè)置成永久生效時(shí),需要重新啟動(dòng)firewalld服務(wù)或執(zhí)行firewall-cmd? --reload命令重新加載防火墻配置才會(huì)生效,若不帶有此選項(xiàng),表示用于設(shè)置運(yùn)行時(shí)規(guī)則,但是這些規(guī)則在系統(tǒng)或firewalld服務(wù)重啟,停止時(shí)配置將失效
- 設(shè)置永久不允許某個(gè)服務(wù)連接:firewall-cmd --zone=public --remove-service=ssh --permanent
- 重新加載配置,使新增配置生效:firewall-cmd --reload
firealld和iptables兩種防火墻管理工具的區(qū)別:
|? |firewalld? |iptables? |
| ------------ | ------------ | ------------ |
|安全規(guī)則的設(shè)置方式? | firewalld是基于區(qū)域,根據(jù)不同的區(qū)域來設(shè)置不同的規(guī)則,從而保證網(wǎng)絡(luò)的安全。與硬件防火墻的設(shè)置相類似? | iptables主要根據(jù)接口設(shè)置規(guī)則,從而判斷網(wǎng)絡(luò)的安全性? |
|配置存儲(chǔ)位置? |firewalld將配置儲(chǔ)存在/etc/firewalld/ ( 優(yōu)先加載)和/usr/lib/ firewalld/ ( 默認(rèn)的配置文件)中的各種XML文件里? | iptables在/etc/ sysconfig/iptables中儲(chǔ)存配置? |
||使用firewalld卻不會(huì)再創(chuàng)建任何新的規(guī)則,僅僅運(yùn)行規(guī)則中的不同之處。因此firewalld可以在運(yùn)行時(shí)間內(nèi),改變?cè)O(shè)置而不丟失現(xiàn)行連接。|使用iptables每一個(gè)單獨(dú)更改意味著清除所有舊有的規(guī)則和從/etc/sysconfig/iptables里讀取所有新的規(guī)則|
||firewalld防火墻類型為動(dòng)態(tài)防火墻|iptables防火墻類型為靜態(tài)防火墻|