設為首頁

收藏本站

導覽首頁 | 新登場    ◇聯盟溫泉 | 民宿 | 人力銀行 | 女性 |

類型:Linux_commend

CSF中文手册
ConfigServer 防火墙 (csf)

我们开发出了SPI iptables防火墙,该防火墙简单易懂,配置灵活,使用方便。
此外,还有安全检查以确保其平稳运行。
csf可以用于任何(支持的-见网站)普通的Linux操作系统。
csf安装包括cPanel,DirectAdmin以及Webmin系统的预配置和控制面板用户界面。

登录失败守护进程(lfd)

作为ConfigServer防火墙的补充,我们还开发出了一个24小时运行的守护进程,该进程能定期(每隔几秒)扫描短时间内服务器登陆失败的最新日志文件记录。这样的登陆尝试通常被称为”暴力攻击”,守护进程会对该形式快速响应然后迅速封了入侵者的IP。
其他类似产品每x分钟才运行一次,因此会漏掉许多非法强行进入系统的登陆尝试并直到它们结束才能发现。 我们的守护进程无须等待那么久,因此能更有效的执行任务。
lfd可以运行一套全方位检查以提醒服务器管理员该服务器的变化,潜在问题以及可能的危险。
在cPanel务器上,lfd与WHM>服务管理合并,如果lfd运行失败,可以重新启用。

控制面板界面

To help with the ease and flexibility of the suite we have developed a
front-end to both csf and lfd for cPanel, DirectAdmin and Webmin. From there
you can modify the configuration files and stop, start and restart the
applications and check their status. This makes configuring and managing the
firewall very simple indeed.
There is also an abbreviated UI for mobile phone access to Quick Allow, Quick
Deny and Remove Deny. Direct URLs:
cPanel:https://1.2.3.4:2087/cgi/addon_csf.cgi?mobi=1
DA:https://1.2.3.4:2222/CMD_PLUGINS_ADMIN/csf/index.html?mobi=1
Webmin:https://1.2.3.4:10000/csf/?mobi=1
There is, of course, a comprehensive Command Line Interface (CLI) for csf.
为了方便用户使用本脚本,我们为控制面板开发了通向csf和lfd,cPanel, DirectAdmin以及Webmin控制面板的用户界面。
您可以在这里修改配置文件,停止,启动或重新启动应用程序,以及查看他们的状态。这就使配置和管理防火墙变得非常简单。
还有一个小型的用户界面用于移动电话访问,用户可以通过该界面进行快速允许,快速拒绝和拒绝删除等操作。网址:
cPanel:https://1.2.3.4:2087/cgi/addon_csf.cgi?mobi=1
DA:https://1.2.3.4:2222/CMD_PLUGINS_ADMIN/csf/index.html?mobi=1
Webmin:https://1.2.3.4:10000/csf/?mobi=1

csf原理

和大部分iptables防火墙配置一样,csf是阻止所有连接然后只允许您想要的连接进出。在iptables里删除所有协议上进出服务器的全部连接,然后允许从已有的连接中进出流量,接着分别为TCP和UDP开放进出端口。这样可以精确地控制哪些流量可以进出服务器,并保护服务器免受恶性攻击。
尤其是可以通过IP地址限制防止未经授权访问网络守护进程,如果某服务受到威胁,该程序还可以阻止对网络守护进程的攻击,典型的例子就是某随机开放端口运行的黑客sshd守护进程。也许最重要的原因是帮助减轻root泄露的影响,通常对付这种攻击的唯一方法是打开黑客访问的服务器的守护进程。虽然这样不能阻止root泄露,但是它可以减慢该进程并足以引起您的注意进而做出反应。
端口过滤防火墙还可以在用户级别泄露发生以及黑客安装了DOS工具影响其他服务器时起作用。除了特定端口,阻止外向连接的防火墙可以帮助防止DOS攻击,并能让您在系统日志里立即看到。
csf的被设计成保持它的配置简单,但仍然具有足够的灵活性,让您选择适合服务器环境的选项。通常情况下,防火墙的脚本繁冗复杂,用户无法找到问题出在哪里,更别说轻松解决这些问题了。
使用iptables拒绝连接的内核日志记录,您需要确定内核日志记录守护进程(klogd) 已启动。通常情况下,VPS服务器的该进程是关闭的。您要查看/etc/init.d/syslog,并确保没有任何klogd行被注释掉。如果您修改文件,记得重新启动系统日志。

lfd 原理

保护服务器网络守护进程免受入站攻击的最佳方法就是监控它们的认证日志。同一地址短时间内数次登录尝试无效常常意味着有人在尝试通过暴力法登陆服务器,通常是通过猜测用户名和密码,因而产生认证和登录失败。
lfd可以监控大部分经常被滥用的协议,SSHD, POP3, IMAP, FTP 以及 HTTP密码保护。和其他应用程序不同,lfd是一个无间断监控日志的守护进程,因此可以在发现此类攻击后几秒内迅速反应。它还可以跨协议监控,因此即使短时间内尝试发生在不同协议上,这些尝试也将会根据阈值被计入。
一旦达到设定的失败登录次数,lfd会立即派生一个子进程,同时使用csf阻止该攻击IP地址进出连接,并迅速及时地阻止其攻击。通常其他使用时钟守护作业的类似程序5分钟执行一次,因此会完全错过蛮力攻击,或执行时该攻击已结束,或只是在等待时机。此时lfd已经阻止攻击者的IP地址了。
通过子进程执行阻止和发送提醒邮件的操作,主守护进程不会被延迟,可以继续监控日志。
如果您想知道lfd何时阻止了某个IP地址,您可以启用电子邮件提醒(默认设置),然后在/var/log/lfd.log里查看日志。如果您使用logcheck,您可以通过编辑logcheck.sh和添加以下命令将其添加到您的日志监控:
$LOGTAIL /var/log/lfd.log >> $TMPDIR/check.$$
将它添加到您所选择的其他日志中。

csf命令行选项

在初次配置和启动csf之前,最好先通过:perl /etc/csf/csftest.pl
运行/etc/csf/csftest.pl 脚本。
该脚本可以测试所需的iptables模块是否在服务器上正常运行。如果它不能执行全部功能也没关系,只要该脚本没有报告任何致命的错误即可。
您可以通过使用# csf -h 查看csf命令行选项.
Usage: /usr/sbin/csf [option] [value]
用途: /usr/sbin/csf [选项] [值]
Option 选项 Meaning 含义
-h, --help Show this message 显示此消息
-l, --status List/Show iptables configuration 列出/显示iptables配置
-l6, --status6 List/Show ip6tables configuration列出/显示ip6ables配置
-s, --start Start firewall rules 启用防火墙规则
-f, --stop Flush/Stop firewall rules (Note: lfd may restart csf)清除/停止防火墙规则(注意:lfd可能重新启动csf)
-r, --restart Restart firewall rules重新启用防火墙规则
-q, --startq Quick restart (csf restarted by lfd)快速重启(lfd重启csf)
-sf, --startf Force CLI restart regardless of LF_QUICKSTART setting不顾 LF_QUICKSTART设置,强制CLI重新启动
-a, --add ip Allow an IP and add to /etc/csf.allow允许一个IP并添加至/etc/csf.allow
-ar, --addrm ip Remove an IP from /etc/csf.allow and delete rule从/etc/csf.allow 删除一个IP,删除规则
-d, --deny ip Deny an IP and add to /etc/csf.deny拒绝一个IP并添加至/etc/csf.deny
-dr, --denyrm ip Unblock an IP and remove from /etc/csf.deny解除对一个IP的阻止并从/etc/csf.deny里删除
-df, --denyf Remove and unblock all entries in /etc/csf.deny删除并解除对/etc/csf.deny里所有记录的阻止
-g, --grep ip Search the iptables rules for an IP match (incl. CIDR)查询与某IP匹配的iptables规则(包括 CIDR)
-t, --temp Displays the current list of temp IP entries and their TTL显示当前临时IP及其TTL的列表
-tr, --temprm ip Remove an IPs from the temp IP ban and allow list从临时禁止和允许IP列表删除IPs
-td, --tempdeny ip ttl [-p port] [-d direction]
Add an IP to the temp IP ban list. ttl is how long to 添加一个IP至临时禁止IP列表,
blocks for (default:seconds, can use one suffix of h/m/d)ttl是指端口的阻止时间(默认:秒,可以使用一个h/m/d后缀)
Optional port. Optional direction of block can be one of: 可选端口。阻止方向可以是以下任意一种:进入,传出或进出(默认:进入)
in, out or inout (default:in)
-ta, --tempallow ip ttl [-p port] [-d direction]
Add an IP to the temp IP allow list (default:inout) 添加一个IP至临时允许IP列表(默认:进出)
-tf, --tempf Flush all IPs from the temp IP entries 清除所有临时IP记录
-cp, --cping PING all members in an lfd Cluster PINGlfd群的所有成员
-cd, --cdeny ip Deny an IP in a Cluster and add to /etc/csf.deny 拒绝群里的某个IP,并添加到/etc/csf.deny
-ca, --callow ip Allow an IP in a Cluster and add to /etc/csf.allow 允许群里的某个IP,并添加到/etc/csf.allow
-cr, --crm ip Unblock an IP in a Cluster and remove from /etc/csf.deny 解除对群里某个IP的阻止,并从/etc/csf.deny 删除
-cc, --cconfig [name] [value]
Change configuration option [name] to [value] in a Cluster 将群里的配置选项[name]改为[value]
-cf, --cfile [file] Send [file] in a Cluster to /etc/csf/ 在群里发送[file]至/etc/csf/
-crs, --crestart Cluster restart csf and lfd 重新启动群csf和lfd
-m, --mail [addr] Display Server Check in HTML or email to [addr] if present在HTML显示服务器检查或发送邮件至[addr]地址,如果存在的话
-c, --check Check for updates to csf but do not upgrade 检查csf更新但不更新
-u, --update Check for updates to csf and upgrade if available检查csf更新并更新,如果可以的话
-uf Force an update of csf强制更新csf
-x, --disable Disable csf and lfd 禁用csf和lfd
-e, --enable Enable csf and lfd if previously disabled 启用之前禁用的csf和lfd
-v, --version Show csf version 显示csf版本
您可以通过这些选项方便快捷地控制和查看csf。所有的csf配置文件都在/etc/csf 里,包括:
csf.conf - 主要配置文件,它有说明每个选项用途的注释
csf.allow - 防火墙始终允许通过的IP和CIDR地址列表
csf.deny - 防火墙始终不允许通过的IP和CIDR地址列表
csf.ignore- lfd应忽略,并且发现后不阻止的IP和CIDR地址列表
csf.*ignore- 列出了lfd应忽略的文件,用户,IP地址的各种文件。具体参见每个文件。
如果修改上述任何文件,您要重新启动csf才能生效。如果您使用命令行选项添加或拒绝IP地址,csf会自动生效。
csf.allow 和csf.deny都可以在列出的IP地址后做评论。该评论必须和IP地址在同一行,否则csf.deny的IP轮换会将其删除。
如果直接编辑the csf.allow或csf.deny 文件,不论是从shell或WHM UI,您都要在IP地址与评论之间插入#,如下:
添加 11.22.33.44 # 因为我不喜欢它们
您也可以在使用the csf -a或csf -d命令时添加评论,不过不是插入 # ,而是:
添加csf -d 11.22.33.44 因为我不喜欢它们
如果您使用shell命令,则每行注释都要有时间戳。您还会发现,如果lfd阻止某IP地址,它也会添加一个描述性的评价以及时间戳。
如果已达到该行限制,您不想csf在csf.deny轮换某个IP,则可以添加 "do not delete" 至评价行,
e.g.:
添加 11.22.33.44 # 因为我不喜欢它们。do not delete
你还可以在csf.allow或csf.deny使用Include语句收入符合上述条件的其他文件。您必须给该文件指定完整的路径,e.g. in /etc/csf/csf.allow:
Include /etc/csf/csf.alsoallow
注意:所有从csf.allow或csf.deny添加或删除IP地址的csf命令均不能用于附加文件,它们被视作只读。

