Linux 伺服器系統管理第六章 網路管理  上一頁   

6-6 防火牆設定 – CentOS 7

內容:

  • 6-6-1 防火牆運作程序

  • 6-6-2 防火牆套件安裝

  • 6-6-3 開放相關伺服器埠口

6-6-1 防火牆運作程序

『防火牆』(Firewall是公眾網路與私有網路之間的通道隘口,功能是過濾封包進出。簡單的說,防火牆好比是城門的防護措施,如果防護太過嚴密(甚至關閉城門),便會失去建構網路的目的;但過於鬆散,易使內部資料暴露於外人之手,其間實難取捨。一般就安全措施的鬆緊度而言,主要依照私有網路的『安全政策』(Security Policy)而定,並沒有一定的標準。

6-2 主機防火牆的功能

我們可用圖 6-2 來說明防火牆的功能。防火牆是介於公眾網路和私有網路(或稱內部網路、受保護的網路)之間,是所有對內/對外通訊的『咽喉點』。當外部網路使用者欲傳送訊息進入內部網路,稱為『進入』(Inbound封包;而內部使用者送往外部網路的訊息,則稱為『外出』(Outbound封包。防火牆功能就是管制『進入』與『外出』封包的進出,以達到安全防護的目的。

『封包過濾』(Packet Filtering)是防火牆最基本的功能,它檢視進出封包是否符合安全規範,再決定是否給予放行。好像很困難其實很簡單,目前 Internet 網路大多採用 TCP/IP 網路協定,任何服務通道都以 TCP UDP 埠口為管道,任何網路服務都掛在 TCP/UDP 埠口上,只要管理這些埠口就可以限制服務是否開放。另一方面,網路控制訊息大多採用 ICMP 封包傳送,如果管制某些 ICMP 進出,就可以限制外部探索私有網路。因此,我們歸納防火牆的封包過濾有限列途徑:

  • IP/TCP 封包過濾:由封包的 IP TCP 標頭某些欄位決定是否給予通行。

  • IP/UDP 封包過濾:由封包上 IP UDP 標頭某些欄位決定是否給予通過。

  • IP/ICMP 封包過濾:由封包上 IP ICMP 標頭某些欄位決定是否給予通過。

基本上,我們會將主機上所有 TCP 埠口、UDP 埠口與 ICMP 訊息全部關閉,當需要開啟某些服務(或伺服器,如 httpdftpdsshd)時,再開啟相對應的埠口。

6-6-2 防火牆套件安裝與命令

CentOS 7 防火牆管理已不再採用 iptable 套件,而更新為 firewalld 套件,接下介紹 firewalld 的安裝與管理。

(A) 觀察 firewalld 是否安裝啟動

一般 CentOS 7 安裝時,皆會自動安裝並啟動 firewalld.service,吾人進入 root 身分後,執行 # setup 命令,觀察它是否已安裝啟動,如下:

如上圖中,有發現 firewalld.service 套件,並已選擇啟動( * 星號),則表示已安裝啟動。如沒有則接下一步驟。

(B) 安裝 firewalld 套件

Firewalld 安裝與啟動命命操作如下:

# yum -y install  firewalld  firewalld-config  【安裝 firewalld

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: ftp.isu.edu.tw

 * epel: mirror01.idc.hinet.net

 * extras: ftp.isu.edu.tw

 * updates: ftp.isu.edu.tw

…..

Complete!

 

# systemctl  start  firewalld         【啟動 firewalld

# systemctl  enable firewalld        【設定開機時啟動 firewalld

# systemctl  status  firewalld        【觀察 firewalld 執行狀況】

firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)

   Active: active (running) since 2017-04-13 10:33:12 CST; 23s ago

     Docs: man:firewalld(1)

 …..

(C) Firewalld 相關命令

功能

     

安裝套件

# yum –y install firewalld firewalld-config

啟動

#systemctl start firewalld

停止

#systemctl stop firewalld

重新啟動

#systemctl restart firewalld

設定開機啟動

#syatemctl enable firewalld

查看狀態

#syatemctl status firewalld

更新防火牆規則

#firewall-cmd  --reload

查看選定 zone

#firewall-cmd  -- get-default-zone

查看zone 開啟服務

#firewall-cmd  --zone=public  --list-all

查看永久開啟服務

#firewall-cmd  --list-all  --permanent

開啟 80 埠口固定

#firewall-cmd  --add-port=80/tcp  --permanent

關閉 80 埠口固定

#firewall-cmd  --remove-port=80/tcp  --permanent

開啟網路區段

#firewall-cmd  --add-source=180.118.164.0/24

移除網路區段

#firewall-cmd  --remove-source=180.118.164.0/24

開啟服務

#firewall-cmd  --add-service=http  --permanent

關閉服務

#firewall-cmd  --remove-service=http  --permanent

關閉 DHCP 服務

#firewall-cmd  --remove-service dhcpv6-client

6-6-3 開啟相關伺服器埠口

吾人希望在主機上開啟 httpd(80/tcp)ftpd(20/tcp21/tcp22/tcp) 服務,操作如下:

[root@serCourse ~]# firewall-cmd  --list-all  --permanent

                                   【查詢目前開啟,沒有】

public

  target: default

  icmp-block-inversion: no

  interfaces:

  sources:

  services: dhcpv6-client ssh    [已開啟 ssh]

  ports:

  protocols:

  masquerade: no

  forward-ports:

  sourceports:

  icmp-blocks:

  rich rules:

[root@serCourse ~]# firewall-cmd  --add-port=80/tcp  --permanent【開啟 httpd

Success      【成功】

[root@serCourse ~]# firewall-cmd  --add-port=20/tcp  --permanent 【開啟vsftpd

Success    【成功】

[root@serCourse ~]# firewall-cmd  --add-port=21/tcp  --permanent【開啟vsftpd

Success    【成功】

[root@serCourse ~]# firewall-cmd  --add-port=22/tcp  --permanent【開啟vsftpd

Success   【成功】

#

 

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: