百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

看我如何巧妙配置两款安全工具防范蛮力攻击

liebian365 2025-02-09 13:09 15 浏览 0 评论

蛮力攻击简介

我们都知道这句流行语:“预防胜过治疗。”如果你是个Linux系统管理员,可能知道“蛮力攻击应用程序”如何在你的本地或远程服务器引发问题。设想一下:如果你的服务器遭到了身份未知的攻击者的攻击,服务器上的数据就会落到坏人手里。这肯定会让你和贵公司陷入从未想过的大麻烦。蛮力攻击是应用程序采用的反复尝试方法,以破解你的加密数据。加密数据可能是任何密码或密钥。简单来说,蛮力攻击应用程序会尝试所有可能的密码或密钥组合,反复尝试,直到找到正确的密码或密钥为止。这就需要一段时间,具体取决于密码的复杂性。如果要花过长的时间才能找到密码,那么可以说你的密码很安全、很强壮。

现在可以使用一些巧妙的工具来阻止或预防蛮力攻击。今天,我们就来探讨下列工具。

1. SSHGuard ;

2. Fail2Ban.

提醒一下:不要将这两个工具都安装在同一个系统上。你可能无法获得正确的结果。

首先,让我们看一下SSHGuard,以及如何安装和配置它,以预防蛮力攻击。

1. SSHGuard

