当前位置: 首页 > 科技观察

网络安全攻防:Linux系统安全之OpenSSH安全配置

时间:2023-03-20 16:35:57 科技观察

OpenSSH是SecureShell协议族(SSH)的免费版本。SSH协议族可用于远程控制,或在计算机之间传输文件。实现该功能的传统方式,如Telnet(终端仿真协议)和RCP,是极不安全的,密码会以明文形式传输。OpenSSH提供服务器守护进程和客户端工具,用于在远程控制和文件传输过程中对数据进行加密,从而取代原来的同类服务。SSHD是典型的独立守护进程(StandaloneDaemon),但也可以根据需要由网络守护进程(InternetDaemon)-inetd或InternetDaemon的更现代的-xinted加载。可以通过/etc/ssh/sshd_config文件配置OpenSSH服务。1、禁止root用户登录,只允许普通用户登录,设置如下。#Authentication:LoginGraceTime120PermitRootLoginnoStrictModesyes2。如果SSH认证重试次数超过6次,Socket连接将被断开。设置如下。MaxAuthTries63。禁止证书登录证书登录是非常安全的,但普通用户可能在不知情的情况下为系统安装证书,随时可能进入系统。任何授权用户都可以轻松地将证书植入.ssh/authorized_keys文件,并可以禁用证书登录。设置如下。PubkeyAuthenticationno4。使用证书而不是密码认证这和我上面说的刚好相反。只允许key文件登录,设置如下。PasswordAuthenticationno5.图形窗口客户端记住密码的问题在使用XShell、Xftp、WinSCP、SecureCRT、SecureFX等软件登录时,软件提供了记住密码的功能,方便您下次登录时无需输入密码即可进入系统。这样确实很方便,但是一旦电脑丢失或者被他人访问,就非常危险了。设置如下。ChallengeResponseAuthentication是6。禁止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/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:它看起来像一个网络服务,我们禁用它。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可以支持邮件告警功能,需要预先配置好的邮件或sendmail邮件通知要正常工作,可以编辑jail.local文件。