firewall的zone和service

firewalld

打開firewalld
systemctl disable iptables //關閉iptables
systemctl stop iptables //禁止iptables開機啓動
systemctl enable firewalld //開啓firewalld
systemctl start firewalld //讓firewalld開機啓動
mysql

firewalld的9個zone

firewalld默認有9個zone
默認zone爲public
linux

drop(丟棄):任何接收的網絡數據包都被丟棄,沒有回覆。僅能有發送出去的網絡鏈接;
block(限制):任何接收的網絡鏈接都會被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited所拒絕;
public(公共):在公共區域內使用,不能相信網絡中的其餘計算機不會隊你形成危害,只接收通過選取的鏈接;
external(外部):爲路由器啓用假裝功能的外部網絡。只接收通過選取的鏈接;
dmz(非軍事區):用於你的非軍事區的電腦,此區域內能夠公開訪問,能夠有限的進入內部網絡;只接收通過選取的鏈接;
work(工做):用於工做區,基本相信網絡內的其它計算機;只接收通過選取的鏈接;
home(家庭):用於家庭網絡,基本相信網絡內的其餘計算機;只接收通過選取的鏈接;
internal(內部):用於內部網絡,基本相信;只接收通過選取的鏈接;
trusted(信任):能夠接受全部的物理連接;sql

查詢默認的區域名稱 vim

--get-default-zone 服務器

設置默認的區域,使其永久生效 網絡

--set-default-zone=<區域名稱> ssh

顯示可用的區域 tcp

--get-zones ide

顯示預先定義的服務測試

--get-services

顯示當前正在使用的區域與網卡名稱

--get-active-zones

將源自此 IP 或子網的流量導向指定的區域

--add-source=

再也不將源自此 IP 或子網的流量導向某個指定區域

--remove-source=

將源自該網卡的全部流量都導向某個指定區域

--add-interface=<網卡名稱>

顯示當前區域的網卡配置參數、資源、端口以及服務等信息

--change-interface=<網卡名稱> 將某個網卡與區域進行關聯
--list-all

顯示全部區域的網卡配置參數、資源、端口以及服務等信息

--list-all-zones

設置默認區域容許該服務的流量

--add-service=<服務名>

設置默認區域容許該端口的流量

--add-port=<端口號/協議>

設置默認區域再也不容許該服務的流量

--remove-service=<服務名>

讓「永久生效」的配置規則當即生效,並覆蓋當前的配置規則

--remove-port=<端口號/協議> 設置默認區域再也不容許該端口的流量
--reload

開啓應急情況模式

--panic-on

關閉應急情況模式

--panic-off

查看系統全部zone

