帝游网提供最新手游APP下载和游戏攻略!

SSH安全配置与维护指南

发布时间:2024-09-25浏览:43

大家好,今天小编来为大家解答SSH安全配置与维护指南这个问题,很多人还不知道,现在让我们一起来看看吧!

防火墙

防火墙的主要工作是使用预定义的规则检查传入和传出的流量。关于硬件防火墙和安全组在此不在多说。

*nix系主机可以使用iptables防火墙,iptables是对netfilter应用级打包,可以用来数据包过滤,接受或拒绝数据包(或采取其他行动)以保护系统免受攻击。

使用iptables可以定义规则,限制IP地址、端口或协议的SSH流量。还可以跟踪最近的SSH端口连接。也可以使用速率限制连接,根据IP地址连接到SSH的速率来阻止它们。

使用防火墙并调整其配置有助于减少SSH攻击的机会。一个典型Iptables白名单访问的例子如下:

…-A INPUT -s 192.168.1.8 -p tcp -m state --state NEW -m tcp --dport 2022 -j ACCEPT-A INPUT -s 192.168.1.6 -p tcp -m state --state NEW -m tcp --dport 2022 -j ACCEPT-A INPUT -p tcp --dport 2022 -j REJECT --reject-with icmp-host-prohibite…

以上规则中,只允许Ip地址192.168.1.6和192.168.1.8访问2022端口(修改过的ssh端口)。

堡垒机

当两个通道建立SSH连接时,设置堡垒主机可能有助于提高安全性并保护系统。

堡垒机是个非常重要的安全设备,但是同时它本身也是风险点和单点,如果堡垒机由于漏洞或者其他因素被人攻陷或者出现故障,会造成重大问题。毕竟把所有鸡蛋都放在一个篮子里,摔了那就都碎了。所以保障堡垒机安全和高可用至关重要。

双因子认证(2FA)

在双因子认证的体系中,系统需要两种不同形式的身份验证才能获得访问权限。最常见的双因子验证是用户登陆时候除了输入用户名和密码外,还要通过手机短信验证码才能通登陆系统。虽然发送到移动设备的一次性密码会受到中间人 (MITM) 攻击 ,但使用第二个因子总比没有第二个因子要好。

更安全的双因子认证还有硬件是安全校验卡YubiKey 和 Apple TouchID等。开源方法有基于google-authenticator和FreeOPT的方式以及基于freeipa的方式。

通过启用双因子验证功能,系统管理员可确保任何通过SSH登录远程系统的用户都必须使用多个容易被盗的凭据进行身份验证,可保证比单独使用密码或SSH密钥更安全。

另外在国家网络安全等级保护标准中,在网络、主机等部分密码要求都明确要求了双因子认证。

公钥和SSH Certificate-based 验证

尽管基于SSH密钥身份验证是密认证的更好替代方案,可以增强远程登录过程的安全性,但它也有其潜在的障碍。例如,用户必须将私钥存储在其设备上,其设备有可能是被盗或者因为攻陷导致泄密。而且SSH证书实际上只是另一个名称的密码,私钥也可以泄露,被人利用。

为了防止私钥泄露,在生成证书时候可以设置密码保护是个很好的做法,另外将私钥保存在非常用的~/.ssh/目录也可以一定程度上避免泄露。

基于CA签发证书的SSH Certificate-based身份验证是一个更好的选择。SSH证书通过使用CA公钥来保护登录过程,同时还提供证书来验证每个密钥的身份。

通过使用这种身份验证方法,无需每次去服务器上添加用户公钥,只需在sshd_config添加一CA 的公钥信任既可以:

TrustedUserCAKeys /etc/ssh/user_ca_key.pub

同时在签发证书时候可以对签发的公钥进行用户名、时间、源地址等限制。配置成功后,访问ssh就是基于用户私钥(userss)和CA签发的cert证书(user-cert.pub)认证:

ssh -p2022 -o CertificateFile = user-cert.pub -i userss user@192.168.1.22

为了方便可以配置ssh config简化访问时候选项设置:

Host testHostName 192.168.1.22Port 2022User userCertificateFile ~/.ssh/user-cert.pubIdentityFile ~/.ssh/users

然后就可以简便的

ssh test访问了。

SSH Certificate-based身份验证提供了一种对任何计算环境进行身份验证的安全且可扩展的方法。

修改默认SSH设置

OpenSSH 默认选项通常通过文件/etc/ssh/sshd_config来配置。前面我们也提到了,默认配置存在着安全风险,需要优化配置。

更改默认22端口

默认情况下,SSH服务监听tcp端口22。任何一个时候,在互联网上都存在大量探测机器人对22端口进行探测,并且自动暴力攻击常见用户和字典密码。你新开一台VPS主机,然后安全组开放22端口,几分钟内就会收到SSH密码尝试攻击的日志。

在端口探测时候,往往都是通过默认22端口对SSH服务探测,如果更改为非22端口就可以避免绝大多数该类探测。修改sshd默认端口的方法是修改/etc/ssh/sshd_config文件

找到

Port 22

修改为

Port 2022

修改后重启sshd服务即可

systemctl restart sshd.service

当然也可以设置其他的小于65535的端口。注意修改之前记得先在防火墙上开放该端口,免得把自己踢出去,登陆不了了。

Iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 2022 -j ACCEPT

禁用root登录

其次,默认情况下,用户可以以root身份通过SSH连接到服务器。SSH根帐户或超级用户帐户是一个非常危险的功能,因为它允许完全访问和控制整个系统。 而且网络暴力尝试攻击中,root用户最容易被攻击的账号。通过在服务器上禁用root SSH登录,可以避免攻击成功可能性,而且通过权限分配,可以更好进行用户行为审计和溯源跟踪。禁止root登陆方法是修改/etc/ssh/sshd_config文件,在最后增加一行:

