码迷,mamicode.com
首页 > 其他好文 > 详细

sshd的配置和优化

时间:2019-04-21 10:16:41      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:continue   otl   listen   防止   sof   文件   禁用   tables   密码登录   

sshd的配置和优化

sshd服务器端的配置文件为/etc/ssh_config

配置文件中的一些常用参数

常用参数 说明
port 监听端口号
ListenAddress ip 监听的IP地址
LoginGraceTime 发起连接后多少时间内必须登录超时断开连接
PermitRootLogin 是否允许root登录
StrictModes 检查.ssh/文件的所有者,权限等
MaxAuthTries 最大密码尝试次数
MaxSessions 同一连接的最大绘会话数
PubkeyAuthentication 基于Key验证
PermitEmptyPasswords 是否使用空口令登录
PasswordAuthentication 基于口令验证
GatewayPorts ssh服务监听所使用的端口当网关使用
ClientAliveInterval 间隔多久客户端和服务器端没有操作就断开连接
ClientAliveCountMax 和上面那项一起使用为检查的次数
UseDNS 是否使用名称解析
GSSAPIAuthentication GSSAPI的认证
MaxStartups 未验证的最大连接数
Banner 登录前提示
AllowUsers 允许哪些用户登录(白名单)
DenyUsers 不允许哪些用户登录(黑名单)
AllowGroups 允许哪些组登录(白名单)
DenyGroups 不允许哪些组登录(黑名单)

详细用法:
1.port
在生产环境中建议将此端口改为非标准端口,防止被人恶意猜测密码。

[root@HostA ~]# vim /etc/ssh/sshd_config
Port 2222
[root@HostA ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

#此时sshd服务已经监听在2222端口上
[root@HostA ~]# lsof -i:2222
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    2424 root    3u  IPv4  13945      0t0  TCP *:EtherNet/IP-1 (LISTEN)
sshd    2424 root    4u  IPv6  13947      0t0  TCP *:EtherNet/IP-1 (LISTEN)

2.LinstenAddress
若本机有多个ip地址,可以指定用哪个地址提供sshd服务

vim /etc/ssh/sshd_config
Port 2222
ListenAddress 172.22.27.12
[root@HostA ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

#此时sshd服务监听在172.22.27.124的2222端口上
[root@HostA ~]# ss -tnl |grep 2222
LISTEN     0      128           172.22.27.124:2222                     *:*  

3.LoginGraceTime
此项表示有多少用户发起ssh连接后多少时间内必须输入密码登录,否则断开连接默认为2分钟

#LoginGraceTime 2m

4.PermitRootLogin
是否允许root用户登录,在生产环境中,最好禁止root用户直接登录

[root@HostA ~]# vim /etc/ssh/sshd_config
Port 2222
ListenAddress 172.22.27.12
PermitRootLogin no 

重启sshd服务
[root@HostA ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

#此时使用root账户已经无法登录
[root@HostA ~]# ssh -p 2222 root@172.22.27.124
The authenticity of host ‘[172.22.27.124]:2222 ([172.22.27.124]:2222)‘ can‘t be established.
RSA key fingerprint is 46:d8:67:07:f3:51:87:95:2c:d7:4b:27:ce:85:a2:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[172.22.27.124]:2222‘ (RSA) to the list of known hosts.
root@172.22.27.124‘s password: 
Permission denied, please try again.
root@172.22.27.124‘s password: 
Permission denied, please try again.
root@172.22.27.124‘s password: 
Permission denied (publickey,password).

5.MaxAuthTries
最大密码尝试次数默认为3次,尝试次数为此项后的值的一半

[root@HostA ~]# vim /etc/ssh/sshd_config
#MaxAuthTries 6

6.MaxSessions
同一连接的最大会话个数,默认为10个

[root@HostA ~]# vim /etc/ssh/sshd_config
MaxSessions 3

重启服务
[root@HostA ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
此时克隆会话时最多只能克隆3个在多就会拒绝

7.PubkeyAuthentication
基于Key验证,登录时使用密钥验证,此项默认开启生产环境中最好使用key验证。

[root@HostA ~]# vim /etc/ssh/sshd_config
#PubkeyAuthentication yes

8.PermitEmptyPasswords
是否使用空口令登录,生产环境中使用空口令登录是非常危险的,所以此处默认也是禁止的

[root@HostA ~]# vim /etc/ssh/sshd_config
#PermitEmptyPasswords no

9.PasswordAuthentication
基于口令验证,默认为开启。生产环境中建议禁用口令登录。只开启密钥登陆

[root@HostA ~]# vim /etc/ssh/sshd_config
PasswordAuthentication yes

10.GatewayPorts
ssh服务监听所使用的端口当网关使用
此项用法可参考端口转发
11.ClientAliveInterval和ClientAliveCountMax
ClientAliveInterval:连接后多久没有操作则断开
ClientAliveCountMax:检测几次后发现没有操作断开,此项和上一项结合一起使用

[root@HostA ~]# vim /etc/ssh/sshd_config
#ClientAliveInterval 0             #0表示不限制时间
#ClientAliveCountMax 3

11.UseDNS和GSSAPIAuthentication
此处2项建议关闭,能加速ssh的连接速度
12.MaxStartups
未验证的最大连接数,默认的10:30:100表示,ssh连接进入前10个链接能全部连接上,当连接数大于10个就以30%的纪律随机拒绝登陆,连接数超过100个全部拒绝

[root@HostA ~]# vim /etc/ssh/sshd_config
MaxStartups 10:30:100

12.Banner
登录前提示,在选项后跟上路径

[root@HostA ~]# vim /etc/ssh/sshd_config
Banner /data/hello
[root@HostA ~]# echo hello > /data/hello    #创建一个hello的文件
#重启服务
[root@HostA ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
[root@HostA ~]# ssh -p 2222 masuri@172.22.27.124
hello                                       #所创建的登录前提示
masuri@172.22.27.124‘s password: 

13、AllowUsers、DenyUsers、AllowGroups、DenyGroups
此处4项为用户和组的黑白名单

[root@HostA ~]# vim /etc/ssh/sshd_config 
DenyUsers wang                      #将wang用户加入黑名单
#重启服务
[root@HostA ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

[root@HostA ~]# useradd wang
[root@HostA ~]# echo 111111 | passwd --stdin wang
Changing password for user wang.
passwd: all authentication tokens updated successfully.
#此时wang用户无法登陆
[root@HostA ~]# ssh -p 2222  wang@172.22.27.124
hello
wang@172.22.27.124‘s password: 
Permission denied, please try again.
wang@172.22.27.124‘s password: 
Permission denied, please try again.
wang@172.22.27.124‘s password: 
Permission denied (publickey,password).

生产环境中ssh服务最佳实践

1.建议使用非默认端口
修改port
2.禁止使用protocol version 1
Protocol 2
3.限制可登录用户
AllowUsers、DenyUsers、AllowGroups、DenyGroups
4.设定空闲会话超时时长
ClientAliveInterval和ClientAliveCountMax
5.利用防火墙设置ssh访问策略
设置iptables策略
6.仅监听特定的IP地址
修改Listen
7.基于口令认证时,使用强密码策略
使用难以猜测的随机口令,长度越长约好,并定期修改。
8.使用基于密钥的认证
使用密钥登陆,不使用口令
9.禁止使用空密码
PermitEmptyPasswords no
10.禁止root用户直接登录
PermitRootLogin
11.限制ssh的访问频度和并发在线数
MaxStartups
12.经常分析日志
sshd的日志文件为/var/log/secure

sshd的配置和优化

标签:continue   otl   listen   防止   sof   文件   禁用   tables   密码登录   

原文地址:https://blog.51cto.com/11886307/2382112

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!