龙空技术网

一分钟学习SSH服务加固策略,拒绝被攻击

FreeOps 375

前言:

当前姐妹们对“centosssh被拒绝”大体比较看重,兄弟们都需要学习一些“centosssh被拒绝”的相关知识。那么小编同时在网摘上汇集了一些对于“centosssh被拒绝””的相关资讯,希望大家能喜欢,看官们快快来了解一下吧!

前言

SSH服务暴力攻击是较为常见的一种对远程可登录机器的登录攻击,攻击者利用工具试图使用root用户登录可以远程的机器设备,攻击者一旦登录成功就可以获取机器的最高权限。在注重信息安全的今天,SSH暴力攻击也是最常见的攻击方案,应对SSH暴力攻击的方法较多,通常有以下方案:

(1)禁止root用户远程登录;

(2)禁止root用户使用密码登录,推荐使用密钥登录系统;

(3)获取暴力攻击设备IP信息,通过防火墙或第三方工具限制IP地址登录;

本文将基于CentOS 7.4系统通过shell程序获取crond周期内登录系统失败次数大于某一阈值的IP地址,结合系统内firewalld策略限制其继续登录系统,同时分析防火墙日志获取crond周期内持续登录失败低于某一阈值的IP地址解除firewalld策略限制。

Shell程序简介

Shell程序利用CentOS系统记录SSH服务登录失败日志的特性获取登录失败者的IP地址信息,结合Firewalld服务日志及IPSet功能,限制或解除IP地址访问。其基本功能如下:

(1)检查shell运行所需要基础环境,若不满足环境则无法正常使用;

(2)检查firewalld服务运行状态,若未启用则启用firewalld服务;

(3)检查firewalld服务日志功能,若未启用则启用firewalld服务日志功能;

(4)检查firewalld服务黑名单(blacklist)是否存在,若不存在则创建;

(5)检查firewalld策略限制黑名单访问规则是否存在,若不存在则新增firewalld策略限制黑名单访问并记录访问日志;

(6)读取系统日志内容,获取crond周期登录失败次数超过50的IP地址(该数字可以根据实际调整)写入黑名单;

(7)读取系统日志内容,获取crond周期内黑名单中持续登录失败低于10次的IP地址(该数字可以根据实际调整)解除firewalld登录限制;

程序分析—定义日志输出格式

Shell程序定义日志日志输出格式函数,在shell程序中调用日志输出函数可以快速实现shell程序运行状态的日志格式化输出。具体实现内容如下:

程序分析—系统基础环境检查

Shell程序执行时会生成日志文件记录shell运行过程,同时会保存系统btmp日志文件。在程序执行时将优先检查当前系统基础环境是否满足运行条件,若不满足shell程序运行条件,则会根据实际需要创建BANSSH_LOG_DIR、BLACKLIST_BACK_DIR目录及Logfile文件。具体实现内容如下:

程序分析---检查firewalld日志功能

Shell需要读取firewalld日志记录的黑名单中持续访问的记录,在执行shell时需要开启firewalld日志功能记录firewalld策略命中情况。具体实现内容如下:

程序分析---创建IPSet

Shell使用firewalld服务的IPSet实现对黑名单文件内容限制登录的功能,shell运行时会检查当前系统内是否存在名称为blacklist的IPSet,若不存在,则会创建IPSet。具体实现内容如下:

程序分析—获取攻击者IP信息添加到blacklist

Shell程序自动分析系统btmp文件内容,获取crond周期内登录失败次数大于50次的IP地址判定为获取攻击者IP 地址并暂存在Add_rules_ip_list内。shell通过循环读取文件内容写入blacklist文件。具体实现内容如下:

程序分析—移除IP策略限制

Shell程序自动分析firewalld运行日志,获取crond周期内IPSet被限制IP持续尝试登录失败次数大于10次的IP地址判定为非法IP地址,并暂存在Attack_ip_list内;持续登录失败次数小于10次的IP地址判定为合法IP地址,并暂存在Remove_rules_ip_list内。shell将读取Remove_rules_ip_list文件内容并解除firewalld策略,恢复合法IP地址系统登录。具体实现内容如下:

添加crond定时服务

Shell程序上传至CentOS系统内并赋予可执行权限(本例将shell程序放置在/root路径),创建crontab定时服务后每小时执行。Crond定时服务是基于CentOS系统内crond服务实现定时功能,添加crond定时服务后需要确认CentOS系统内crond服务运行状态。具体实现内容如下:

[root@freeops ~]# ls -al Untitled-SSH.sh-rw-r--r-- 1 root root 3305 Jul 17 16:37 Untitled-SSH.sh[root@freeops ~]# chmod +x Untitled-SSH.sh[root@freeops ~]# ls -al Untitled-SSH.sh-rwxr-xr-x 1 root root 3305 Jul 17 16:37 Untitled-SSH.sh[root@freeops ~]# crontab -e0 */1 * * * /root/Untitled-SSH.sh[root@freeops ~]# crontab -l0 */1 * * * /root/Untitled-SSH.sh
总结

Shell程序自动分析crond周期内btmp日志文件获取登录失败次数大于50次的IP地址信息后暂存在Add_rules_ip_list内,结合shell程序中的while循环写入blacklist中限制其继续登录系统。同时,shell程序分析firewalld运行日志,获取blacklist中持续登录失败超过10次的IP地址判定为非法IP地址,暂存在Attack_ip_list内,持续通过firewalld策略限制其登录系统;而blacklist中持续登录失败低于10次的IP地址将判定为合法IP地址,调整firewalld规则,解除合法IP地址的登录限制。

----- END -----

标签: #centosssh被拒绝