Changelog :
- modification anti-w00tw00t dans Fail2ban (nginx-badbots.conf) le 17/04
- rédaction initial du tuto le 28/02
Note:
- Logwatch fonctionne maintenant avec nginx le 05/03
Si vous avez déjà suivi le tuto sécurité avant cette date,
La manip' est expliqué en détail ici
Tuto sur la sécurisation de base
Adaptation à Nginx de l'ancien tuto pour les parties Logwatch, Fail2ban et Logs
Serveur Mail
On va commencer par mettre en place un serveur mail léger pour avoir un retour sur ce qui se passe sur notre serveur.
Installation de Postfix :
apt-get install -f postfix mailutils
Lors de l'installation, laisser la configuration par défaut et dans "
Nom de courrier" mettre le nom de votre serveur.
On teste :
echo 'Salut, je suis un email.' | mail -s 'Hello world' votre_mail@gmail.com
Redirection des mails root :
nano /etc/aliases
Et rajouter à la fin :
root: votre_mail@gmail.com
Pour valider les changements :
newaliases
Nouveau test :
echo 'Salut, je suis un email.' | mail -s 'Hello world' root
Mail lors d'une connexion root :
On va mettre en place un mail lors des connexions ssh root, vous recevrez ainsi un mail à chaque connexion sur le compte.
nano /root/.bashrc
Ajouter à la fin :
echo 'Acces Shell Root le ' `date` `who` | mail -s 'Connexion serveur via root' root
Pour envoyer des mails via le système, on n'a pas besoin d'avoir Postfix qui écoute sur le port 25 :
nano /etc/postfix/master.cf
Commenter la ligne suivante (avec #) :
#smtp inet n - - - - smtpd
On relance Postfix :
/etc/init.d/postfix restart
Si les mails coincent avec Gmail/Hotmail sur les nouveaux Kimsufi, c'est parce que par défaut l'IPV6 n'a pas de reverse configuré.
Pour éviter le souci on va forcer l'IPV4 :
nano /etc/postfix/main.cf
Et ajouter à la fin :
inet_protocols=ipv4
Relancer Postfix :
/etc/init.d/postfix restart
On a fini de configurer le serveur pour qu'il nous envoie des mails en cas de problèmes.
Logwatch
Logwatch est un programme qui vous envoie un récapitulatif de ce qui se passe sur votre serveur tout les jours.
Installation :
apt-get install -f logwatch
Configuration basique :
nano /usr/share/logwatch/default.conf/logwatch.conf
Modifier les valeurs suivantes :
Output = mail
MailTo = root
On enregistre et on sort.
Configuration pour Nginx
On va créer un premier fichier :
nano /usr/share/logwatch/default.conf/logfiles/nginx.conf
Et copier coller :
########################################################
# Define log file group for nginx
########################################################
# What actual file? Defaults to LogPath if not absolute path….
LogFile = nginx/*access.log
LogFile = nginx/*access.log.1
LogFile = nginx/*error.log
LogFile = nginx/*error.log.1
# If the archives are searched, here is one or more line
# (optionally containing wildcards) that tell where they are…
#If you use a “-” in naming add that as well -mgt
Archive = nginx/*access.log*
Archive = nginx/*error.log*
# Expand the repeats (actually just removes them now)
*ExpandRepeats
# Keep only the lines in the proper date range…
*ApplyhttpDate
# vi: shiftwidth=3 tabstop=3
Et on passe au deuxième fichier :
cp /usr/share/logwatch/default.conf/services/http.conf /usr/share/logwatch/default.conf/services/nginx.conf
mv /usr/share/logwatch/default.conf/services/http.conf /usr/share/logwatch/default.conf/services/http.conf.bak
On édite :
nano /usr/share/logwatch/default.conf/services/nginx.conf
Et on modifie en début de fichier :
Title = “nginx”
LogFile = nginx
Et enfin le dernier fichier (rien à modifier là) :
cp /usr/share/logwatch/scripts/services/http /usr/share/logwatch/scripts/services/nginx
On relance :
logwatch restart
Et vous devriez recevoir un mail avec le récapitulatif et ensuite un mail journalier.
Pour jeter un œil sur les logs du jour :
logwatch --range today
Sécurisation SSH
Les principales attaques sur internet se font sur les ports 21/22 et 80
On va donc changer le port SSH et interdire la connexion en root, on commence par créer un utilisateur qui servira à se connecter en console, ça ne doit pas être un utilisateur de la seedbox, pour vivre heureux vivons cachés :
mkdir /home/votre_user
useradd -s /bin/bash votre_user
passwd votre_user
chown -R votre_user:votre_user /home/votre_user
On édite :
nano /etc/ssh/sshd_config
Modifier les valeurs suivantes :
Port 22025 # Choisissez un n° de port perso et non utilisé , pas celui là...
PermitRootLogin no
# Choix des utilisateurs autorisés à se connecter,
# ajouter l'user qu'on a créé plus haut, plus les utilisateurs de ruTorrent pour qu'ils conservent l'accès en SFTP.
AllowUsers votre_user userbox1 userbox2
Sans virgule, juste un espace entre chaque users.
On sauvegarde avec Ctrl+x et on relance le daemon :
/etc/init.d/ssh restart
On teste sa configuration maintenant sans fermer la fenêtre actuelle, en cas de problème remettre le port 22 ou essayer avec un autre. Vous ne pourrez plus vous connecter en root ! Il va falloir vous connecter avec l'utilisateur créé au début.
Une fois loggé, la commande :
su vous permettra de passer root