firewall-cmd --get-zones
[root@jinkai ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

查詢系統默認的zone

firewall-cmd --get-default-zone
[root@jinkai ~]# firewall-cmd --get-default-zone
Public

更改系統默認的zone

Firewall-cmd --set-default-zone=work
[root@jinkai ~]# firewall-cmd --set-default-zone=work
success
[root@jinkai ~]# firewall-cmd --get-default-zone
work

查詢指定網卡所在的zone
firewall-cmd --get-zone-of-interface=ens33
[root@jinkai ~]# firewall-cmd --get-zone-of-interface=ens33
work

查詢全部網卡所在zone

firewall-cmd --get-active-zones
[root@jinkai ~]# firewall-cmd --get-active-zones
work
interfaces: ens33 ens37

給指定網卡設置zong
firewall-cmd --zone=dmz --add-interface=lo
lo默認是沒有zone的,能夠給lo指定一個zone

[root@jinkai ~]# firewall-cmd --zone=block --add-interface=lo
success
[root@jinkai ~]# firewall-cmd --get-active-zones
work
interfaces: ens33 ens37
block
interfaces: lo

針對網卡更改zone
firewall-cmd --zone=work --change-interface=lo
lo原先爲block zone針對網卡lo更改zone爲work;

[root@jinkai ~]# firewall-cmd --get-zone-of-interface=lo
block
[root@jinkai ~]# firewall-cmd --zone=work --change-interface=lo
success
[root@jinkai ~]# firewall-cmd --get-zone-of-interface=lo
work

針對網卡刪除zone

firewall-cmd --zone=dmz --remove-interface=lo
針對網卡lo刪除掉zone;
[root@jinkai ~]# firewall-cmd --zone=work --remove-interface=lo
success
[root@jinkai ~]# firewall-cmd --get-zone-of-interface=lo
no zone

firewalld的service操做
列出當前系統全部的service

firewall-cmd --get-services

查看當前zone下有哪些service

firewall-cmd --list-services
[root@jinkai ~]# firewall-cmd --list-services
ssh dhcpv6-client

查看指定zone下有哪些service

firewall-cmd --zone=work --list-services

查看work下有哪些service

[root@jinkai ~]# firewall-cmd --zone=work --list-services
ssh dhcpv6-client

增長新的service到zone下,默認不加指定參數,爲存在於內存中生效,重啓後失效
firewall-cmd --zone=public --add-service=http
將http服務增長到public下;

[root@jinkai ~]# firewall-cmd --zone=public --add-service=http
success
[root@jinkai ~]# firewall-cmd --zone=public --list-services
ssh dhcpv6-client http

刪除zone中指定的service
firewall-cmd --zone=public --remove-service=http
將public中的http服務刪除掉;

[root@jinkai ~]# firewall-cmd --zone=public --remove-service=http
success
[root@jinkai ~]# firewall-cmd --zone=public --list-services
ssh dhcpv6-client

永久增長service到zone下,會寫入配置文檔中
zone的配置文檔:/etc/firewalld/zones (一旦更改某個zone的模板配置文件,就會在這個目錄下生產對應zong的配置文件xml後綴)
zone的模板文檔:/usr/lib/firewalld/zones
Service的配置文檔:/etc/firewalld/services
service的模板文檔:/usr/lib/firewalld/services
firewall-cmd --zone=public --add-service=http --perma

將http服務增長到public下,並寫入配置文檔中,後面加參數 --permanent;能夠經過新生產的配置文檔public.xml查看;查詢list-services是沒有的,必須重啓纔有效;

[root@jinkai ~]# firewall-cmd --zone=public --add-service=http --permanent
Warning: ALREADY_ENABLED: http
success
[root@jinkai ~]# cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<service name="http"/>
</zone>
[root@jinkai ~]#

啓動/關閉 firewalld 防火牆服務的應急情況模式,阻斷一切網絡鏈接(當遠程控制服務器時請慎用):

[root@linuxprobe ~]# firewall-cmd --panic-on
success
[root@linuxprobe ~]# firewall-cmd --panic-off
Success

查詢 public 區域是否容許請求 SSH 和 HTTPS 協議的流量:

[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
no

把在 firewalld 服務中訪問 8080 和 8081 端口的流量策略設置爲容許,但僅限當前生效:

[root@jinkai ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@jinkai ~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp

Firewall的端口轉發(端口映射)
把本來訪問本機 888 端口的流量轉發到 22 端口,要且求當前和長期均有效:
流量轉發命令格式爲:firewalld-cmd --permanent --zone=<區域> --add-forward-port=port=<源端口號>:proto=<協議>:toport=<目標端口號>:toaddr=<目標IP地址>

[root@jinkai ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.111.136
success
[root@jinkai ~]# firewall-cmd --reload

[root@jinkai02 ~]# ssh 192.168.111.136 -p 888
root@192.168.111.136's password:
Last login: Fri Aug 28 19:27:03 2020 from 192.168.111.1
[root@jinkai ~]#

firewalld 中的富規則表示更細緻、更詳細的防火牆策略配置,它能夠針對系統服務、端口號、源地址和目標地址等諸多信息進行更有針對性的策略配置。它的優先級在全部的防火牆策略中也是最高的。好比,咱們能夠在 firewalld 服務中配置一條富規則,使其拒絕

192.168.111.0/24 網段的全部用戶訪問本機的 ssh 服務(22 端口):
[root@jinkai ~]# firewall-cmd --permanent --zone=public --add-rich-rule=" rule family="ipv4" source address="192.168.111.0/24" service name="ssh" reject"
success
[root@jinkai ~]# firewall-cmd --reload
success

在客戶端使用 ssh 命令嘗試訪問 192.168.111.136 主機的 ssh 服務(22 端口):

[root@jinkai02 ~]# ssh 192.168.111.136
ssh: connect to host 192.168.111.136 port 22: Connection refused
[root@jinkai02 ~]# ssh 192.168.111.136 -p 888
ssh: connect to host 192.168.111.136 port 888: Connection refused
[root@jinkai02 ~]#

針對某個端口只容許某個IP或IP段訪問

使mysql服務的3306端口只容許192.168.111.136的服務器能訪問
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.111.136" port protocol="tcp" port="3306" accept"

小實驗:
需求:ftp服務自定義端口1121,須要在work zone下面放行ftp;
思路:
用模板操做、先將ftp服務模板複製到配置模板下,這樣firewall就會套用該模板,記得修改好端口爲1121;
在work zone下面放行ftp,也就是將ftp服務添加到work中;可是以前不準講work模板複製到firewall的zone下,
並在配置中添加ftp就ok;

一、複製ftp模板到/etc/firewalld/services/目錄下

[root@jinkai ~]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/
[root@jinkai ~]# ls /etc/firewalld/services/
ftp.xml

**二、修改文件、將ftp端口21給爲1121;
vim /etc/firewalld/services/ftp.xml
將port=「21」改爲port=「1121」

[root@jinkai ~]# vim /etc/firewalld/services/ftp.xml **
[root@jinkai ~]# cat !$
cat /etc/firewalld/services/ftp.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>FTP</short>
<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the vsftpd package installed for this option to be useful.</description>
<port protocol="tcp" port="1121"/>
<module name="nf_conntrack_ftp"/>
</service>

三、將work zone模板文件複製或移動到zone目錄下;

[root@jinkai ~]# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
[root@jinkai ~]# ls /etc/firewalld/zones/
public.xml public.xml.old work.xml

四、修改zone配置文件work.xml
vim /etc/firewalld/zones/work.xml
在文檔中添加一行 <service name="ftp"/>
表示在work zone中增長ftp服務;

[root@jinkai ~]# vim /etc/firewalld/zones/work.xml
[root@jinkai ~]# cat !$
cat /etc/firewalld/zones/work.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Work</short>
<description>For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="ftp"/>
<service name="dhcpv6-client"/>
</zone>

五、從新加載firewall

firewall-cmd --reload
[root@jinkai ~]# firewall-cmd --reload
success

測試:
驗證下work zone裏面的service是否有FTP

[root@jinkai ~]# firewall-cmd --zone=work --list-services ssh ftp dhcpv6-client

相關文章
相關標籤/搜索