對話企業家陶利——做企業靠 19年前,他是一個程序員,初出茅廬,經驗不足,憑借一己之力闖世界;
省市領導蒞臨億恩科技推進電 12月22日上午,由河南省商務廳,鄭州市商務局有關領導蒞臨河南省億
怎樣選擇服務器托管商?如何 互聯網開展至今,服務器方面的受到越來越多人的注重,假如要停止服務器
防火墻起初看起來很難使用,但是實際上并不是這樣。服務以及區域使一個個碎片的結合以及Linux防火墻的配置變得很容易。盡管工作在Linux內核的網絡過濾器代碼上,總體上和舊有的配置防火墻的方法是不兼容的。Red Hat Enterprise Linux 7 和其他的新版本則需要依靠新的配置方法。本文的所有命令都基于RHEL 7。
防火墻工作網絡
首先,檢查防火墻是否在運行。使用列表1中的systemctl status firewalld命令。
列表1.下面的序列表明防火墻是活動狀態且在運行中。這些斜線是有幫助的,當你試圖將表1全面顯示出來,使用-1命令。
[root@rhelserver ~]# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running) since Thu 2014-05-22 07:48:08 EDT; 14min ago
Main PID: 867 (firewalld)
CGroup: /system.slice/firewalld.service
└─867 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
May 22 07:48:08 rhelserver.example.com systemd[1]: Started firewalld - dynami...
防火墻中的一切都與一個或者多個區域相關聯。
配置之后,RHEL 7服務器正常會在公共區域,但是你也許會想將它放置在另一個網絡配置防火墻訪問。這時使用firewall-cmd --get-default-zone命令,該命令顯示你的服務器在哪一個網絡。如果你想查看配置特定網絡的詳細信息,你可以使用列表2中的firewall-cmd --zone=zonename --list-all命令。
列表2.
root@rhelserver ~]# firewall-cmd --get-default-zone
public
[root@rhelserver ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
[root@rhelserver ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: ens33
sources:
services: dhcpv6-client sander ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
改變當前區域并不難:使用firewall-cmd --set-default-zone=home命令,該命令可用于從公共網絡到家庭網絡制定一個默認網絡。
服務和其他構件
在區域中有一些基本的構件塊,其中服務是最重要的。防火墻使用管理員創建在/usr/lib/firewalld/services(系統默認服務) 和/etc/firewalld/services文件下的XML文件,配置的自身服務集。XML文件時通過列表3中的例子創建的。
列表3.
[root@rhelserver services]# cat ftp.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>FTP</short>
<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the
vsftpd package installed for this option to be useful.</description>
<port protocol="tcp" port="21"/>
<module name="nf_conntrack_ftp"/>
</service>
每一個服務定義都需要一個簡短的名字、描述和端口網絡用于指定需要使用的協議、端口和模塊名。
列表4.以下是創建防火墻服務的例子
[root@rhelserver services]# cat sander.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Sander</short>
<description>Sander is a random service to show how service configuration works.</description>
<port port="666" protocol="tcp"/>
</service>
一旦你有了正確的服務文件,使用以下代碼復制它。firewall-cmd --list-services命令顯示從你服務器上的所有可以找到的服務列表。如果要增加服務則輸入firewall-cmd --add-service yourservice將服務放到默認網絡上,或者是使用--zone=zonename選擇特定網絡。
下面描述了它如何工作:
1.使用firewall-cmd --zone=public --list-all命令,顯示當前公共區域配置。
[root@rhelserver ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
2.命令firewall-cmd --zone=public --add-service=ftp,在Linux防火墻的公共區域上添加FTP服務。
3.重復步驟1檢查FTP服務是否成功添加,你將看到服務列表。
4.重啟服務器,執行步驟1.你將看到FTP服務消失了,在防火墻中,沒有永久的事物,除非你使用了permanent選項。
5.將FTP服務添加到公共網絡上,并設為永久設置,該步驟使用firewall-cmd --permanent --zone=public --add-service=ftp命令。重啟之后該設置生效。
6.輸入firewall-cmd –reload提交所有規則同時重載防火墻。使用permanent設置永久防火墻選項是非常重要的。
打破規則
配置防火墻配置服務是推薦的方式,它可以輕而易舉地提供防火墻的全局概覽。但是如果你想在/etc/firewalld/service文件下自己定義服務,在不使用該文件的情況下也可添加端口。
使用firewall-cmd --permanent --zone=dmz --add-port=22/tcp命令為特定網絡指定特定端口,然后使用firewall-cmd --zone=dmz --list-all確認端口已成功添加。這種方式是非兼容方式,使用服務使對不同的主機分配相似的規則變得簡單。如果沒有服務,文件就很難被分配,配置文件中的規則分配也變得困難。
對于更多的控制,你不能夠使用直接規則。原因如下:
1.輸入firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 80 -j ACCEPT
2.現在輸入firewall-cdm --list-all顯示你的默認網絡的配置,端口80沒有添加任何東西。
[root@rhelserver ~]# firewall-cmd --list-all
public (default, active)
Interfaces: ens33
sources:
services: dhcpv6-client ftp ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
輸入完以上命令后,HTTP端口并沒有發生改變,這是因為直接規則寫給了IP信息包過濾器接口,而不是防火墻。
3.輸入firewall-cmd --direct --get-all-rules,或者使用firewall-cmd --direct --get-all-rules顯示直接規則。
相比于直接規則,使用iptables(列表5)命令可以寫到防火墻里。
列表5.Linux防火墻規則實例
firewall-cmd--permanent--zone=public--add-rich-rule="rule family="ipv4" source address="192.168.4.0/24" service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept"
防火墻規則類似于IP信息包過濾防火墻,提供了大量靈活性。
使用列表5中的一條命令就可以完成和提交許多任務。它指定了IP家族、源地址、服務名等。但是需要注意規則是怎樣處理登陸的:定義一個特定的登陸前綴、登陸等級信息,以及每分鐘傳遞信息的極限值。
Linux管理員可以申請監測端口的過濾器,所以規則對于IP地址上的過濾器非常有用。(列表6)
列表6.規則申請Linux防火墻IP地址端口的過濾器
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" \
source address="192.168.0.4/24" service name="http" accept"
分析區域
firewall-cmd命令是眾多配置防火墻的方法之一。二者擇一的,你可以直接編寫網絡配置文件。但是如果語法有誤,將不會得到任何反饋。但這是一個簡潔簡單的配置文件,容易修改和在多個服務器上分配。
列表7.你可以通過編寫配置文件配置防火墻
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<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>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<rule family="ipv4">
<source address="192.168.4.0/24"/>
<service name="tftp"/>
<log prefix="tftp" level="info">
<limit value="1/m"/>
</log>
<accept/>
</rule>
</zone>
列表7中包含了添加到先前例子中的所有代碼,可以直接寫入區域配置文件,其中不包含直接規則,因為直接規則有自己的配置文件。
[root@rhelserver firewalld]# cat direct.xml
<?xml version="1.0" encoding="utf-8"?>
<direct>
<rule priority="0" table="filter" ipv="ipv4" chain="INPUT">-p tcp --dport 80 -j ACCEPT</rule>
</direct>