这篇文章主要介绍了centos下fail2ban安装与配置实例,fail2ban是一个实用、强大的Linux安全软件,可以监控大多数常用服务器软件,需要的朋友可以参考下

一、fail2ban简介

fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,是不是很好、很实用、很强大!

二、简单来介绍一下fail2ban的功能和特性

1、支持大量服务。如sshd,apache,qmail,proftpd,sasl等等
2、支持多种动作。如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(邮件通知)等等。
3、在logpath选项中支持通配符
4、需要Gamin支持(注:Gamin是用于监视文件和目录是否更改的服务工具)
5、需要安装python,iptables,shorewall,Gamin。如果想要发邮件,那必需安装postfix/sendmail

三、fail2ban安装与配置操作实例

1:安装epel更新源:http://fedoraproject.org/wiki/EPEL/zh-cn

#yuminstallshorewallgamin-pythonshorewall-shellshorewall-perlshorewall-commonpython-inotifypython-ctypesfail2ban

or

#yuminstallgamin-pythonpython-inotifypython-ctypes
#wgethttp://dl.fedoraproject.org/pub/epel/6/i386/fail2ban-0.8.11-2.el6.noarch.rpm
#rpm-ivhfail2ban-0.8.11-2.el6.noarch.rpm

or

#yuminstallgamin-pythonpython-inotifypython-ctypes
#wgethttp://ftp.sjtu.edu.cn/fedora/epel//5/i386/fail2ban-0.8.4-29.el5.noarch.rpm
#rpm-ivhfail2ban-0.8.4-29.el5.noarch.rpm

2:源码包安装

#wgethttps://codeload.github.com/fail2ban/fail2ban/tar.gz/0.9.0
#tar-xzvffail2ban-0.9.0.tar.gz
#cd
#./setup.py
#cpfiles/solaris-svc-fail2ban/lib/svc/method/svc-fail2ban
#chmod+x/lib/svc/method/svc-fail2ban

安装路径

/etc/fail2ban
action.dfilter.dfail2ban.confjail.conf

我们主要编辑jail.conf这个配置文件,其他的不要去管它.

#vi/etc/fail2ban.conf

SSH防攻击规则:

[ssh-iptables]
enabled=true
filter=sshd
action=iptables[name=SSH,port=ssh,protocol=tcp]
sendmail-whois[name=SSH,dest=root,sender=fail2ban@example.com,sendername="Fail2Ban"]
logpath=/var/log/secure
maxretry=5
[ssh-ddos]
enabled=true
filter=sshd-ddos
action=iptables[name=ssh-ddos,sftpprotocol=tcp,udp]
logpath=/var/log/messages
maxretry=2
[osx-ssh-ipfw]
enabled=true
filter=sshd
action=osx-ipfw
logpath=/var/log/secure.log
maxretry=5
[ssh-apf]
enabled=true
filter=sshd
action=apf[name=SSH]
logpath=/var/log/secure
maxretry=5
[osx-ssh-afctl]
enabled=true
filter=sshd
action=osx-afctl[bantime=600]
logpath=/var/log/secure.log
maxretry=5
[selinux-ssh]
enabled=true
filter=selinux-ssh
action=iptables[name=SELINUX-SSH,protocol=tcp]
logpath=/var/log/audit/audit.log
maxretry=5

proftp防攻击规则

[proftpd-iptables]
enabled=true
filter=proftpd
action=iptables[name=ProFTPD,port=ftp,protocol=tcp]
sendmail-whois[name=ProFTPD,dest=you@example.com]
logpath=/var/log/proftpd/proftpd.log
maxretry=6

邮件防攻击规则

