CentOS 7 下 Firewalld 折騰記

用女票的學生賬號申請了阿里雲的ECS機器,操作系統是CentOS 7 。之前有過CentOS 6 的操作經驗,從6到7基本上也沒大變化。感覺變化最大的就是防火牆的設置了:從iptables變成Firewalld。

Firewalld管理埠明顯變得比之前複雜許多,命令也異常繁瑣,但是如果從配置文件的角度去理解Firewalld的基本原理,記不住繁瑣的命令也能玩轉Firewalld。

基本的三個命令是還是要掌握的,即開啟、關閉、查詢狀態:

systemctl start/stop/status firewalldn

Firewalld啟動的時候會載入一系列配置文件,從配置文件中讀取需要被開放的服務,一個服務會對應一個埠。默認情況下只有服務ssh的埠22是被開放的。

那麼如何開放http服務使用的80埠呢?下面就來了解Firewalld的配置文件的具體信息:

  • /usr/lib/firewalld是Firewalld的默認配置文件的存儲路徑,這裡的文件不應該被修改,因為Firewalld升級後會覆蓋掉所有的更改。其中有如下目錄
    • icmptypes
    • ipsets
    • services
    • xmlschema
    • zones

services目錄下存放的是一些系統預定義好的服務,文件名就是服務名,比如ssh.xml、http.xml. 以http服務為例,XML中的內容就定義了埠為80:

<?xml version="1.0" encoding="utf-8"?>n<!-- http.xml -->n<service>n <short>WWW (HTTP)</short>n <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>n <port protocol="tcp" port="80"/>n</service>n

zones目錄下會存放系統預定義的zone(類似區域的概念),比如有home.xml、public.xml等,同樣是文件名代表zone名。

  • /etc/firewalld是可以用於自定義的配置文件存儲地址, 這裡的配置會優先被使用 ,和上面的目錄基本相同,其中services目錄可以存放用戶自定義的服務,zones目錄可以存放自定義的區域。

在目錄/etc/firewalld下還有一個主要的配置文件firewalld.conf,這個是Firewalld載入配置的入口,firewalld.conf定義的default zone如果是public的話,那麼設置的服務就在/etc/firewalld/zones/public.xml下:

<?xml version="1.0" encoding="utf-8"?>n<zone>n <short>Public</short>n <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>n <service name="dhcpv6-client"/>n <service name="ssh"/>n <service name="http"/>n</zone>n

可以看到ssh是被默認加入到public zone中了,所以22埠默認就是被開放的,現在只需要添加一句<service name="http"/>(因為http服務已經在系統默認配置/usr/lib/firewalld/services中指定過了),然後重啟Firewalld就可以開放80埠了。

參考 : firewalld.org/documenta


推薦閱讀:

【技術人快報】摩拜單車多地區現Bug+iCloud完成中國本土化落地
在 CentOS 7 上搭建屬於自己的 「完美」 郵件系統
如何更換CentOS(Linux)系統默認字體?

TAG:CentOS | Linux | 防火墙 |