网站安全记录之抵御DDoS攻击:
分布式拒绝服务(DDoS: Distributed Denial of Service)
2018-08-17 凌晨03:00, 发现网站未闻花名被人DDoS攻击后,
先后出现了下面各种从来没见过的错误:
500 Internal Server Error /nginx 1.14.0,
建立数据库连接时出错,
无法登录MySQL服务器,mysqli_real_connect():(HY000/2002):No Such File or directory
如图所示:
找出真凶:
1. ssh 登录之后, 使用 命令 netstat 查看当前所有的连接
或者 将结果保存到文件 netstat > /root/sg_log
发现有一个ip建立了350多个连接,
经查询,该ip来源是: 美国 107.149.184.144
反击策略:
知道IP地址后, 现在就需要从3个层面,将这个IP封掉
1. index.php 文件中 从PHP层封禁
2.从Nginx层封禁
3.从Linux层封禁
先在发现的第一时间,停掉Nginx服务
命令如下:
cd /usr/local/nginx/sbin/
./nginx -s stop (此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。)
等封禁该IP之后, 再开启服务
./nginx
./nginx -s reload
下面就先从PHP层封禁
打开WordPress根目录
vi index.php
然后, 把里面的代码替换成:
从Nginx层面进行防护
默认情况下, Nginx服务器是可以 直接通过服务器的ip 进行访问WordPress网站的
现在要禁止用户 直接通过地址输入ip 的形式访问网站
操作如下:
cd 到nginx配置目录
cp vhost_vwhm_net.conf vhost_default.conf 复制一个子配置文件
vi vhost_default.conf 打开刚才新复制的这个子配置文件
将里面的代码改成:
注意: 最核心就是这两行(其他的都注释了)
listen 80 default ;
return 500 ;
这样, 设置好了默认的 80 请求,
如果用户使用ip地址访问时, 就会来到这个配置, 并且直接返回500错误!
最后, 别忘记更新一下总的配置文件
vi nginx.conf 打开主配置文件, 在http节点导入刚才的那个vhost_default.conf子配置文件
即: include vhost_default.conf
修改配置文件, 不要忘记重启Nginx
cd /usr/local/nginx/sbin/
./nginx -s reload
从Nginx层,将该IP地址加入黑名单,禁止其访问
cd 到nginx配置目录
vi deny_ip.conf
在里面输入
deny 107.149.184.144;
最后,在nginx.conf主配置文件的http节点
include deny_ip.conf
修改配置文件之后, 记得重启一下:
cd /usr/local/nginx/sbin/
./nginx -s reload
这些事情做完之后, 再通过命令netstat,发现显示该IP的http连接数目已经从原来的350个连接暴跌至几十个了
(或者建议 登录阿里云服务器控制台, 重启服务器实例,这样更加彻底)
从Linux防火墙,禁止该IP的访问
这个就比较底层了,暂时还不会 – -!!
网站安全记录之简单隐藏WordPress登录后台地址:
大家都知道, 默认的后台登录地址是
vwhm.net/wp-admin
现在需要在主题的functions.php中,使用一个wp钩子,进行更多一步验证
以后,就使用新的登录地址:
http://vwhm.net/wp-login.php?username=some one like you~
网站安全记录之修改root密码:
先用旧的root帐号ssh登陆
然后输入命令 passwd
接着输入新密码即可
网站安全记录之修改mysql密码:
先用ssh登陆
然后,使用旧密码登录 mysql -uroot -p
接下来执行3行命令:
use mysql;
UPDATE user SET password=PASSWORD(“new password”) WHERE user=’user name’;
FLUSH PRIVILEGES;
quit;
未完待续,下一章节,つづく