日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

名詞解釋

在具體介紹 zone 之前,先給大家介紹幾個相關的名詞,因為如果不理解這幾個名詞 zone 就無從入手。

  • target:目標,可以理解為默認行為,有四個可選值:default、ACCEPT、REJECT、DROP,如果不設置默認為default
  • service:表示一個服務
  • port:端口,使用 port 可以不通過 service 而直接對端口進行設置
  • interface:接口,可以理解為網卡
  • source:源地址,可以是 ip 地址也可以是 ip 地址段
  • icmp-block:icmp 報文阻塞,可以按照 icmp 類型進行設置
  • masquerade:ip 地址偽裝,也就是按照源網卡地址進行 NAT 轉發
  • forward-port:端口轉發
  • rule:自定義規則

哪個zone在起作用

我們知道每個 zone 就是一套規則集,但是有那么多 zone,對于一個具體的請求來說應該使用哪個zone(哪套規則)來處理呢?這個問題至關重要,如果這點不弄明白其他的都是空中樓閣,即使規則設置的再好,不知道怎樣用、在哪里用也不行。

對于一個接受到的請求具體使用哪個 zone,firewalld 是通過三種方法來判斷的:

1、source,也就是源地址

2、interface,接收請求的網卡

3、firewalld.conf 中配置的默認 zone

這三個的優先級按順序依次降低,也就是說如果按照 source 可以找到就不會再按 interface去查找,如果前兩個都找不到才會使用第三個,也就是講過的在f irewalld.conf 中配置的默認 zone。

配置source

source 是在 zone 的 xml 文件中配置的,其格式為

<zone>
    <source address="address[/mask]"/>
</zone>

只要我們將 source 節點放入相應的 zone 配置文件中就可以了,節點的 address 屬性就是源地址,不過我們要注意相同的 source 節點只可以在一個 zone 中進行配置,也就是說同一個源地址只能對于一個 zone,另外,直接編輯xml文件之后還需要reload才可以起作用。

另外,我們當然也可以使用 firewall-cmd 命令進行配置,這里主要有五個相關命令(參數)

firewall-cmd [--permanent] [--zone=zone] --list-sources
firewall-cmd [--permanent] [--zone=zone] --query-source=source[/mask]
firewall-cmd [--permanent] [--zone=zone] --add-source=source[/mask]
firewall-cmd [--zone=zone] --change-source=source[/mask]
firewall-cmd [--permanent] [--zone=zone] --remove-source=source[/mask]

分別來介紹一下

  • --list-sources:用于列出指定 zone 的所有綁定的 source 地址
  • --query-source:用于查詢指定 zone 是否跟指定 source 地址進行了綁定
  • --add-source:用于將一個 source 地址綁定到指定的 zone
  • --change-source:用于改變 source 地址所綁定的 zone,如果原來沒有綁定則進行綁定,這樣就跟 --add-source 的作用一樣了
  • --remove-source:用于刪除 source 地址跟 zone 的綁定

可以看到上面的命令中有兩個可選參數:--permanent 和 --zone,--permanent 表示是否存儲到配置文件中(如果存儲到配置文件中這不會立即生效),--zone 用于指定所要設置的zone,如果不指定則使用默認 zone。

[root@OpsNote ~]# firewall-cmd --zone=drop --list-all
drop
  interfaces: 
  sources: 
  services: 
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules:     
[root@OpsNote ~]# firewall-cmd --zone=drop --add-source=1.2.3.5
success
[root@OpsNote ~]# firewall-cmd --zone=drop --list-all
drop
  interfaces: 
  sources: 1.2.3.5
  services: 
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
[root@OpsNote ~]# 

 

將 1.2.3.5 綁定到 drop 這個 zone 中,所有來自 1.2.3.5 這個 ip 的連接將會被 drop 。

配置interface

相關的 firewall-cmd 命令為

firewall-cmd [--permanent] [--zone=zone] --list-interfaces
firewall-cmd [--permanent] [--zone=zone] --add-interface=interface
firewall-cmd [--zone=zone] --change-interface=interface
firewall-cmd [--permanent] [--zone=zone] --query-interface=interface
firewall-cmd [--permanent] [--zone=zone] --remove-interface=interface

可以在網卡配置文件中進行配置,比如可以在
/etc/sysconfig.NETwork-scripts/ifcfg-eno16777728 文件中添加下面的配置

ZONE=public

這行配置就相當于下面的命令

[root@OpsNote ~]# firewall-cmd --zone=public --change-interface=eno16777728

