阿里云 ECS 被攻击的处理记录

登陆阿里云后台,发现阿里云的 web 防火墙显示有很多个 ip 对网站进行攻击

GET POST请求的攻击。我们通过 nginx 日志去看下,比如61.136.155.18的访问次数,发现没有这个 ip 的访问记录。应该是直接被阿里云的防火墙拦截了。另外发现有很多 POST请求.

只允许特定的 HTTP 请求访问

我用的是 hexo,没有 POST 请求,所以,可以直接在 NGINX 配置文件server段中加入

if ($request_method !~ ^(GET|HEAD)$ ) {
            return        444;
}

因为博客全部都是静态页面,不需要 POST 请求,可以直接禁止,只允许 GETHEAD

禁止 IP 直接访问

另外的话,我不希望客户端直接通过 ip 访问,如果通过 ip 访问,会直接禁止

server {
    listen  80;
    server_name _; #加入这条
    server_name www.fangwenjun.com fangwennjun.com awen.me www.awen.me;
    return 444; #返回444
    if ($request_method !~ ^(GET|HEAD|POST)$ ) {
            return        444;
        }
    rewrite ^(.*)$  https://awen.me$1 permanent; //跳转到 HTTPS
}

配置 nginx 开启 SSL

listen 443 ssl http2;
server_name awen.me www.awen.me;
index index.html index.htm index.php;
root  /www/;
ssl on;
ssl_certificate /usr/local/nginx/ssl/awen/fullchain.cer;
ssl_certificate_key /usr/local/nginx/ssl/awen/awen.me.key;
ssl_ciphers                EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers  on;
ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache          shared:SSL:50m;
ssl_session_timeout        1d;
ssl_session_tickets        on;
resolver                   114.114.114.114 valid=300s;
resolver_timeout           10s;    

配置 CDN

使用又拍云 CDN 加速,并且在 CDN 配置 SSL 证书,开启 HSTS 功能。