Linux 防SSH暴力攻击

在下这几天发现个人VPS 老是莫名遭受到 江苏镇江那边的IP 登陆请求攻击 ,跟踪了下路由,发现ip是从蒙古那边出去的,而后意识到多是有扫描端口的。。python

 

方法一:

如今的互联网很是不安全,不少人没事就拿一些扫描机扫描ssh端口,而后试图链接ssh端口进行暴力破解(穷举扫描),因此建议vps主机的空间,尽可能设置复杂的ssh登陆密码,那么有什么更好的办法来解决这个问题?,就可使用denyhosts这款软件了,它会分析/var/log/secure(redhat,Fedora Core)等日志文件,当发现同一IP在进行屡次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。shell

DenyHosts是一个脚本,旨在由Linux系统管理员运行以帮助阻止SSH服务器攻击(也称为基于字典的攻击和蛮力攻击)。vim

若是你曾经查看过ssh日志(在Redhat上是/ var / log / secure,在Mandrake上是/var/log/auth.log,等等...),可能会警觉看到有多少黑客试图访问您的服务器。但愿他们都没有成功(可是,话又说回来,你怎么知道?)。自动阻止攻击者继续进入您的系统不是会更好吗?centos

安装脚本 安全

DenyHosts官方网站为:http://denyhosts.sourceforge.net/bash

若是使用了 LNMP一件安装包 布置的环境,该包自带该软件能够一键安装,命令:wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5/tools/ && ./denyhosts.sh 回车确认便可开始安装配置,不须要下面的步骤进行安装配置。(该tools目录下也有denyhosts类似的工具fail2ban的一键安装工具 ./fail2ban.sh 安装便可)服务器

一、下载DenyHosts 并解压ssh

# wget http://soft.vpser.net/security/denyhosts/DenyHosts-2.6.tar.gz
# tar zxvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6tcp

二、安装、配置和启动工具

安装前建议执行:echo "" > /var/log/secure && service rsyslog restart 清空之前的日志并重启一下rsyslog

# python setup.py install
由于DenyHosts是基于python的,因此要已安装python,大部分Linux发行版通常都有。默认是安装到/usr/share/denyhosts/目录的,进入相应的目录修改配置文件

# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg
# cp daemon-control-dist daemon-control

默认的设置已经能够适合centos系统环境,大家可使用vi命令查看一下denyhosts.cfg和daemon-control,里面有详细的解释
接着使用下面命令启动denyhosts程序
# chown root daemon-control
# chmod 700 daemon-control
# ./daemon-control start

若是要使DenyHosts每次重起后自动启动还需作以下设置:
# ln -sf /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
# chkconfig --add denyhosts
# chkconfig --level 2345 denyhosts on
或者执行下面的命令加入开机启动,将会修改/etc/rc.local文件:
# echo "/usr/share/denyhosts/daemon-control start" >> /etc/rc.local

DenyHosts配置文件/usr/share/denyhosts/denyhosts.cfg说明:

SECURE_LOG = /var/log/secure
#sshd日志文件,它是根据这个文件来判断的,不一样的操做系统,文件名稍有不一样。

HOSTS_DENY = /etc/hosts.deny
#控制用户登录的文件

PURGE_DENY = 5m
DAEMON_PURGE = 5m
#过多久后清除已经禁止的IP,如5m(5分钟)、5h(5小时)、5d(5天)、5w(5周)、1y(一年)

BLOCK_SERVICE  = sshd
#禁止的服务名,能够只限制不容许访问ssh服务,也能够选择ALL

DENY_THRESHOLD_INVALID = 5
#容许无效用户失败的次数

DENY_THRESHOLD_VALID = 10
#容许普通用户登录失败的次数

DENY_THRESHOLD_ROOT = 5
#容许root登录失败的次数

HOSTNAME_LOOKUP=NO
#是否作域名反解

DAEMON_LOG = /var/log/denyhosts

为防止本身的IP被屏蔽,能够:echo "你的IP" >>  /usr/share/denyhosts/allowed-hosts 将你的IP加入白名单,再重启DenyHosts:/etc/init.d/denyhosts ,若是已经被封,须要先按下面的命令删除被封IP后再加白名单。

若有IP被误封,能够执行下面的命令解封:wget http://soft.vpser.net/security/denyhosts/denyhosts_removeip.sh && bash denyhosts_removeip.sh 要解封的IP

更多的说明请查看自带的README文本文件,好了之后维护VPS就会省一些心了,可是各位VPSer们注意了安全都是相对的哦,没有绝对安全,将密码设置的更Strong,并请按期或不按期的检查你的VPS主机,并且要定时备份你的数据哦。

与DenyHosts相似的软件还有fail2ban功能上更多,还能够对ftp进行保护,本身能够搜索看一下。

采用lnmp的 tools 工具包提供的fail2ban 的话, 能够进入到  /etc/init.d/fail2ban   打印 该脚本信息 ,查看脚本配置信息。 

方法二: 

SSH服务器(sshd)做为Linux上很是重要的服务,安全性是很重要的,首先网上有不少专门的服务器用来扫描SSH默认的22端口并使用弱口令之类的密码字典进行暴力破解,虽然可使用上面所说的 lnmp自带的denyhosts、fail2ban之类的安装脚本,可是将默认SSH端口改掉能过滤掉大部分SSH暴力破解的访问。该教程适合常见的CentOS/Fedora/RedHat、Debian/Ubuntu等常见的Linux发行版。

SSH服务器的配置文件为:/etc/ssh/sshd_config

具体修改步骤以下:

一、备份原sshd配置文件

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

二、修改sshd配置文件

可使用winscp、nano、vim之类的软件编辑 /etc/ssh/sshd_config

查找Port 22,有可能 Port 22 是注释的(即前面有#号,有的话删掉 # 号)。

在 Port 22 下面添加一行 Port 3322  其中3322为你更改SSH后的端口。

这里建议先保留原来的22端口,待新的SSH端口测试正常工做后再删掉原Port 22 端口行。

修改完成后保存。

三、重启SSH服务器

重启SSH服务器命令:systemctl restart sshd

若是没有systemctl的话能够执行:/etc/init.d/sshd restart 或 /etc/init.d/ssh restart

若是没有报错的话就生效了,能够 ss -ntl 或 netstat -ntl 查看一下端口。

四、防火墙、安全组规则设置

iptables添加SSH新端口规则:

iptables -A INPUT -p tcp --dport 3322 -j ACCEPT             #3322替换为新的端口#
而后保存iptables规则

firewalld添加SSH新端口规则:

firewall-cmd --permanent --zone=public --add-port=3322/tcp             #3322替换为新的端口#
firewall-cmd --reload             #重载firewalld#

阿里云之类的安全组规则添加SSH新端口规则:

阿里云之类的有安全组之类设置的云服务器必定要在安全组规则里将新端口添加到“入方向”的容许规则。

五、putty、xshell之类的SSH软件链接测试

添加上新的SSH端口后必定要经过putty、xshell之类的SSH软件链接测试一下,测试能够正常链接而后再编辑 /etc/ssh/sshd_config 将Port 22 这一行直接删除或这一行前面加 # 注释掉,而后再按前面的命令重启SSHd服务。

相关文章
相关标签/搜索