0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux下的防火墻功能常用知識點介紹

阿銘linux ? 來源:阿銘linux ? 作者:阿銘linux ? 2022-12-27 09:06 ? 次閱讀

Linux下的防火墻功能是非常豐富的,但阿銘在日常的運維工作中,使用它的情況并不多。所以阿銘打算把一些常用的知識點介紹給大家。

14.4.3firewalld

介紹完了netfilter,阿銘覺得也有必要再說一下firewalld,畢竟這個才是Rocky8上默認(rèn)的防火墻。

在上一節(jié)中,阿銘把firewalld服務(wù)給禁掉了,而是打開了iptables服務(wù),現(xiàn)在再反過來關(guān)閉iptables服務(wù),打開firewalld服務(wù)。

操作如下所示:

# iptables –P INPUT ACCEPT 
# yum remove -y iptables
# systemctl enable firewalld
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
# systemctl start firewalld
首先將INPUT鏈的默認(rèn)策略設(shè)置為ACCEPT,因為前面的實驗中有將其設(shè)置為DROP。

在前面介紹的iptables相關(guān)的命令,其實也是可以繼續(xù)使用的,只不過在Rocky8中不用那么操作,而是有firewalld自己的命令。

Firewalld有兩個基礎(chǔ)概念,分別是zone和service,每一個zone里面有不同的iptables規(guī)則,默認(rèn)一共有9個zone,而默認(rèn)的zone為public。

獲取系統(tǒng)所有的zone,命令如下所示:
# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

如下命令可以查看系統(tǒng)默認(rèn)的zone:

# firewall-cmd --get-default-zone
public

下面阿銘簡單介紹一下上面提到的9個zone。

drop(丟棄):任何接收的網(wǎng)絡(luò)數(shù)據(jù)包都被丟棄,沒有任何回復(fù)。僅能有發(fā)送出去的網(wǎng)絡(luò)連接。

block(限制):任何接收的網(wǎng)絡(luò)連接都被 IPv4 的icmp-host-prohibited信息和 IPv6 的icmp6-adm-prohibited信息所拒絕。

public(公共):在公共區(qū)域內(nèi)使用,不能相信網(wǎng)絡(luò)內(nèi)的其他計算機(jī)不會對你的計算機(jī)造成危害,只能接收經(jīng)過選取的連接。

external(外部):特別是為路由器啟用了偽裝功能的外部網(wǎng)。你不能信任來自網(wǎng)絡(luò)的其他計算,不能相信它們不會對你的計算機(jī)造成危害,只能接收經(jīng)過選擇的連接。

dmz(非軍事區(qū)):用于你的非軍事區(qū)內(nèi)的計算機(jī),此區(qū)域內(nèi)可公開訪問,可以有限地進(jìn)入你的內(nèi)部網(wǎng)絡(luò),僅僅接收經(jīng)過選擇的連接。

work(工作):用于工作區(qū)。你可以基本相信網(wǎng)絡(luò)內(nèi)的其他計算機(jī)不會危害你的計算機(jī)。僅僅接收經(jīng)過選擇的連接。

home(家庭):用于家庭網(wǎng)絡(luò)。你可以基本信任網(wǎng)絡(luò)內(nèi)的其他計算機(jī)不會危害你的計算機(jī)。僅僅接收經(jīng)過選擇的連接。

internal(內(nèi)部):用于內(nèi)部網(wǎng)絡(luò)。你可以基本上信任網(wǎng)絡(luò)內(nèi)的其他計算機(jī)不會威脅你的計算機(jī)。僅僅接受經(jīng)過選擇的連接。

trusted(信任):可接受所有的網(wǎng)絡(luò)連接。

對于以上9個zone簡單了解即可,阿銘相信你在日常工作中使用它們的機(jī)會不會太多。下面介紹幾個關(guān)于zone的命令:

