GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment utiliser Port Knocking sur Ubuntu pour masquer le port SSH

Vous connaissez tous ces vieux films de gangsters où un mec frappe à la porte pour entrer ? Port knocking est exactement cela, juste pour votre serveur. Changer votre port ssh par défaut ne garantit pas que vous ne serez pas piraté. Les pirates utilisent souvent des outils pour effectuer des analyses automatisées des ports ouverts avant d'attaquer un serveur. Port Knocking est un moyen par lequel vous pouvez vous défendre contre les scanners de ports. Il refuse l'accès à un port protégé jusqu'à ce qu'un client accède à une séquence d'autres ports dans le bon ordre à l'avance.

L'installation de port knocking sur Ubuntu est facile. Je vais vous montrer dans cet article comment installer et configurer le port knocking. Les étapes de ces tutoriels devraient également fonctionner pour Debian 8.

Étape 1 :Assurez-vous que tous les packages requis sont installés

Toutes les commandes ci-dessous ne doivent pas être exécutées en tant qu'utilisateur root. Je ne veux pas ajouter sudo à toutes les commandes, j'utilise donc :

sudo su

pour devenir utilisateur root. La toute première étape consiste à mettre à jour les listes de packages Ubuntu :

apt-get update

Installez ensuite le serveur SSH (si vous ne l'avez pas déjà installé).

apt-get install openssh-server

Installez maintenant le logiciel knockd qui est le démon qui contrôle le port knocking.

apt-get install knockd
Get:1 http://security.debian.org wheezy/updates Release.gpg [1,554 B]
Get:2 http://security.debian.org wheezy/updates Release [102 kB]
Get:3 http://security.debian.org wheezy/updates/main amd64 Packages [336 kB]
Hit http://mirrors.digitalocean.com wheezy Release.gpg
Hit http://mirrors.digitalocean.com wheezy Release
Get:4 http://security.debian.org wheezy/updates/main Translation-en [195 kB]
Hit http://mirrors.digitalocean.com wheezy/main amd64 Packages
Hit http://mirrors.digitalocean.com wheezy/main Translation-en
Fetched 635 kB in 1s (358 kB/s)
Reading package lists... Done
[email protected]:~#
[email protected]:~# apt-get install openssh-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
openssh-client
Suggested packages:
ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard ufw
The following packages will be upgraded:
openssh-client openssh-server
2 upgraded, 0 newly installed, 0 to remove and 32 not upgraded.
Need to get 1,364 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? 

Appuyez sur Y puis sur Entrée pour continuer.

Après avoir installé le package, vous devez installer le pare-feu du noyau iptables. Exécuter :

apt-get install iptables

Étape 2 : Ajouter des règles à iptables

Tout d'abord, nous vidons les règles de pare-feu existantes et veillons à ce que les connexions sortantes ne soient pas abandonnées.

iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
iptables --policy OUTPUT ACCEPT

Nous voulons nous assurer d'autoriser toutes les connexions établies et les sessions en cours via le pare-feu, sinon le pare-feu bloquerait la session SSH en cours :

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Remarque  : La règle ci-dessus n'a pas d'espaces de chaque côté de la virgule dans STABLISHED,RELATED.

Utilisez ensuite la règle suivante pour bloquer le port entrant 22 (SSH) :

iptables -A INPUT -p tcp --destination-port 22 -j DROP

Une fois que vous avez établi vos règles iptables, vous pouvez automatiser le processus de restauration au redémarrage avec iptables-persistent. Nous pouvons le télécharger à partir du référentiel par défaut d'Ubuntu :

apt-get install iptables-persistent
Current iptables rules can be saved to the configuration file ?
? /etc/iptables/rules.v4. These rules will then be loaded automatically ?
? during system startup. ?
? ?
? Rules are only saved automatically during package installation. See the ?
? manual page of iptables-save(8) for instructions on keeping the rules ?
? file up-to-date. ?
? ?
? Save current IPv4 rules?
Current iptables rules can be saved to the configuration file ?
? /etc/iptables/rules.v6. These rules will then be loaded automatically ?
? during system startup. ?
? ?
? Rules are only saved automatically during package installation. See the ?
? manual page of ip6tables-save(8) for instructions on keeping the rules ?
? file up-to-date. ?
? ?
? Save current IPv6 rules?

Lors de l'installation, le programme vous demandera d'enregistrer les règles iptables actuelles (ipV4 et ipV6), sélectionnez simplement Oui pour les deux.

Enregistrez l'ensemble de règles actuel dans un fichier avec la commande iptables-save. Ce fichier peut être utilisé ultérieurement par iptables-restore pour restaurer la même configuration iptables :

iptables-save
 # Generated by iptables-save v1.4.14 on Tue Feb 23 04:59:28 2016
*filter
:INPUT ACCEPT [1:40]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [17:1976]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
COMMIT
# Completed on Tue Feb 23 04:59:28 2016

Désormais, vous resterez connecté à votre connexion existante tout en bloquant les autres connexions sur le port SSH.

Ensuite, nous devons configurer knockd.

Pour configurer le service, nous devrons éditer le fichier de configuration /etc/knockd.conf. Ouvrez le fichier avec nano :

nano /etc/knockd.conf

Vous verrez les sections qui ressembleront à ceci.

[options]
UseSyslog

[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn

[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
  • Dans la section "options", nous voyons un nom de directive UseSyslog . fichier journal est assez évident - il enregistre toutes les tentatives de frappe
  • En dessous, nous avons deux sections : openSSH et closeSSH. Le premier permettra au heurtoir d'accéder au port 22 (SSH), et le second fermera le port lorsque le heurtoir sera terminé.
  • knockd remplace automatiquement %IP% par l'adresse IP du client qui a envoyé le coup, de sorte que vous ne pouvez ouvrir le port qu'au client autorisé.
sequence = 9000,8000,7000

Cela signifie que cet ensemble de règles correspondra si la même adresse IP demande une connexion sur le port 7000, suivi directement du port 8000, suivi enfin du port 9000. Il est fortement conseillé de modifier les ports par défaut et leur ordre car l'ordre par défaut est bien également connu des attaquants.

seq_timeout = 5

L'option "seq_timeout" définit en secondes combien de temps vous avez le temps de fournir tous les numéros pour le coup. Cette valeur par défaut devrait convenir et ne posera pas de problème si vous générez automatiquement vos coups.

command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

Spécifiez la commande à exécuter lorsqu'un client effectue le bon port-knock. Toutes les instances de %IP% seront remplacées par l'adresse IP du knocker.

tcpflags = syn

Faites attention aux paquets qui doivent être utilisés pour définir cet indicateur, dans ce cas les paquets syn. Lors de l'utilisation des drapeaux TCP, knockd IGNORERA les paquets TCP qui ne correspondent pas aux drapeaux.

Activez maintenant le knockd. Modifiez le fichier /etc/default/knockd avec nano :

nano /etc/default/knockd

et changez :

START_KNOCKD=0

à

START_KNOCKD=1

après cette sauvegarde et quittez. Si vous avez plusieurs adaptateurs réseau ou si vous rencontrez des problèmes pour lesquels knockd ne démarre pas automatiquement au démarrage du système, vous pouvez spécifier manuellement l'interface réseau à écouter en décommentant et en modifiant la deuxième ligne KNOCKD_OPTS.

Puis lancez knockd manuellement :

service knockd start

Cela démarrera le démon et vous permettra de modifier les ensembles de règles iptables en appuyant sur les séquences de ports.

Vous avez installé les packages requis, si vous êtes déconnecté de votre serveur, pour vous reconnecter, vous devez frapper les ports que vous avez définis dans le bon ordre pour établir une connexion SSH.

Étape 3 : Accéder au serveur lorsque knockd est en cours d'exécution

Si vous avez suivi les étapes ci-dessus, vous ne pourrez plus vous connecter directement au serveur SSH sans frapper de port.

Vous ne devriez recevoir aucune réponse du serveur et le client SSH devrait expirer. C'est parce que notre démon SSH est actuellement bloqué par iptables. Tapez ctrl-C pour mettre fin à la tentative SSH si elle n'expire pas automatiquement.

Tester le knocking avec un client telnet

Pour les utilisateurs Linux :installez le package telnet avec apt.

Pour les utilisateurs Windows :vous pouvez installer le client Telnet en accédant à la section "Programmes", recherchez "Activer ou désactiver les fonctionnalités Windows", à partir de là, activez le client Telnet.

Tapez la commande suivante dans votre invite de commande (remplacez la séquence de port par votre séquence personnalisée) :

telnet youripaddress 7000
telnet youripaddress 8000
telnet youripaddress 9000

Vous devez faire tout cela en 5 secondes car c'est le délai imposé pour la configuration. Maintenant, essayez de vous connecter à votre serveur via SSH. Vous pourrez accéder à la connexion.

Exécutez les commandes ci-dessus dans l'ordre inverse pour fermer le serveur SSH.

telnet youripaddress 9000
telnet youripaddress 8000
telnet youripaddress 7000

La meilleure partie du port knocking est que vous pouvez le configurer parallèlement à l'authentification par clé privée. Si vous configurez les deux, il n'y a pratiquement aucune chance que quelqu'un puisse accéder ou se connecter tant qu'il ne connaît pas à la fois les ports et la clé privée.


Ubuntu
  1. Comment utiliser la commande tail dans Ubuntu Linux

  2. Comment utiliser la commande string dans Ubuntu

  3. Comment utiliser la commande netplan sur Ubuntu

  4. Comment utiliser un gestionnaire de tâches dans Ubuntu pour surveiller le système

  5. Comment faire expirer les règles iptables ?

Comment installer et utiliser la commande Exa sur Ubuntu 20.04

Comment installer le serveur OpenSSH sur Ubuntu 20.04 LTS

Comment changer le port SSH dans Ubuntu

Comment utiliser Port Knocking pour sécuriser le service SSH sous Linux

Comment changer le port SSH dans CentOS

Comment changer le port SSH sur Ubuntu ?