首頁 > 軟體

Linux基礎教學學習筆記32——防火牆的使用與設定

2020-06-16 18:02:41

Linux基礎教學學習筆記32——防火牆的使用與設定

一、RHEL7中的防火牆型別

以下防火牆只能同時使用一張,firewall底層呼叫的還是Iptables的服務:

firewalld:預設

iptables:RHEL6使用

ip6tables

ebtables

二、防火牆的設定方式

1、圖形化設定

使用firewall-config

允許某項服務只需打上勾即可

2、命令列

三、防火牆的區域與設定

檢視區域:

[root@linuxidc ~]# firewall-cmd --get-zones 

block dmz drop external home internal public trusted work

檢視預設區域

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

public

每個區域設定多個服務,對應多個介面

[root@linuxidc ~]# firewall-cmd --get-services

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 openvpn 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

檢視允許的服務

[root@linuxidc ~]# firewall-cmd --list-services --zone=public

dhcpv6-client ssh

某些服務,對應多個埠,在防火牆允許某項服務則可能意味著允許該服務對應的多個埠:

給區域新增服務:

[root@linuxidc ~]# firewall-cmd --add-service=ftp --zone=public  --permanent

刪除區域服務:

[root@linuxidc ~]# firewall-cmd --remove-service=ftp --zone=public

檢視某項服務是否被允許:

[root@linuxidc ~]# firewall-cmd --query-service=http --zone=public

no

區域新增埠:

[root@linuxidc ~]# firewall-cmd --add-port=8000/tcp --zone=public --permanent

刪除埠:

1  firewall-cmd --remove-port=8000/tcp --zone=public

檢視埠是否被允許:

[root@linuxidc ~]# firewall-cmd --query-port=8000/tcp --zone=public

一個區域可以繫結多個網絡卡,一個網絡卡只能系結一個區域:

檢視網絡卡和區域系結:

[root@linuxidc ~]# firewall-cmd --get-zone-of-interface=ens33

區域新增埠:

[root@linuxidc ~]# firewall-cmd --add-interface=ens34 --zone=public --permanent

區域刪除網絡卡:

[root@linuxidc ~]# firewall-cmd --remove-interface=ens34 --zone=public --permanent

修改網絡卡的區域:

[root@linuxidc html]# firewall-cmd --change-interface=ens33 --zone=public --permanent

trusted區域的所有服務都被允許:

網絡卡如果不屬於任何區域,那麼來自該介面的所有封包將使用預設的區域規則:

區域新增來源地址,如果介面不屬於某個區域,那麼來自於該介面的流量如果匹配來源地址,那麼流量將從來源的區域通過:

檢視某個區域的所有設定資訊:

[root@linuxidc html]# firewall-cmd --list-all

public (default, active)

  interfaces: br1 ens34 ens37 virbr0

  sources: 

  services: dhcpv6-client ssh

  ports: 443/tcp 464/tcp 88/udp 88/tcp 123/udp 389/tcp 53/tcp 53/udp 636/tcp

  masquerade: no

  forward-ports: 

  icmp-blocks: 

  rich rules:

所有的設定操作如果想永久生效,則需要加--permanent選項,否則設定只會在當前執行環境生效

三、firewall對ICMP的過濾

firewall可以對以下型別的ICMP進行過濾:

firewall對ICMP的過濾存在BUG,對RHEL6及windows的機器均不能很好的支援,只能對RHEL7有效

四、富規則rich rule

富規則可以對伺服器端口協定進行更詳細的設定:

命令列設定富規則:

檢視富規則:

[root@linuxidc ~]# firewall-cmd --list-rich-rules

rule family="ipv4" source address="10.35.89.0/24" service name="http" accept

[root@linuxidc ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=10.35.89.0/24 service name=ftp log prefix="ftp" level=info accept' --permanent

[root@linuxidc ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=10.35.89.0/24 port port=80 protocol=tcp  log prefix="80" level=info accept' --permanent

刪除富規則

[root@linuxidc ~]# firewall-cmd --remove-rich-rule 'rule family=ipv4 source address=10.35.89.0/24 service name=ftp accept'

五、埠轉發

圖形化設定:

本地轉發

轉發到其他主機:

命令列設定:

[root@linuxidc log]# firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=

forward-ports: port=8000:proto=tcp:toport=80:toaddr=

port=8080:proto=tcp:toport=80:toaddr=

六、偽裝masque

圖形化設定很簡單,勾上偽裝區域即可

命令列設定也很簡單:

[root@linuxidc log]# firewall-cmd --add-masquerade

啟用偽裝功能的主機同時也需要開啟轉發服務:

[root@linuxidc log]# echo 1 > /proc/sys/net/ipv4/ip_forward

富規則中使用偽裝功能可以更精確詳細的限制:

[root@linuxidc log]# firewall-cmd --add-rich-rule '

rule family=ipv4 source address=10.10.10.2/24 masquerade'

rule family="ipv4" source address="192.168.10.30" forward-port port="808" protocol="tcp" to-port="80" to-addr="10.10.10.2"

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-04/115989.htm


IT145.com E-mail:sddin#qq.com