OpenSSH是安全Shell协议族(SSH)的一个免费版本。SSH协议族可以用来进行远程控件,或在计算机之间传送文件。而实现此功能的传统方式,如Telnet(终端仿真协议)、RCP都是极不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程的中的数据,并由此来代替原来的类似服务。
SSHD是一个典型的独立守护进程(Standalone Daemon),但也可以根据需要通过网络守护进程(Internet Daemon)-inetd或Ineternet Daemon’s more modern-xinted加载。OpenSSH服务可以通过/etc/ssh/sshd_config文件进行配置。
1. 禁止Root用户登录
只允许普通用户登录,设置如下。
#Authentication: LoginGraceTime120 PermitRootLoginno StrictModesyes
2. 限制SSH验证重试次数
超过6次Socket连接会断开,设置如下。
MaxAuthTries6
3. 禁止证书登录
证书登录非常安全,但是正常用户很有可能在不知情的情况下,给系统安装一个证书,他随时都可能进入系统。任何一个有权限的用户都能很方便地植入一个证书到.ssh/authorized_keys文件中,可以禁用证书登录,设置如下。
PubkeyAuthenticationno
4. 使用证书替代密码认证
这个与上面讲的正好相反,只允许使用key文件登录,设置如下。
PasswordAuthenticationno
5. 图形窗口客户端记忆密码的问题
当使用XShell、Xftp、WinSCP、SecureCRT、SecureFX等软件登录时,该软件都提供记住密码的功能,使下次再登录的时候不需要输入密码就可以进入系统。这样做的确非常方便,但是电脑一旦丢失或被其他人进入,那么就十分危险了。设置如下。
ChallengeResponseAuthenticationyes
6. 禁止SSH端口映射
禁止使用SSH映射作为Socks5代理等,命令如下。
AllowTcpForwardingno
7. IP地址限制
如果只希望特定IP地址的用户登录主机,如只允许192.168.1.1和192.168.1.2登录,可以对/etc/host.allow进行如下修改。
sshd:192.168.1.1192.168.1.2
如果希望禁止所有人访问主机,对/etc/hosts.deny修改,如下所示。
sshd:ALL
8. 禁止SSH密码穷举
攻击者通常会使用字典攻击来穷举目标主机的SSH密码,可以通过编写Shell脚本或使用Fail2ban工具对SSH连接进行访问控制,这里介绍Fail2ban的使用。
Fail2ban 可以监视系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送E-mail通知系统管理员。
下面是Fail2ban的实战部署演示。
(1)Fail2ban可以直接通过apt或yum获得,如下。
root@kali:~#apt-getinstallfail2ban Readingpackagelists...Done Buildingdependencytree Readingstateinformation...Done Suggestedpackages: python-gamin ThefollowingNEWpackageswillbeinstalled: fail2ban 0upgraded,1newlyinstalled,0toremoveand0notupgraded. Needtoget165kBofarchives. Afterthisoperation,577kBofadditionaldiskspacewillbeused. Get:1http://mirrors.aliyun.com/kali/sana/mainfail2banall0.8.13-1[165kB] Fetched165kBin2s(75.2kB/s) Selectingpreviouslyunselectedpackagefail2ban. (Readingdatabase...322944filesanddirectoriescurrentlyinstalled.) Preparingtounpack.../fail2ban_0.8.13-1_all.deb... Unpackingfail2ban(0.8.13-1)... Processingtriggersforman-db(2.7.0.2-5)... Processingtriggersforsystemd(215-17+deb8u1)... Settingupfail2ban(0.8.13-1)... update-rc.d:Wehavenoinstructionsforthefail2baninitscript. update-rc.d:Itlookslikeanetworkservice,wedisableit. insserv:warning:currentstartrunlevel(s)(empty)ofscript`fail2ban'overridesLSBdefaults(2345). insserv:warning:currentstoprunlevel(s)(0123456)ofscript`fail2ban'overridesLSBdefaults(016). Processingtriggersforsystemd(215-17+deb8u1)...
(2)复制一份配置文件,如下。
root@ZYB-KALI-VM:/etc/fail2ban#cpjail.conf/etc/fail2ban/jail.local
(3)修改几个参数,ignoreip为忽略的登录ip,bantime为屏蔽时长,findtime为监测时长,在findtime时间内出现maxretry次尝试即执行屏蔽动作,单位为s,maxretry为最大尝试次数,设置如下。
ignoreip=127.0.0.1/8 bantime=600 findtime=600 maxretry=5
(4)默认SSH监控是开启状态,这里将SSH登录访问的日志文件写到logpath参数中,之后保存配置文件,就可以启动Fail2ban了,如下。
#SSHservers # [sshd] port=ssh logpath=/var/log/auth.log backend=%(sshd_backend)s
(5)Fail2ban服务开启,如下。
root@ZYB-KALI-VM:/etc/fail2ban#servicefail2banstatus fail2ban.service-LSB:Start/stopfail2ban Loaded:loaded(/etc/init.d/fail2ban) Active:active(running)sinceSun2017-02-2618:58:46HKT;8sago Process:7536ExecStart=/etc/init.d/fail2banstart(code=exited,status=0/SUCCESS) CGroup:/system.slice/fail2ban.service └─7547/usr/bin/python/usr/bin/fail2ban-server-b-s/var/run/fail2ban/fail2ban.sock-p/var/run/fail2ban/fail2ban.pid Feb2618:58:46ZYB-KALI-VMfail2ban[7536]:Startingauthenticationfailuremonitor:fail2ban.
Fail2ban可以支持邮件报警功能,需要事先配置好mail或sendmail邮件通知才能正常工作,可以编辑jail.lo cal文件。
转载请注明:IT运维空间 » 安全防护 » 网络安全攻防:Linux系统安全之OpenSSH安全配置
发表评论