lfd命令行选项

lfd自身没有任何命令行选项,它受控于关闭和启动守护进程的初始化脚本/etc/init.d/lfd。
它是通过/etc/csf/csf.conf文件配置的。
查看lfd能做什么的最佳方法是在 /var/log/lfd.log里查看,因为那里记录了其所有活动。
各种各样的邮件提醒模板如下,应谨慎修改以下各种邮件提醒模板,以保持正确的格式:
/etc/csf/alert.txt - for port blocking emails 端口阻止邮件
/etc/csf/tracking.txt - for POP3/IMAP blocking emails POP3/IMAP阻止邮件
/etc/csf/connectiontracking.txt - for connection tracking emails 连接跟踪邮件
/etc/csf/processtracking.txt - for process tracking alert emails 进程跟踪提醒邮件
/etc/csf/usertracking.txt - for user process tracking alert emails 用户进程跟踪提醒邮件
/etc/csf/sshalert.txt - for SSH login emails SSH 登录邮件
/etc/csf/sualert.txt - for SU alert emails SU提醒邮件
/etc/csf/scriptalert.txt - for script alert emails 脚本提醒邮件
/etc/csf/filealert.txt - for suspicious file alert emails 可疑文件提醒邮件
/etc/csf/watchalert.txt - for watched file and directory change alert emails 被监控文件和目录的修改提醒邮件
/etc/csf/loadalert.txt - for high load average alert emails 高负荷提醒邮件
/etc/csf/resalert.txt - for process resource alert emails 进程资源提醒邮件
/etc/csf/exploitalert.txt - for system exploit alert emails 系统利用提醒邮件
/etc/csf/integrityalert.txt - for system integrity alert emails 系统完整性提醒邮件
/etc/csf/relayalert.txt - for email relay alert emails 邮件转发提醒邮件
/etc/csf/portscan.txt - for port scan tracking alert emails 端口扫描跟踪提醒邮件
/etc/csf/permblock.txt - for temporary to permanent block alert emails 临时至永久阻止提醒邮件
/etc/csf/netblock.txt - for netblock alert emails 网络阻止提醒邮件
/etc/csf/accounttracking.txt - for account tracking alert emails 账户跟踪提醒邮件
/etc/csf/queuealert.txt - for email queue alert emails 邮件列表提醒邮件
/etc/csf/logfloodalert.txt - for log file flooding alert emails 日志文件泛滥提醒邮件
/etc/csf/cpanelalert.txt - for WHM/cPanel account access emails WHM/cPanel 账户访问邮件
/etc/csf/portknocking.txt - for Port Knocking alert emails 端口撞击提醒邮件

登录跟踪

