linux系统防ssh登陆扫描用fail2ban
2023.01.06 12:51 阅读次数: 出自:鸡米饭 作者:绝歌一首
第一步,禁止root的ssh登陆权限
关闭root用户的ssh登录
1. 使用root账户登录系统,添加一个普通账户例如test,并为其设置密码
useradd test passwd test
2. 修改配置文件
编辑配置文件/etc/ssh/sshd_config修改PermitRootLogin后面的yes为no,并且去掉前面的注释符,同时可以限制失败次数
注意: 这个失败次数是对所有用户都起作用的。
#LoginGraceTime 2mPermitRootLogin no#StrictModes yesMaxAuthTries 3#MaxSessions 10
3. 重启sshd服务
systemctl restart sshd.service
此时再用root用户登录,此时再用root用户登录,如果不能登录则代表配置成功。如果需要使用root权限,可以使用su或者sudo进行切换。
注意:禁用root用户后使用sftp时可能出现登录不了的问题,目前还没找到解决办法
第二步,装fail2ban
Fail2Ban 简介
Fail2Ban 是一款入侵防御软件,可以保护服务器免受暴力攻击。 它是用 Python 编程语言编写的。
Fail2Ban 基于auth 日志文件工作,默认情况下它会扫描所有 auth 日志文件,如 /var/log/auth.log、
/var/log/apache/access.log 等,并禁止带有恶意标志的IP,比如密码失败太多,寻找漏洞等等标志。
通常,Fail2Ban 用于更新防火墙规则,用于在指定的时间内拒绝 IP 地址。 它也会发送邮件通知。
Fail2Ban 为各种服务提供了许多过滤器,如 ssh、apache、nginx、squid、named、mysql、nagios 等。
Fail2Ban 能够降低错误认证尝试的速度,但是它不能消除弱认证带来的风险。
这只是服务器防止暴力攻击的安全手段之一。
2. Fail2Ban 安装配置与日常维护
# yum install fail2ban ## 安装
以下配置实现:阻止 SSH 远程暴力攻击并通过 mail 通知管理员
# cat /etc/fail2ban/jail.conf ## 根据指引,修改配置应在 jail.d/ 下新建文件进行 # vim /etc/fail2ban/jail.d/sshd.local ## 修改配置 # cd /etc/fail2ban/jail.d# mv 00-firewalld.conf 00-firewalld.conf.disabled ## 禁用 firewalld,使用 iptables # vim /etc/fail2ban/action.d/mail-whois.conf ## 定义 action # fail2ban-client reload ## 让配置生效
日常维护:
# systemctl enable fail2ban.service ## 开机启动 # systemctl start fail2ban.service ## 启动服务 # cat /var/log/fail2ban.log ## 日志文件 # fail2ban-client status ## 查看 fail2ban 的运行状态 # fail2ban-client status sshd ## 查看 jail 的详细信息,可以看到被封的 ip # fail2ban-client set sshd unbanip 123.123.123.2 ## 解封 ip
3. Fail2Ban 目录结构
/etc/fail2ban/ ├── action.d │ ├── dummy.conf │ ├── hostsdeny.conf │ ├── iptables.conf │ ├── mail-whois.conf ## mail 动作配置│ ├── mail.conf │ └── shorewall.conf ├── fail2ban.conf ├── fail2ban.local ├── filter.d │ ├── apache-auth.conf │ ├── apache-noscript.conf │ ├── couriersmtp.conf │ ├── postfix.conf │ ├── proftpd.conf │ ├── qmail.conf │ ├── sasl.conf │ ├── sshd.conf │ └── vsftpd.conf ├── jail.conf |── jail.local |—— jail.d └── └── sshd.local ## SSH 相关配置
4. jail.conf 配置项说明
# cat /etc/fail2ban/jail.conf 1 # 2 # WARNING: heavily refactored in 0.9.0 release. Please review and 3 # customize settings for your setup. 4 # 5 # Changes: in most of the cases you should not modify this 6 # file, but provide customizations in jail.local file, 7 # or separate .conf files under jail.d/ directory, e.g.: 8 # 9 # HOW TO ACTIVATE JAILS: 10 # 11 # YOU SHOULD NOT MODIFY THIS FILE. 12 # 13 # It will probably be overwritten or improved in a distribution update. 14 # 15 # Provide customizations in a jail.local file or a jail.d/customisation.local. 16 # For example to change the default bantime for all jails and to enable the 17 # ssh-iptables jail the following (uncommented) would appear in the .local file. 18 # See man 5 jail.conf for details. 19 # 20 # [DEFAULT] 21 # bantime = 1h 22 # 23 # [sshd] 24 # enabled = true 25 # 26 # See jail.conf(5) man page for more information [DEFAULT ] ignorecommand = ## bantime = 10m ## 禁止时长,默认10分钟 findtime = 10m ## 执行操作的窗口时长,默认10分钟 maxretry =5 ## 最大尝试次数 backend = auto ## 指定用于获取文件修改的后端 usedns = warn ## logencoding = auto enabled = false ## jails 默认关闭,在自定义的 .local 中打开需要用到的项 mode = normal ## 过滤器类型 filter = %( name )s [mode=%(mode)s ] ## 定义过滤器 destemail =root@localhost ## 通知将被发送到的电子邮件地址 sender = root@ ## 发件人姓名 mta =sendmail ## 邮件传输代理(默认是 sendmail,可以改成 mail) protocol = tcp chain = <known/chain> port = 0:65535 fail2ban_agent = Fail2Ban/%(fail2ban_version)s banaction = iptables-multiport ## 动作的捷径,用于定义动作参数 banaction_allports = iptables-allports action_abuseipdb =abuseipdb ...... action = %(action_)s
5. sshd.local 自定义配置项
# vim /etc/fail2ban/jail.d/sshd.local 3 [DEFAULT] 4 5 ignoreip = 127.0.0.1/8 ## 忽略本地 IP 6 7 bantime = 300 ## IP 禁止访问时间 8 9 findtime = 60 ## 密码输入时间限制 10 11 maxretry = 5 ## 最大允许试错次数 12 13 backend = auto 14 15 destemail = 123456@qq.com ## 邮件接收地址 16 17 sender = 654321@163.com ## 邮件发送地址(必需配置) 18 19 mta = mail ## 采用 mail 邮件服务 22 23 action = %(action_mw)s ## 动作模式 action_mw 24 25 26 [sshd] 27 28 enabled = true ## 开启 SSH 保护 29 30 port = 7777 ## SSH 端口号
6. mail-whois.conf 自定义动作
# vim /etc/fail2ban/action.d/mail-whois.conf 1 # Fail2Ban configuration file 2 # 3 # Author: xiaobo 4 # 5 # 6 7 [INCLUDES] 8 9 before = mail-whois-common.conf 10 11 [Definition] 12 13 # Option: actionban 14 # Notes: command executed when banning an IP. Take care that the 15 # command is executed with Fail2Ban user rights. 16 # Tags: See jail.conf(5) man page 17 # Values: CMD 18 actionban = printf %%b "Hi:\n 19 Subject: [Fail2Ban] <name>: banned <ip> from <fq-hostname> 20 攻击者IP:<ip>\n 位置:`/usr/bin/curl -s http://www.XXX.XXX/<ip> | sed -n 2p | awk -F ': ' '{print $2}' `\n 21 被攻击机器名:`uname -n` \n 22 攻击次数:<failures> 次 \n 27 Fail2Ban提醒\n\n "|/usr/bin/mail -s "title" <dest> 28 29 [Init] 30 31 name = default 32 33 dest = root
站长推荐
- 第一章 求助
- 测试是否有缩略图
- 利用coreldraw的vba功能开发font字库
- 《少年末日》因为题材和近期形势有冲
- 孩子们在家上网课上久了,发现没老师
- 给网页增加二维码地址实现移动端访问
- 介绍一下akcms强大的站群功能
- 图片热点功能很古老,是html中非常实
- 给akcms的标签增加一个广告调用参数
- 一篇关于儿童教育的经典文章,转发存
[鄙人写的末世灾难小说连载] [网络打印机,win10访问局域网打印机] [nas] [win10nas] [nas搭建教程] [鸡米饭] [博客程序] [作家博客程序] [英雄杀] [内存不足] [akcms] [免费站群程序] [灵活高效的cms] [立体声混音] [注册表] [h61主板声卡] [少年末日] [起点] [末日小说] [coreldraw] [fontcreator] [字体开发] [武汉] [网课] [网络教育] [phpqrcode] [二维码生成] [jq] [窗口飘浮] [顶部导航飘浮] [Kimmy] [绝歌一首] [英语学习视频] [英语学习方法] [赖世熊英语] [小说] [测试] [博客] [html] [图片热点] [林欣依] [akcms二次开发] [akcms教程] [免费的cms] [字体设计] [开州网] [火车迷] [安逸网] [嗨代购][ 闽ICP备11007790号-5][ 闽ICP备11007790号]