# firewall-cmd --set-default-zone=work  #設(shè)定默認(rèn)的zone為work
success
# firewall-cmd --get-zone-of-interface=ens33 #查看指定網(wǎng)卡所在的zone
Work
# firewall-cmd --zone=public --add-interface=lo #給指定網(wǎng)卡設(shè)置zone
success
# firewall-cmd --zone=dmz --change-interface=lo #針對網(wǎng)卡更改zone
success
# firewall-cmd --zone=dmz --remove-interface=lo  #針對網(wǎng)卡刪除zone
Success
# firewall-cmd --get-active-zones  #查看系統(tǒng)所有網(wǎng)卡所在的zone
Work
interfaces: ens33

阿銘覺得firewalld工具的開發(fā)者可能是想簡化用戶的使用過程,所以提供了這9種zone,這9種zone中,總有一個是適合我們的使用場景的。

那到底zone是什么?每一種zone之間到底有什么區(qū)別呢?

下面阿銘再給大家介紹一個概念——service。其實,之所以有9種zone,是因為每一個zone里面都使用了不同的service,而service就是針對一個服務(wù)(端口)做的iptables規(guī)則。

# firewall-cmd --get-service  #列出當(dāng)前系統(tǒng)所有的service
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

這些service都是由一個個配置文件定義的,配置文件的模板在/usr/lib/firewalld/services/目錄下,真正生效的配置在/etc/firewalld/services目錄下面(默認(rèn)為空):

# ls /usr/lib/firewalld/services/
amanda-client.xml dhcpv6-client.xml        git.xml                kpasswd.xml            murmur.xml                prometheus.xml      sip.xml                tentacle.xml
amanda-k5-client.xml dhcpv6.xml               grafana.xml            kprop.xml              mysql.xml                 proxy-dhcp.xml      slp.xml                tftp-client.xml
amqps.xml dhcp.xml                 gre.xml                kshell.xml             nfs3.xml                  ptp.xml             smtp-submission.xml    tftp.xml
amqp.xml distcc.xml               high-availability.xml  ldaps.xml              nfs.xml                   pulseaudio.xml      smtps.xml              tile38.xml
apcupsd.xml dns-over-tls.xml         https.xml              ldap.xml               nmea-0183.xml             puppetmaster.xml    smtp.xml               tinc.xml
audit.xml dns.xml                  http.xml               libvirt-tls.xml        nrpe.xml                  quassel.xml         snmptrap.xml           tor-socks.xml
bacula-client.xml docker-registry.xml      imaps.xml              libvirt.xml            ntp.xml                   radius.xml          snmp.xml               transmission-client.xml
bacula.xml docker-swarm.xml         imap.xml               lightning-network.xml  nut.xml                   rdp.xml             spideroak-lansync.xml  upnp-client.xml
bb.xml dropbox-lansync.xml      ipp-client.xml         llmnr.xml              openvpn.xml               redis-sentinel.xml  spotify-sync.xml       vdsm.xml
bgp.xml elasticsearch.xml        ipp.xml                managesieve.xml        ovirt-imageio.xml         redis.xml           squid.xml              vnc-server.xml
bitcoin-rpc.xml etcd-client.xml          ipsec.xml              matrix.xml             ovirt-storageconsole.xml  RH-Satellite-6.xml  ssdp.xml               wbem-https.xml
bitcoin-testnet-rpc.xml etcd-server.xml          ircs.xml               mdns.xml               ovirt-vmconsole.xml       rpc-bind.xml        ssh.xml                wbem-http.xml
bitcoin-testnet.xml finger.xml               irc.xml                memcache.xml           plex.xml                  rsh.xml             steam-streaming.xml    wsmans.xml
bitcoin.xml freeipa-4.xml            iscsi-target.xml       minidlna.xml           pmcd.xml                  rsyncd.xml          svdrp.xml              wsman.xml
bittorrent-lsd.xml freeipa-ldaps.xml        isns.xml               mongodb.xml            pmproxy.xml               rtsp.xml            svn.xml                xdmcp.xml
ceph-mon.xml freeipa-ldap.xml         jenkins.xml            mosh.xml               pmwebapis.xml             salt-master.xml     syncthing-gui.xml      xmpp-bosh.xml
ceph.xml freeipa-replication.xml  kadmin.xml             mountd.xml             pmwebapi.xml              samba-client.xml    syncthing.xml          xmpp-client.xml
cfengine.xml freeipa-trust.xml        kdeconnect.xml         mqtt-tls.xml           pop3s.xml                 samba-dc.xml        synergy.xml            xmpp-local.xml
cockpit.xml ftp.xml                  kerberos.xml           mqtt.xml               pop3.xml                  samba.xml           syslog-tls.xml         xmpp-server.xml
condor-collector.xml ganglia-client.xml       kibana.xml             mssql.xml              postgresql.xml            sane.xml            syslog.xml             zabbix-agent.xml
ctdb.xml ganglia-master.xml       klogin.xml             ms-wbt.xml             privoxy.xml               sips.xml            telnet.xml             zabbix-server.xml