登录跟踪是lfd的的延伸,它能跟踪POP3和IMAP登录,并限制每个IP地址每个账户每小时X个连接。它使用iptables阻止攻击者至适当的协议端口,每小时刷新一次,并重新计算登录次数。这些阻止都是临时的,可以通过手动重启csf删除。
有两种设置,一种是POP3,另一种是IMAP登录。由于很多用户登录IMAP执行协议交易(他们没有必要反复登录,但是不能避免不良客户端编程!),因此通常不跟踪IMAP。如果您真的需要限制IMAP登录,最好将登录限制设置到很高。
如果您想知道lfd何时临时阻止了某个IP地址,您可以启动邮件跟踪提醒选项(默认设置)。
您也可以使用正规表达匹配添加您自己的登录失败跟踪。详情请参阅 /etc/csf/regex.custom.pm。
重要提醒:为了让SSHD登录跟踪顺利启动,您要确保/etc/ssh/sshd_config的UseDNS已禁用:
UseDNS no
这样sshd就重新启动了。

进程跟踪

该选项可以跟踪用户和nobody进程,检查其可疑操作或开放网络端口。其目的在于识别服务器上运行的潜在的利用进程,即使它们被混淆并显示成系统服务。如果发现一个可疑进程,会发送一封含有相关信息的提醒邮件。
收件人有责任进一步调查该进程,该脚本不会采取任何行动。系统只报告一次进程(PIDs),除非重新启动lfd。
可以在忽略文件 /etc/csf/csf.pignore里将用户名或二进制完整路径列入友好名单。应谨慎添加忽略用户或文件,这样才不会出现误报。
您必须使用以下格式:
exe:/full/path/to/file
user:用户名
cmd:命令行
/proc里报告的命令行的结尾的空字符被删除了,并且其他出现的地方均用空格代替。因此您指定的文件行必须用空格分开命令行参数,而不是用空字符。
最好谨慎使用命令行忽略功能,因为每一步都有可能改变报告给操作系统的内容。
不要将路径列为perl或php, 这样将不能发现可疑网络脚本。
更多有关可执行文件和命令行的信息,您可以参阅并了解linux /proc伪文件系统是如何工作的:
man proc
man lsof
本应用程序不探讨如何在linux /proc体系构架调查进程。
用processtracking.txt邮件模板发送邮件提醒。
注意:由于忽略root进程,该功能不能检查到root泄露-您需要使用IDS工具来确保其安全。
注意:使用这个功能您可能得到漏报。该功能的目的在于引起您注意在某用户账户下运行很长一段时间的进程,和在服务器外有开放端口的进程。在您忽略或将其放入csf.pignore 文件之前,您需要证实其不是真的阳性。
我们在保持谨慎度和查到攻击者的灵敏度之间平衡的前提下,已尽全力降低伪-阳性概率,脚本本身并不能辨别恶意脚本函数和拟脚本函数-这是您作为服务器管理员的工作;-)
PT_SKIP_HTTP 设置不检查直接或者通过Apache中CGI运行的脚本,确实可以减少伪-阳性的数量。不过,禁用该设置能够更全面的检查各种类型的攻击行为。
另外,也可以通过禁用PT_SKIP_HTTP并增加PT_LIMIT来避免查到网页脚本,不过,这意味着真正的攻击者将在被查到之前运行更长时间。
当然,您也可以关闭该功能-如果您真的需要的话。

脚本的邮件提醒

lfd可以扫描从服务器脚本进出端口发送的邮件。
您需要添加一行扩展邮件日志记录行至第一个文本框内的WHM >Exim Configuration Editor > Switch to Advanced
Mode >,并添加以下内容,才能使用这个功能:
log_selector = +arguments +subject +received_recipients
如果您已经使用扩展的进出端口日志记录,那么您可以连+arguments一起用或使用+all
如果一小时内出现相同cwd= 路径的多行LF_SCRIPT_LIMIT,该设置将会发送提醒邮件。这样有利于识别服务器上的垃圾邮件脚本,尤其是在nobody账户下运行的PHP脚本。发送的邮件包括进出端口日志行,并查找该路径发送邮件的脚本,可能是罪魁祸首。
该选项的提醒邮件使用/etc/csf/scriptalert 文本文件。
如果您使用LF_SCRIPT_ALERT 选项,lfd将用chattr +i和chmod 000禁用该路径,则该用户不能重新启用。提醒邮件也包含重新启用攻击路径的所需命令。
漏报将被添加到/etc/csf/csf.signore,lfd将忽略这些列出的脚本。

目录监控

目录监控启用lfd来检查/tmp 和/dev/shm,以及其他相关目录的可疑文件,即脚本攻击者。
一旦发现可疑文件,系统就会用filealert.txt.模板发送一封提醒邮件。
注意:每份可疑文件只发送一封提醒邮件,除非重新启动lfd。所以,如果您删除一份可疑文件,记得要重新启动lfd。
在监控目录时发现任何可疑文件,启用相应的设置,这些可疑文件将被加入/etc/csf/suspicious.tar 压缩包,然后从它们的原始位置删除。符号链接也被删除。
如果您要在当前位置解压压缩包,可以用:
tar -xpf /etc/csf/suspicious.tar
它可以保存原文件的路径和权限。
可以添加任何漏报至/etc/csf/csf.fignore,lfd将忽略所列文件和目录。
csf.fignore里列出了lfd目录监控将忽略的文件。您需要制定该文件的完整路径。
您还可以使用perl正则表达模式匹配,例如:
/tmp/clamav.*
/tmp/.*\.wrk
记住您将需要转义特殊字符(在它们前面加上反斜线)比如\. \?
模式匹配只在字符串包含一个星号(*)时使用,其他情况都使用完整的文件路径匹配。
您也可以通过在其前面加上user:来添加用户名至特定用户的忽略文件所有者,例如:user:bob
注意:root用户所有的文件会被忽略
perl正规表达式信息:
  http://www.perl.com/doc/manual/html/pod/perlre.html
目录监控的第二个方面是用LF_DIRWATCH_FILE启用。该选项可以让lfd监控某个特定的文件或目录,一旦该文件或目录有变动,就会发送watchalert.txt提醒邮件。它是通过与该条目输出的"ls -laAR" md5sum匹配来完成的,因此如果指定的话,它会覆盖目录

高级许可/拒绝过滤器

在/etc/csf.allow和/etc/csf.deny里,您可以通过以下格式添加更复杂的端口和ip过滤器(您需要
指定一个端口和一个IP地址):
tcp/udp|in/out|s/d=port|s/d=ip|u=uid
说明:
tcp/udp : tcp 或 udp 或 icmp protocol
in/out : 进入或传出连接
s/d=port : 源或目标端口编号(或 ICMP类型)
(用_符号表示端口范围, e.g. 2000_3000)
s/d=ip : 源或目标IP地址
u/g=UID : 源数据包的UID或GID,反映传出连接 ,
s/d=IP值忽略
注意:ICMP过滤用"port"表示 s/d=port来设置ICMP类型。无论您用s还是d都一样,二者都使用iptables --icmp-type选项。"iptables -p icmp -h"表示有效ICMP类型。每个过滤器只支持一种类型。
Examples: 例如:
# TCP connections inbound to port 3306 from IP 11.22.33.44
tcp|in|d=3306|s=11.22.33.44
# TCP connections outbound to port 22 on IP 11.22.33.44
tcp|out|d=22|d=11.22.33.44
注意|如果省略,默认协议设置为"tcp", 默认连接方向为"in",所以
# TCP connections inbound to port 22 from IP 44.33.22.11
d=22|s=44.33.22.11
# TCP connections outbound to port 80 from UID 99
tcp|out|d=80||u=99
# ICMP connections inbound for type ping from 44.33.22.11
icmp|in|d=ping|s=44.33.22.11
# TCP connections inbound to port 22 from Dynamic DNS address
# www.configserver.com (for use in csf.dyndns only)
tcp|in|d=22|s=www.configserver.com

多个以太网设备

如果您要将所有规则应用到多个以太网NICs,您可以将ETH_DEVICE设置为界面名,其后紧跟一个加号。例如,eth+将应用所有的iptables规则至eth0, eth1等。
这就是说,如果您将ETH_DEVICE设置为空白,则所有规则会平均地应用于所有以太网设备。

在一台普通的Linux服务器上安装

csf+lfd可以在一台普通的Linux服务器上运行。不过其功能有些改变:
1. 默认端口范围是针对典型的非cPanel控制面板网络服务器的,因此可能需要做些改变来适应服务器环境;
2. 可能需要在/etc/csf/csf.pignore扩展进程跟踪忽略文件来适应服务器环境;
3. 包括用于配置csf的Webmin标准模块-详情请查看the install.txt
所有安装代码库都一样,csf.conf文件删除了cPanel 控制面板特定选项,并添加了GENERIC普通的选项。

FTP连接问题说明

在使用SPI防火墙时,要确保服务器安装了使用被动(PASV)模式连接的FTP用户应用程序。
在运行Monolithic内核的服务器上(例如:VPS Virtuozzo/OpenVZ 和自定义内核)ip_conntrack和ip_conntrack_ftp iptables内核模块可能不能使用或功能不齐全。如果是这样,FTP被动模式(PASV)将不能工作。那么,您需要在防火墙打开一个洞,并配置FTP服务器以使用该洞。
例如,您可以使用pure-ftpd 添加端口范围30000:35000 到TCP_IN,添加下述行至/etc/pure-ftpd.conf ,然后重启pure-ftpd:
PassivePortRange 30000 35000
例如,您可以使用proftpd添加端口范围30000:35000至TCP_IN,添加下述行至/etc/proftpd.conf,然后重启proftpd:PassivePorts 30000 35000
通过SSL/TLS的FTP在使用SPI防火墙时经常会失败。这是由FTP协议在用户和服务器之间建立连接的方式导致的。在通过SSL使用FTP时,iptables不能建立相关连接是因为FTP控制连接已加密,因此不能跟踪该连接和临时端口分配的关系。
如果您需要通过SSL使用FTP,那么您要在csf和FTP服务器配置各开放一个被动端口块。(见上)
在试着使FTP连接更加安全的同时,却降低了您的防火墙的安全性。

信使服务

