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:LoginGraceTime120PermitRootLoginnoStrictModesyes2. 限制SSH验证重试次数
超过6次Socket连接断开,设置如下。
MaxAuthTries63. 禁止证书登录
证书登录非常安全,但正常用户可能会在不知情的情况下为系统安装证书,他可以随时进入系统。任何有权限的用户都可以很容易地植入证书.ssh/authorized_keys文件中可以登录禁用证书,设置如下。
PubkeyAuthenticationno4. 用证书代替密码认证
这与上述相反,只允许使用key文件登录,设置如下。
PasswordAuthenticationno5. 图形窗口客户端记忆密码问题
当使用XShell、Xftp、WinSCP、SecureCRT、SecureFX当软件登录时,软件提供记住密码的功能,以便下次登录时无需输入密码即可进入系统。这真的很方便,但一旦计算机丢失或被其他人输入,就非常危险。设置如下。
ChallengeResponseAuthenticationyes6. 禁止SSH端口映射
禁止使用SSH映射作为Socks5 *** 等,命令如下。
AllowTcpForwardingno7. 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:ALL8. 禁止SSH密码穷举
攻击者通常使用字典攻击来穷举目标主机SSH可以编写密码Shell脚本或使用Fail2ban工具对SSH连接进行访问控制,这里介绍Fail2ban的使用。
Fail2ban 可以监控系统日志,然后匹配日志的错误信息(正式匹配)执行相应的屏蔽动作(一般为防火墙),并可发送E-mail通知系统管理员。
下面是Fail2ban实战部署演示。
(1)Fail2ban可直接通过apt或yum获取,如下。
root@kali:~#apt-getinstallfail2banReadingpackagelists...DoneBuildingdependencytreeReadingstateinformation...DoneSuggestedpackages:python-gaminThefollowingNEWpackageswillbeinstalled:fail2ban0upgraded,1newlyinstalled,0toremoveand0notupgraded.Needtoget165kBofarchives.Afterthisoperation,577kBofadditionaldiskspacewillbeused.Get:1http://mirrors.aliyun.com/kali/sana/mainfail2b *** l0.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/8bantime=600findtime=600maxretry=5(4)默认SSH监控是开放状态,这里会SSH登录访问的日志文件写在logpath在参数中,保存配置文件后即可启动Fail2ban了,如下。
#SSHservers#[sshd]port=sshlogpath=/var/log/auth.logbackend=%(sshd_backend)s(5)Fail2ban服务开启如下。
root@ZYB-KALI-VM:/etc/fail2ban#servicefail2banstatusfail2ban.service-LSB:Start/stopfail2banLoaded:loaded(/etc/init.d/fail2ban)Active:active(running)sinceSun2017-02-2618:58:46HKT;8sagoProcess: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.pidFeb2618:58:46ZYB-KALI-VMfail2ban[7536]:Startingauthenticationfailuremonitor:fail2ban.Fail2ban可支持邮件报警功能,需要提前配置mail或sendmail邮件通知可以正常工作,可以编辑jail.lo cal文件。