Dans 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.
Photo : 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 â 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 , soit depuis un dĂ©pĂŽt externe sur le service (si vous lui faites confiance) :
sudo add-apt-repository ppa:paskal-07/softethervpn
sudo apt-get updateVous pouvez voir la liste des paquets disponibles avec la commande suivante :
apt-cache search softether 
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-vpncmdUn utilitaire en ligne de commande spécial est utilisé pour configurer le serveur :
sudo vpncmd 
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 
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.confDécommenter la ligne suivante :
net.ipv4.ip_forward = 1Sauvegardez les modifications dans le fichier, quittez l'éditeur et appliquez-les avec la commande suivante :
sudo sysctl -pEnsuite, 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/24Il 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 ACCEPT2. 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.1403. 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 ACCEPT4. Autoriser les paquets passants pour les connexions déjà établies
sudo iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPTNous 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 
Ă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 startPour 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 :

Configurer Suricata
Dans 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.

Pour redémarrer l'IDS, nous utilisons la commande :
systemctl restart suricataLa 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 80Le résultat de son exécution a été le suivant :

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 . Il est destiné à la réalisation de tests d'intrusion et permet de simuler une grande variété d'attaques. Le guide d'installation est disponible sur le site du projet. AprÚs l'installation, une mise à jour sera nécessaire :
sudo msfupdatePour les tests, nous lançons msfconsole.

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. .Â
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 . 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.
Source : habr.com