此功能可以在被阻止的连接IP地址显示信息,告知用户他已被防火墙阻止。可用于用户自己被阻止的情况,比如多次登录失败。该服务是在端口运行的两个守护进程提供的HTML或TEXT信息。
该服务使用iptables nat表格和相关的PREROUTING链。将ipt_REDIRECT模块用于重定向进入端口到相关信使服务服务器端口。
该功能还可以为临时和/或永久(csf.deny)IP地址服务。
该功能不包括为任何GLOBAL或BLOCK拒绝列表重定向。
该功能要使用IO::Socket::INET perl模块。
该功能不适用于没有加载ipt_REDIRECT iptables模块的服务器。通常适用于Monolithic内核服务器。VPS服务器管理员要咨询VPS主机供应商其服务器是否有iptables模块。
如果您对/etc/csf/messenger/里的任何文件作出修改,您必须重启lfd,它们都缓存在内存里。

HTML 信使服务器

显示的HTML信息是由以下文件提供的:/etc/csf/messenger/index.html
提供该页面的HTML服务器很原始,不过可以使用储存在/etc/csf/messenger/目录里的链接图像。这些图像必须是jpg, gif或png格式。它们会储存在内存里,因此您需要将其数量和尺寸设置到最小。不支持其他链接源文件(比如:.css, .js)。
由于HTML服务器要与用户互动,连接上有个计时器防止端口占用。
服务器内置功能将index.html里的[IPADDRESS]文本替换为防火墙阻止的IP地址。这可以让被阻止的用户知道是哪个IP地址被阻止。你也可以用[HOSTAME]文本,该文本将替换为服务器FQDN主机名。
HTML服务器不支持SSL连接,因此不能重定向端口443。
HTML服务器端口不应添加至TCP_IN 列表。
MESSENGER_HTML_IN最多允许15个端口。

TEXT 信使服务

显示的TEXT信息由以下文件提供:/etc/csf/messenger.text
该文件只能包含文本。提供该文件的TEXT服务器只发送内容至连接端口,并无协议交换。即它可能不适用于例如POP3这类协议。
服务器内置功能将index.text里的[IPADDRESS]文本替换为被防火墙阻止的IP地址。它可以帮助被阻止用户知道是哪个IP地址被阻止。您也可以使用[HOSTAME]文本,该文本将被替换为服务器FQDN主机名。
TEXT服务器不支持SSL连接,因此不能重定向端口995。
TEXT服务器不能添加至TCP_IN列表。
MESSENGER_TEXT_IN最多能有15个端口。

Messenger User信使用户

您要为信使服务创建一个用户。
该用户需要禁用或没有shell访问。
例如,您可以使用以下命令在根shell创建一个账户(在本例中为"csf"):
useradd csf -s /bin/false

Block Reporting阻止报告

lfd可以运行外部脚本和比如登录失败后的IP地址阻止。这是通过将配置变量BLOCK_REPORT设置为可执行的脚本。以下参数传递到脚本后变为:
ARG 1 = IP Address # 被阻止的IP地址或CIDR
ARG 2 = ports # 端口,逗号隔开的列表 或用*表示所有端口
ARG 3 = permanent # 0=临时阻止, 1=永久阻止
ARG 4 = inout # 阻止方向: 进入,传出或进出
ARG 5 = timeout # 如果是临时阻止, TTL以秒为单位, 否则为0
ARG 6 = message # 包含阻止原因的信息
ARG 7 = logs # 触发阻止的日志行(每行日志间包括# 行)
lfd在子进程启动BLOCK_REPORT,如果尚未完成也将在10秒钟内终止。它在root账户下运行,因此为了BLOCK_REPORT脚本的安全要谨慎操作。

Port Flood Protection端口洪水攻击保护

