【运维】Linux 服务器 基本安防配置

前言

在前两个星期,我负责的一个小型企业网站遭受到了攻击,导致网站非常的卡,正常用户无法访问;初步判断是CC攻击; 这样的攻击防御起来还是比较简单的;后来服务器又受到了攻击,服务器卡的完全链接不上去;这个时候才知道我当时服务器的安防是有多脆弱!


网站的防御

这个不在本篇范围内,像DDOS攻击 CC攻击等等针对 网站的攻击 可以接入 CDN服务商,再加上nginx等等一些配置 ,这个稍后单独再讲;


服务器的简单防御

说起这个, 我也是啥都不懂,那里问问这里百度, 在我看来, 做服务器安防 是一门比较高级的技能,黑客和安全专家你来我往的攻防战; 虽然那些高级的我们可以知之甚少,但是我们可以做一些简单的服务器安全防护,提升别人的攻击成本!


查看访问Linux日志

可以直接略过,直接使用下面的命令查询 所有尝试链接服务器的排序后的Ip信息


for i in $(grep 'pam_unix(sshd:auth): authentication failure;' secure | awk '{print $14}' | cut -d"=" -f2 | sort | uniq) ;do echo "$i  $( whois $i | grep -m1 country |awk '{print $2}')" ;done | column -t

从/var/log/secure提取有用信息

##1、 查找所有 用错误用户名链接ssh的Ip
grep "Invalid user" secure | awk '{print $10}'
##2、查找所有 密码错误的Ip
grep 'pam_unix(sshd:auth): authentication failure;' secure | awk '{print $14}' | cut -d"=" -f2
##3、计算相同Ip的次数 并且排序
grep 'pam_unix(sshd:auth): authentication failure;' secure | awk '{print $14}' | cut -d"=" -f2 | sort | uniq -c

##4、查找ssh等吗密码错误的所有Ip 并且排列后现在 Ip所在地
for i in $(grep 'pam_unix(sshd:auth): authentication failure;' secure | awk '{print $14}' | cut -d"=" -f2 | sort | uniq) ;do echo "$i  $( whois $i | grep -m1 country |awk '{print $2}')" ;done | column -t

查看所有视图登陆的Ip次数



lastb | awk '{print $3}' | sort | uniq -c | sort -nr

修改SSH端口并禁止ROOT登陆

ssh的配置文件全路径是:/etc/ssh/sshd_config

Port 2222   #这个端口默认是22,改成不容易猜的
PermitRootLogin no

如果使用的是云服务器,修改端口后还需要配置安全组

然后重启ssh服务 systemctl restart sshd


安装denyhosts

DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽IP的功能。


安装

yum install denyhosts


基本上默认的配置就可以使用了,如果想要更多的配置信息,可以查看/etc/denyhosts.conf文件。

PS:denyhosts这个毕竟是软件分析/var/log/secure文件,你某次不小心输错了密码,它可能把你也给墙了,所以还是设置一下白名单;白名单路径 /var/lib/denyhosts/allowed-hosts


最后启动服务:systemctl start denyhosts

如果 Centos 7 中没有找到这个依赖包,则直接取官网下载然后安装

手动安装Denyhosts


加强Linux服务器安全的20项建议


上一篇:MySQL并发学习——锁(行锁、表锁、页锁、乐观锁、悲观锁等)


下一篇:宿主机与虚拟机硬件配置对比一览表