天天看點

Linux 防火牆政策——APF

APF(Advanced Policy Firewall)是 Rf-x Networks 出品的Linux環境下的軟體防火牆,被大部分Linux伺服器管理者所采用,使用iptables的規則,易于了解及使用。

适合對iptables不是很熟悉的人使用,因為它的安裝配置比較簡單,但是功能還是非常強大的。

一,下載下傳,安裝apf

root@linux:/home/zhangy# wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz  

root@linux:/home/zhangy# tar -xvzf apf-current.tar.gz  

root@linux:/home/zhangy# cd apf-9.7-1  

root@linux:/home/zhangy/apf-9.7-1# ./install.sh  

安裝成功的提示資訊如下:

root@linux:/home/zhangy/apf-9.7-1# ./install.sh

Installing APF 9.7-1: Completed.

Installation Details:

Install path: /etc/apf/

Config path: /etc/apf/conf.apf

Executable path: /usr/local/sbin/apf

Other Details:

Listening TCP ports: 22,25,111,3306,53976

Listening UDP ports: 111,917,936,5353,49640,54744

Note: These ports are not auto-configured; they are simply presented for information purposes. You must manually configure all port options.

二,配置apf

vim /etc/apf/conf.apf

IG_TCP_CPORTS="21,22,80,443,3306,8080"   //設定伺服器允許被通路的TCP端口  

IG_UDP_CPORTS="53"                       //設定伺服器允許被通路的UDP端口  

EG_TCP_CPORTS="21,25,80,443,43,2089"     //設定伺服器允許對外通路的TCP端口  

EG_UDP_CPORTS="20,21,53"                 //設定伺服器允許對外通路的UDP端口  

DEVEL_MODE="1" 改為 DEVEL_MODE="0"  

DLIST_SPAMHAUS="0" 改為 DLIST_SPAMHAUS="1"  

DLIST_DSHIELD="0" 改為 DLIST_DSHIELD="1"  

配置過程中要注意以下幾點:

1,根據不同的伺服器開放不同的端口,web伺服器根mysql伺服器開放的端口肯定不一樣。

2,DEVEL_MODE="1"表示在調試模式下,每五分鐘重新刷空配置,這樣能避免因為錯誤的配置把你自己也搞在了伺服器外面進不去了。等配置好了,确定沒有問題了,就改成0。

# Untrusted Network interface(s); all traffic on defined interface will be

# subject to all firewall rules. This should be your internet exposed

# interfaces. Only one interface is accepted for each value.

IFACE_IN="bond1"

IFACE_OUT="bond1"

# Trusted Network interface(s); all traffic on defined interface(s) will by-pass

# ALL firewall rules, format is white space or comma separated list.

IFACE_TRUSTED="bond0"

這裡的bond1、bond0和eth0、eth1類似,都是名字而已,比如bond1表示外網,是不受信任的,是以所有的傳輸都會送出給firewall來稽核;而bond0是内網,是受信任的。

IFACE_IN and IFACE_OUT - By default, these are set to eth0; however, SoftLayer has our eth0 set to private network and our public network set to eth0. Misconfiguring these variables might result in no network connectivity. Set both variables to eth1

IFACE_TRUSTED - This variable tells the firewall to trust the listed interfaces. In our instance, we trust our eth0. Set to eth0

3,設定隻通許192.168.1.139遠端連接配接22端口

// 在/etc/apf/allow_hosts.rules添加如下資訊: 

tcp:in:d=22:s=192.168.1.139  

out:d=22:d=192.168.1.139  

// 在/etc/apf/deny_hosts.rules添加如下資訊: 

tcp:in:d=22:s=0/0  

out:d=22:d=0/0  

開始的時候,我以為隻要在allow_hosts.rules裡面加就行了,改過一後,我換了一個IP,已然可以連接配接,搞得我很無語。後在deny_hosts.rules加上了上面的規則後,在連接配接時就提示逾時了。allow_hosts.rules和deny_hosts.rules裡面都加了規則後,重起apf會提示配置成功的資訊,偶然發現的。

apf(12234): {trust} allow outbound 192.168.1.139 to port 22  

apf(12234): {trust} allow inbound tcp 192.168.1.139 to port 22  

三,apf的常用指令

<a target="_blank" href="http://blog.51yip.com/server/1347.html#">檢視</a>

apf -s  // 啟動APF防火牆  

apf -r  // 重新開機APF防火牆  

apf -f  // 重新整理APF防火牆配置檔案  

apf -l  // 列出APF的過慮規則  

apf -t  // APF的日志資訊。  

apf -e  // 将域名解釋加入信認規則  

apf -a  // 将IP/IP段添加到白名單  

apf -d  // 将IP/IP段添加到黑名單  

apf -u  // 将IP/IP段從白/黑名單中删除  

apf -o  // 将IP/IP段從白/黑名單中删除  

四,常用端口清單

21/tcp       //ftp  

22/tcp       //ssh  

25/tcp       //smtp  

53/udp       //dns  

80/tcp       //http  

110/tcp      //pop3  

143/tcp      //imap  

443/tcp      //https  

993/tcp      //imaps  

995/tcp      //pop3  

3306/tcp     //mysql  

5432/tcp     //postgresql

繼續閱讀