這樣配置之后來自 eno16777728 的連接就會使用 public 這個 zone 進行管理(如果source匹配了其他的 zone 除外)。

配置默認zone

默認 zon e的配置是通過 firewalld.conf 配置文件的 DefaultZone 配置項來配置的,當然也可以使用firewall-cmd命令來配置,通過 --get-default-zone 來獲取默認zone的值

[root@OpsNote ~]# firewall-cmd --get-default-zone 
public
[root@OpsNote ~]# firewall-cmd --set-default-zone=internal 
success
[root@OpsNote ~]# firewall-cmd --get-default-zone 
internal
[root@OpsNote ~]# 

使用下面的命令來查看當前所有起作用的zone

[root@OpsNote ~]# firewall-cmd --get-active-zones 
drop
  sources: 1.2.3.5
internal
  interfaces: eno16777728
[root@OpsNote ~]# firewall-cmd --zone=drop --remove-source=1.2.3.5
success
[root@OpsNote ~]# firewall-cmd --get-active-zones 
internal
  interfaces: eno16777728
[root@OpsNote ~]# 

firewalld 還給我們提供了反向查詢的命令,也就是根據 source 或者 interface 查詢所對應的 zone,其命令如下

firewall-cmd --get-zone-of-interface=interface
firewall-cmd --get-zone-of-source=source[/mask]

 

zone 規則配置

target

zone 規則中首先最重要的是 target 的設置,他默認可以取四個值:default、ACCEPT、REJECT、DROP,firewall-cmd 命令如下

firewall-cmd --permanent [--zone=zone] --get-target
firewall-cmd --permanent [--zone=zone] --set-target=target

這里的--permanent不是可選的,也就是說使用firewall-cmd命令也不可以讓他直接生效,也需要reload才可以。

service

配置命令為

firewall-cmd [--permanent] [--zone=zone] --list-services
firewall-cmd [--permanent] [--zone=zone] --add-service=service [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-service=service
firewall-cmd [--permanent] [--zone=zone] --query-service=service

具體每個命令的含義大家對照上面的 source 很容易就理解了,--add 命令中多了一個--timeout選項

--add-service中的--timeout的含義是這樣的:添加一個服務,但是不是一直生效而是生效一段時間,過期之后自動刪除。

這個選項非常有用,比如我們想暫時開放一個端口進行一些特殊的操作(比如遠程調試),等處理完成后再關閉,不過有時候我們處理完之后就忘記關閉了,而現在的 --timeout 選項就可以幫我們很好地解決這個問題,我們在打開的時候就可以直接設置一個時間,到時間之后他自動就可以關閉了。--timeout 和 --permanent 是不可以一起使用的。

port

配置命令為

firewall-cmd [--permanent] [--zone=zone] --list-ports
firewall-cmd [--permanent] [--zone=zone] --add-port=portid[-portid]/protocol [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-port=portid[-portid]/protocol
firewall-cmd [--permanent] [--zone=zone] --query-port=portid[-portid]/protocol

icmp-block

icmp-block 是按照 icmp 的類型進行設置阻塞,比如我們不想接受 ping 報文就可以使用下面的命令來設置

[root@OpsNote ~]# firewall-cmd --add-icmp-block=echo-request

相應操作命令

firewall-cmd [--permanent] [--zone=zone] --list-icmp-blocks
firewall-cmd [--permanent] [--zone=zone] --add-icmp-block=icmptype [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-icmp-block=icmptype
firewall-cmd [--permanent] [--zone=zone] --query-icmp-block=icmptype

masquerade

masquerade 大家應該都比較熟悉,其作用就是ip地址偽裝,也就是NAT轉發中的一種,具體處理方式是將接收到的請求的源地址設置為轉發請求網卡的地址,這在路由器等相關設備中非常重要,比如大家很多都使用的是路由器連接的局域網,而想上互聯網就得將我們的ip地址給修改一下,要不大家都是192.168.1.XXX的內網地址,那請求怎么能正確返回呢?所以在路由器中將請求實際發送到互聯網的時候就會將請求的源地址設置為路由器的外網地址,這樣請求就能正確地返回給路由器了,然后路由器再根據記錄返回給我們發送請求的主機了,這就是 masquerade。

操作命令為

firewall-cmd [--permanent] [--zone=zone] --add-masquerade [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-masquerade
firewall-cmd [--permanent] [--zone=zone] --query-masquerade

forward-port

進行端口轉發,比如我們要將在80端口接收到tcp請求轉發到8080端口可以使用下面的命令

[root@OpsNote ~]# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
success
[root@OpsNote ~]#

forward-port 還支持范圍轉發,比如我們還可以將80到85端口的所有請求都轉發到8080端口,這時只需要將上面命令中的 port 修改為80-85即可。

相關操作命令如下

firewall-cmd [--permanent] [--zone=zone] --list-forward-ports
firewall-cmd [--permanent] [--zone=zone] --add-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]][--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]]
firewall-cmd [--permanent] [--zone=zone] --query-forward-port=port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]]

