Linux系统通过fail2ban对暴力破解进行防护

暴力破解攻击是指攻击者通过系统地组合所有可能性(例如登录时用到的账户名、密码),尝试所有的可能性破解用户的账户名、密码等敏感信息。攻击者会经常使用自动化脚本工具组合出正确的用户名和密码。

针对这种攻击除了常规性的调整服务器的设置账号密码的复杂度,以及调整默认端口外等方式提升攻击难度外,还可以通过开源工具fail2ban来进行设置防护规则来提高防护能力。

首先简单说一下服务器的基础防护设置
1、密码要满足复杂性要求
a.密码长度要求8位以上,最好是14位以上
b.密码要求至少包含大小写字母、数字和特殊符号四种字符中的三种以上

2、修改ssh程序默认的远程端口号
这一点可以通过调整 /etc/ssh/sshd_config 文件中的Port 参数来实现
修改了端口号之后远程工具进行连接时需要指定端口号才可以正常连接,通过ssh命令连接时需要通过-p参数指定端口号

3、修改默认的管理员账号
a.先对默认的root账号进行禁用(注意:阿里云控制台上的密码重置功能只对默认的root账号生效,如果做了此操作后后期是不能使用阿里云控制台的密码重置功能的),禁用方法直接修改root用户的登陆shell为 /sbin/nologin 即可。

b.创建新的用户名,作为管理员账号,Linux系统判定管理员账号的方法是可以通过UID实现的,默认UID为0的用户是管理员,所以只需要创建用户后,在passwd文件中把用户UID改为0即可
创建用户,并设置密码,以及最终的修改效果,可以参考下图,通过id命令查询结果可以看到新建的用户权限是root权限

通过上述方式的设置,是可以提升服务器针对暴力破解的防护能力的,设置之后基本上黑客想要暴力成功是很困难的。
但是如果暴力破解的情况很严重,虽然经过上述设置后,黑客很难暴力破解成功,但是由于暴力破解时服务器需要不断的对用户登录进行认证,也会导致服务器产生很多额外的开销,进而影响服务器的资源负载状况。
针对这种情况,可以考虑通过开源工具fail2ban监视日志情况将满足动作的相关IP利用iptables加入到dorp列表一定时间。
注意:这种方法如果手动重启了iptables服务的话,所有的drop规则会失效。
1、到fail2ban官网下载程序源码包
官网地址http://www.fail2ban.org 由于是海外站点,所以下载速度上可能比较慢,本文中通过稳定版fail2ban-0.8.14做演示,具体的下载地址
https://codeload.github.com/fail2ban/fail2ban/tar.gz/0.8.14

2、下载好的程序是源码包的形式,需要手动进行编译安装
这个程序是通过python语言编写的,需要通过python命令安装,要求python版本不能低于2.4 ,具体的python版本情况可以在系统中执行python -V进行核实

安装完成后要手动生成一下程序的启动脚本

3、程序文件说明
安装完成后程序文件都是保存在 /etc/fail2ban 目录下的

/etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置
/etc/fail2ban/fail2ban.conf #定义了fai2ban日志级别、日志位置及sock文件位置
/etc/fail2ban/filter.d #条件文件夹,内含默认文件。过滤日志关键内容设置
/etc/fail2ban/jail.conf #主要配置文件,模块化。主要设置启用ban动作的服务及动作阈值

4、配置案例
设置条件:ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,用户可重新登录。
需要修改/etc/fail2ban/jail.conf 文件实现防护规则配置
首先是全局配置,主要配置项如下
[DEFAULT] #全局设置
ignoreip = 127.0.0.1/8 #忽略的IP列表,不受设置限制
bantime = 600 #屏蔽时间,单位:秒
findtime = 600 #这个时间段内超过规定次数会被ban掉
maxretry = 3 #最大尝试次数
backend = auto #日志修改检测机制(gamin、polling和auto这三种)
然后是sshd程序防护设置
[ssh-iptables]
enabled = true #启用配置
filter = sshd #规律规则名,对应filter.d目录下的sshd.conf
action = iptables[name=SSH, port=ssh, protocol=tcp]
#动作的相关参数,对应action.d/iptables.conf文件
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"] #触发报警的收件人
logpath = /var/log/secure #检测的系统的登陆日志文件。这里要写sshd服务日志文件
bantime = 3600 #禁止用户IP访问主机1小时
findtime = 300 #在5分钟内内出现规定次数就开始工作
maxretry = 3 #3次密码验证失败

注意:单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。

客户端测试,连续输错3次密码后无法正常连接到服务器,查看服务器中多了条针对源地址的连接REJECT策略

5、fail2ban工作状态查询
a.插叙当前总的状态信息,可以看到有哪些规则存在拦截状态

b.根据规则命令查询具体的拦截状态信息,可以查看到具体拦截了哪些IP

时间: 2024-12-30 09:43:11

