标签: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
标签:continue otl listen 防止 sof 文件 禁用 tables 密码登录
原文地址:https://blog.51cto.com/11886307/2382112