Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Dans l'article prĂ©cĂ©dent Nous avons expliquĂ© comment lancer une version stable de Suricata sur Ubuntu 18.04 LTS. Configurer un IDS sur un nƓud unique et connecter des ensembles de rĂšgles gratuits est assez simple. Aujourd'hui, nous allons voir comment protĂ©ger le rĂ©seau d'entreprise contre les types d'attaques les plus courants grĂące Ă  Suricata installĂ© sur un serveur virtuel. Pour cela, nous aurons besoin d'un VDS sous Linux avec deux cƓurs de calcul. La taille de la mĂ©moire RAM dĂ©pend de la charge : pour certains, 2 Go suffisent, tandis que pour des tĂąches plus sĂ©rieuses, 4 ou mĂȘme 6 Go peuvent ĂȘtre nĂ©cessaires. L'avantage de la machine virtuelle rĂ©side dans les possibilitĂ©s d'expĂ©rimentation : on peut commencer avec une configuration minimale et augmenter les ressources au fur et Ă  mesure des besoins.

Snort ou Suricata. Partie 3 : protéger le réseau de bureauPhoto : Reuters

Fusion des réseaux

DĂ©ployer l'IDS sur une machine virtuelle peut d'abord ĂȘtre nĂ©cessaire pour des tests. Si vous n'avez jamais eu affaire Ă  de telles solutions, il n'est pas judicieux de se prĂ©cipiter pour commander du matĂ©riel physique et changer l'architecture rĂ©seau. Il vaut mieux tester le systĂšme de maniĂšre sĂ©curisĂ©e et sans dĂ©penses superflues, afin de dĂ©terminer les besoins en ressources de calcul. Il est important de comprendre que tout le trafic d'entreprise devra passer par un seul nƓud externe : pour connecter le rĂ©seau local (ou plusieurs rĂ©seaux) au VDS avec l'IDS Suricata installĂ©, vous pouvez utiliser SoftEther — un serveur VPN multiplateforme facile Ă  configurer, offrant un chiffrement fiable. La connexion Internet du bureau peut ne pas avoir d'IP rĂ©elle, donc il est prĂ©fĂ©rable d'utiliser un VPS. Il n'y a pas de paquets prĂ©parĂ©s dans le dĂ©pĂŽt Ubuntu, le logiciel doit ĂȘtre tĂ©lĂ©chargĂ© soit depuis le site du projet, soit depuis un dĂ©pĂŽt externe sur le service Launchpad (si vous lui faites confiance) :

sudo add-apt-repository ppa:paskal-07/softethervpn
sudo apt-get update

Vous pouvez voir la liste des paquets disponibles avec la commande suivante :

apt-cache search softether

Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Nous aurons besoin de softether-vpnserver (le serveur en configuration de test est lancĂ© sur VDS), ainsi que softether-vpncmd — des outils en ligne de commande pour sa configuration.

sudo apt-get install softether-vpnserver softether-vpncmd

Un utilitaire en ligne de commande spécial est utilisé pour configurer le serveur :

sudo vpncmd

Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Nous n'entrerons pas dans les détails de la configuration : la procédure est assez simple et elle est bien décrite dans de nombreuses publications, n'étant pas directement liée au sujet de l'article. En résumé, aprÚs le lancement de vpncmd, il faut sélectionner le point 1 pour accéder à la console de gestion du serveur. Pour ce faire, il est nécessaire de saisir le nom localhost et d'appuyer sur entrer au lieu de saisir le nom du hub. Dans la console, le mot de passe administrateur est défini avec la commande serverpasswordset, le hub virtuel DEFAULT est supprimé (commande hubdelete) et un nouveau nommé Suricata_VPN est créé, ainsi que son mot de passe (commande hubcreate). Ensuite, il faut accéder à la console de gestion du nouveau hub avec la commande hub Suricata_VPN pour créer un groupe et un utilisateur avec les commandes groupcreate et usercreate. Le mot de passe de l'utilisateur est défini avec userpasswordset.

SoftEther prend en charge deux modes de transmission du trafic : SecureNAT et Local Bridge. Le premier est une technologie propriétaire de création de réseau privé virtuel avec son propre NAT et DHCP. SecureNAT ne nécessite pas de TUN/TAP, ni de configuration de Netfilter ou d'un autre pare-feu. Le routage n'impacte pas le noyau du systÚme, et tous les processus sont virtualisés et fonctionnent sur n'importe quel VPS/VDS, quel que soit l'hyperviseur utilisé. Cela entraßne une charge accrue sur le processeur et une diminution de la vitesse par rapport au mode Local Bridge, qui connecte le hub virtuel SoftEther à un adaptateur réseau physique ou à un dispositif TAP.