Linux系统通过fail2ban对暴力破解进行防护的相关文章

Linux 利用hosts.deny 防止暴力破解ssh(转)

一.ssh暴力破解 利用专业的破解程序,配合密码字典.登陆用户名,尝试登陆服务器,来进行破解密码,此方法,虽慢,但却很有效果. 二.暴力破解演示 2.1.基础环境:2台linux主机(centos 7系统).Development Tools. 主机ip:192.168.30.64 (服务器端).192.168.30.64(客户端+ 暴力破解[Hydra]) 在30.63上进行暴力破解30.64 2.2 客户端上安装 破解程序 hydra.关于该程序的详情请去官网. 安装该软件的依赖环境: [r

在CentOS 6.3下安装fail2ban防暴力破解工具的过程

fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH.SMTP.FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员,是一款很实用.很强大的软件! 功能和特性: 1.支持大量服务.如sshd,apache,qmail,proftpd,sasl等等 2.支持多种动作.如iptables,tcp-wrapper,shorewall(ipta

如何使用 fail2ban 防御 SSH 服务器的暴力破解攻击

如何使用 fail2ban 防御 SSH 服务器的暴力破解攻击 对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来无限次地进行登录尝试.当然SSH可以设置使用非密码验证验证方式来对抗这种攻击,例如公钥验证或者双重验证.将不同的验证方法的优劣处先放在一边,如果我们必须使用密码验证方式怎么办?你是如何保护你的 SSH 服务器免遭暴力破解攻击的呢? fail2ban 是 Linux 上的一个著名的入侵保护的开源框架,它会监控多个系统的日志文件(例如:/var/log/auth.l

Linux 安装DenyHost防止ssh被暴力破解

DenyHosts介绍     当你的linux服务器暴露在外网当中时,服务器就极有可能会遭到互联网上的扫描软件进行扫描,然后试图连接ssh端口进行暴力破解(穷举扫描).如果遇到这个问题,一款非常有用的工具DenyHosts可以阻止试图猜测SSH登录口令.DenyHosts是用Python写的一个程序,它会分析SSHD的日志文件(Redhat为/var/log/secure等),当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的

防止暴力破解Win8系统密码的方法

  1.使用图片密码登录windows8系统时,可以先将鼠标指针移动到屏幕右侧,弹出Charms控制面板,选择"设置"选项后,按下最下方位置的"更改电脑设置"按钮,进入电脑设置更改页面.从该页面的左侧列表中,点击"用户"标签. 2.其次在该页面的"登录选项"位置处,点击"创建图片密码"按钮,弹出图片密码创建向导对话框,按照提示首先输入旧的登录密码,再选择一种自己很熟悉的图片,建议大家尽量选用比较规整的,或者

防止暴力破解Windows 8系统密码

低版本windows系统使用的都是字符型密码,这种密码无论多么复杂,理论上都存在被暴力破解的可能.而Win8系统为了防范病毒.木马程序的入侵,采用了非常特别的图片密码登录功能,该登录方式不包含常规的字符内容,病毒.木马程序在破解时将无从下手,这显然会大幅度提高系统安全防范能力. 使用图片密码登录windows8系统时,可以先将鼠标指针移动到屏幕右侧,弹出Charms控制面板,选择"设置"选项后,按下最下方位置的"更改电脑设置"按钮,进入电脑设置更改页面.从该页面的左

Linux 系统密码破解的几种常用方法

  (一)Linux 系统密码破解 1.在grub选项菜单按E进入编辑模式 2.编辑kernel那行 /init 1 (或/single) 3.按B重启 4.进入后执行下列命令 root@#passwd root (设置root的密码) Enter new unix password:输入新的密码 root@#init 6 (二)debian linux 系统密码破解 1.在grub选项菜单'Debian GNU/Linux,...(recovery mode)',按e进入编辑模式 2.编辑ke

Linux系统各版本的本地root密码破解方法

(一)RedHat/CentOS/Fedora 系统密码破解 1.在grub选项菜单按E进入编辑模式 2.编辑kernel 那行最后加上S (或者Single) 3.按B,启动到single-user mode 4.进入后执行下列命令 # mount -t proc proc /proc # mount -o remount,rw / #passwd #sync #reboot (二)Debian linux 系统密码破解 ubuntu的root默认是禁止使用的,在安装的时候也没要求你设置roo

linux服务器下通过iptables+Denyhost抵御暴力破解的配置方法_Linux

使用iptables 现在每分钟连接ssh的次数 #允许本地环回接口访问 iptables -A INPUT -i lo -j ACCEPT #对已经建立的所有链接都放行 iptables -A INPUT -m state –state ESTABLISHED -j ACCEPT #每分钟对ssh的新连接只允许两个,已建立的连接不限制 复制代码 代码如下: iptables -A INPUT -p tcp –dport 22 -m limit –limit 2/minute –limit-bu