Évaluer la sécurité et les bonnes pratiques sur le serveur:
Installer le paquet apache2-utils.
Créer le fichier .htpasswd et créer l'utilisateur voulu:
htpasswd -c /var/www/.htpasswd login
Le paramètre -c permet de créer le fichier.
Modifier le fichier de configuration du domaine Nginx en conséquence:
location / { index index.html index.htm; auth_basic "Login"; auth_basic_user_file /var/www/.htpasswd; } # Protect hidden file to read/write access location ~ /\. { deny all; }
Relancer Nginx.
Il est possible de désactiver l'authentification pour une page en particulier :
location /une/url/bien/precise/ { auth_basic off; }
Ce bloc location doit être situé au même niveau que l'autre bloc qui contient l'instruction d'authentification, et doit aussi contenir les instructions pour traiter la requête (proxy_pass, etc).
https://github.com/Naereen/Nginx-Fancyindex-Theme
Ne pas mettre audoindex on; en même temps que fancyindex on; !
server_tokens off; # cache la version de Nginx more_set_headers "Server: Unknown"; # modifie l'en-tête Server
location ~* (/favicon.ico|/apple-touch-icon-precomposed.png|/apple-touch-icon.png|/robots.txt) { access_log off; log_not_found off; }
Pour ne pas logger les requêtes faites par les User-Agents commençant par HetrixTools :
# en-dehors du bloc server : map $http_user_agent $loggable { ~^HetrixTools 0; default 1; } # dans le bloc server : access_log /var/log/nginx/access.log combined if=$loggable;
Dans le bloc http du fichier /etc/nginx/nginx.conf:
include /etc/nginx/blacklist;
Dans le fichier /etc/nginx/blacklist:
map $http_user_agent $block_ua { default 0; ~*profound 1; ~*scrapyproject 1; ~*netcrawler 1; ~*nmap 1; ~*sqlmap 1; ~*slowhttptest 1; ~*nikto 1; "~*jersey avec espace" 1; ~*brandwatch 1; ~*magpie-crawler 1; ~*mechanize 1; ~*python-requests 1; ~*redback 1; }
Dans les virtual hosts (section http):
if ($block_ua) { return 444; }
Les erreurs 444 sont logguées dans /var/log/nginx/access.log.