GNU/Linux >> LINUX-Kenntnisse >  >> Linux

3 schnelle Wege, um Ihre Angriffsfläche unter Linux zu reduzieren

Linux-Systeme sind komplizierte Dinge. Jede Distribution enthält standardmäßig eine Reihe von Diensten, die Ihnen helfen sollen, Dinge zum Laufen zu bringen. Einige Distributionen aktivieren standardmäßig weniger Dienste, andere mehr. Der Unterschied liegt in der Bequemlichkeit. Einige Distributionen versuchen, Sie schnell zum Laufen zu bringen, daher haben sie eine große Anzahl von Standarddiensten aktiviert, um Ihnen die Einrichtung, Anmeldung und Konfiguration zu erleichtern. Andere gehen den umgekehrten Weg und installieren standardmäßig fast nichts.

Dieser Artikel ist der Beginn einer kurzen Serie, in der wir ein wenig über Härtung, ein wenig über Segmentierung und schließlich darüber sprechen, wie wir unsere Netzwerke scannen, um zu sehen, ob wir es richtig gemacht haben. Also halte durch und lass mich dir ein paar Verteidigungsschichten zeigen.

Installieren Sie weniger Software

Wenn ich ein neues System installiere, versuche ich, so wenig wie möglich zu installieren. Ich beginne mit dem Basispaketsatz und installiere wirklich nichts anderes. Es ist einfach, Dienste nach der Installation hinzuzufügen, also warum den Prozess verkomplizieren? Wenn Sie dies häufig tun, möchten Sie außerdem wahrscheinlich von einem Kickstart- (oder Vorlagen-) System installieren. Sie sollten diese Einrichtung also so einfach und generisch wie möglich gestalten.

Für diesen Artikel habe ich ein Red Hat Enterprise Linux (RHEL) 7.6-Basissystem installiert, um einige echte Tests durchzuführen. Ich habe während der Installation das Nötigste getan und die base ausgewählt Paketsatz und Einrichten meiner Passwörter, Benutzernamen und meines Netzwerks. Ich habe auch das Network Time Protocol (NTP) aktiviert.

Offene Ports identifizieren

Nach der Installation können wir die Liste der offenen Ports sehen. Über Ports ermöglichen Dienste, die auf Ihrem Server ausgeführt werden, anderen Systemen, sich mit ihnen zu verbinden. Ein Webserver bindet beispielsweise die Ports 80 und 443 an den Dienst des Webservers. In diesem Artikel ermitteln wir, welche Dienste offene Ports in Ihrer Basisinstallation haben, und sehen uns dann an, wie Sie Dienste auflisten und diejenigen deaktivieren, die wir nicht möchten.

Auf einem Red Hat Enterprise Linux 7.6-System verwenden wir den ss Befehl, um diese Informationen anzuzeigen. Auf Systemen, die noch mit netstat ausgeliefert werden verwenden Sie den netstat Befehl.

Ausführen von ss auf unserem Testsystem zeigt ein paar offene Ports:

[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))

Es sieht so aus, als ob die Basis von RHEL 7.6 nicht schlecht ist. Beachten Sie in der zweiten Spalte, dass einige der offenen Ports eine IP und dann einen Port zeigen und andere einen * haben und dann ein Hafen. Die Einträge, die wie 127.0.0.1:25 aussehen bedeuten, dass sie nur auf localhost lauschen. Dieses Ergebnis bedeutet, dass sie nicht aus der Ferne zugänglich sind. Die Dienste, die wie folgt aussehen:*:22 bedeutet, dass sie auf jeder Schnittstelle lauschen. Ebenso haben wir für die IPv6-Adressen ::1:323 , und :::22 . Der ::1 Einträge sind localhost, der ::: sind weit offen.

All dies bedeutet, dass dieses System nur zwei IPv4-Ports und einen IPv6-Port hat, die für die Welt offen sind. Der dhclient service ist wahrscheinlich ein gutes Beispiel für etwas, das wir deaktivieren könnten (was seinen Port schließen würde), aber nur, wenn Ihr Server DHCP nicht verwendet, um seine IP-Adresse zu erhalten. Im Falle meines Testservers ist es das.

Dienste deaktivieren

Das Auflisten von Diensten und das Anhalten/Deaktivieren dieser Dienste ist unter Red Hat Enterprise Linux 7 relativ einfach. Wir verwenden systemd um alle aktiven Einheiten aufzulisten und dann anzuweisen, die zu stoppen und diejenigen zu deaktivieren, die wir nicht ausführen möchten.

Um alle laufenden Dienste aufzulisten, können Sie systemctl list-units --type=service --state=running verwenden . Auf meinem Testsystem zeigt das Ergebnis sehr bescheidene 19 Dienste, und die meisten davon sehen so aus, als wären sie notwendig. Wir wählen jedoch eine zur Demonstration aus:

[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

Nehmen wir an, wir wollten nicht, dass Postfix beim Booten geladen wird. Wir würden einfach systemctl stop postfix verwenden , und dann systemctl disable postfix , etwa so:

[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

Nun, Sie möchten Postfix wahrscheinlich nicht deaktivieren, aber Sie verstehen, worauf es ankommt.

Abschluss

Da haben Sie es also. Ich habe heute etwas gelernt:Red Hat Enterprise Linux 7.6 ist von Haus aus ziemlich ordentlich und aufgeräumt. Ich hoffe, Sie haben gelernt, wie Sie Dienste suchen und deaktivieren, um Ihre Angriffsfläche zu verringern.

Schalten Sie für die nächste Folge dieser Serie ein, in der ich über Netzwerksegmentierung und Firewall sprechen werde

Danke fürs Lesen!


Linux
  1. So sichern Sie Ihre Linux-E-Mail-Dienste mit SSL/TLS

  2. Begeben Sie sich in Ihrem Linux-Terminal auf ein Abenteuer

  3. 6 Möglichkeiten, Ihr Verdienstprofil und -potenzial für Linux-Systemadministratoren zu verbessern

  4. Überprüfen Sie die laufenden Dienste unter Linux

  5. 4 Möglichkeiten, um festzustellen, wer auf Ihrem Linux-System angemeldet ist

10 Möglichkeiten, Ihren Linux-Desktop mit dem GNOME Tweaks Tool anzupassen

Einfache Möglichkeiten, Ihr Ubuntu Linux neu zu starten

Setzen Sie einen Timer auf Ihre laufenden Befehle mit dem Timeout-Befehl in Linux

30 interessante Tools und Dienste zur Überwachung Ihrer Linux-Server

Linux-Grundlagen:3 Möglichkeiten, Ihre lokale IP-Adresse in Debian 11 zu finden

Alle Möglichkeiten, um die Überhitzung von Laptops unter Linux zu reduzieren