GNU/Linux >> Tutoriels Linux >  >> Linux

3 façons rapides de réduire votre surface d'attaque sous Linux

Les systèmes Linux sont des choses compliquées. Prête à l'emploi, chaque distribution comprend un certain nombre de services destinés à vous aider à faire fonctionner les choses. Certaines distributions activent moins de services par défaut, et d'autres en activent davantage. La différence est dans le confort. Certaines distributions essaient de vous permettre de démarrer rapidement, elles ont donc un grand nombre de services par défaut activés pour vous faciliter l'installation, la connexion et la configuration. D'autres adoptent l'approche inverse et n'installent presque rien par défaut.

Cet article est le début d'une courte série, où nous parlerons un peu de durcissement, un peu de segmentation, et enfin comment analyser nos réseaux pour voir si nous avons bien fait les choses. Alors attendez et laissez-moi vous montrer quelques couches de défense.

Installer moins de logiciels

Lorsque j'installe un nouveau système, j'essaie d'en installer le moins possible. Je commence avec l'ensemble de packages de base et n'installe vraiment rien d'autre. Il est simple d'ajouter des services après l'installation, alors pourquoi compliquer le processus ? De plus, si vous le faites souvent, vous souhaiterez probablement installer à partir d'un système Kickstart (ou modèle). Donc, vous voudriez que cette configuration soit aussi simple et générique que possible.

Pour cet article, j'ai installé un système de base Red Hat Enterprise Linux (RHEL) 7.6 pour effectuer de vrais tests. J'ai fait le strict minimum lors de l'installation, en sélectionnant la base ensemble de paquets et configuration de mes mots de passe, noms d'utilisateur et réseau. J'ai également activé le protocole NTP (Network Time Protocol).

Identifier les ports ouverts

Après l'installation, nous pouvons voir la liste des ports ouverts. Les ports sont la façon dont les services exécutés sur votre serveur permettent à d'autres systèmes de s'y connecter. Un serveur Web, par exemple, liera les ports 80 et 443 au service du serveur Web. Dans cet article, nous identifierons les services qui ont des ports ouverts dans votre installation de base, puis verrons comment répertorier les services et désactiver ceux dont nous ne voulons pas.

Sur un système Red Hat Enterprise Linux 7.6, nous utilisons le ss commande pour voir ces informations. Sur les systèmes toujours livrés avec netstat , vous utiliserez le netstat commande.

Exécution de ss sur notre système de test montre quelques ports ouverts :

[root@rhel76test ~]# ss -tulnp --no-header | awk '{print($1, $5, $7)}'
udp  *:68            users:(("dhclient",pid=3316,fd=6))
udp  127.0.0.1:323   users:(("chronyd",pid=2974,fd=1))
udp  ::1:323         users:(("chronyd",pid=2974,fd=2))
tcp  *:22            users:(("sshd",pid=3523,fd=3))
tcp  127.0.0.1:25    users:(("master",pid=3771,fd=13))
tcp  :::22           users:(("sshd",pid=3523,fd=4))
tcp  ::1:25          users:(("master",pid=3771,fd=14))

Il semble que la base RHEL 7.6 ne soit pas mauvaise. Remarquez dans la deuxième colonne, certains des ports ouverts affichent une adresse IP puis un port, et d'autres ont un * puis un port. Les entrées qui ressemblent à 127.0.0.1:25 signifie qu'ils écoutent simplement sur localhost. Ce résultat signifie qu'ils ne sont pas accessibles à distance. Les services qui ressemblent à *:22 signifie qu'ils écoutent sur n'importe quelle interface. De même, pour les adresses IPv6, nous avons ::1:323 , et :::22 . Le ::1 les entrées sont localhost, le ::: sont grands ouverts.

Tout cela signifie que ce système n'a que deux ports IPv4 et un port IPv6, ouverts sur le monde. Le dhclient service est probablement un bon exemple de quelque chose que nous pourrions désactiver (ce qui fermerait son port), mais seulement si votre serveur n'utilise pas DHCP pour obtenir son adresse IP. Dans le cas de mon serveur de test, c'est le cas.

Désactiver les services

Répertorier les services et les arrêter/désactiver est relativement facile sur Red Hat Enterprise Linux 7. Nous utiliserons systemd pour lister toutes les unités actives, puis lui dire d'arrêter et de désactiver celles que nous ne voulons pas exécuter.

Pour répertorier tous les services en cours d'exécution, vous pouvez utiliser systemctl list-units --type=service --state=running . Sur mon système de test, le résultat montre un nombre très modeste de 19 services, et la plupart d'entre eux semblent nécessaires. Nous en choisirons un pour la démonstration :

[root@rhel76test ~]# systemctl list-units --type=service --state=running
UNIT                      LOAD   ACTIVE SUB DESCRIPTION
auditd.service            loaded active running Security Auditing Service
chronyd.service           loaded active running NTP client/server
crond.service             loaded active running Command Scheduler
dbus.service              loaded active running D-Bus System Message Bus
firewalld.service         loaded active running firewalld - dynamic firewall daemon
[email protected]        loaded active running Getty on tty1
lvm2-lvmetad.service      loaded active running LVM2 metadata daemon
NetworkManager.service    loaded active running Network Manager
polkit.service            loaded active running Authorization Manager
postfix.service           loaded active running Postfix Mail Transport Agent
qemu-guest-agent.service  loaded active running QEMU Guest Agent
rhnsd.service             loaded active running LSB: Starts the Spacewalk Daemon
rhsmcertd.service         loaded active running Enable periodic update of entitlement certificates.
rsyslog.service           loaded active running System Logging Service
sshd.service              loaded active running OpenSSH server daemon
systemd-journald.service  loaded active running Journal Service
systemd-logind.service    loaded active running Login Service
systemd-udevd.service     loaded active running udev Kernel Device Manager
tuned.service             loaded active running Dynamic System Tuning Daemon

Disons que nous ne voulions pas que Postfix soit chargé au démarrage. Nous utiliserions simplement systemctl stop postfix , puis systemctl disable postfix , comme ceci :

[root@rhel76test ~]# systemctl stop postfix
[root@rhel76test ~]# systemctl disable postfix
Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service.
[root@rhel76test ~]# systemctl list-units --type=service --state=running | grep postfix

Maintenant, vous ne voulez probablement pas désactiver Postfix, mais vous avez compris.

Conclusion

Donc, voilà. J'ai appris quelque chose aujourd'hui :prêt à l'emploi, Red Hat Enterprise Linux 7.6 est plutôt soigné et ordonné. J'espère que vous avez appris à rechercher et à désactiver des services pour réduire votre surface d'attaque.

Connectez-vous pour le prochain épisode de cette série, où je parlerai de la segmentation du réseau et du pare-feu

Merci d'avoir lu !


Linux
  1. Comment sécuriser vos services de messagerie Linux avec SSL/TLS

  2. Partez à l'aventure dans votre terminal Linux

  3. 6 façons d'augmenter votre profil de revenus et votre potentiel d'administrateur système Linux

  4. Vérifier les services en cours d'exécution sous Linux

  5. 4 façons d'identifier qui est connecté sur votre système Linux

10 façons de personnaliser votre bureau Linux avec l'outil GNOME Tweaks

Des moyens simples pour redémarrer votre Ubuntu Linux

Mettez une minuterie sur vos commandes en cours d'exécution avec la commande Timeout sous Linux

30 outils et services intéressants pour surveiller vos serveurs Linux

Principes de base de Linux :3 façons de trouver votre adresse IP locale dans Debian 11

Toutes les façons possibles de réduire la surchauffe des ordinateurs portables sous Linux