[sasl-iptables]
enabled=true
filter=postfix-sasl
backend=polling
action=iptables[name=sasl,port=smtp,protocol=tcp]
sendmail-whois[name=sasl,dest=you@example.com]
logpath=/var/log/mail.log
[dovecot]
enabled=true
filter=dovecot
action=iptables-multiport[name=dovecot,port="pop3,pop3s,imap,imaps,submission,smtps,sieve",protocol=tcp]
logpath=/var/log/mail.log
[dovecot-auth]
enabled=true
filter=dovecot
action=iptables-multiport[name=dovecot-auth,protocol=tcp]
logpath=/var/log/secure
[perdition]
enabled=true
filter=perdition
action=iptables-multiport[name=perdition,port="110,143,993,995"]
logpath=/var/log/maillog
[uwimap-auth]
enabled=true
filter=uwimap-auth
action=iptables-multiport[name=uwimap-auth,995"]
logpath=/var/log/maillog

apache防攻击规则

[apache-tcpwrapper]
enabled=true
filter=apache-auth
action=hostsdeny
logpath=/var/log/httpd/error_log
maxretry=6
[apache-badbots]
enabled=true
filter=apache-badbots
action=iptables-multiport[name=BadBots,port="http,https"]
sendmail-buffered[name=BadBots,lines=5,dest=you@example.com]
logpath=/var/log/httpd/access_log
bantime=172800
maxretry=1
[apache-shorewall]
enabled=true
filter=apache-noscript
action=shorewall
sendmail[name=Postfix,dest=you@example.com]
logpath=/var/log/httpd/error_log

Nginx防攻击规则

[Nginx-http-auth]
enabled=true
filter=Nginx-http-auth
action=iptables-multiport[name=Nginx-http-auth,port="80,443"]
logpath=/var/log/Nginx/error.log

lighttpd防规击规则

[suhosin]
enabled=true
filter=suhosin
action=iptables-multiport[name=suhosin,https"]
#adaptthefollowingtwoitemsasneeded
logpath=/var/log/lighttpd/error.log
maxretry=2
[lighttpd-auth]
enabled=true
filter=lighttpd-auth
action=iptables-multiport[name=lighttpd-auth,https"]
#adaptthefollowingtwoitemsasneeded
logpath=/var/log/lighttpd/error.log
maxretry=2

vsftpd防攻击规则

[vsftpd-notification]
enabled=true
filter=vsftpd
action=sendmail-whois[name=VSFTPD,dest=you@example.com]
logpath=/var/log/vsftpd.log
maxretry=5
bantime=1800
[vsftpd-iptables]
enabled=true
filter=vsftpd
action=iptables[name=VSFTPD,protocol=tcp]
sendmail-whois[name=VSFTPD,dest=you@example.com]
logpath=/var/log/vsftpd.log
maxretry=5
bantime=1800

pure-ftpd防攻击规则

[pure-ftpd]
enabled=true
filter=pure-ftpd
action=iptables[name=pure-ftpd,protocol=tcp]
logpath=/var/log/pureftpd.log
maxretry=2
bantime=86400

MysqL防攻击规则

[MysqLd-iptables]
enabled=true
filter=MysqLd-auth
action=iptables[name=MysqL,port=3306,protocol=tcp]
sendmail-whois[name=MysqL,sender=fail2ban@example.com]
logpath=/var/log/MysqLd.log
maxretry=5

apache PHPmyadmin防攻击规则

[apache-PHPmyadmin]
enabled=true
filter=apache-PHPmyadmin
action=iptables[name=PHPmyadmin,port=http,httpsprotocol=tcp]
logpath=/var/log/httpd/error_log
maxretry=3
#/etc/fail2ban/filter.d/apache-PHPmyadmin.conf
将以下内容粘贴到apache-PHPmyadmin.conf里保存即可以创建一个apache-PHPmyadmin.conf文件.
#Fail2Banconfigurationfile
#
#Bansbotsscanningfornon-existingPHPMyAdmininstallationsonyourwebhost.
#
#Author:GinaHaeussge
#
[DeFinition]
docroot=/var/www
badadmin=PMA|PHPmyadmin|myadmin|MysqL|MysqLadmin|sqladmin|mypma|admin|xampp|MysqLdb|mydb|db|pmadb|PHPmyadmin1|PHPmyadmin2
#Option:failregex
#Notes.:RegexptomatchoftenprobedandnotavailablePHPmyadminpaths.
#Values:TEXT
#
failregex=[[]client[]]Filedoesnotexist:%(docroot)s/(?:%(badadmin)s)
#Option:ignoreregex
#Notes.:regextoignore.Ifthisregexmatches,thelineisignored.
#Values:TEXT
#
ignoreregex=
#servicefail2banrestart

写在最后,在安装完fail2ban后请立即重启一下fail2ban,看是不是能正常启动,因为在后边我们配置完规则后如果发生无法启动的问题我们可以进行排查.如果安装完后以默认规则能够正常启动,而配置完规则后却不能够正常启动,请先检查一下你 /var/log/ 目录下有没有规则里的 logpath= 后边的文件,或者这个文件的路径与规则里的是不是一致. 如果不一致请在 logpath 项那里修改你的路径, 如果你的缓存目录里没有这个文件,那么请你将该配置项的 enabled 项目的值设置为 false. 然后再进行重启fail2ban,这样一般不会有什么错误了.

转载自:http://www.jb51.net/article/48591.htm

centos下fail2ban安装与配置详解的更多相关文章

  1. 关于h5中的fetch方法解读(小结)

    这篇文章主要介绍了关于h5中的fetch方法解读(小结),fetch身为H5中的一个新对象,他的诞生,是为了取代ajax的存在而出现,有兴趣的可以了解一下

  2. 当iOS应用程序进入后台时,TCP和UDP(与多播)连接会发生什么

    我创建了几个实验:设置1:我创建了一个TCPSender应用程序和一个TCPReceiver应用程序.在本次实验中,我在iOS设备上启动了TCPSender,在另一台iOS设备上启动了TCPReceiver.然后两者都经过验证已建立连接并发送和接收数据.然后我将TCPReceiver应用程序置于后台.TCPSender应用程序指示连接丢失和崩溃(是的,我打算这样).设置2:我创建了一个UDPSen

  3. ios – 200在xcode 7中生成DSMM警告

    解决方法我有同样的问题.Facebook表示他们已经意识到这一点并且不是高优先级,因为它不会影响应用程序.我回退到4.7.1警告问题不再存在.我不认为它会被拒绝但不能确定.

  4. xamarin.ios – Facebook iOS SDK:应用程序在启动时找不到“找不到符号:_ACFacebookAppIdKey.”仅在iOS 5中崩溃

    解决方法这是一个已修复的knownbug.目前唯一已知的解决方法是使用较旧版本的FacebookSDK.

  5. osx – 无法创建目录/ var / teamsserver

    OpenSSH_6.2p2,OSSLShim0.9.8r8Dec2011debug1:Readingconfigurationdata/etc/ssh_configdebug1:/etc/ssh_configline20:Applyingoptionsfor*debug1:Connectingto1.2.3.4[1.2.3.4]portPORT.debug1:Connectionestablished.Couldnotcreatedirectory‘/var/teamsserver/.ssh’.debug

  6. ios – Xcode Server 4.0 git从构建触发脚本推送

    我为一个托管在github上的项目安装了一个XcodeBot.我按照步骤和设置机器人来使用我现有的SSH密钥.验证成功,项目结算和建立.然后,我在预触发器操作中添加了一个shell脚本,它增加了plist中的版本,将其标记,并将该更改提交到github.但是当我尝试从shell脚本执行gitpush时,我得到:–推送到git@github.com:spex-app/spex-ios.git权限被拒

  7. ios – 如何在Xcode 4.5中完成代码签名

    解决方法事实证明,从AppStore升级XCode并不会自动升级所有内容.转到首选项/下载,并确保安装最新的命令行工具.

  8. xcode7 – 谁在创建文件“/private/var/tmp/Untitled-*.uicatalog”?

    我正在调查为什么TeamCity构建代理程序用完了磁盘,并且在/private/var/tmp中找到了超过11,000个文件,它们都以Untitled-.uicatalog行命名.每个文件至少0.6MB.总磁盘占用空间约为4GB.这些文件可以追溯到几个月,所以他们能够重新启动.谁在创造他们?Xcode在编译至少有一个图像的xcassets目录时创建这些目录.我可以删除它们吗?

  9. ios – Xcode上传错误:无法打开ssh会话. (16)

    注意:我们终于上传了该应用程序,但是我们并没有真正解决这个问题,所以如果有人可以分享一些有关这个问题的宝贵意见或经验,我将不胜感激.我也检查了以下2个类似的问题,但这些没有帮助:>Erroruploadingiosapplicationtoitunesconnect“failedtoopensshsession(16)”>AppStoresubmission/distributionerror“f

  10. 如何在iOS 10上设置日志级别?

    换句话说,如果我在iOS上运行的代码就像这样:那么在Console.app中看到记录的消息需要做些什么呢?

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部