La configuration est compliquée dans ce cas, car le routage est effectué au niveau du noyau à l'aide de Netfilter. Nos VDS sont construits sur Hyper-V, donc à la derniÚre étape, nous créons un pont local et activons le dispositif TAP avec la commande bridgecreate Suricate_VPN -device:suricate_vpn -tap:yes. AprÚs avoir quitté la console de gestion du hub, nous verrons dans le systÚme une nouvelle interface réseau qui n'a pas encore d'IP attribuée :

ifconfig

Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Il faudra ensuite activer le routage des paquets entre les interfaces (ip forward), si ce n'est pas déjà fait :

sudo nano /etc/sysctl.conf

Décommenter la ligne suivante :

net.ipv4.ip_forward = 1

Sauvegardez les modifications dans le fichier, quittez l'éditeur et appliquez-les avec la commande suivante :

sudo sysctl -p

Ensuite, nous devons définir pour le réseau virtuel une sous-réseau avec des IP fictives (par exemple, 10.0.10.0/24) et attribuer une adresse à l'interface :

sudo ifconfig tap_suricata_vp 10.0.10.1/24

Il faudra ensuite inscrire les rĂšgles Netfilter.

1. Autoriser les paquets entrants sur les ports écoutés si nécessaire (le protocole propriétaire SoftEther utilise HTTPS et le port 443)

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 992 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 5555 -j ACCEPT

2. Configurer le NAT de la sous-réseau 10.0.10.0/24 vers l'adresse IP principale du serveur

sudo iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -j SNAT --to-source 45.132.17.140

3. Autoriser les paquets passant de la sous-réseau 10.0.10.0/24

sudo iptables -A FORWARD -s 10.0.10.0/24 -j ACCEPT

4. Autoriser les paquets passants pour les connexions déjà établies

sudo iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

Nous laisserons aux lecteurs l'automatisation du processus lors du redémarrage du systÚme à l'aide de scripts d'initialisation.

Si vous souhaitez attribuer des IP aux clients automatiquement, vous devrez également installer un service DHCP pour le pont local. La configuration du serveur est maintenant terminée et nous pouvons passer aux clients. SoftEther prend en charge de nombreux protocoles, dont l'utilisation dépend des capacités du matériel du réseau local.

netstat -ap |grep vpnserver

Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Étant donnĂ© que notre routeur de test fonctionne Ă©galement sous Ubuntu, nous allons y installer les paquets softether-vpnclient et softether-vpncmd depuis un dĂ©pĂŽt externe, afin de bĂ©nĂ©ficier du protocole propriĂ©taire. Vous devrez ensuite lancer le client :

sudo vpnclient start

Pour la configuration, nous utiliserons l'outil vpncmd, en choisissant localhost comme machine sur laquelle vpnclient est en cours d'exécution. Toutes les commandes se font dans la console : il sera nécessaire de créer une interface virtuelle (NicCreate) et un compte (AccountCreate).

Dans certains cas, il est nécessaire de définir le mode d'authentification à l'aide des commandes AccountAnonymousSet, AccountPasswordSet, AccountCertSet et AccountSecureCertSet. Comme nous n'utilisons pas DHCP, l'adresse de l'adaptateur virtuel sera définie manuellement.

De plus, nous devrons activer le transfert IP (paramĂštre net.ipv4.ip_forward=1 dans le fichier /etc/sysctl.conf) et configurer des routes statiques. Si nĂ©cessaire, un redirectionnement de ports peut ĂȘtre configurĂ© sur le VDS avec Suricata pour utiliser les services installĂ©s dans le rĂ©seau local. L'unification des rĂ©seaux peut alors ĂȘtre considĂ©rĂ©e comme terminĂ©e.

La configuration que nous proposons devrait ressembler Ă  ceci :

Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Configurer Suricata

Dans l'article prĂ©cĂ©dent Nous avons parlĂ© des deux modes de fonctionnement d'IDS : via la file d'attente NFQUEUE (mode NFQ) et via le zero copy (mode AF_PACKET). Le second nĂ©cessite deux interfaces, mais se distingue par une performance supĂ©rieure — c'est celui que nous allons utiliser. Le paramĂštre est dĂ©fini par dĂ©faut dans /etc/default/suricata. Nous devrons Ă©galement modifier la section vars dans /etc/suricata/suricata.yaml, en spĂ©cifiant le sous-rĂ©seau virtuel comme Ă©tant local.

Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Pour redémarrer l'IDS, nous utilisons la commande :

systemctl restart suricata

La solution est prĂȘte, vous devrez maintenant peut-ĂȘtre la tester pour sa rĂ©sistance aux actions des attaquants.

Modéliser des attaques

Il peut y avoir plusieurs scénarios d'application opérationnelle du service IDS :

Protection contre les attaques DDoS (principal objectif)

