本文目录一览:
- 1、如何防止SSH暴力破解
- 2、设置SSH登录IP白名单,过滤非法IP密码登录请求
- 3、ssh暴力破解的后果
- 4、Centos下防止ssh暴力破解
- 5、Linux下如何防ssh暴力破解
- 6、如何使用 DenyHosts 来阻止 SSH暴力攻击
如何防止SSH暴力破解
SSH防暴力破解的解决方法:
1、禁止root用户ssh登陆;
1.1、修改PermitRootLogin项:
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# grep Root /etc/ssh/sshd_config
PermitRootLogin no ### 将默认的 #PermitRootLogin yes 修改成这样的 ###
# the setting of "PermitRootLogin without-password".
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# grep Root /etc/ssh/sshd_config
PermitRootLogin no ### 将默认的 #PermitRootLogin yes 修改成这样的 ###
# the setting of "PermitRootLogin without-password".
1.2、重启sshd服务
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
2、修改ssh默认端口22;
2.1、将默认端口22修改为自定义的2020端口
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# grep Port /etc/ssh/sshd_config
Port 2020
#GatewayPorts no
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# grep Port /etc/ssh/sshd_config
Port 2020
#GatewayPorts no
2.2、在防火墙中加入2020端口的策略
[root@localhost ~]# vi /etc/sysconfig/iptables
[root@localhost ~]# grep 2020 /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2020 -j ACCEPT
[root@localhost ~]# vi /etc/sysconfig/iptables
[root@localhost ~]# grep 2020 /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2020 -j ACCEPT
2.3、重启防火墙策略
[root@localhost ~]# /etc/init.d/iptables restart
iptables: Setting chains to policy ACCEPT: nat filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
[root@localhost ~]# /etc/init.d/iptables restart
iptables: Setting chains to policy ACCEPT: nat filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
2.4、重启sshd服务
[root@localhost ~]# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
设置SSH登录IP白名单,过滤非法IP密码登录请求
当Linux服务器暴露在公网时,不可避免地会受到大量ssh登录请求,这些请求大多是黑客在尝试暴力破解ssh密码。笔者做过实验,将1台服务器暴露在公网,只开放ssh服务的22端口,一晚上收到了 5000多次 来自世界各地不同IP源地址的失败的登录尝试。为了应对SSH暴力破解的威胁,采取一定的防护措施是很有必要的。
在某些应用场景,登录Linux服务器进行操作的只有若干个固定IP地址,例如某公司有固定IP地址的企业专线,大家的电脑就会通过这些固定IP和公网交互,这时部署在公网的Linux服务器收到的ssh登录请求,源地址就是这些固定IP地址,这时就可以设置白名单,只允许特定的IP地址访问,来自其它IP地址的ssh登录请求会被驳回。
一定要再三确认自己使用的客户端计算机的公网IP地址,重启sshd服务后,除了在白名单上的IP,来自其余IP的密码登录均会被屏蔽。
ssh暴力破解的后果
对服务器性能是会有一些影响,但最大的影响是你的服务器root密码被破解,被完全控制。ssh攻击的目的就是暴力破解你的密码。最直接的影响就是设备瘫痪(服务器死机)SSH暴力破解是指攻击者通过密码字典或随机组合密码的方式尝试登陆服务器(针对的是全网机器),这种攻击行为一般不会有明确攻击目标,多数是通过扫描软件直接扫描整个广播域或网段。 怎样防御暴力破解攻击?一:系统及网络安全1、定期检查并修复系统漏洞2、定期修改SSH密码,或配置证书登陆3、修改SSH端口4、禁Ping5、若你长期不需要登陆SSH,请在面板中将SSH服务关闭6、安装悬镜、云锁、安全狗等安全软件(只安装一个)
Centos下防止ssh暴力破解
首先修改ssh的连接端口,增加破解难度
找到Port 22这一行,发现已经被注释了,将注释解开,并添加一行Port 2333,保存退出,重启ssh
然后尝试用2333端口进行连接,如果连接不上,可以添加防火墙规则:
连接成功之后,再打开sshd_config
找到Port 22,删除该行,重启ssh
至此,ssh连接端口已改为2333。
方法一
收集 /var/log/secure 里面的信息,若是某个IP 链接次数超过一定次数 ,则把此ip记录到/etc/hosts.deny里面。
先把始终允许的IP填入 /etc/hosts.allow这很重要!比如:
sshd:19.16.18.1:allow
sshd:19.16.18.2:allow
创建脚本
通过crontab来执行,每个整点1分执行一次。
方法二
DenyHosts官方网站为:
默认是安装到/usr/share/denyhosts目录的。
Linux下如何防ssh暴力破解
SSH防暴力破解的解决方法:
1、禁止root用户ssh登陆;
1.1、修改PermitRootLogin项:
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# grep Root /etc/ssh/sshd_config
PermitRootLogin no ### 将默认的 #PermitRootLogin yes 修改成这样的 ###
# the setting of "PermitRootLogin without-password".
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# grep Root /etc/ssh/sshd_config
PermitRootLogin no ### 将默认的 #PermitRootLogin yes 修改成这样的 ###
# the setting of "PermitRootLogin without-password".
1.2、重启sshd服务
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
2、修改ssh默认端口22;
2.1、将默认端口22修改为自定义的2020端口
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# grep Port /etc/ssh/sshd_config
Port 2020
#GatewayPorts no
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# grep Port /etc/ssh/sshd_config
Port 2020
#GatewayPorts no
2.2、在防火墙中加入2020端口的策略
[root@localhost ~]# vi /etc/sysconfig/iptables
[root@localhost ~]# grep 2020 /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2020 -j ACCEPT
[root@localhost ~]# vi /etc/sysconfig/iptables
[root@localhost ~]# grep 2020 /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2020 -j ACCEPT
2.3、重启防火墙策略
[root@localhost ~]# /etc/init.d/iptables restart
iptables: Setting chains to policy ACCEPT: nat filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
[root@localhost ~]# /etc/init.d/iptables restart
iptables: Setting chains to policy ACCEPT: nat filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
2.4、重启sshd服务
[root@localhost ~]# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
如何使用 DenyHosts 来阻止 SSH暴力攻击
Denyhosts是一个Linux系统下阻止暴力破解SSH密码的软件,它的原理与DDoS Deflate类似,可以自动拒绝过多次数尝试SSH登录的IP地址,防止互联网上某些机器常年破解密码的行为,也可以防止黑客对SSH密码进行穷举。
众所周知,暴露在互联网上的计算机是非常危险的。并不要因为网站小,关注的人少或不惹眼就掉以轻心:互联网中的大多数攻击都是没有目的性的,黑客们通过大范围IP端口扫描探测到可能存在漏洞的主机,然后通过自动扫描工具进行穷举破解。笔者的某台服务器在修改SSH 22号端口之前,平均每天接受近百个来自不同IP的连接尝试。而DenyHosts正是这样一款工具。下文将对该工具的安装与使用方法进行介绍。
DenyHosts阻止攻击原理
DenyHosts会自动分析 /var/log/secure 等安全日志文件,当发现异常的连接请求后,会自动将其IP加入到 /etc/hosts.deny 文件中,从而达到阻止此IP继续暴力破解的可能。同时,Denyhosts还能自动在一定时间后对已经屏蔽的IP地址进行解封,非常智能。
官方网站
Denyhosts的官方网站为: (杜绝Putty后门事件,谨记安全软件官网)
安装方法
1、下载DenyHosts源码并解压(目前最新版为2.6)
1 [root@www ~]# wget
2 [root@www ~]# tar zxvf DenyHosts-2.6.tar.gz
3 [root@www ~]# cd DenyHosts-2.6
2、安装部署
1 [root@www DenyHosts-2.6]# yum install python -y
2 [root@www DenyHosts-2.6]# python setup.py install
3、准备好默认的配置文件
1 [root@www DenyHosts-2.6]# cd /usr/share/denyhosts/
2 [root@www denyhosts]# cp denyhosts.cfg-dist denyhosts.cfg
3 [root@www denyhosts]# cp daemon-control-dist daemon-control
4、编辑配置文件denyhosts.cfg
1 [root@www denyhosts]# vi denyhosts.cfg
该配置文件结构比较简单,简要说明主要参数如下:
PURGE_DENY:当一个IP被阻止以后,过多长时间被自动解禁。可选如3m(三分钟)、5h(5小时)、2d(两天)、8w(8周)、1y(一年);
PURGE_THRESHOLD:定义了某一IP最多被解封多少次。即某一IP由于暴力破解SSH密码被阻止/解封达到了PURGE_THRESHOLD次,则会被永久禁止;
BLOCK_SERVICE:需要阻止的服务名;
DENY_THRESHOLD_INVALID:某一无效用户名(不存在的用户)尝试多少次登录后被阻止;
DENY_THRESHOLD_VALID:某一有效用户名尝试多少次登陆后被阻止(比如账号正确但密码错误),root除外;
DENY_THRESHOLD_ROOT:root用户尝试登录多少次后被阻止;
HOSTNAME_LOOKUP:是否尝试解析源IP的域名;
大家可以根据上面的解释,浏览一遍此配置文件,然后根据自己的需要稍微修改即可。
5、启动Denyhosts
1 [root@www denyhosts]# ./daemon-control start
如果需要让DenyHosts每次重启后自动启动,还需要:
6、设置自动启动
设置自动启动可以通过两种方法进行。
第一种是将DenyHosts作为类似apache、mysql一样的服务,这种方法可以通过 /etc/init.d/denyhosts 命令来控制其状态。方法如下:
1 [root@www denyhosts]# cd /etc/init.d
2 [root@www init.d]# ln -s /usr/share/denyhosts/daemon-control denyhosts
3 [root@www init.d]# chkconfig --add denyhosts
4 [root@www init.d]# chkconfig -level 2345 denyhosts on
第二种是将Denyhosts直接加入rc.local中自动启动(类似于Windows中的“启动文件夹”):
1 [root@www denyhosts]# echo '/usr/share/denyhosts/daemon-control start' /etc/rc.local
如果想查看已经被阻止的IP,打开/etc/hosts.deny 文件即可。