rule

rule 的操作命令如下

firewall-cmd [--permanent] [--zone=zone] --list-rich-rules
firewall-cmd [--permanent] [--zone=zone] --add-rich-rule='rule' [--timeout=seconds]
firewall-cmd [--permanent] [--zone=zone] --remove-rich-rule='rule'
firewall-cmd [--permanent] [--zone=zone] --query-rich-rule='rule'

這里的參數 'rule' 代表一條規則語句,比如要設置地址為1.2.3.4的source就可以寫成source address="1.2.3.4",也就是直接寫標簽名,然后跟著寫屬性就可以了,我們來看個例子

[root@OpsNote ~]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="1.2.3.4" drop'

 

這條規則就會將1.2.3.4這個源地址的連接全部給drop掉。

使用rule結合--timeout我們可以實現一些非常好玩和有用的功能,比如我們可以寫個自動化腳本,當發現有異常的連接時就可以添加一條rule將其相應的地址drop掉,而且還可以使用--timeout給設置個時間段,過了之后再自動開放!

實驗

firewall-cmd 命令配置

 

1.網站服務器環境的搭建

(1)驗證firewalld在網站服務器上是否啟動并且正常運行

[root@web ~]# systemctl status firewalld

(2)安裝httpd和mod_ssl軟件包

[root@web ~]# yum install -y httpd mod_ssl

(3)啟用并啟動httpd服務

[root@web ~]# systemctl start httpd

[root@web ~]# systemctl enable httpd

(4)創建網站首頁測試頁index.html

[root@web ~]# vi /var/www/html/index.html

test web

(5)更改ssh的監聽端口,并重啟服務,關閉SElinux

[root@web ~]# setenforce 0

[root@web ~]# vi /etc/ssh/sshd_config

Port 12345

[root@web ~]# systemctl restart sshd

2.在網站服務器上配置firewalld防火墻

(1)設置默認區域為dmz區域

[root@web ~]# firewall-cmd --set-default-zone=dmz

(2)為dmz區域打開https服務并添加TCP的12345端口

[root@web ~]# firewall-cmd --zone=dmz --add-service=https --permanent

[root@web ~]# firewall-cmd --zone=dmz --add-port=12345/tcp --permanent

(3)禁止ping

[root@web ~]# firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent

(4)因為預定于的ssh服務已經更改了端口,所以要將預定于ssh服務移除

[root@web ~]# firewall-cmd --zone=dmz --remove-service=ssh --permanent

(5)重新加載firewalld配置。并查看之前的配置

[root@web ~]# firewall-cmd --reload

[root@web ~]# firewall-cmd --list-all

dmz (active)

target: default

icmp-block-inversion: no

interfaces: eth0

sources:

services: https

ports: 12345/tcp

protocols:

masquerade: no

forward-ports:

sourceports:

icmp-blocks: echo-request

rich rules:

3.在網關服務器上配置firewalld防火墻

(1)驗證firewalld在網關服務器上是否啟動并且正在運行

[root@gateway-server ~]# systemctl status firewalld

(2)設置默認區域為external區域,并查看配置結果

[root@gateway-server ~]# firewall-cmd --set-default-zone=external

[root@gateway-server ~]# firewall-cmd --list-all

external (active)

target: default

icmp-block-inversion: no

interfaces: eth0 eth1 eth2

sources:

services: ssh

ports:

protocols:

masquerade: yes

forward-ports:

sourceports:

icmp-blocks:

rich rules:

(3)將eth1網卡配置到trusted區域,將eth2配置到dmz區域

[root@gateway-server ~]# firewall-cmd --change-interface=eth1 --zone=trusted

[root@gateway-server ~]# firewall-cmd --change-interface=eth2 --zone=dmz

(4)查看配置情況

[root@gateway-server ~]# firewall-cmd --get-active-zone

dmz

interfaces: eth2

external

interfaces: eth0

trusted

interfaces: eth1

(5)在企業內網測試計算機上訪問網站服務器

