【linux命令】Linux服务安全之SSH密码防暴力破解篇

内容摘要
方法有很多,可以修改配置、自己写脚本屏蔽、借助第三方工具等都可以实现,目前收集的结果如下可以参考。
一.配置SSH双机信任
1.开启ssh服务
第一次远程登陆时,系统会提示是否将
文章正文

方法有很多,可以修改配置、自己写脚本屏蔽、借助第三方工具等都可以实现,目前收集的结果如下可以参考。

一.配置SSH双机信任

1.开启ssh服务

第一次远程登陆时,系统会提示是否将对方服务器信息保存在本地,键入’yes’后,输入密码进入对方系统。
1

这时可以看到本地目录/root/.ssh/中生成文件known_hosts来保存对方服务器信息,会把你每个你访问过计算机的公钥(public key)都记录在此。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
2

# vim /root/.ssh/known_hosts

3

可以看到IP为10.2.8.195~/.ssh/known_hosts。
不过known_hosts的内容一些只是以纯文本方式存放。如果你的帐号被人成功入侵,他可以由known_hosts直接得知你到访过的计算机列表。为减低出现类似情况的机会。OpenSSH在4.0p1引入了 Hash Known Hosts功能,在known_hosts中把访问过的计算机名称或IP地址以hash方式存放,令入侵都不能直接知道你到访过那些计算机。这项新项功能缺省是关闭的,要你手动地在ssh_config加上”HashKnownHosts yes”才会被开启。不过Debian Testing就缺省开启了个功能。

 

2.生成RSA密钥对
# ssh-keygen -t rsa

1

3.添加密钥到授权密钥文件中

# cat /root/.ssh/id_rsa >> authorized_keys
# scp authorized_keys [email protected]:/root/.ssh/

4.测试

2

二.修改SSH服务端口(比较常用)

1.服务器端修改配置文件

# vim /etc/ssh/config_sshd

3
2.客户端修改配置文件

# vim /etc/ssh/config_ssh

1

3.测试成功

2

三.限制root账户登录(比较常用)

1.修改服务器端配置文件

# vim /etc/ssh/config_sshd

3
2.客户端测试

# ssh root@10.2.8.195

1访问被拒绝,证明设置生效

# ssh [email protected]
2
其他用户登陆成功

四.配置Deny-Host开源软件
1.获得DenyHosts
软件免费,可直接从官方网站获得。
不过下载版本时要注意一下:
DenyHosts安装和运行要依赖python,如果机器安装了python,那需要检查一下python的版本,由此去下载对

2.安装和启动DenyHosts
#tar xzvf DenyHosts-2.6.tar.gz
将安装包解压到任意位置

#cd DenyHosts-2.6
进入解压目录

#python setup.py install
执行安装程序,将DenyHosts安装到默认位置

如图所示:

DenyHosts默认安装到/usr/share/denyhosts目录
需要修改一下DenyHosts的配置文件才能正常启动程序,继续~

#cd /usr/share/denyhosts
进入denyhosts的主配置目录

#cp denyhosts.cfg-dist denyhosts.cfg
#cp daemon-control-dist daemon-control
复制出默认配置文件和程序执行文件

#chmod 770 daemon-control
修改一下程序执行文件的操作权限

#./daemon-control start
启动denyhosts

如图所示denyhosts已正常启动


如果想让denyhosts每次随系统自动启动,可以执行以下操作~

#cd /etc/init.d

#ln -s /usr/share/denyhosts/daemon-control denyhosts
在/etc/init.d/目录新建一个链接符号到daemon-control的启动执行文件,链接名随便起

#chkconfig –add denyhosts
#chkconfig –level 2345 denyhosts on

Ok!

3.配置DenyHosts

denyhosts.cfg就是denyhosts的配置文件!
下面介绍一些常用的配置项

SECURE_LOG = /var/log/secure //sshd日志文件,denyhosts正是通过分析这个文件来屏蔽ip的,不同系统sshd的日志文件和位置有些差别,配置文件里都给列出来了,可以按实际情况修改

HOSTS_DENY = /etc/hosts.deny //控制用户登录文件,被屏蔽的ip都会写入这个文件

PURGE_DENY = 20m //这里可以设置经过多长时间解除已经屏蔽的ip的限制,单位是分钟,偶这里是留空的,表示不解禁~嘿嘿!

PURGE_DENY参数还有以下单位可参考

# ‘m’ = minutes
# ‘h’ = hours
# ‘d’ = days
# ‘w’ = weeks
# ‘y’ = years

BLOCK_SERVICE = sshd //禁止的服务名,除了sshd,denyhosts还可以用于其他服务,如smtp等

DENY_THRESHOLD_INVALID = 5 //允许无效用户的登录失败次数,超过设置的一律cut~~

DENY_THRESHOLD_VALID = 3 //允许普通用户的登录失败次数,超过设置的一律cut~~

DENY_THRESHOLD_ROOT = 1 //允许root用户的登录失败次数,超过设置的一律cut~~

DENY_THRESHOLD_RESTRICTED = 1 //允许受限用户的登录失败次数,超过设置的一律cut~~

HOSTNAME_LOOKUP=YES //是否做域名反解析,留空表示不做

DAEMON_LOG = /var/log/denyhosts //denyhosts日志文件位置

其他设置一般默认即可~

4.确认DenyHosts运作正常

确认denyhosts是否在运作非常简单,看看hosts.deny文件是否有写入被屏蔽的ip地址即可。

#vi /etc/hosts.deny

代码注释
[!--zhushi--]

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!