3. Un peu de sécurité :
J'utilise le tuto suivant pour mes réglages : https://upandclear.org/2015/09/17/mettre...-securite/ [https://archive.fo/IJ2ka] Screenshot_Archive_34
On commence par empêcher la connexion en root via ssh et on modifie le port par défault :
On modifie les lignes suivantes, vous dé-commentez en enlevant le # et changez les valeurs :
Par exemple le port 2653 ici.
Note : Vous pouvez trouver la liste des ports usuellement utilisés ici : https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels
On relance ssh :
Maintenant, à la prochaine connexion par ssh, vous serez obligé de vous connecter avec le compte de votre utilisateur et de là vous pourrez utiliser le compte root au besoin. Il faudra aussi utiliser le port que l'on a renseigné et non plus le port 22 par défaut.
Via un terminal linux, la commande de connexion sh devient :
On met en place portsentry qui va nous permettre d'empêcher le scanne des ports de la machine via un petit script dans iptables. On l'installe :
(On répond oui avec la touche "Entrée" sur la pop-up d'un ancien temps qui nous informe de blabla.)
On va le configurer via son fichier de configuration ^^
On modifie les lignes suivantes :
BLOCK_UDP="1"
(blocage des ports UDP en cas de détection de scanne)
BLOCK_TCP="1"
(blocage des ports TCP en cas de détection de scanne)
KILL_ROUTE="/sbin/route add -host $TARGET$ reject"
(blocage d’un scanne) - juste décommenter la ligne
KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"
(ajout de l’IP qui scanne dans iptables (firewall)) - juste dé-commenter la ligne
Note : on peut rechercher les termes en majuscules en faisant ctrl+w une fois dans l'éditeur nano.
On relance portsentry pour qu'il prenne en compte cette nouvelle configuration :
Maintenant, on va installer le parefeu et le configurer ensuite via un fichier de configuration que l'on crée tout d'abord dans le répertoire de notre utilisateur :
Dedans on va venir mettre les règles suivantes qui vont servir à bloquer tous les ports entrants sauf ceux avec une règle spécifique et laisser le traffic sortant libre ; on autorise le ping sur la machine mais on bloque le syn flood et le scanne de ports. Ce script repose sur celui proposé par Aerya dans son tutoriel (voir lien plus haut).
On copie cela :
Note : Bien penser à "CHANGER" le port dans la règle de "#Autorisation SSH entrant".
On copie ce fichier dans "init.d"
On rend le fichier exécutable :
On le met à exécution à chaque démarrage de la machine :
On peut mettre les règles en application :
Pour afficher les règles iptables en cours :
On peut supprimer le premier fichier :
On va maintenant ajouter fail2ban qui va bannir automatiquement pour une certaine durée les ips qui voudront se connecter en ssh mais qui fourniront trop de mauvais mots de passe.
On configure :
On en profite pour modifier l'email qui sera informé en cas de besoin, ici :
Note : Vous ne recevrez pas de mails directement, il faut effectuer quelques opérations pour que votre machine puisse envoyer des mails, voir le point "5. Partie mise à jour auto" pour cela.
Pour avoir des infos supplémentaires dans ces mails, changer cette ligne en :
On en registre et voilà :)
Si vous recevez des mails de ce type depuis plusieurs machines, vous pouvez modifier le fichier suivant afin de mettre un sujet de message distinctif de cette machine :
Et ajouter à la suite de Fail2Ban dans les sujets ce que vous voulez comme titre significatif.
Et finalement, on dit à Fail2Ban de se lancer une fois les règles iptables en place :
On rajoute donc "$iptablesrules" au début du fichier dans la ligne :
On peut relancer Fail2Ban :
4. Connexion ssh depuis l'extérieur :
Bon, une petite partie pour voir comment se connecter via ssh à cet ordinateur depuis une machine qui n'est pas sur le réseau local. Pour cela, on va rediriger un port spécifique de la fonction de routeur de la box pour un autre port spécifique de cette machine (les numéros de port peuvent être identique).
Pour info, voici la liste des ports utilisés normalement : https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels
Dans notre cas, ce serait le port 22 pour sh sur lequel il faudra rediriger, mais comme on va ensuite voir comme ajouté de la sécurité sur la machine, on va en utiliser directement un autre.
On se rend donc dans l'interface d'administration de notre box et on ajoute une redirection de port ainsi :
Nom de la règle : SSH Machine
Protocole : TCP
Port / Plage de ports : Port
Port(s) source : 2145 (exemple)
@ IP de destination ou nom de l'ordinateur : choisissez dans la liste la machine concernée
Port(s) de destination : le port ssh que vous avez rentré dans le fichier de configuration plus haut
Toujours attribuer cette règle à cet ordinateur : oui
Vous pouvez aussi trouver l'ip de votre box via cette interface.
A partir de là, pour vous connecter en ssh sur cette machine il y a deux possibilités :
- depuis votre réseau local : vous utilisez votre ip local (192.168.1.xxx) et le port ssh que vous avez renseigné dans les fichiers de configuration de la machine
- depuis un ordinateur situé en dehors de chez vous : vous utilisez votre ip public (trouvé via l'interface de la box) et le port ssh que vous avez spécifié comme entrant dans l'interface de la box
Si vous essayez d'utiliser votre ip public et le port de la box sur un ordi en local, vous n'arriverez pas à vous connecter. Cela ne fonctionnera qu'un temps si vous avez une ip dynamique associée à votre box. A vous de suivre les évolutions de votre ip.[/code]
J'utilise le tuto suivant pour mes réglages : https://upandclear.org/2015/09/17/mettre...-securite/ [https://archive.fo/IJ2ka] Screenshot_Archive_34
On commence par empêcher la connexion en root via ssh et on modifie le port par défault :
Code :
sudo nano /etc/ssh/sshd_config
On modifie les lignes suivantes, vous dé-commentez en enlevant le # et changez les valeurs :
Code :
Port 2653
PermitRootLogin no
Note : Vous pouvez trouver la liste des ports usuellement utilisés ici : https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels
On relance ssh :
Code :
sudo /etc/init.d/ssh restart
Maintenant, à la prochaine connexion par ssh, vous serez obligé de vous connecter avec le compte de votre utilisateur et de là vous pourrez utiliser le compte root au besoin. Il faudra aussi utiliser le port que l'on a renseigné et non plus le port 22 par défaut.
Via un terminal linux, la commande de connexion sh devient :
Code :
ssh username@ip.de.la.machine -p PORT_SSH
On met en place portsentry qui va nous permettre d'empêcher le scanne des ports de la machine via un petit script dans iptables. On l'installe :
Code :
sudo apt install portsentry
On va le configurer via son fichier de configuration ^^
Code :
sudo nano /etc/portsentry/portsentry.conf
On modifie les lignes suivantes :
BLOCK_UDP="1"
(blocage des ports UDP en cas de détection de scanne)
BLOCK_TCP="1"
(blocage des ports TCP en cas de détection de scanne)
KILL_ROUTE="/sbin/route add -host $TARGET$ reject"
(blocage d’un scanne) - juste décommenter la ligne
KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"
(ajout de l’IP qui scanne dans iptables (firewall)) - juste dé-commenter la ligne
Note : on peut rechercher les termes en majuscules en faisant ctrl+w une fois dans l'éditeur nano.
On relance portsentry pour qu'il prenne en compte cette nouvelle configuration :
Code :
sudo /etc/init.d/portsentry restart
Maintenant, on va installer le parefeu et le configurer ensuite via un fichier de configuration que l'on crée tout d'abord dans le répertoire de notre utilisateur :
Code :
sudo apt install iptables
sudo nano /home/utilisateur/iptablesrules.sh
Dedans on va venir mettre les règles suivantes qui vont servir à bloquer tous les ports entrants sauf ceux avec une règle spécifique et laisser le traffic sortant libre ; on autorise le ping sur la machine mais on bloque le syn flood et le scanne de ports. Ce script repose sur celui proposé par Aerya dans son tutoriel (voir lien plus haut).
On copie cela :
Code :
#!/bin/sh
### BEGIN INIT INFO
# Provides: iptablesrules
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Petites modif effectuees sur - IPtables Rules UpAndClear.org - Mettre en place un bouncer IRC (ZNC) avec ou sans Tor + un peu de sécurité
### END INIT INFO
# Reinitialisation tables
iptables -t filter -F
iptables -t filter -X
# Blocage trafic entrant
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
# Autorisation trafic sortant
iptables -t filter -P OUTPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
#Activation routage
echo 1 > /proc/sys/net/ipv4/ip_forward
#Ne pas toucher au trafic entrant déjà autorisé
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Autorisation loopback
iptables -t filter -A INPUT -i lo -p all -j ACCEPT
# Autorisation ICMP (Ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT
#Protection syn flood
iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT
#Protection scanne
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#Autorisation SSH entrant
iptables -A INPUT -p tcp --dport CHANGER -j ACCEPT
# Sauvegarder les regles pour qu elles soient chargees si reboot
iptables-save -c > /etc/iptables-save
Note : Bien penser à "CHANGER" le port dans la règle de "#Autorisation SSH entrant".
On copie ce fichier dans "init.d"
Code :
sudo cp /home/utilisateur/iptablesrules.sh /etc/init.d/iptablesrules
On rend le fichier exécutable :
Code :
sudo chmod +x /etc/init.d/iptablesrules
On le met à exécution à chaque démarrage de la machine :
Code :
sudo update-rc.d iptablesrules defaults
On peut mettre les règles en application :
Code :
sudo /etc/init.d/iptablesrules
Pour afficher les règles iptables en cours :
Code :
sudo iptables -L
On peut supprimer le premier fichier :
Code :
sudo rm -f /home/utilisateur/iptablesrules.sh
On va maintenant ajouter fail2ban qui va bannir automatiquement pour une certaine durée les ips qui voudront se connecter en ssh mais qui fourniront trop de mauvais mots de passe.
Code :
sudo apt install fail2ban
On configure :
Code :
sudo nano /etc/fail2ban/jail.conf
On en profite pour modifier l'email qui sera informé en cas de besoin, ici :
Code :
destemail = root@localhost
Pour avoir des infos supplémentaires dans ces mails, changer cette ligne en :
Code :
action = %(action_mwl)s
On en registre et voilà :)
Si vous recevez des mails de ce type depuis plusieurs machines, vous pouvez modifier le fichier suivant afin de mettre un sujet de message distinctif de cette machine :
Code :
sudo nano /etc/fail2ban/action.d/sendmail-whois-lines.conf
Et finalement, on dit à Fail2Ban de se lancer une fois les règles iptables en place :
Code :
sudo nano /etc/init.d/fail2ban
On rajoute donc "$iptablesrules" au début du fichier dans la ligne :
Code :
# Required-Start: $local_fs $remote_fs $iptablesrules
On peut relancer Fail2Ban :
Code :
sudo /etc/init.d/fail2ban restart
4. Connexion ssh depuis l'extérieur :
Bon, une petite partie pour voir comment se connecter via ssh à cet ordinateur depuis une machine qui n'est pas sur le réseau local. Pour cela, on va rediriger un port spécifique de la fonction de routeur de la box pour un autre port spécifique de cette machine (les numéros de port peuvent être identique).
Pour info, voici la liste des ports utilisés normalement : https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels
Dans notre cas, ce serait le port 22 pour sh sur lequel il faudra rediriger, mais comme on va ensuite voir comme ajouté de la sécurité sur la machine, on va en utiliser directement un autre.
On se rend donc dans l'interface d'administration de notre box et on ajoute une redirection de port ainsi :
Nom de la règle : SSH Machine
Protocole : TCP
Port / Plage de ports : Port
Port(s) source : 2145 (exemple)
@ IP de destination ou nom de l'ordinateur : choisissez dans la liste la machine concernée
Port(s) de destination : le port ssh que vous avez rentré dans le fichier de configuration plus haut
Toujours attribuer cette règle à cet ordinateur : oui
Vous pouvez aussi trouver l'ip de votre box via cette interface.
A partir de là, pour vous connecter en ssh sur cette machine il y a deux possibilités :
- depuis votre réseau local : vous utilisez votre ip local (192.168.1.xxx) et le port ssh que vous avez renseigné dans les fichiers de configuration de la machine
- depuis un ordinateur situé en dehors de chez vous : vous utilisez votre ip public (trouvé via l'interface de la box) et le port ssh que vous avez spécifié comme entrant dans l'interface de la box
Si vous essayez d'utiliser votre ip public et le port de la box sur un ordi en local, vous n'arriverez pas à vous connecter. Cela ne fonctionnera qu'un temps si vous avez une ip dynamique associée à votre box. A vous de suivre les évolutions de votre ip.[/code]