Linux系统SSHD服务安全优化⽅案
# 1. 修改默认端⼝
#Port 22
# 2. 修改监听协议,只监听某个或某些⽹络协议
#AddressFamily any
AddressFamily inet
# 3. 修改ssh只监听内⽹IP地址(IPV4和IPV6)
#ListenAddress 0.0.0.0 #监听IPV4所有⽹络地址
ListenAddress 192.168.171.0
# 4. 设置密钥⽣命周期,定时更新密钥,并将密钥设置尽可能长
# --->(需设置Protocol 1)
#KeyRegenerationInterval 1h
# 在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新⽣成。
# 这个机制可以尽量减⼩密钥丢失或者⿊客攻击造成的损失。
# 设为 0 表⽰永不重新⽣成,默认为 3600(秒)。
#ServerKeyBits 1024
# 指定临时服务器密钥的长度。仅⽤于SSH-1。默认值是 768(位)。最⼩值是 512 。
# 5. 禁⽌root⽤户远程登录
#PermitRootLogin yes # 允许root⽤户登录
PermitRootLogin no # 禁⽌root⽤户远程登录
# 6. 开启基于密码认证的远程登录
#PasswordAuthentication yes
# 是否允许使⽤基于密码的认证。默认为"yes"。
# 7. 禁⽌使⽤空密码的⽤户登录
#PermitEmptyPasswords no
# 是否允许密码为空的⽤户远程登录。默认为"no"。
# 8. 关闭质疑-应答模式
# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
# 是否允许质疑-应答(challenge-response)认证。默认值是"yes"。
# 所有 f(5) 中允许的认证⽅式都被⽀持。
# 9. 开启Kerberos认证
# Kerberos options
#KerberosAuthentication no
# 是否要求⽤户为 PasswordAuthentication 提供的密码必须通过 Kerberos KDC 认证,也就是是否使⽤Kerberos认证。# 要使⽤Kerberos认证,服务器需要⼀个可以校验 KDC identity 的 Kerberos servtab 。默认值是"no"。
#KerberosOrLocalPasswd yes
# 如果 Kerberos 密码认证失败,
# 那么该密码还将要通过其它的认证机制(⽐如 /etc/passwd)。
怎么将linux系统改成中文# 默认值为"yes"。
#KerberosTicketCleanup yes
# 是否在⽤户退出登录后⾃动销毁⽤户的 ticket 。默认值是"yes"。
#KerberosGetAFSToken no
# 如果使⽤了 AFS 并且该⽤户有⼀个 Kerberos 5 TGT,那么开启该指令后,
# 将会在访问⽤户的家⽬录前尝试获取⼀个 AFS token 。默认为"no"。
#KerberosUseKuserok yes
# 10. 开启GSSAPI⽤户认证
# GSSAPI options
#GSSAPIAuthentication no
# 是否允许使⽤基于 GSSAPI 的⽤户认证。默认值为"no"。仅⽤于SSH-2。
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
# 是否在⽤户退出登录后⾃动销毁⽤户凭证缓存。默认值是"yes"。仅⽤于SSH-2。GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
# 是否对客户端进⾏严格的⾝份认证.若为”yes”,则客户端会在服务端被验证主机名
#GSSAPIKeyExchange no
# 11. 禁⽌ X11 转发
#X11Forwarding no
# 是否允许进⾏ X11 转发。默认值是"no",设为"yes"表⽰允许。
# 如果允许X11转发并且sshd(8)代理的显⽰区被配置为
# 在含有通配符的地址(X11UseLocalhost)上监听。
# 那么将可能有额外的信息被泄漏。由于使⽤X11转发的可能带来的风险,
# 此指令默认值为"no"。
# 需要注意的是,禁⽌X11转发并不能禁⽌⽤户转发X11通信,
# 因为⽤户可以安装他们⾃⼰的转发器。
# 如果启⽤了 UseLogin ,那么X11转发将被⾃动禁⽌。
X11Forwarding yes
#X11DisplayOffset 10
# 指定 sshd(8) X11 转发的第⼀个可⽤的显⽰区(display)数字。默认值是 10 。
# 这个可以⽤于防⽌ sshd 占⽤了真实的 X11 服务器显⽰区,从⽽发⽣混淆。
#X11UseLocalhost yes
# sshd(8) 是否应当将X11转发服务器绑定到本地loopback地址。默认值是"yes"。# sshd 默认将转发服务器绑定到本地loopback地址
# 并将 DISPLAY 环境变量的主机名部分设为"localhost"。
# 这可以防⽌远程主机连接到 proxy display 。
# 不过某些⽼旧的X11客户端不能在此配置下正常⼯作。
# 为了兼容这些⽼旧的X11客户端,你可以设为"no"。
# 12. 打印警告信息和上次登录信息
#PrintMotd yes
# 指定 sshd(8) 是否在每⼀次交互式登录时打印 /etc/motd ⽂件的内容。
# 默认值是"yes"。
#PrintLastLog yes
# 指定 sshd(8) 是否在每⼀次交互式登录时打印最后⼀位⽤户的登录时间。
# 默认值是"yes"。
# 13. 禁⽌使⽤Login命令
#UseLogin no
# 是否在交互式会话的登录过程中使⽤ login(1) 。默认值是"no"。
# 如果开启此指令,那么 X11Forwarding 将会被禁⽌,
# 因为 login(1) 不知道如何处理 xauth(1) cookies 。
# 需要注意的是,login(1) 是禁⽌⽤于远程执⾏命令的。
# 如果指定了 UsePrivilegeSeparation ,那么它将在认证完成后被禁⽤。
# 14. 开启ssh创建⾮特权⼦进程处理接⼊请求
#UsePrivilegeSeparation yes
# 是否让 sshd(8) 通过创建⾮特权⼦进程处理接⼊请求的⽅法来进⾏权限分离。# 默认值是"yes"。
# 认证成功后,将以该认证⽤户的⾝份创建另⼀个⼦进程。
# 这样做的⽬的是为了防⽌通过有缺陷的⼦进程提升权限,从⽽使系统更加安全。# 15. 禁⽌导⼊变量
#PermitUserEnvironment no
# 指定是否允许 sshd(8) 处理 ~/.ssh/environment
# 以及 ~/.ssh/authorized_keys 中的 environment= 选项。
# 默认值是"no"。
# 如果设为"yes"可能会导致⽤户有机会使⽤某些机制
# (⽐如 LD_PRELOAD)绕过访问控制,造成安全漏洞。
# 16. 禁⽌连接ssh端⼝时,返回补丁版本信息
#ShowPatchLevel no
# ShowPatchLevel⽤于在连接ssh端⼝时,是否返回SSH的补丁版本信息
百度的...
1. 系统最⼩化安装
2. 更改SSH远程端⼝号
3. 更改SSH只监听内⽹IP
4. 禁⽌root账号ssh登录,将常⽤的账户加⼊sudo组中
5. 禁⽌使⽤密码登录
6. 禁⽌⽆密码登录
7. 显⽰上次登录信息
8. 使⽤DNS反查客户端主机名(关闭ssh服务DNS反向解析)
9. 加强密码复杂度
10. fail2ban监视系统⽇志,匹配⽇志的错误信息(正则式匹配)执⾏相应的屏蔽动作(⼀般情况下是防⽕墙),发送e-mail通知系统管理员
11. 使⽤shell脚本来防⽌暴⼒破解ssh
12. 使⽤xinetd服务
13. 使⽤telnet服务
14. 调整⽂件描述符数量,进程及⽂件的打开都会⼩号⽂件描述符数量
15. 打开系统最⼤连接数上限
16. 定期更新系统时间(使其和互联⽹(内⽹)时间同步)
17. 配置yum更新源,从国内(企业内⽹)更新源下载安装软件包
18. 关闭SELinux和iptables(在⼯作场景中,如果有外部IP⼀般要打开iptables,⾼并发⾼流量的服务可能⽆法开启)
19. 定时⾃动清理邮件临时⽬录垃圾⽂件,防⽌磁盘的inode数被⼩⽂件占满(Centos6和Centos5要清除的⽬录不同)
20. 精简并保留必要的开机⾃启动服务(如crond sshd network rsyslog sysstat)
21. Linux内核参数优化/f 执⾏sysctl -p⽣效
22. 更爱系统字符集为zh_CN.UTF-8,使其⽀持中⽂,防⽌出现乱码
23. 命令权限最⼩化;
24. 锁定关键系统⽂件,如:/etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 处理以上内容后把chattr lsattr改名(即转移⾛)
25. 清空/etc/issue /etc/issue 取出系统及内核版本登录显⽰
26. 清除多余的系统虚拟⽤户帐号
27. 为grub引导菜单加密
28. 禁⽌主机被ping
29. 打补丁并升级有已知漏洞的软件
sshd_config
# 1. 修改默认端⼝
#Port 22
Port 123 #sshd服务端⼝
# 2. 修改监听协议,只监听某个或某些⽹络协议
#AddressFamily any#监听协议(any--->所有⽹络协议) AddressFamily inet
# 指定 sshd(8) 应当使⽤哪种地址族。
# 取值范围是:"any"(默认)、"inet"(仅IPv4)、"inet6"(仅IPv6)。
# 3. 修改ssh只监听内⽹IP地址(IPV4和IPV6)
#ListenAddress 0.0.0.0 #监听IPV4所有⽹络地址ListenAddress 192.168.171.0
#ListenAddress :: #监听IPV6所有⽹络地址
ListenAddress fe80::20c:29ff:fea1:2066/64 #这个还不会
# Disable legacy (protocol version 1) support in the server for new # installations. In future the default will change to require explicit # activation of protocol 1
Protocol 2 #使⽤ssh第2版本安全协议
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
# 主机私钥⽂件的位置。如果权限不对,sshd(8) 可能会拒绝启动。# SSH-1默认是 /etc/ssh/ssh_host_key 。
# SSH-2默认是 /etc/ssh/ssh_host_rsa_key
# 和 /etc/ssh/ssh_host_dsa_key 。
# ⼀台主机可以拥有多个不同的私钥。
# "rsa1"仅⽤于SSH-1,"dsa"和"rsa"仅⽤于SSH-2。
# 4. 设置密钥⽣命周期,定时更新密钥,并将密钥设置尽可能长
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论