RĂ©alisĂ© ce type Ă  l'intĂ©rieur d'un rĂ©seau d'entreprise est compliquĂ©, car les paquets Ă  analyser doivent atteindre l'interface de la systĂšme qui regarde vers Internet. MĂȘme si l'IDS les bloque, le trafic parasite peut saturer le canal de transmission de donnĂ©es. Pour Ă©viter cela, il est nĂ©cessaire de commander un VPS avec une connexion Internet suffisamment performante pour gĂ©rer tout le trafic local et tout le trafic externe. Cela est souvent plus simple et moins coĂ»teux que d'Ă©largir le canal de bureau. Comme alternative, il convient de mentionner des services spĂ©cialisĂ©s pour la protection contre les DDoS. Le coĂ»t de leurs services est comparable Ă  celui d'un serveur virtuel, sans nĂ©cessiter de configuration laborieuse, mais il y a des inconvĂ©nients : pour le prix payĂ©, le client obtient uniquement une protection contre les DDoS, alors qu'un IDS propre peut ĂȘtre configurĂ© comme bon lui semble.

Protection contre d'autres types d'attaques externes

Suricata est capable de gérer des tentatives d'exploitation de diverses vulnérabilités dans les services accessibles depuis Internet au sein d'un réseau d'entreprise (serveur de messagerie, serveur web et applications web, etc.). En général, pour cela, l'IDS est installé à l'intérieur du réseau local aprÚs les dispositifs de périmÚtre, mais il a également sa place à l'extérieur.

Protection contre les utilisateurs malveillants internes

MalgrĂ© tous les efforts de l'administrateur systĂšme, les ordinateurs du rĂ©seau d'entreprise peuvent ĂȘtre infectĂ©s par des logiciels malveillants. De plus, il arrive parfois que des fauteurs de troubles apparaissent dans le rĂ©seau local, tentant de rĂ©aliser des opĂ©rations illicites. Suricata peut aider Ă  bloquer de telles tentatives, bien qu'il soit prĂ©fĂ©rable de l'installer Ă  l'intĂ©rieur du pĂ©rimĂštre pour protĂ©ger le rĂ©seau interne, en l'utilisant en conjonction avec un commutateur gĂ©rĂ© capable de faire du mirroring de trafic sur un port. Une IDS externe n'est pas non plus inutile dans ce cas, car elle pourra au moins capturer les tentatives de malwares vivant dans le LAN de se connecter Ă  un serveur externe.

Pour commencer, crĂ©ons un autre VPS d'attaque de test, et sur le routeur du rĂ©seau local, faisons tourner Apache avec la configuration par dĂ©faut, puis redirigeons le port 80 vers le serveur IDS. Ensuite, nous simulerons une attaque DDoS depuis le nƓud d'attaque. Pour cela, tĂ©lĂ©chargeons depuis GitHub, compilons et exĂ©cutons sur le nƓud d'attaque un petit programme xerxes (l'installation du paquet gcc peut ĂȘtre nĂ©cessaire) :

git clone https://github.com/Soldie/xerxes-DDos-zanyarjamal-C.git
cd xerxes-DDos-zanyarjamal-C/
gcc xerxes.c -o xerxes
./xerxes 45.132.17.140 80

Le résultat de son exécution a été le suivant :

Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Suricata bloque le malfaiteur, tandis que la page Apache par défaut s'ouvre malgré notre attaque improvisée et le canal plutÎt faible du réseau « de bureau » (qui est en réalité domestique). Pour des tùches plus sérieuses, il est préférable d'utiliser Metasploit Framework. Il est destiné à la réalisation de tests d'intrusion et permet de simuler une grande variété d'attaques. Le guide d'installation disponible est disponible sur le site du projet. AprÚs l'installation, une mise à jour sera nécessaire :

sudo msfupdate

Pour les tests, nous lançons msfconsole.

Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Malheureusement, dans les derniĂšres versions du framework, il n'est pas possible de faire des compromises automatiques, donc les exploits devront ĂȘtre parcourus manuellement et lancĂ©s avec la commande use. Pour commencer, il convient de dĂ©terminer les ports ouverts sur la machine cible, par exemple Ă  l'aide de nmap (dans notre cas, netstat sur le nƓud d'attaque suffira), puis de sĂ©lectionner et utiliser les modules correspondants. modules Metasploit. 

Il existe également d'autres outils pour tester la résistance de l'IDS aux attaques, y compris des services en ligne. Par curiosité, on peut effectuer un test de stress avec la version d'essai de IP Stresser. Pour vérifier les réactions aux actions des attaquants internes, il est conseillé d'installer des outils spéciaux sur l'une des machines du réseau local. Les options sont nombreuses et il est parfois bon de les appliquer non seulement à un banc d'essai expérimental, mais aussi aux systÚmes de production, mais c'est une toute autre histoire.

Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Snort ou Suricata. Partie 3 : protéger le réseau de bureau

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster