Port knocking et spa:Spa:Parametrage

From aldeid
Jump to: navigation, search

Paramétrage

Une fois ceci fait, éditez le fichier access.conf :

# vim /etc/fwknop/access.conf

Puis modifier le fichier comme suit (en adaptant les IDs des clés) :

SOURCE: ANY;
OPEN_PORTS: tcp/22;
DATA_COLLECT_MODE: PCAP;
GPG_REMOTE_ID: C67130D2;
GPG_DECRYPT_ID: 37673824;
GPG_DECRYPT_PW: Password;
GPG_HOME_DIR: /root/.gnupg;
FW_ACCESS_TIMEOUT: 60;

Redémarrez le démon fwknop :

# /etc/init.d/fwknop restart

Tests

A partir d’une console client, entrez la commande suivante :

$ ./fwknop \
-A tcp/22 \
--gpg-recip 37673824 \
--gpg-sign C67130D2 \
–w \
–k 192.168.1.1

Les paramètres principaux sont explicités dans le tableau qui suit.

ParamètreExplication
-A, -- Access <port list>Liste du ou des protocoles à ouvrir sur le serveur. Format : tcp/22,udp/53
--gpg-recip <key ID>ID de la clé du serveur
--gpg-sign <key ID>ID de la clé du client
-a, --allow-IP <IP>Indique quelle adresse IP doit être déverrouillée par le firewall. Peut être utilisé dans le cas où vous voudriez par exemple offrir un accès maîtrisé à une personne distante au serveur SSH
-s, --source-IPDemande au serveur fwknop d’utiliser l’adresse source à partir de laquelle le paquet SPA est généré, ce qui peut être nécessaire pour une authentification dans un système NAT. Dans les autres cas, utilisez -w
-w, --whatismyipRésout l’adresse IP du client via le site http://www.whatismyip.org/
-k, --knock-dst <IP>Synonyme de –D (IP de destination)
-D, --destination <IP>Adresse IP du serveur
--Spoof-src <IP>Spoofing d’adresse IP source. Nécessite d’être loggué en tant que root.
-d, --debugActivation du mode debug
-v, --verboseActivation du mode verbeux

Remarques :

  • Pour obtenir la liste exhaustive des paramètres, utilisez la commande
fwknop --help.
  • Si vous êtes sur le même réseau que le serveur (exemple : NAT), remplacez le paramètre –w par –s afin de forcer la non résolution d’IP par le service www.whatismyip.org.
  • Si vous obtenez le message d’erreur suivant dans vos mails : “fwknopd: remote time stamp is older than 120 second max age”, cela signifie que le paquet SPA réceptionné est périmé. Cela provient certainement d’un décalage horaire entre le serveur et le client. Pour remédier à ce problème, il est conseillé de synchroniser le serveur et le client avec un serveur NTP.

Les tests qui suivent sont menés à partir du client. Commençons par nous assurer que le port 22 est filtré :

$ nmap -p 22 192.168.182.132

Starting Nmap 4.60 ( http://insecure.org ) at 2008-05-12 15:47 Paris, Madrid
Interesting ports on 192.168.182.132:
PORT   STATE    SERVICE
22/tcp filtered ssh
MAC Address: 00:0C:29:FC:10:35 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 1.063 seconds

Envoyons maintenant le paquet SPA au serveur :

$ ./fwknop -A tcp/22 --gpg-recip C664C941 --gpg-sign D23446E5 -s -k 192.168.182.132
[+] Starting fwknop client (SPA mode)...
[+] Enter the GnuPG password for signing key: D23446E5

GnuPG signing password:

[+] Building encrypted Single Packet Authorization (SPA) message...
[+] Packet fields:

        Random data:    9103019254553184
        Username:       a011830
        Timestamp:      1210599773
        Version:        1.9.3
        Type:           1 (access mode)
        Access:         0.0.0.0,tcp/22
        SHA256 digest:  YZd+6z4V/zOsVrgdo4YyDzOtWjgWuPK4h0ntjXWzSIo

[+] Sending 1048 byte message to 192.168.182.132 over udp/62201...

Vérifions enfin que l’accès nous est ouvert :

$ nmap -p 22 192.168.182.132

Starting Nmap 4.60 ( http://insecure.org ) at 2008-05-12 15:51 Paris, Madrid
Interesting ports on 192.168.182.132:
PORT   STATE SERVICE
22/tcp open  ssh
MAC Address: 00:0C:29:FC:10:35 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.843 seconds

Par ailleurs, la commande suivante permet d’afficher les logs syslog en temps réel, des messages fwknop uniquement :

# clear; tail –f /var/log/syslog | grep fwknop

Lorsque vous envoyez un paquet SPA authentifié correctement, des messages du type suivant doivent alors apparaître :

May 13 04:53:08 aldeid fwknopd: received valid GnuPG encrypted packet (signed with required key ID: "D23446E5")
  from: 192.168.1.17, remote user: a011830, client version: 1.9.3 (SOURCE line num: 114)
May 13 04:53:08 aldeid fwknopd: add FWKNOP_INPUT 192.168.1.17 -> 0.0.0.0/0(tcp/22) ACCEPT rule 60 sec
May 13 04:54:09 aldeid fwknop(knoptm): removed iptables FWKNOP_INPUT ACCEPT rule for 192.168.1.17 -> 0.0.0.0/0(tcp/22),
  60 sec timeout exceeded

Démarrage automatique de fwknop

Les commandes suivantes permettent d’ajouter fwknop dans tous les runlevels :

# cd /etc/init.d
# update-rc.d fwknop defaults 95

Vérification :

# find /etc/rc*.d -name *fwknop
/etc/rc0.d/K95fwknop
/etc/rc1.d/K95fwknop
/etc/rc2.d/S95fwknop
/etc/rc3.d/S95fwknop
/etc/rc4.d/S95fwknop
/etc/rc5.d/S95fwknop
/etc/rc6.d/K95fwknop




Single Packet Authorization : Fwknop
[Sommaire]
Comparaison entre Port Knocking et SPA