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
