Centos服务器安全之防止ssh暴力破解

基本配置

可以从以下选项中修改ssh配置,ssh配置文件路径/etc/ssh/sshd_config

  • 修改默认端口号
  • 禁用ROOT用户SSH登录
  • 禁用密码登录

注意:修改端口前一定保证服务器防火墙开启相应的端口号,如 firewlldiptables

编辑配置文件以下几个配置项

## 设置ssh端口号
Port 21234
## 是否密码登录:yes/no
PasswordAuthentication no
## 设置使用密钥登录
PubkeyAuthentication yes
RSAAuthentication yes
## 存放公钥的文件
AuthorizedKeysFile .ssh/authorized_keys
## 是否运行root登录:yes/no
PermitRootLogin no

使用公钥登录需要更改authorized_keys文件的用户权限,.ssh/文件夹需要700的权限,而authorized_keys文件需要600的权限

修改之后重启sshd 服务:

systemctl restart sshd
## 或者
service sshd restart

使用denyhosts

简介:DenyHosts 是 Python 语言写的一个程序软件,运行于 Linux 上预防 SSH 暴力破解的,它会分析 sshd 的日志文件(/var/log/secure),当发现重复的攻击时就会记录 IP 到 /etc/hosts.deny 文件,从而达到自动屏 IP 的功能。

下载并解压

wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz
tar -zxvf DenyHosts-2.6.tar.gz

也可以解压到指定目录 tar -zxvf DenyHosts-2.6.tar.gz -C /usr/local/bin

安装并配置

注意:需要有python环境

python setup.py install

默认安装到 /usr/share/denyhosts/ 目录下
重命名配置文件

cp denyhosts.cfg-dist denyhosts.cfg 
cp daemon-control-dist daemon-control 

根据需求编写配置文件中的内容
部分配置如下:

## 登录日志文件地址
SECURE_LOG = /var/log/secure 
HOSTS_DENY = /etc/hosts.deny
## ip被禁止之后,多久可以释放(w表示周,d表示天,h表示小时,m表示分钟)
PURGE_DENY = 4w 
BLOCK_SERVICE  = sshd
## 无效用户尝试次数之后即被锁定
DENY_THRESHOLD_INVALID = 5
## 有效普通用户尝试次数
DENY_THRESHOLD_VALID = 10
## root用户尝试次数
DENY_THRESHOLD_ROOT = 1       
## 设定denyhosts将数据写入到/etc/hosts.deny文件中
DENY_THRESHOLD_RESTRICTED = 1    
## denyhosts工作数据目录
WORK_DIR = /var/lib/denyhosts      
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
## 域名解析
HOSTNAME_LOOKUP=YES     
LOCK_FILE = /var/lock/subsys/denyhosts
ADMIN_EMAIL = root
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
## 普通有效用户登陆计数清零时间
AGE_RESET_VALID=5d           
##root用户登陆计数清零时间
AGE_RESET_ROOT=25d        
## /etc/hosts.deny文件清除数据时间
AGE_RESET_RESTRICTED=25d     
AGE_RESET_INVALID=10d
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h

启动与停止服务

添加自启动服务

cd /etc/init.d/
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts
chkconfig denyhosts on

启动服务

systemctl start denyhosts

停止服务

systemctl stop denyhosts

查看服务状态

systemctl status denyhosts

查看黑白名单

注意:白名单优先级大于黑名单

## 查看白名单
cat /etc/hosts.allow
## 查看黑名单
cat /etc/hosts.deny

已发布

分类

作者:

标签