#1: Disable OpenSSH Server (关闭ssh server,如果不能SSH,就直接关掉)
#2: Only Use SSH Protocol 2 (使用sshv2 版本)
Protocol 2
#3: Limit Users’ SSH Access(限制用户登入)
AllowUsers root vivek jerry  (允许root vivek jerry)
DenyUsers saroj anjali foo   (拒绝 saroj anjali foo)
#4: Configure Idle Log Out Timeout Interval(配置空闲时间)
ClientAliveInterval 300
ClientAliveCountMax 0
#5: Disable .rhosts Files (关闭.rhosts文件)
IgnoreRhosts yes
#6: Disable Host-Based Authentication (关闭基本主机的认证)
To disable host-based authentication, update sshd_config with the following option:
HostbasedAuthentication no
#7: Disable root Login via SSH (限制root用户登录)
PermitRootLogin no
#8: Enable a Warning Banner (设置用户警告信息)
Set a warning banner by updating sshd_config with the following line:
Banner /etc/issue
#9: Firewall SSH Port # 22 (防火墙上过滤ssh端口)
#10: Change SSH Port and Limit IP Binding (改变ssh端口和限制IP登陆)
Port 300
ListenAddress 192.168.1.5
ListenAddress 202.54.1.5
A better approach to use proactive approaches scripts such as fail2ban or denyhosts (see below).
#11: Use Strong SSH Passwords and Passphrase (使用强健的主机密码,不用说也知道)
#12: Use Public Key Based Authentication  (基于公私钥来认证的东西)
Use public/private key pair with password protection for the private key. See how to use RSA and DSA key based authentication. Never ever use passphrase free key (passphrase key less) login.
#13: Use Keychain Based Authentication (这个我还真没有用过)
#14: Chroot SSHD (Lock Down Users To Their Home Directories) (类似于chroot的配置了)
#15: Use TCP Wrappers (使用TCP Wrappers 大家应该很熟悉的)
sshd : 192.168.1.2 172.16.23.12
#16: Disable Empty Passwords  (关闭空密码命令选项)
PermitEmptyPasswords no
#17: Thwart SSH Crackers (Brute Force Attack)(防止暴力破解的N多软件)
#18: Rate-limit Incoming Port # 22 Connections (限制22端口连接)
#19: Use Port Knocking (这是个好软件呀)
#20: Use Log Analyzer (使用日志分析工具)
LogLevel INFO
#21: Patch OpenSSH and Operating Systems (最重要的一条,及时更新补丁和操作系统)
PS: 对于ssh 端口更改,有可能selinux会影响,直接开启再关闭,应该就可以了。为防止发生事故,可以在保留22 port的情况下进行多端口开放尝试。在基本公私钥认证的方式中,使用putty(windows 平台) 生在的公钥时,在使用命令 serverssh-keygen -if test.pub(putty 生在的公钥) >opssh.pub(linux认识的公钥) 去转换一下,否则会出现server _refused_our_key

1. 修改sshd服务器的配置文件/etc/ssh/sshd_config,将部分参数参照如下修改,增强安全性。
系统缺省使用22号端口,将监听端口更改为其他数值(最好是1024以上的高端口,以免和其他常规服务端口冲突),这样可以增加入侵者探测系统是否运行了 sshd守护进程的难度。
Port 5555
对于在服务器上安装了多个网卡或配置多个IP地址的情况,设定sshd只在其中一个指定的接口地址监听,这样可以减少sshd的入口,降低入侵的可能性。
ListenAddress 192.168.0.1
如果允许用户使用root用户登录,那么黑客们可以针对root用户尝试暴力破解密码,给系统安全带来风险。
PermitRootLogin no
允许使用空密码系统就像不设防的堡垒,任何安全措施都是一句空话。
PermitEmptyPasswords no
只允许指定的某些用户通过ssh访问服务器,将ssh使用权限限定在最小的范围内。
AllowUsers sshuser1 sshuser2
同上面的AllowUsers类似,限定指定的用户组通过ssh访问服务器,二者对于限定访问服务器有相同的效果。
AllowGroups sshgroup
禁止使用版本1协议,因为其存在设计缺陷,很容易使密码被黑掉。
Protocol 2
关闭X11Forwarding,防止会话被劫持。
X11Forwarding no
sshd服务运行时每一个连接都要使用一大块可观的内存,这也是ssh存在拒绝服务攻击的原因。一台服务器除非存在许多管理员同时管理服务器,否则上面这 个连接数设置是够用了。
MaxStartups 5
注意:以上参数设置仅仅是一个示例,用户具体使用时应根据各自的环境做相应的更改。
2. 修改sshd服务器的配置文件/etc/ssh/sshd_config的读写权限,对所有非root用户设置只读权限,防止非授权用户修改sshd 服务的安全设置。
chmod 644 /etc/ssh/sshd_config
3. 设置TCP Wrappers。服务器默认接受所有的请求连接,这是非常危险的。使用TCP Wrappers可以阻止或允许应用服务仅对某些主机开放,给系统在增加一道安全屏障。这部分设置共涉计到两个文件:hosts.allow和 hosts.deny。
将那些明确允许的请求添加到/etc/hosts.allow中。如系统仅允许IP地址为192.168.0.15和10.0.0.11的主机使用 sshd服务,则添加如下内容:
sshd:192.168.0.15 10.0.0.11
将需要禁止使用的信息添加到/etc/hosts.deny中。如对除了在hosts.allow列表中明确允许使用sshd的用户外,所有其他用户都禁 止使用sshd服务,则添加如下内容到hosts.deny文件中:
sshd:All
注意:系统对上述两个文件的判断顺序是先检查hosts.allow文件再查看hosts.deny文件,因此一个用户在hosts.allow允 许使用 网络资源,而同时在hosts.deny中禁止使用该网络资源,在这种情况下系统优先选择使用hosts.allow配置,允许用户使用该网络资源。
4. 尽量关闭一些系统不需要的启动服务。系统默认情况下启动了许多与网络相关的服务,因此相对应的开放了许多端口进行LISTENING(监听)。我们知 道,开放的端口越多,系统从外部被入侵的可能也就越大,所以我们要尽量关闭一些不需要的启动服务,从而尽可能的关闭端口,提供系统的安全性。
通过以上步骤基本上将sshd服务设置上可能出现的漏洞堵上了,不需要投资,只要我们稍微花点时间调整一下配置,就可极大提高系统的安全环境,何乐而不为呢?