阿銘剛剛說過,每個zone里面都有不同的service,那如何查看一個zone下面有哪些service呢?

# firewall-cmd --list-services  #查看當(dāng)前zone下有哪些service
cockpit dhcpv6-client ssh
# firewall-cmd --zone=public --list-services  #查看指定zone下有哪些service

一個zone下面有某個service,意味著這個service是被信任的。

比如,當(dāng)前zone下面有ssh,那么ssh服務(wù)(也就是22)端口是放行的。

我們可以給一個zone添加一個service,命令如下:

# firewall-cmd --zone=public --add-service=http // 把http增加到public zone下面
success
# firewall-cmd --zone=public --list-service
cockpit dhcpv6-client http ssh

對于每個zone來說,都有自己的配置文件,你可以查看目錄/usr/lib/firewalld/zones/下面對應(yīng)的文件,這些就是zone的配置文件:

# ls /usr/lib/firewalld/zones/
block.xml dmz.xml  drop.xml  external.xml  home.xml  internal.xml  public.xml  trusted.xml  work.xml

剛剛阿銘教給你一個命令,可在一個zone里面增加一個service,但這種方法僅僅在內(nèi)存中生效,并沒有修改配置文件,如果想修改配置文件,需要加一個選項:

# firewall-cmd --zone=public --add-service=http --permanent
success

一旦更改了某個zone的配置文件,則會在/etc/firewalld/zones/目錄下面生成對應(yīng)zone的配置文件(.xml后綴的文件),其實這個目錄下面的配置文件才是真正的配置文件。

阿銘在上面介紹的目錄,可以說是所有zone的模板配置文件。

下面阿銘舉一個實際的例子,幫助你明白zone和service兩個概念。

需求:假如服務(wù)器上配置了一個FTP服務(wù),但端口并非默認(rèn)的21,而是1121,并且需要在work zone下面放行FTP。

具體的做法如下:

#cp/usr/lib/firewalld/services/ftp.xml/etc/firewalld/services/ #這個和上面阿銘提到的情況一樣,///usr/lib/firewalld/services/目錄下面為所有service的模板配置文件
# vi /etc/firewalld/services/ftp.xml  #把里面的21改為1121
# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
# vi /etc/firewalld/zones/work.xml   #在里面增加一行FTP相關(guān)的配置,內(nèi)容如下

WorkFor use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.
# firewall-cmd --reload   #重新加載

再來驗證一下work zone里面的service是否有FTP:

# firewall-cmd --zone=work --list-services
cockpit dhcpv6-client ftp ssh

上面的方法還是有點羅嗦,有沒有像上一小節(jié)中iptables命令那樣簡單的方式呢?當(dāng)然有,下面阿銘再給大家找?guī)讉€典型例子。

1)放行指定端口:

