Закроем доступ к файлам, которые могут вызывать повышенный интерес:
location ~ /.svn/ {
deny all;
}
Можно разрешить/запретить доступ к файлам лишь с определенных ip-адресов, используя директивы allow и deny:
location /server-status {
allow 111.111.111.111;
allow 11.11.11.11;
deny all;
}
Также для разграничения доступа к файлам можно использовать директивы auth_basic и auth_basic_user_file — в этом случае пользователю необходимо будет ввести логин/пароль для доступа:
location /admin/ {
auth_basic "Enter password to access";
auth_basic_user_file /etc/nginx/basic.auth;
}
Также можно комбинировать эти два способа:
location /admin/ {
satisfy any;
allow 111.111.111.111;
allow 11.11.11.11;
deny all;
auth_basic "Enter password to access";
auth_basic_user_file /etc/nginx/basic.auth;
}
Защититься от запросов к несуществующим файлам на Nginx можно так:
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
После перезапускаем Nginx одной из команд:
systemctl reload nginx
service nginx reload
В зависимости от определенного IP-адреса Nginx может выполнять такие действия, как перенаправление:
location / {
if ($remote_addr != 111.111.111.111) {
return 301 https://$host$request_uri;
}
}
- в данном примере мы перенаправляем всех посетителей по пути https://$host$request_uri, кроме запросов с IP-адреса 111.111.111.111.
Защиту от перебора паролей можно организовать c использованием iptables:
Блокирование IP на время, если количество запросов в секунду превышает какое-либо разумное количество
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW
-m recent --name bhttp --set
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW
-m recent --name bhttp --update --seconds 120
--hitcount 360 -j DROP
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -j ACCEPT