SSHGuard(http://www.sshguard.net)是一种快速、轻便的监控工具,用C语言编写而成。它可以使用日志活动,监控服务器,保护服务器远离蛮力攻击。要是有人不断地试图通过SSH访问你的服务器,多次(可能四次)尝试访问失败,SSHGuard就会将对方的IP地址放入到iptables,在一段时间内阻止他/她访问。之后,它会在一段时间后自动解锁。它几乎能保护所有的服务,比如sendmail、exim、dovecot、vsftpd、proftpd及许多服务,而不光光保护SSH。

安装SSHGuard

在Ubuntu/Debian上,SSHGuard就在默认的软件库中。

于是,我们可以用下列命令来轻松安装它:

sudo apt-get install sshguard

在CentOS/RHEL 6.x上:

先下载并添加FlexBox软件库,如下所示。

wget http://sourceforge.net/projects/flexbox/files/flexbox-release-1-1.noarch.rpm

使用下列命令更新软件库列表:

yum repolist

最后,使用下列命令安装sshguard:

yum install sshguard

至于其他发行版,从官方网站(
http://www.sshguard.net/download/)下载各自的二进制文件,并自行安装。

或者,你也可以从这里(
http://pkgs.org/download/sshguard)来下载。

用Iptables/Netfilter配置SSHGuard

SSHGuard没有配置文件。你要做的就是在iptables中为SSHGuard创建新的链,以插入阻止访问的规则。

为了支持IPv4,在拥有根权限的情况下运行下列命令:

iptables -N sshguard

为了支持IPv6:

ip6tables -N sshguard

现在更新INPUT链,将流量传输到sshguard。指定--dport选项,使用sshguard保护服务的所有端口。如果你想防止攻击者将任何流量传输到主机,就完全删除这个选项。

阻止来自攻击者的所有流量

为了支持IPv4:

iptables -A INPUT -j sshguard

为了支持IPv6:

iptables -A INPUT -j sshguard

阻止来自攻击者的特定服务,比如SSH、FTP、POP或IMAP

为了支持IPv4:

iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard

为了支持IPv6:

ip6tables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143-j sshguard

最后,保存iptables规则。

service iptables save

核实你在链中的较高层没有传输所有ssh流量的default allow(默认允许)规则。核实你在防火墙中没有阻止所有ssh流量的default deny(默认拒绝)规则。不论哪种情况,假设你已经拥有调整防火墙设置的技能。

下面是一个合理的示例规则集:

iptables -N sshguard

阻止sshguard表明是不良流量的任何流量:

iptables -A INPUT -j sshguard

启用ssh、dns、http和https:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

阻止之外的所有服务:

iptables -P INPUT DROP

不用Iptables/Netfilter,配置SSHGuard

如果你不用iptables,下列命令可以创建并保存iptables配置;除了让sshguard可以正常运行外,该配置绝对什么都不做:

iptables -F

iptables -X

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -P OUTPUT ACCEPT

iptables -N sshguard

iptables -A INPUT -j sshguard

最后,保存iptables配置:

service iptables save

就是这样。现在你已安装并配置了SSHGuard,可以保护你的ssh、ftp及其他服务远离蛮力攻击者。

2. Fail2Ban

Fail2ban(
http://www.fail2ban.org/wiki/index.php/Main_Page)是一种开源入侵预防系统,可以用来预防蛮力攻击及其他可疑的恶意攻击。它可以扫描日志文件(比如/var/log/apache/error_log),禁止表明存在可疑迹象(比如密码输错次数过多和寻找安全漏洞等)的IP地址。

一般来说,Fail2Ban之后被用来更新防火墙规则,阻止IP地址在指定的一段时间内访问,不过还可以配置任何随意性的其他操作(比如发送电子邮件或弹出CD-ROM托架)。Fail2Ban在默认情况下随带预先配置的过滤器,可用于众多服务(Apache、curier和SSH等)。

安装Fail2Ban

以根用户身份登录,输入下列命令,安装Fail2Ban:

在Ubuntu/Debian上:

apt-get install fail2ban

在CentOS/RHEL上:

先添加EPEL软件库。

yum install epel-release

yum repolist

然后,使用下列命令安装fail2ban:

yum install fail2ban

启用并启动fail2ban服务。

service fail2ban start

chkconfig fail2ban on

或者

systemctl enable fail2ban

systemctl start fail2ban

这样就完事了。

备份Fail2Ban主配置文件:

所有配置文件都位于/etc/fail2ban目录下。主配置文件是/etc/fail2ban/jail.conf。备份主配置文件是个好主意,以免升级过程中合并。创建/etc/fail2ban/jail.conf文件的本地副本,如下所示:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

配置Fail2Ban

使用任何编辑工具,打开/etc/fasil2ban/jail.local文件:

vi /etc/fail2ban/jail.local

找到名为[Default]的部分。该部分含有Fail2Ban将遵循的一套基本的规则。根据你的需求来设置值。

下面是我的设置:

[DEFAULT]

# "ignoreip"可能是IP地址、CIDR掩码或DNS主机

ignoreip = 127.0.0.1/8 192.168.1.200/24

[...]

bantime = 600

[...]

maxretry = 3

# "backend"指定了用来获得文件修改之处的后端。可用选项有"gamin"、"polling"和"auto"。

# yoh:由于某种原因,随Debian交付的python-gamin没有像预期的那样运行。

# 这个问题有待完成,于是轮询是现在的默认后端

[...]

backend = auto

#

# 完全用于插入到jail.{conf,local}配置文件中的目的地电子邮件地址。

destemail = root@localhost

[...]#

在这里,

?ignoreip– 将你信任的IP地址列入白名单,防止Fail2Ban阻止。你可以添加空格字符隔开来的多个地址。这里,我将IP地址192.168.1.200列入白名单。所以,该IP地址不会被禁止,即便它发送了数量不受限制的失败登录尝试。

?bantime– 如果某主机被Fail2Ban发现违规,它被禁止的秒数。默认时间是600秒(10分钟)。如果你喜欢,可以延长这个时间值。

?maxretry– 不正确的登录尝试次数,之后主机被Fail2Ban阻止。

服务配置

默认情况下,Fail2Ban含有一套支持各种服务的预定义过滤器。所以你不需要将任何手动项输入到配置文件中。你要做的就是将已启用的值改成true或false,Fail2Ban就会自动监视相应的服务。

下面是jail.local文件中SSH部分的示例输出:

[ssh]

enabled = true

port = ssh

filter = sshd

logpath = /var/log/auth.log

maxretry = 6

这里不妨看看每一项的简要细节。

?enabled-这意味着,ssh服务保护功能已开启。如果你想关闭,只要设成false。

?port-SSH服务端口。

?filter-它指含有规则的配置文件,Fail2Ban使用这些规则来找到匹配。默认情况下,它被设成sshd,指代
/etc/fail2ban/filter.d/sshd.conf文件。

?logpath―记录失败登录尝试的日志文件。

?maxretry-Fail2Ban阻止主机之前不正确的登录尝试次数。

一旦你更改了配置,就要重启Fail2Ban服务,以便保存变更。

systemctl restart fail2ban

或者

service fail2ban restart

你可以使用下列命令,核实Fail2Ban在iptables中添加的规则:

iptables -L

示例输出:

Chain INPUT (policy ACCEPT)

target prot opt source destination

f2b-sshd tcp -- anywhere anywhere multiport dports ssh

ACCEPT all -- anywhere anywhere ctstate RELATED,ESTA

BLISHED

ACCEPT all -- anywhere anywhere

INPUT_direct all -- anywhere anywhere

INPUT_ZONES_SOURCE all -- anywhere anywhere

INPUT_ZONES all -- anywhere anywhere

ACCEPT icmp -- anywhere anywhere

REJECT all -- anywhere anywhere reject-with icmp-hos

t-prohibited

[...]

测试Fail2Ban

我想试几次随机性的失败尝试,从本地客户机连接到Fail2Ban服务器。

然后,我核实/var/log/fail2ban.log文件中的失败登录尝试:

cat /var/log/fail2ban.log

示例输出:

2015-07-13 15:38:15,480 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,482 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,483 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,485 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,485 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,487 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,488 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,490 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,491 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,492 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,493 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,495 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:15,496 fail2ban.filter [11792]: INFO [sshd] Found 192.168.1.100

2015-07-13 15:38:16,234 fail2ban.actions [11792]: NOTICE [sshd] Ban 192.168.1.100

或者

iptables -L

正如你从上述两段输出中可以看出,我的本地IP地址192.168.1.100已被Fail2Ban禁止。

注意:在默认情况下,被禁止的IP地址在600秒后会被解禁。

就是这样。但愿这两款工具对你会有所帮助。

祝你好运!


相关推荐

4万多吨豪华游轮遇险 竟是因为这个原因……

(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...

“菜鸟黑客”必用兵器之“渗透测试篇二”

"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...

科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白

作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...

麦子陪你做作业(二):KEGG通路数据库的正确打开姿势

作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...

知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势

智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...

每日新闻播报(September 14)_每日新闻播报英文

AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...

香港新巴城巴开放实时到站数据 供科技界研发使用

中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...

5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper

本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...

Qt动画效果展示_qt显示图片

今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...

如何从0到1设计实现一门自己的脚本语言

作者:dong...

三年级语文上册 仿写句子 需要的直接下载打印吧

描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...

C++|那些一看就很简洁、优雅、经典的小代码段

目录0等概率随机洗牌:1大小写转换2字符串复制...

二年级上册语文必考句子仿写,家长打印,孩子照着练

二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...

一年级语文上 句子专项练习(可打印)

...

亲自上阵!C++ 大佬深度“剧透”:C++26 将如何在代码生成上对抗 Rust?

...

取消回复欢迎 发表评论: