ConfigServer Security & Firewall(簡稱CSF)防火牆是一個開放原始碼的軟體,雖然我其實一直是使用同類型的Advanced Policy Firewall(簡稱APF),但是前陣子更換CentOS 6之後才發現好像跟APF不太和氣 🤓 雖然APF官網也有更新9.7 (rev:2),但我覺得APF他更新速度有點慢,CentOS都6.5了他才跟上這點我滿介意的,所以就換上了WHM/Cpanel主機管理系統上的外掛模組CSF 🤖🤓🤖
CSF這套更新速度倒也滿快的,基本安裝也簡單,還附送一個Login Failure Daemon(簡稱LFD)軟體,而且除了WHM付費的主機管理系統可用,另一套Webmin開放原始碼的主機管理系統也同樣有支援CSF的外掛模組,這點我就滿開心的,因為我每台主機都有裝Webmin,所以就來簡單記錄一下使用過程吧 🤓
1. 首先安裝基本套件
sudo yum install -y iptables bind-utils e2fsprogs nano perl perl-Time-HiRes \
perl-GDGraph perl-libwww-perl perl-LWP-Protocol-https perl-Crypt-SSLeay \
perl-Net-SSLeay
2. 安裝CSF
1 2 3 4 5 6 7 8 |
rm -fr /etc/csf cd /opt rm -f csf.tgz wget -O csf.tgz https://download.configserver.com/csf.tgz # wget http://ns4.edu.ryukyu/apps/csf.tgz tar xzf csf.tgz cd csf sh install.sh |
3.1 安裝完畢後先執行1次自我測試,如果正常就可使用完整功能,也就是比較能保障主機的安全,OpenVZ的VPS要特別注意這點
perl /usr/local/csf/bin/csfui.pl
3.2 安裝過程中CSF會自動將目前連線的IP加入白名單,也自動把已使用中的port加入設定檔,另外有安裝Webmin的可以在Webmin新增CSF外掛模組,在左手邊的Webmin > Webmin Configuration > Webmin Modules選擇From local file,空格中輸入/usr/local/csf/csfwebmin.tgz
4. 新增好之後可以在左手邊的System > ConfigServer Security & Firewall看到他,不喜歡在SSH操作的就可以在這邊操作 🤓
5. 設定CSF也不難,官方的讀我檔案有完整介紹,我這邊簡單介紹一下
第220行 – 指定偵測的網路介面
vi +/"ETH_DEVICE" /etc/csf/csf.conf
ETH_DEVICE = “eth0” ← 一般Linux系統
ETH_DEVICE = “venet0” ← OpenVZ的VPS
第115行 – 指定要開放的TCP的PORT
vi +/"TCP_IN" /etc/csf/csf.conf
TCP_IN = “20,21,22,25,47,53,80,110,113,123,143,161,443,465,587,993,995,1723,1812,1813,2077,2078,2082,2083,2086,2087,2095,2096,3306.10000,15000:16000”
第121行 – 指定要開放的UDP的PORT
vi +/"UDP_IN" /etc/csf/csf.conf
UDP_IN = “20,21,22,25,47,53,123”
第128行 – 啟動ICMP功能,開放主機接受PING
vi +/"ICMP_IN" /etc/csf/csf.conf
ICMP_IN = “1”
第352行 – 指定SMTP使用的PORT
vi +/"SMTP_PORTS" /etc/csf/csf.conf
SMTP_PORTS = “25,465,587”
第358行 – 指定要開放使用SMTP的使用者與群組
vi +/"SMTP_ALLOW" /etc/csf/csf.conf
SMTP_ALLOWUSER = “cpanel”
SMTP_ALLOWGROUP = “mail,mailman”
第399行 – 平時不啟動,當遭到SYNFLOOD或DDoS攻擊時,啟動過濾SYNFLOOD功能,這邊的範例是主機收到每秒100個封包就阻擋,突發上限是150,資源較小的主機可以把數字再往下調整
vi +/"SYNFLOOD" /etc/csf/csf.conf
SYNFLOOD = “1”
SYNFLOOD_RATE = “100/s”
SYNFLOOD_BURST = “150”
第435行 – 平時不啟動,當遭到SYNFLOOD或DDoS攻擊時,啟動過濾PORTFLOOD功能,這邊的範例是如果300秒內有10個以上同樣的IP連接到tcp端口22的連接,則60秒後阻止該IP連線到端口22,另外如果5秒內有10個以上同樣的IP連接到tcp端口80的連接,則60秒後阻止該IP連線到端口80
vi +/"PORTFLOOD" /etc/csf/csf.conf
PORTFLOOD = “22;tcp;10;60,80;tcp;10;60”
第419行 – 指定特定PORT可連線的數量,比如說22的PORT可5連線,443可20個連線
vi +/"CONNLIMIT" /etc/csf/csf.conf
CONNLIMIT = “22;5;443;20”
大致上也就這樣,其他的不太需要動 🤓 設定完畢後再關閉測試模式
第11行 – 關閉測試模式
sed -i 's#TESTING = "1"#TESTING = "0"#g' /etc/csf/csf.conf
6. 在SSH操作CSF其實也只有幾個指令常用,簡單介紹一下
檢查CSF運作狀態
csf -l
快速新增IP到黑名單
csf -d 8.8.8.8
快速新增IP到白名單
csf -a 8.8.8.8
重新讀取設定檔
csf -r
更新CSF主程式
csf -u
重新啟動CSF服務
service csf restart