# 安裝firewalld
yum install firewalld firewall-config
systemctl start? firewalld # 啟動
systemctl status firewalld # 或者 firewall-cmd --state 查看狀態(tài)
systemctl disable firewalld # 停止
systemctl stop firewalld? # 禁用
# 你也可以關(guān)閉目前還不熟悉的FirewallD防火墻,而使用iptables榔幸,命令如下:
yum install iptables-services
systemctl start iptables
systemctl enable iptables
配置
```
firewall-cmd --version? # 查看版本
firewall-cmd --help? ? # 查看幫助
# 查看設(shè)置:
firewall-cmd --state? # 顯示狀態(tài)
firewall-cmd --get-active-zones? # 查看區(qū)域信息
firewall-cmd --get-zone-of-interface=eth0? # 查看指定接口所屬區(qū)域
firewall-cmd --panic-on? # 拒絕所有包
firewall-cmd --panic-off? # 取消拒絕狀態(tài)
firewall-cmd --query-panic? # 查看是否拒絕
firewall-cmd --reload # 更新防火墻規(guī)則
firewall-cmd --complete-reload
# 兩者的區(qū)別就是第一個無需斷開連接垮媒,就是firewalld特性之一動態(tài)添加規(guī)則敦迄,第二個需要斷開連接,類似重啟服務(wù)
# 將接口添加到區(qū)域稽物,默認(rèn)接口都在public
firewall-cmd --zone=public --add-interface=eth0
# 永久生效再加上 --permanent 然后reload防火墻
# 設(shè)置默認(rèn)接口區(qū)域捉偏,立即生效無需重啟
firewall-cmd --set-default-zone=public
# 查看所有打開的端口:
firewall-cmd --zone=dmz --list-ports
# 加入一個端口到區(qū)域:
firewall-cmd --zone=dmz --add-port=8080/tcp
# 打開一個服務(wù),類似于將端口可視化立叛,服務(wù)需要在配置文件中添加,/etc/firewalld 目錄下有services文件夾贡茅,這個不詳細說了秘蛇,詳情參考文檔
firewall-cmd --zone=work --add-service=smtp
# 移除服務(wù)
firewall-cmd --zone=work --remove-service=smtp
# 顯示支持的區(qū)域列表
firewall-cmd --get-zones
# 設(shè)置為家庭區(qū)域
firewall-cmd --set-default-zone=home
# 查看當(dāng)前區(qū)域
firewall-cmd --get-active-zones
# 設(shè)置當(dāng)前區(qū)域的接口
firewall-cmd --get-zone-of-interface=enp03s
# 顯示所有公共區(qū)域(public)
firewall-cmd --zone=public --list-all
# 臨時修改網(wǎng)絡(luò)接口(enp0s3)為內(nèi)部區(qū)域(internal)
firewall-cmd --zone=internal --change-interface=enp03s
# 永久修改網(wǎng)絡(luò)接口enp03s為內(nèi)部區(qū)域(internal)
firewall-cmd --permanent --zone=internal --change-interface=enp03s
服務(wù)管理
# 顯示服務(wù)列表
Amanda, FTP, Samba和TFTP等最重要的服務(wù)已經(jīng)被FirewallD提供相應(yīng)的服務(wù),可以使用如下命令查看:
firewall-cmd --get-services
# 允許SSH服務(wù)通過
firewall-cmd --enable service=ssh
# 禁止SSH服務(wù)通過
firewall-cmd --disable service=ssh
# 打開TCP的8080端口
firewall-cmd --enable ports=8080/tcp
# 臨時允許Samba服務(wù)通過600秒
firewall-cmd --enable service=samba --timeout=600
# 顯示當(dāng)前服務(wù)
firewall-cmd --list-services
# 添加HTTP服務(wù)到內(nèi)部區(qū)域(internal)
firewall-cmd --permanent --zone=internal --add-service=http
firewall-cmd --reload? ? # 在不改變狀態(tài)的條件下重新加載防火墻
端口管理
# 打開443/TCP端口
firewall-cmd --add-port=443/tcp
# 永久打開3690/TCP端口
firewall-cmd --permanent --add-port=3690/tcp
# 永久打開端口好像需要reload一下顶考,臨時打開好像不用赁还,如果用了reload臨時打開的端口就失效了
firewall-cmd --reload
# 查看防火墻,添加的端口也可以看到
firewall-cmd --list-all
控制端口/服務(wù)
可以通過兩種方式控制端口的開放驹沿,一種是指定端口號另一種是指定服務(wù)名艘策。雖然開放 http 服務(wù)就是開放了 80 端口,但是還是不能通過端口號來關(guān)閉渊季,也就是說通過指定服務(wù)名開放的就要通過指定服務(wù)名關(guān)閉朋蔫;通過指定端口號開放的就要通過指定端口號關(guān)閉。還有一個要注意的就是指定端口的時候一定要指定是什么協(xié)議却汉,tcp 還是 udp驯妄。知道這個之后以后就不用每次先關(guān)防火墻了,可以讓防火墻真正的生效合砂。
firewall-cmd --add-service=mysql # 開放mysql端口
firewall-cmd --remove-service=http? ? ? # 阻止http端口
firewall-cmd --list-services? ? ? ? ? ? # 查看開放的服務(wù)
firewall-cmd --add-port=3306/tcp? ? ? ? # 開放通過tcp訪問3306
firewall-cmd --remove-port=80tcp? ? ? ? # 阻止通過tcp訪問3306
firewall-cmd --add-port=233/udp? ? ? ? # 開放通過udp訪問233
firewall-cmd --list-ports? ? ? ? ? ? ? # 查看開放的端口
偽裝IP
firewall-cmd --query-masquerade# 檢查是否允許偽裝IP
firewall-cmd --add-masquerade# 允許防火墻偽裝IP
firewall-cmd --remove-masquerade# 禁止防火墻偽裝IP
端口轉(zhuǎn)發(fā)
端口轉(zhuǎn)發(fā)可以將指定地址訪問指定的端口時青扔,將流量轉(zhuǎn)發(fā)至指定地址的指定端口。轉(zhuǎn)發(fā)的目的如果不指定 ip 的話就默認(rèn)為本機,如果指定了 ip 卻沒指定端口微猖,則默認(rèn)使用來源端口谈息。 如果配置好端口轉(zhuǎn)發(fā)之后不能用,可以檢查下面兩個問題:
比如我將 80 端口轉(zhuǎn)發(fā)至 8080 端口励两,首先檢查本地的 80 端口和目標(biāo)的 8080 端口是否開放監(jiān)聽了
其次檢查是否允許偽裝 IP黎茎,沒允許的話要開啟偽裝 IP
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080# 將80端口的流量轉(zhuǎn)發(fā)至8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1# 將80端口的流量轉(zhuǎn)發(fā)至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080# 將80端口的流量轉(zhuǎn)發(fā)至192.168.0.1的8080端口
當(dāng)我們想把某個端口隱藏起來的時候,就可以在防火墻上阻止那個端口訪問当悔,然后再開一個不規(guī)則的端口,之后配置防火墻的端口轉(zhuǎn)發(fā)踢代,將流量轉(zhuǎn)發(fā)過去盲憎。
端口轉(zhuǎn)發(fā)還可以做流量分發(fā),一個防火墻拖著好多臺運行著不同服務(wù)的機器胳挎,然后用防火墻將不同端口的流量轉(zhuǎn)發(fā)至不同機器饼疙。
轉(zhuǎn)自: