GNU/Linux >> Tutoriels Linux >  >> Debian

Augmentez votre sécurité IPv4 avec Fail2Ban et Tinyhoneypot sur Debian Jessie

Il s'agit d'un exercice de cinq minutes pour augmenter la sécurité sur une machine adressée IPv4. Le but de la configuration décrite dans ce didacticiel est de verrouiller les analyseurs de ports et les ouvre-ports malveillants pendant un certain temps. Cet exercice n'est testé et appliqué que sur Debian Jessie. Pendant l'exercice, chaque commande est validée en tant que root. C'est à vous de décider comment obtenir un accès root.

Soit su -, sudo, login console, etc...

Instruction pour les débutants paresseux :lorsque je représente l'invite bash, copiez simplement la partie en gras du texte dans la vôtre.

Les ingrédients

  • Le logiciel fail2ban est capable de gérer dynamiquement vos règles de pare-feu pour bloquer les pirates.
  • Le tinyhoneypot est capable d'écouter sur un port TCP/IP et de consigner les détails des ouvreurs.
  • Le service xinetd démarre tinyhoneypot et gère ses ports d'écoute.

Installer les ingrédients : (Il suffit de copier-coller la partie en gras du texte)

[email protected]:~# apt-get install tinyhoneypot fail2ban xinetd

Paramètres

Pour que SSH écoute sur un port différent, remplacez votre fichier de configuration ssh par un autre port ssh :

[email protected]:~# sed -i.orig 's/Port 22/Port 2201/m' /etc/ssh/sshd_config

Votre configuration /etc/ssh/sshd_config d'origine est enregistrée sous /etc/ssh/sshd_config.orig

Lorsque vous redémarrez votre service SSH, il écoutera désormais sur le port 2201 (pas sur le 22).

[email protected]:~# service ssh restart
[email protected]:~# netstat -lptn | grep ssh
tcp 0 0 0.0.0.0:2201 0.0.0.0:* LISTEN 4313/sshd
tcp6 0 0 :::2201 :::* LISTEN 4313/sshd

Jusqu'ici tout va bien..

Configurez Xinetd pour démarrer tinyhoneypot et écouter sur le port 22 de TCP :

[email protected]:~# cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/

Modifiez votre /etc/xinetd.d/thp-pasv comme suit :

[email protected]:~# cat /etc/xinetd.d/thp-pasv
# default: on
# description: thp-ftpd calls the generic thpsvcs with param "ftp",
#       resulting in an ftpd emulation.

service thp-pasv
{
        type                    = UNLISTED
        socket_type             = stream
        protocol                = tcp
        port                    = 22
        wait                    = no
        user                    = thpot
        server                  = /usr/sbin/thpot
        server_args             = nullresp
        nice                    = 10
        disable                 = no
        instances               = 1
        per_source              = 1

}

(RE)Démarrez xinetd avec vos nouveaux paramètres et assurez-vous qu'il écoute sur le port 22.

[email protected]:~# service xinetd restart
[email protected]:~# netstat -lptn | grep xinetd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4567/xinetd

Assurez-vous qu'il fonctionne

Ouvrez une connexion ssh depuis une autre machine.

[email protected]:~$ ssh 192.168.88.212

Au bout d'un moment, rien ne devrait se passer, interrompez-le par [Ctrl + C]

Et vérifiez les entrées du journal sur votre ordinateur de test :

[email protected]:~# cat /var/log/thpot/captures
Feb 29 13:02:10 SID=56D4334221165.nullresp PID=4837 SRC=192.168.88.242 SPT=47187 ET=00:00:11 BYTES=39

Si tout s'est bien passé, il devrait y avoir une entrée dans votre journal de capture.

Permet de régler votre Fail2Ban pour coopérer avec TinyHoneyPot

[email protected]:~# cd /etc/fail2ban/
[email protected]:/etc/fail2ban# cp -v jail.conf jail.local

Ne modifiez jamais votre jail.conf !! Faites-en une copie sous jail.local et modifiez UNIQUEMENT le fichier .local !

Trouvez la section [ssh] dans votre jail.local et modifiez-la en fonction du [Port 2201] de /etc/ssh/sshd_config

[ssh]

enabled  = true
port     = 2201
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Marque et entrée dans la section JAIL de jail.local :

Cela obligera Fail2Ban à lire le fichier journal de tinyhoneypot et à en obtenir l'adresse IPv4 à refuser. Je recommande de le placer après la section [ssh]. Il s'agit de la 137e rangée.

[thp-ssh]

enabled  = true
port     = all
filter   = thpot
logpath  = /var/log/thpot/captures
banaction = iptables-allports
maxretry = 1
findtime = 1800
bantime = 99999

Fail2ban devrait avoir un filtre afin de savoir quoi refuser. Là est une macro qui remplace l'adresse IPv4. Créez un filtre pour celui-ci :

[email protected]:~# cat /etc/fail2ban/filter.d/thpot.local
[Definition]

failregex = SRC=<HOST>
ignoreregex =

C'est fait !

Juste un petit test....

[email protected]:~# service fail2ban restart

Vous devriez voir quelque chose de similaire à la fin de /var/log/fail2ban.log

2016-02-29 13:54:06,915 fail2ban.jail   [6102]: INFO    Creating new jail 'thp-ssh'
2016-02-29 13:54:06,915 fail2ban.jail   [6102]: INFO    Jail 'thp-ssh' uses pyinotify
2016-02-29 13:54:06,920 fail2ban.jail   [6102]: INFO    Initiated 'pyinotify' backend
2016-02-29 13:54:06,922 fail2ban.filter [6102]: INFO    Added logfile = /var/log/thpot/captures
2016-02-29 13:54:06,923 fail2ban.filter [6102]: INFO    Set maxRetry = 1
2016-02-29 13:54:06,925 fail2ban.filter [6102]: INFO    Set findtime = 1800
2016-02-29 13:54:06,926 fail2ban.actions[6102]: INFO    Set banTime = 99999
2016-02-29 13:54:06,934 fail2ban.jail   [6102]: INFO    Jail 'ssh' started
2016-02-29 13:54:06,940 fail2ban.jail   [6102]: INFO    Jail 'thp-ssh' started

Vous pouvez voir vos valeurs personnalisées depuis jail.local et les ajuster si nécessaire.

findtime = 1800
bantime = 99999

Jetez un œil à vos règles iptables actuelles :

[email protected]:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:05:17 2016
*filter
:INPUT ACCEPT [2:64]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:fail2ban-ssh - [0:0]
:fail2ban-thp-ssh - [0:0]
-A INPUT -p tcp -j fail2ban-thp-ssh
-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
-A fail2ban-thp-ssh -j RETURN
COMMIT
# Completed on Mon Feb 29 14:05:17 2016

Vérifions la règle de refus d'une autre machine :

[email protected]:~# ssh 192.168.88.212
^C
[email protected]:~# ssh 192.168.88.212
ssh: connect to host 192.168.88.212 port 22: Connection refused

La première action ne fera rien. L'attaquant l'interrompra probablement au bout d'un moment La deuxième action sera refusée.

Vos règles iptables devraient maintenant ressembler à ceci :

[email protected]:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:10:53 2016
*filter
:INPUT ACCEPT [4:542]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:88]
:fail2ban-ssh - [0:0]
:fail2ban-thp-ssh - [0:0]
-A INPUT -p tcp -j fail2ban-thp-ssh
-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
-A fail2ban-thp-ssh -s 192.168.88.242/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-thp-ssh -j RETURN
COMMIT
# Completed on Mon Feb 29 14:10:53 2016

Le résultat est :le PC de l'attaquant est REJETÉ sur chaque port.

Le post-scriptum

Au moment de la rédaction de ce HowTo, ni Fail2Ban ni tinyhoneypot n'étaient capables de gérer IPv6 Si vous pensez que ce HowTo est utile, partagez-le ! Faites-le savoir à vos amis.


Debian
  1. Accélérez Apache avec mod_pagespeed et Memcached sur Debian 8

  2. Comment protéger votre serveur avec badIPs.com et signaler les IP avec Fail2ban sur Debian

  3. Configuration de la réplication maître-maître avec MySQL sur Debian 8 (Jessie)

  4. Comment installer WebDAV avec Lighttpd sur Debian 8 (Jessie)

  5. Sécurité Linux :protégez vos systèmes avec fail2ban

Tutoriel du serveur Debian 8 Jessie LAMP avec Apache 2, PHP 5 et MariaDB (au lieu de MySQL)

Comment installer et configurer vsftpd avec TLS sur Debian 8 (Jessie)

Comment chiffrer vos données avec EncFS sur Debian 8 (Jessie)

Comment installer TYPO3 7 avec Nginx et MariaDB sur Debian 8 (Jessie)

Chrooter Apache 2.4 avec mod_unixd sur Debian 8 (Jessie)

Installer et configurer Fail2ban sur Debian 11