https:192.168.2.10

(6)關閉SELinux,更改ssh的監聽端口,并重啟服務

[root@gateway-server ~]# setenforce 0

[root@gateway-server ~]# vi /etc/ssh/sshd_config

Port 12345

[root@gateway-server ~]# systemctl restart sshd

(7)配置external區域添加TCP的12345端口

[root@gateway-server ~]# firewall-cmd --zone=external --add-port=12345/tcp --permanent

(8)配置external區域移除ssh服務

[root@gateway-server ~]# firewall-cmd --zone=external --remove-service=ssh --permanent

(9)配置external區域禁止ping

[root@gateway-server ~]# firewall-cmd --zone=external --add-icmp-block=echo-request --permanent

(10)重新加載防火墻配置

[root@gateway-server ~]# firewall-cmd --reload

(11)在互聯網測試機上通過ssh登錄網關

[root@localhost ~]# ssh -p 12345 100.1.1.10

(12)在企業內網測試機上ssh登錄web網站服務器的12345端口

[root@localhost ~]# ssh -p 12345 192.168.2.10

4.配置IP偽裝與端口轉發

 

內網用戶通過網關服務器共享上網

(1)外網測試機搭建網站服務,并添加測試網頁

[root@localhost ~]# hostname internet

[root@localhost ~]# bash

[root@internet ~]# yum install -y httpd

[root@internet ~]# vi /var/www/html/index.html

internet web

[root@internet ~]# systemctl enable httpd

[root@internet ~]# systemctl start httpd

(2)在企業內網測試機上訪問外網網站,結果是可以訪問的

http://100.1.1.20

(3)在dmz的網站服務器上測試,同樣可以訪問

http://100.1.1.20

(4)查看網關服務器的external區域是否開啟了地址偽裝

[root@internet ~]# firewall-cmd --list-all --zone=external

external

target: default

icmp-block-inversion: no

interfaces:

sources:

services: ssh

ports:

protocols:

masquerade: yes

forward-ports:

sourceports:

icmp-blocks:

rich rules:

(5)源地址192.168.1.0/24網段的地址開啟IP偽裝

在網關服務器上關閉external的地址偽裝,添加富規則,要求external區域內源地址為192。168.1.0/24網段的地址開啟地址IP偽裝

[root@gateway-server ~]# firewall-cmd --remove-masquerade --zone=external

[root@gateway-server ~]# firewall-cmd --zone=external --add-rich='rule family=ipv4 source address=192.168.1.0/24 masquerade'

(6)在dmz的網站服務器上測試訪問外網,應該不能訪問外網

http://100.1.120

5.配置端口轉發實現互聯網用戶訪問內部web服務器

(1)在網關服務器上配置端口轉發

[root@gateway-server ~]# firewall-cmd --zone=external --add-forward-port=port=443:proto=tcp:toaddr=192.168.2.10

(2)在互聯網測試機上訪問內部web服務器,可以訪問成功

http://100.1.1.10

(3)端口轉發也可以使用富規則,這樣就可以更大程度的控制端口轉發規則,如給內網的web服務器申請類=了一個新的公網ip地址100.1.1.15,需要將新的公網地址100.1.1.15配置在網關服務器的外網接口eth0上,作為第二個Ip地址

firewall-cmd --zone=external --add-rich-rule="rule2 family="ipv4" source address="192.168.2.0/24" masquerade"

[root@gateway-server ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet

BOOTPROTO=static

NAME=eth0

DEVICE=eth0

ONBOOT=yes

IPADDR1=100.1.1.15

PREFIX1=24

IPADDR0=100.1.1.10

PREFIX=24

[root@gateway-server ~]# systemctl restart NetworkManager

[root@gateway-server ~]# ip add

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:ae:7f:64 brd ff:ff:ff:ff:ff:ff

inet 100.1.1.10/8 brd 100.255.255.255 scope global eth0

valid_lft forever preferred_lft forever

inet 100.1.1.15/24 brd 100.1.1.255 scope global eth0

valid_lft forever preferred_lft forever

使用富規則配置端口轉發

[root@gateway-server ~]# firewall-cmd --zone=external --add-rich-rule='rule family=ipv4 destination address=100.1.1.15/32 forward-port port=443 protocol=tcp to-addr=192.168.2.10'

在互聯網測試機上訪問,可以訪問成功

http://10.1.1.15

本文轉自:https://www.cnblogs.com/-xuan/p/10640241.html

分享到:
標簽:命令 cmd
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定