开发者社区> 科技探索者> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

linux ssh登录安全设置

简介:
+关注继续查看

ssh服务是最常用的远程登录服务,虽然其比telnet安全多,但是也存在一定的安全漏洞。一些不友好的小伙伴们会使用一些不和谐程序对ssh服务进行暴力破解。对ssh服务进行适当的配置可以完全杜绝暴力破解。同时对sshd服务进行优化配置可以加快连接速度,减少耗费带宽。 
编辑/etc/ssh/sshd_config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Port 2222
 
ListenAddress 0.0.0.0
#若禁止外网用户访问,填写内网IP地址(IPV4和IPV6)
 
Protocol 2
#仅使用SSH协议版本2会更安全,SSH协议版本1有安全问题
 
PermitRootLogin no
#禁止root用户登陆,降低远程登陆的用户权限。
 
AllowUsers rd
#仅允许指定用户和组登录
 
PubkeyAuthentication yes
#使用公钥认证,推荐使用安全高效!
 
PasswordAuthentication no
#禁止使用用户名和密码登陆,使用公钥登陆,防止针对用户名和密码的暴力破解。
 
PermitEmptyPasswords no
#不允许空密码登录,这个太危险啦。
 
UsePAM no
# 利用 PAM 管理使用者认证有很多好处,可以记录与管理。
# 所以这里我们建议你使用 UsePAM 且 ChallengeResponseAuthentication 设定为 no
# 如果不用LDAP之类的登陆,建议关闭,优化性能。
 
ChallengeResponseAuthentication no
# 允许任何的密码认证!所以,任何 login.conf 规定的认证方式,均可适用!
# 但目前我们比较喜欢使用 PAM 模块帮忙管理认证,因此这个选项可以设定为 no 喔!
 
UseDNS no
# 一般来说,为了要判断客户端来源是正常合法的,因此会使用 DNS 去反查客户端的主机名
# 不过如果是在内网互连,这项目设定为 no 会让联机达成速度比较快。
 
GSSAPIAuthentication no
#不基于 GSSAPI 的用户认证,关闭,优化性能。
 
SyslogFacility AUTH
#设置在记录来自sshd的消息的时候,是否给出“facility code”。
 
X11Forwarding no
#如果没有使用x11转发最好关闭掉,优化性能。
 
PrintLastLog no 
#不打印最后登陆信息,减少恶意登陆者获取的信息量,防止被恶意利用。
 
TCPKeepAlive yes
#保持长连接,加快连接速度,优化性能。
 
Banner none
#不显示系统banner信息,如果开启会在每次登陆时显示系统信息,减少恶意登陆者获取的信息量,防止被恶意利用。
 
 
LoginGraceTime 30
#限制用户必须在指定的时限内认证成功,建议设置低,增加暴力破解难度,单位为秒。
 
MaxAuthTries 3
#最多登录尝试次数,建议设置低一些,加大暴力破解难度。
 
ClientAliveInterval 300
#服务器端向客户端每5分钟发送一次请求消息, 然后客户端响应, 这样就保持长连接了.默认是0, 不发送
 
ClientAliveCountMax 3
#服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 默认是3
 
 
AuthorizedKeysFile  .ssh/authorized_keys
# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内


使用TCP wrappers仅允许指定的主机连接

如果你想在你的网络上只允许特定的主机才能连接到你的SSH服务,但又不想使用或弄乱你的iptables配置,那这个方法非常有用,你可以使用TCP wrappers。

在/etc/hosts.deny中创建一个规则,如下:
sshd: ALL

这意味着默认情况下所有主机被拒绝访问SSH服务,这是应该的,否则所有主机都能访问SSH服务,因为TCP wrappers首先在hosts.deny中查找,如果这里没有关于阻止SSH服务的规则,任何主机都可以连接。

接下来,在/etc/hosts.allow中创建一个规则允许指定的主机使用SSH服务:
sshd: 192.168.1 193.180.177.13

现在,只有来自192.168.1.0/24和193.180.177.13的主机能够访问SSH服务了,其他主机在连接时还没有到登陆提示符时就被断开了,并收到错误提示,如下:
ssh_exchange_identification: Connection closed by remote host


使用iptables允许特定的主机连接

可以使用iptables来限制SSH访问(但可以同时使用这个两个的),允许一个特定的主机连接到你的SSH服务:

1
~# iptables -A INPUT -p tcp -m state --state NEW --source 193.180.177.13 --dport 22 -j ACCEPT

并确保没有其他的主机可以访问SSH服务:

1
~# iptables -A INPUT -p tcp --dport 22 -j DROP

保存你的新规则,你的任务就完成了,规则是立即生效的


SSH时间锁定技巧

你可以使用不同的iptables参数来限制到SSH服务的连接,让其在一个特定的时间范围内可以连接,其他时间不能连接。你可以在下面的任何例子中使用/second、/minute、/hour或/day开关。


第一个例子,如果一个用户输入了错误的密码,锁定一分钟内不允许在访问SSH服务,这样每个用户在一分钟内只能尝试一次登陆:

1
2
~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP


第二个例子,设置iptables只允许主机193.180.177.13连接到SSH服务,在尝试三次失败登陆后,iptables允许该主机每分钟尝试一次登陆:

1
2
~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -j DROP

本文转自奔跑在路上博客51CTO博客,原文链接http://blog.51cto.com/qiangsh/1757412如需转载请自行联系原作者


qianghong000

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
别让你的服务器(vps)沦为肉鸡(ssh暴力破解),密钥验证、双向因子登录值得拥有
如果你购买了阿里云、腾讯云或者华为云等国内云服务上的服务器,默认登录都是以密码的方式,这就给潜在的渗透带来了机会,因为当你的linux服务器暴露在外网当中时,服务器就极有可能会遭到互联网上的扫描软件进行扫描,然后试图连接ssh端口进行暴力破解(穷举扫描),如果你不采取相对应的措施,迟早有一天服务器会被渗透者攻陷,这也就解释了为什么google cloud(谷歌云)和aws(亚马逊云)默认都是以秘钥的方式登录服务器。
0 0
Linux: SSH免密登录配置完了不生效
Linux: SSH免密登录配置完了不生效
0 0
ssh免密登录服务器和scp的使用
ssh免密登录服务器和scp的使用
0 0
Linux系统控制台vnc可以登录,ssh无法登陆
Linux系统控制台vnc可以登录,ssh无法登陆
0 0
SSH远程免密登录的两种方式
服务器之间经常需要有一些跨服务器的操作,此时就需要我们在一台服务器上登录到另外一台服务器,若是人为操作时我们都可以每次输入密码进行远程登录,但要是程序需要跨服务器时,每次输入密码就不现实了,所以我们需要免密登录
0 0
Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录
本文介绍了Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录。
0 0
Ubuntu的ssh免密登录出现错误:sign_and_send_pubkey: signing failed: agent refused operation
Ubuntu的ssh免密登录出现错误:sign_and_send_pubkey: signing failed: agent refused operation
0 0
简单的Python脚本,实现ssh登录配置路由器
简单的Python脚本,实现ssh登录配置路由器
0 0
linux服务器间ssh免密登录
linux服务器间ssh免密登录
0 0
SSH远程登录软件的使用教程
SSH远程登录软件的使用教程
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Linux系统通过fail2ban对暴力破解进行防护
立即下载
ECS系统指南之Linux系统诊断
立即下载
ECS运维指南 之 Linux系统诊断
立即下载