该功能配置了iptables以保护特定端口免受DOS攻击。该功能限制每段时间间隔的连接个数,以便在特定端口设置新的连接。
该功能不适用于未加载ipt_recent iptables模块的服务器。通常用于Monolithic内核服务器。VPS服务器管理员要咨询VPS主机供应商其服务器是否有iptables模块。
默认情况下,ipt_recent 只跟踪最后100个IP地址。可以在/proc/net/ipt_recent/* 文件查看被跟踪的IP地址,其中端口编号为文件名。
PORTFLOOD设置句法:
PORTFLOOD是一张用逗号隔开的列表,包括:
port;protocol;hit count*;interval seconds
因此,设置PORTFLOOD= "22;tcp;5;300,80;tcp;20;5" 表示:
1. 如果300秒内有5个以上连接到tcp端口22的连接,则至少在发现最后一个数据包300秒后阻止该IP地址访问端口22,即在该阻止被取消前有300秒的"安静" 期。
2. 如果5秒内有20个以上连接到tcp端口80的连接,则至少在发现最后一个数据包5秒后阻止该IP地址访问端口80,即在该阻止被取消前有5秒的"安静" 期。
可以在iptables man 页面找到更多有关ipt_recent模块的信息,地址http://snowman.net/projects/ipt_recent/
注意:在使用该模块时,已阻止的IP地址不会出现在任何iptables链。您可以操作每个模块文档的/proc/net/ipt_recent/* files 查看或删除当前被阻止且尚未被解除阻止的IP地址。
重启csf可以重新设置ipt_recent表格和删除其所有的内容。
注意:使用ipt_recent有以下限制:
1. 默认情况下,每张表格只记录100个地址(我们通过modprobe努力增加到1000个)
2. 默认情况下,每个地址只记录20个数据包
*这表示您要保持数据包个数在20以内。

External Pre- and Post- Scripts外部前-/后-脚本

外部命令(例如csf不支持的iptables规则)可在csf建立iptables链和规则之前和/或之后运行。
1.在csf配置iptables之前运行外部命令,创建以下文件:
/etc/csf/csfpre.sh 将该文件设置为可执行,添加合适的翻译行,以及任何您想要执行的外部命令。
例如:#!/bin/sh
/some/path/to/binary -a -b -c etc
然后 chmod +x /etc/csf/csfpre.sh
2.在csf配置iptables之后运行外部命令,创建以下文件:
/etc/csf/csfpost.sh 将该文件设置为可执行,添加合适的翻译行,以及任何您想要执行的外部命令。

lfd Clustering lfd集群

csf.conf里的(CLUSTER*)功能可以设置lfd群的环境,该组服务器可以共享阻止信息,以及
通过CLI进行配置选项修改,允许或删除操作。
该配置有两个逗号隔开的IP地址列表:
CLUSTER_SENDTO = ""
CLUSTER_RECVFROM = ""
如果您要lfd群的所有成员互相发送阻止信息通知,那么它们的设置应该都是一样的。
但是,您也可以建立一个群,其成员只发送通知但不接收其他成员的阻止信息。例如,您的服务器群里有一个客户服务台服务器,您不想阻止用户访问该服务器。那么您可以将该客户服务台服务器从CLUSTER RECVFROM 列表删除,并加入CLUSTER_SENDTO列表。
CLUSTER_MASTER是该群主节点的IP地址,它可以发送CLUSTER_CONFIG修改至本地CLUSTER_SENDTO列表中的服务器。只有将CLUSTER_MASTER设置为该IP地址的群用户才能接受CLUSTER_CONFIG修改。
还有另一个功能,如果服务器IP地址不在ifconfig里,可以使用CLUSTER_NAT,比如,NAT配置。这种情况下,添加该服务器IP地址,启用该配置,并将其用在CLUSTER_SENDTO/CLUSTER_RECVFROM至CLUSTER_NAT。
如果您不想使用服务器主IP,即 0.0.0.0.列出的第一个,可以设置CLUSTER_LOCALADDR。
必须将CLUSTER_PORT设置在所有服务器的相同端口。不要在TCP_IN或TCP_OUT里打开该端口,因为csf会自动添加适用于群用户交流的进出规则。
CLUSTER_KEY是通过Blowfish算法为群交流加密的密钥。该密钥应包含8到56个字符,越长越好,每个群用户的密钥应都一样。此密钥必须保密!
发往群里的阻止信息要保持原有参数,比如,永久/临时,方向(进/出),端口等。除了LT_POP3D和LT_IMAPD以外,其他所有阻止信息都可以互换。
群通讯使用的是10秒限制,如果超过10秒则该群用户通知将失效。

lfd Cluster CLI and UI lfd集群CLI和UI

CLI新命令列表请参阅csf --help。一旦配置CLUSTER_SENDTO,即可在UI使用附加选项。
只有CLUSTER_RECVFROM列出的群用户才能发送请求给CLUSTER_SENDTO列出的用户。
只有CLUSTER_MASTER列出的服务器才能作为CLUSTER_CONFIG配置选项请求源,例如:--cconfig, --cfile, --crestart
CLI选项--cfile和--cfiler可以在CLUSTER_MASTER服务器同步设置群用户的csf文件。
目前只能从CLI永久拒绝或允许简单IP。(即不是许可/拒绝过滤器)
PING群向每个CLUSTER_SENDTO用户发送ping命令,该命令将报告他们各自lfd.log文件的要求。
该功能是用来确认群交流的正常进行。
应谨慎在群用户的csf.conf里修改配置选项,要确保用户的具体选项不被覆盖。上述两个选项是为了
当需要做很多修改并且最后的要求是--cconfigr时使用--cconfig重启csf和lfd,使修改立即生效。

A Note on lfd Cluster Security lfd集群安全须知

当某个服务器被攻击后,群功能无疑可以让其他服务器在被攻击之前阻止访问。
不过,这种交流方式也有安全隐患。由于是通过网络交流,因此有可能被拦截。而且,尽管如果该信息没有加密
  • 会被丢弃,这并不能阻止任何本地用户访问网络端口和发送数据。
    实施以下安全措施可以帮助减少攻击:
    1.csf创建iptables规则,只有群用户才能通过群端口相互交流
    2.群服务器只接收来自CLUSTER_RECVFROM或CLUSTER_MASTER列出的IPs连接的数据
    3.
  • 所有信息都通过Pure Perl cpan模块,Cipher Block Chaining模块和已配置的CLUSTER_KEY,使用Blowfish对称分组密码加密。
    4.将CLUSTER_CONFIG设置为0可阻止配置选项请求的处理
    5.只有CLUSTER_MASTER才能作为CLUSTER_CONFIG配置选项请求源被接收。
    配置的密钥(口令)可能会受到损害、猜测或加密模块存在缺陷,又或是在csf执行时恶意连接重新配置csf防火墙,并发动本地或远程root升级。您在使用该选项前需要考虑到这些风险。
    我们不能保证此功能是绝对安全的,任何由此功能受到损害所带来的风险全部由您个人承担。

    监控IP地址

    当指定源的TCP连接发起(SYN)数据包穿过iptables链时,CLI的csf --watch [ip] (csf -w [ip])
    选项和WATCH_MODE配置选项会将其记录下来。
    此功能在跟踪iptables拒绝或接受IP地址的地点时很有用。
    应使用WATCH_MODE监控IP地址,虽然没有它csf -w [ip]功能仍然可用,但它不提供数据包最后目的地的确凿信息。
    默认情况下WATCH_MODE是关闭的,除非监控IP地址会给所有接收的iptables流量添加overhead插件和增加系统日志记录的iptables内核总量,否则应该关闭WATCH_MODE。
    WATCH_MODE 禁用: DROP_NOLOG, PS_INTERVAL, DROP_ONLYRES
    WATCH_MODE 启用d: DROP_LOGGING, DROP_IP_LOGGING, DROP_PF_LOGGING
    WATCH_MODE 记录被监控IP地址接收的iptables
    您每次应只监控少数IP地址,且监控时间不宜过长。否则,内核日志(通常/var/log/messages)将全是记录。日志规则不包括在监控时添加的被监控IP地址的任何规则。
    IP地址监控不能在csf(iptables)重启时进行。
    您可以给csf -w [ip]使用IP地址或CIDR地址。
    使用此功能的方法推荐:
    1.启用WATCH_MODE
    2.重启 csf
    3.重启 lfd
    4.使用以下命令监控IP:csf -w 11.22.33.44
    5.监控内核iptables里被监控IP地址的点击记录
    监控IP地址结束时您应该:
    1.禁用WATCH_MODE
    2.重启 csf(同时删除被监控IP的规则)
    3.重启 lfd
    内核iptables记录监控IP行(通常是在/var/log/messages)
    包含数据包在链内的方向以及链名称,例如:I:INPUT 是指
    进入INPUT链,O:LOCALINPUT 是指从LOCALINPUT链传出。
    以下是监控连接到端口22的192.168.254.4地址的记录摘要:
    Firewall: I:INPUT SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: I:LOCALINPUT SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: I:GDENYIN SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: O:GDENYIN SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: I:DSHIELD SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: O:DSHIELD SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: I:SPAMHAUS SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: O:SPAMHAUS SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: O:LOCALINPUT SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: I:INVALID SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: O:INVALID SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22
    Firewall: I:LOGACCEPT SRC=192.168.254.4 DST=192.168.254.71 PROTO=TCP DPT=22

    Port Knocking端口撞击

    iptables此功能是通过端口撞击开放基于连接IP地址的被撞击端口序列的敏感端口。
    更多有关端口撞击的信息请查看:http://www.portknocking.org/
    此功能要求您在限定时间内列出随机选出的未使用的端口(至少3个)。上述端口不能使用而且不能出现在TCP_IN (UDP_IN for udp 数据包)。将要被开放的端口也不能出现在TCP_IN (UDP_IN for udp 数据包)。
    未加载ipt_recent此iptables模块的服务器不能使用该功能。通常情况下适用于Monolithic内核服务器。VPS服务器管理员要咨询其VPS主机供应商该服务器是否有iptables模块。
    默认情况下,ipt_recent只记录最后100个IP地址。可以在/proc/net/ipt_recent/*
    查看被跟踪的IP地址。
    PORTKNOCKING设置句法:
    PORTKNOCKING是用逗号隔开的一列,包括:
    openport;protocol;timeout;kport1;kport2;kport3[...;kportN]
    所以,端口撞击设置PORTKNOCKING = "22;TCP;20;100;200;300;400" 表示:
    访问端口100, 200, 300 和 400时,开放端口22TCP至新连接IP地址20秒钟(即用SYN数据包撞击)每次撞击不超过20秒。20秒后依然可以访问端口22,直到该连接中断,不过不再允许新的连接。
    更多关于ipt_recent的信息请查看iptables man页面,地址是http://snowman.net/projects/ipt_recent/
    注意:在使用该模块时,IP地址不显示在iptables链上。您需要查看每个模块文档的/proc/net/ipt_recent/* 文件才能看到不同撞击阶段的IP地址。
    重启csf重置ipt_recent表同时移除所有的碰撞。


  • 主旨:

    內容:




    104休閒信箱 2.3.0 © 104mm.com 2001 - 2017. 您尚未登錄
    Page generated in 0.04869008 seconds with 3 Queries