在Linux上安装和配置CSF(配置服务器安全和防火墙)
CSF是国外一家小公司开发的linux系统免费防火墙,它基于iptables工作,能有效缓解服务器压力,具有自动屏蔽暴力破解密码IP、管理开放端口、免疫轻量DDos和CC等等功能,同时,安装和使用也极为简便,在我们常用的DA和CP面板还有图形化操作界面,也支持个人普通用户安装于LNMP环境下使用。
yum install perl-libwww-perl perl iptables
第1步:下载CSF源存档
从它的官方网站下载最新的档案CSF的源代码。然后提取源代码。
# cd /opt
# wget http://www.configserver.com/free/csf.tgz
# tar xzf csf.tgz
第2步:安装CSF
CSF提供和bash脚本轻松的在任何操作系统上安装。这个脚本自动检测您的操作系统,并安装CSF。运行install.sh脚本。
# cd /opt/csf
# sh install.sh
第3步:测试iptables模块
运行csftest.pl perl脚本,以验证是否所有所需的iptables模块系统,使上安装是正常的工作。
# perl /usr/local/csf/bin/csftest.pl
Testing ip_tables/iptable_filter...OK
Testing ipt_LOG...OK
Testing ipt_multiport/xt_multiport...OK
Testing ipt_REJECT...OK
Testing ipt_state/xt_state...OK
Testing ipt_limit/xt_limit...OK
Testing ipt_recent...OK
Testing xt_connlimit...OK
Testing ipt_owner/xt_owner...OK
Testing iptable_nat/ipt_REDIRECT...OK
Testing iptable_nat/ipt_DNAT...OK
RESULT: csf should function on this server
第4步:启用和重新启动CSF
在系统上成功安装CSF后,您需要更改按照csf.conf设置,启用CSF。
# vim /etc/csf/csf.conf
TESTING=0
现在重新启动防火墙CSF重新加载,使用下面的命令加载新的变化。
# cd /etc/csf
# csf -r
CSF配置文件地址:/etc/csf/csf.conf
白名单:/etc/csf/csf.allow
黑名单:/etc/csf/csf.deny
主要的配置信息,在csf.conf中,包括常用的端口开放,各项设定完成后,将测试模式关闭(TESTING = "0").
卸载CSF:
cd /etc/csf
sh uninstall.sh
防止DDOS攻击
配置CSF + LDF以防止服务器的DDOS攻击。要启用它下面的设置,编辑/etc/csf/csf.conf和更新。
总数从单个主机允许的连接。要禁用此功能,将此设置为0
CT_LIMIT = "20"
在几秒钟内连接跟踪时间间隔。
CT_INTERVAL = "30"
每个发送的电子邮件警报封IP。
CT_EMAIL_ALERT =1
设置为1来阻止IPS永久性的。
CT_PERMANENT = 1
如果您选择了CT临时IP块,再下面是区间 以秒为IP将仍然受阻
CT_BLOCK_TIME = 1800
如果你只想计算特定端口(如22,23,80,443),然后添加端口。否则保持空检查所有端口
CT_PORTS = "22,23,80,443"
禁用测试:
sudo perl -pi -w -e "s/TESTING = \"1\"/TESTING = \"0\"/" /etc/csf/csf.conf
忽略允许列表中的IP地址:
sudo perl -pi -w -e "s/IGNORE_ALLOW = \"0\"/IGNORE_ALLOW = \"1\"/" /etc/csf/csf.conf
安装程序将为你添加systemd服务文件,你可以通过运行来启动它:
sudo systemctl enable --now csf
确认服务状态,运行sudo systemctl status csf命令查看:
CSF使用示例
1、阻止IP或子网:
sudo csf -d 192.168.0.20
sudo csf -d 192.168.0.0/24
输出内容如下:
Adding 192.168.0.20 to csf.deny and iptables DROP…
DROP all opt -- in !lo out * 192.168.0.20 -> 0.0.0.0/0
LOGDROPOUT all opt -- in * out !lo 0.0.0.0/0 -> 192.168.0.20
2、从阻止列表中删除IP/子网:
$ sudo csf -dr 192.168.0.20
Removing rule…
DROP all opt -- in !lo out * 192.168.0.20 -> 0.0.0.0/0
LOGDROPOUT all opt -- in * out !lo 0.0.0.0/0 -> 192.168.0.20
3、在防火墙上允许IP地址:
$ sudo csf -a 192.168.15.15
Adding 192.168.15.15 to csf.allow and iptables ACCEPT…
ACCEPT all opt -- in !lo out * 192.168.15.15 -> 0.0.0.0/0
ACCEPT all opt -- in * out !lo 0.0.0.0/0 -> 192.168.15.15
4、阻止某些国家/地区
编辑CC_DENY行:
# Each option is a comma separated list of CC's, e.g. "US,GB,DE"
CC_DENY = ""
CC_ALLOW = ""
5、参阅侦听连接的端口:
$ sudo csf -p
侦听外部连接的端口以及在其后面运行的可执行文件
6、用户通过ssh登录时发送电子邮件:
LF_SSH_EMAIL_ALERT = "1"
设置警报电子邮件:
LF_ALERT_TO = "alerts@example.com"
向你自己发送有关安全检查的电子邮件:
csf -m myemail@example.com
配置访问CSF Web UI的方法
CSF集成了可用于配置的Web UI,在/etc/csf/csf.conf文件上启用UI:
UI = "1"
你还可以为以下项设置自定义值:
# Set this to the port that want to bind this service to
UI_PORT = "6666"
# Leave blank to bind to all IP addresses on the server
UI_IP = ""
UI_USER = "admin"
UI_PASS = "StrongAdminPassword"
然后将IP地址添加到白名单:
sudo echo "YOUR_IP_ADDRESS" >> /etc/csf/ui/ui.allow
启动或重新启动lfd服务:
$ sudo systemctl enable --now lfd
$ systemctl status lfd