PermitRootLogin no

禁用密码登陆

前面说了密码认证虽然方便,但是最容易被暴力攻击,也容易账号泄露,这可能是系统被黑的最常见的原因(root 建议密码)。应该完全禁止基于密码的SSH身份验证并选择至少使用SSH密钥。禁止密码登陆方法是修改/etc/ssh/sshd_config文件,在最后增加一行:

PasswordAuthentication no

利用 ”AllowUsers”来限制访问

此外,默认情况下,所有系统用户都可以使用他们的密码或公钥登录SSH,这也带来潜在安全隐患。并非所有系统用户都需要通过SSH远程登录。同限制特定用户对SSH访问极大地增强了安全性。可以通过/etc/ssh/sshd_config文件中配置来设置可以访问SSH的白名单:

AllowUsers user1 user2 chongchong

这样系统中就只能有user1 user2 chongchong三个用户可以SSH登陆。对应还有

AllowGroups 用户组白名单

DenyUsers 用户黑名单

DenyGroups用户组黑名单

总结

本本中虫虫给介绍SSH安全最佳实践,但是这是最常见最有效的加固方法。取决于环境和合规性要求这些方法在实际中可以按需调整。需要指出的是,要注意遵循最佳实践并正确实施这些实践通常具有挑战性。

用户评论

烟花巷陌

这篇文章写得真好!作为一名刚接触 SSH 的新手,我对安全最佳实践还不是很了解,这篇文章简直是救命稻草啊!太感谢作者了!希望以后还有更多关于 SSH 安全的精彩内容分享。

    有19位网友表示赞同!

昂贵的背影

SSH的安全问题确实很重要,特别是现在网络攻击越来越频繁。这篇博文重点强调了一些重要的安全策略,比如使用强密码、禁止远程登录不需要时等,真的很有用!

    有9位网友表示赞同!

顶个蘑菇闯天下i

这篇文章总结得很好!作为一名经验丰富的系统管理员,我知道这些安全最佳实践非常重要,但总是需要一些提醒,特别是对于那些新手来说。强烈推荐给所有使用 SSH 的朋友们阅读!

    有20位网友表示赞同!

眉黛如画

虽然标题里写着“最佳实践”,但这篇文章里的一些建议感觉不太实用呀!比如使用长密码确实很重要,但是很多系统配置默认的登录限制已经很严格了,再设置更长的密码会导致操作很不方便。

    有9位网友表示赞同!

沐晴つ

文章提到了不少安全问题的关键点,例如定期更新 SSH 协议和软件包、禁止 Root 用户远程登录等等。这些建议很实用,希望大家都能重视起来并做到实地落实。

    有15位网友表示赞同!

空巷

我个人觉得这篇文章比较笼统,没有给出具体的实施操作步骤。比如,如何配置SSH服务器的密钥机制?如何设置安全的密码策略? 这些细节应该详细阐述一下才能更有帮助。

    有6位网友表示赞同!

哭花了素颜

使用 SSH 加密传输数据确实很重要,但除了注重安全,也需要注意传输效率的问题。对于一些大型文件传输来说,压缩传输可能会更加高效呢。

    有9位网友表示赞同!

命里缺他

这篇文章提醒我们要警惕网络攻击的隐患,加强 SSH 安全防护措施非常必要! 不过,在提升服务器安全的同时,也要注意用户的操作体验,尽量避免过度设置限制导致使用不方便的问题。

    有17位网友表示赞同!

你很爱吃凉皮

文章内容比较偏重理论,对于实际应用场景的指导性不太强。我希望作者能结合一些案例分享,让读者更好地理解这些最佳实践的可行性和价值。

    有7位网友表示赞同!

念旧情i

我已经将这篇文章的内容整理成清单,并准备进行实际操作!感谢作者提供的宝贵建议!

    有13位网友表示赞同!

伤离别

虽然 SSH 安全很重要,但我觉得很多公司在安全方面投入的资金并不充足,可能导致一些公司采用简单粗暴的安全措施来降低成本。但这反而更加危险! 应该将安全问题放在第一位,投资更多的资源来保障系统的稳定运行和数据安全。

    有14位网友表示赞同!

猫腻

我曾经遇到过 SSH 远程登录漏洞被攻击的情况,当时损失惨重! 后果非常严重,让我深深体会到SSH的安全的重要性。从这次经验教训中,决定学习更多相关的知识并严格执行所有最佳实践!

    有10位网友表示赞同!

歆久

这篇文章介绍了一些很有用的安全措施,但也需要注意的是,过度强调安全性可能会导致系统使用体验下降。应该在保证安全的同时,也要考虑用户的实际需求和操作便利性。

    有10位网友表示赞同!

凉月流沐@

对于一些初学者来说,SSH 相关的概念比较抽象,希望作者能用更通俗易懂的语言进行描述,方便新手理解和学习。

    有11位网友表示赞同!

oО清风挽发oО

我觉得文章里缺少一些关于 SSH 安全工具的介绍,例如一些常见的开源安全工具有哪些?如何有效地利用这些工具来加强 SSH 安全防护?

    有10位网友表示赞同!

灬一抹丶苍白

SSH 安全的重要性不用多说,这篇文章做了一个很好的总结!希望大家都能认真学习并贯彻实践,共同营造一个更加安全的网络环境。

    有11位网友表示赞同!

热点资讯