# firewall-cmd --set-default-zone=public  #將默認(rèn)zone設(shè)置為public
# firewall-cmd --zone=public --add-port 1000/tcp --permanent   #如果不指定--zone默認(rèn)就是public,增加tcp的1000端口,增加--permanent是為了讓其永久生效,否則重啟后就失效了
success
# firewall-cmd --reload   #使其規(guī)則生效
# firewall-cmd --list-all  #列出當(dāng)前具體規(guī)則,可以看到剛剛增加的1000端口
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources: 
services: cockpit dhcpv6-client http ssh
ports: 1000/tcp
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules:

2)添加多個端口

# firewall-cmd --add-port 3000-3010/tcp --permanent    #3000-3010指定一個范圍
success
# firewall-cmd --reload   
# firewall-cmd --list-all |grep ports   #用grep過濾只含有’ports’字符的行
ports: 1000/tcp 3000-3010/tcp
forward-ports: 
source-ports:
# firewall-cmd --add-port 80/tcp --add-port 8080/tcp  --permanent   #如果要增加多個port,那就要寫多個--add-port
# firewall-cmd --reload

3)刪除指定端口

# firewall-cmd --remove-port 8080/tcp --permanent
success
# firewall-cmd --reload
success
# firewall-cmd --list-all |grep ports
ports: 1000/tcp 3000-3010/tcp 80/tcp
forward-ports: 
source-ports:

4)針對某個ip開放指定端口

# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.72.166" port protocol="tcp" port="6379" accept"
success
# firewall-cmd --reload
success
# firewall-cmd --list-all 
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources: 
services: cockpit dhcpv6-client http ssh
ports: 1000/tcp 3000-3010/tcp 80/tcp
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules: 
rule family="ipv4" source address="192.168.72.166" port port="6379" protocol="tcp" accept
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/24" accept" //放行指定網(wǎng)段
success
# firewall-cmd --reload
success
# firewall-cmd --list-all 
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources: 
services: cockpit dhcpv6-client http ssh
ports: 1000/tcp 3000-3010/tcp 80/tcp
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules: 
rule family="ipv4" source address="192.168.72.166" port port="6379" protocol="tcp" accept
rule family="ipv4" source address="192.168.0.0/24" accept

5)刪除某條規(guī)則

# firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.0.0/24" accept"
success
# firewall-cmd --reload

關(guān)于firewalld,阿銘就介紹這些。這部分內(nèi)容要是仔細(xì)研究還是蠻多的,但阿銘覺得畢竟在工作中使用得并不多,了解這些內(nèi)容足夠了。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11207

    瀏覽量

    208717
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    590

    瀏覽量

    27316
  • 防火墻
    +關(guān)注

    關(guān)注

    0

    文章

    416

    瀏覽量

    35576
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3693

    瀏覽量

    113426
  • FTP
    FTP
    +關(guān)注

    關(guān)注

    0

    文章

    106

    瀏覽量

    40568

原文標(biāo)題:Linux下防火墻-firewalld

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Linux防火墻

    Linux防火墻功能是非常豐富的,但阿銘在日常的運維工作中,使用它的情況并不多。所以阿銘打算把一些常用
    發(fā)表于 12-22 09:15 ?613次閱讀

    Linux防火墻-firewalld

    Linux防火墻功能是非常豐富的,但阿銘在日常的運維工作中,使用它的情況并不多。所以阿銘打算把一些常用
    發(fā)表于 12-27 09:04 ?418次閱讀

    Linux如何關(guān)閉防火墻

    1、查看防火墻規(guī)則vim /etc/sysconfig/iptables放開某個端口號不被防火墻攔截,適用于部署tomcat,nginx等之類的軟件
    發(fā)表于 07-12 06:31

    Linux防火墻入門教程分享

    電腦上的防火墻很重要。如果你維護(hù)一臺 Linux 服務(wù)器,那么知道怎么去管理你的防火墻同樣重要,只要掌握了這些知識你才能保護(hù)你的服務(wù)器免于本地或遠(yuǎn)程非法流量的入侵。
    發(fā)表于 12-28 06:54

    基于Linux 高校網(wǎng)絡(luò)防火墻的設(shè)計

    在眾多網(wǎng)絡(luò)安全技術(shù)中,防火墻技術(shù)是常用的一種。本文首先分析了網(wǎng)絡(luò)安全和防火墻的基本概念,然后設(shè)計了一種以太網(wǎng)綜合型主機(jī)防火墻。該防火墻使用了
    發(fā)表于 06-06 15:40 ?30次下載

    基于Linux防火墻技術(shù)研究

    介紹防火墻的基本概念及其主要功能,分析了Linux 內(nèi)核防火墻Netfilter 的架構(gòu)、構(gòu)建防火墻
    發(fā)表于 06-10 14:40 ?15次下載

    防火墻技術(shù)

    防火墻技術(shù).ppt 防火墻及相關(guān)概念包過濾型防火墻代理服務(wù)型防火墻 防火墻的配置分布式防火墻
    發(fā)表于 06-16 23:41 ?0次下載

    防火墻原理

    課程說明   2 課程介紹 . . 3 課程目標(biāo) . . 3 相關(guān)資料 . . 3 第一節(jié) 防火墻工作原理  2 1.1 什么是防火墻  . . 2 1.2
    發(fā)表于 06-24 18:13 ?71次下載

    Linux新型內(nèi)核防火墻研究和應(yīng)用

    Linux新型防火墻netfilter框架原理及工作機(jī)制基礎(chǔ)上,研究了該防火墻的應(yīng)用設(shè)計, 提出了用netfilter/iptables構(gòu)建門戶服務(wù)器防火墻的實現(xiàn)方法,實驗測試證明,
    發(fā)表于 08-25 11:35 ?14次下載

    基于Linux高校網(wǎng)絡(luò)防火墻的設(shè)計

    在眾多網(wǎng)絡(luò)安全技術(shù)中,防火墻技術(shù)是常用的一種。本文首先分析了網(wǎng)絡(luò)安全和防火墻的基本概念,然后設(shè)計了一種以太網(wǎng)綜合型主機(jī)防火墻。該防火墻使用了
    發(fā)表于 12-16 12:15 ?23次下載

    防火墻防火墻的滲透技術(shù)

    防火墻防火墻的滲透技術(shù) 傳統(tǒng)的防火墻工作原理及優(yōu)缺點: 1.(傳統(tǒng)的)包過濾防火墻的工作原理   包過濾是在IP層實現(xiàn)的,因
    發(fā)表于 08-01 10:26 ?1037次閱讀

    如何配置Cisco PIX防火墻

    如何配置Cisco PIX防火墻 在配置PIX防火墻之前,先來介紹防火墻的物理特性。防火墻
    發(fā)表于 01-13 13:26 ?579次閱讀

    究竟什么是防火墻

    究竟什么是防火墻?     Q:防火墻初級入門:究竟什么是防火墻?     A:防火墻定義
    發(fā)表于 02-24 11:51 ?773次閱讀

    SIP防火墻基礎(chǔ)知識及穿越的匯總

    SIP防火墻穿越的匯總 術(shù)語和基礎(chǔ)知識防火墻  一個防火墻限制私人內(nèi)網(wǎng)和公眾因特網(wǎng)之間的通訊,典型地防火墻就是丟棄
    發(fā)表于 09-10 12:41 ?1832次閱讀

    Juniper防火墻幾種常用功能的配置

    這里講述的Juniper防火墻的幾種常用功能主要是指基于策略的NAT的實現(xiàn),包括:MIP、VIP和DIP,這三種常用功能主要應(yīng)用于防火墻所保護(hù)服務(wù)器提供對外服務(wù)。
    的頭像 發(fā)表于 04-03 10:52 ?2980次閱讀