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

Beschränken Sie den Zugriff auf Linux-Server mithilfe von TCP-Wrappern

TCP-Wrapper ist ein hostbasiertes Open-Source-ACL-System (Access Control List), das verwendet wird, um die TCP-Netzwerkdienste basierend auf dem Hostnamen, der IP-Adresse, der Netzwerkadresse usw. einzuschränken. Es entscheidet, welcher Host auf einen bestimmten Netzwerkdienst zugreifen darf. TCP Wrapper wurde von einem holländischen Programmierer und Physiker Wietse Zweitze Venema entwickelt 1990 an der Technischen Universität Eindhoven. Er pflegte es bis 1995 und veröffentlichte es dann 2001 unter der BSD-Lizenz. In dieser kurzen Anleitung werde ich erklären, wie man den Zugriff auf Linux-Server mit Hilfe von TCP-Wrappern einschränkt.

Bitte beachten Sie, dass TCP Wrapper kein vollständiger Ersatz für eine richtig konfigurierte Firewall ist . Es ist nur eine wertvolle Ergänzung, um die Sicherheit Ihres Linux-Servers zu verbessern. Es wird empfohlen, es in Verbindung mit einer vollständig konfigurierten Firewall und anderen Sicherheitsmechanismen und -tools zu verwenden.

TCP-Wrapper installieren

TCP Wrappers ist in den offiziellen Repositories der meisten Linux-Betriebssysteme verfügbar.

Abhängig von der von Ihnen verwendeten Linux-Distribution kann sie wie unten gezeigt installiert werden.

Auf Arch-basierten Systemen:

$ sudo pacman -S tcp_wrappers

Auf YUM-basierten Systemen:

$ sudo yum install tcp_wrappers

Auf APT-basierten Systemen:

$ sudo apt-get install tcp_wrappers

Auf SUSE/openSUSE-Systemen:

$ sudo zypper in tcp_wrappers

Beschränken Sie den Zugriff auf Linux-Server mithilfe von TCP-Wrappern

Konfiguration

TCP Wrappers implementiert die Zugriffskontrolle mit Hilfe von zwei Konfigurationsdateien:/etc/hosts.allow und /etc/hosts.deny . Diese beiden Zugriffskontrolllistendateien entscheiden, ob bestimmte Clients auf Ihren Linux-Server zugreifen dürfen oder nicht.

Die /etc/hosts.allow-Datei

Diese Datei enthält die Liste der erlaubten oder nicht erlaubten Hosts oder Netzwerke. Das bedeutet, dass wir Verbindungen zu Netzwerkdiensten sowohl zulassen als auch verweigern können, indem wir Zugriffsregeln in dieser Datei definieren.

Die Datei /etc/hosts.deny

Diese Datei enthält die Liste der Hosts oder Netzwerke, die nicht auf Ihren Linux-Server zugreifen dürfen. Die Zugriffsregeln in dieser Datei können auch in /etc/hosts.allow mit einem 'deny' eingerichtet werden Option.

Die typische Syntax zum Definieren einer Zugriffsregel lautet:

daemon_list : client_list : option : option ...

Wo,

  • daemon_list - Der Name eines Netzwerkdienstes wie SSH, FTP, Portmap etc.
  • clients_list - Die durch Kommas getrennte Liste gültiger Hostnamen, IP-Adressen oder Netzwerkadressen.
  • Optionen - Eine optionale Aktion, die angibt, was getan werden soll, wenn eine Regel zutrifft.

Die Syntax ist für beide Dateien gleich.

Regeln zum Merken

Bevor Sie TCP-Wrapper verwenden, müssen Sie die folgenden wichtigen Regeln kennen. Bitte beachten Sie, dass der TCP Wrapper nur diese beiden Dateien (hosts.allow und hosts.deny) konsultiert.

  • Die Zugriffsregeln in der Datei /etc/hosts.allow werden zuerst angewendet. Sie haben Vorrang vor Regeln in der Datei /etc/hosts.deny. Wenn also der Zugriff auf einen Dienst in /etc/hosts.allow erlaubt ist Datei und eine Regel, die den Zugriff auf denselben Dienst in /etc/hosts.deny verweigert wird ignoriert.
  • Nur eine Regel pro Dienst ist in beiden Dateien erlaubt (hosts.allow und hosts.deny).
  • Die Reihenfolge der Regeln ist sehr wichtig. Nur die erste Übereinstimmungsregel für einen bestimmten Dienst wird berücksichtigt. Gleiches gilt für beide Dateien.
  • Wenn in keiner der Dateien übereinstimmende Regeln für einen Dienst vorhanden sind oder keine Datei vorhanden ist, wird allen Remote-Hosts der Zugriff auf den Dienst gewährt.
  • Alle Änderungen in beiden Dateien werden sofort wirksam, ohne dass die Netzwerkdienste neu gestartet werden müssen.

Der empfohlene Ansatz zur Sicherung Ihres Servers

Im Allgemeinen besteht die beste Vorgehensweise zum Sichern eines Linux-Servers darin, alle eingehenden Verbindungen zu blockieren und nur einige wenige bestimmte Hosts oder Netzwerke zuzulassen. Bearbeiten Sie dazu /etc/hosts.deny Datei:

$ sudo vi /etc/hosts.deny

Fügen Sie die folgende Zeile hinzu. Diese Leitung verweigert Verbindungen zu ALLEN Diensten und ALLEN Netzwerken.

ALL: ALL

Bearbeiten Sie dann /etc/hosts.allow Datei:

$ sudo vi /etc/hosts.allow

und erlauben Sie die spezifischen Hosts oder Netzwerke Ihrer Wahl.

sshd: 192.168.43.192 192.168.43.193

Außerdem können Sie gültige Hostnamen anstelle der IP-Adresse angeben, wie unten gezeigt.

sshd: server1.ostechnix.lan server2.ostechnx.lan

Alternativ können Sie dasselbe tun, indem Sie alle Regeln (sowohl erlauben als auch verweigern) in der Datei /etc/hosts.allow selbst definieren.

Bearbeiten Sie /etc/hosts.allow Datei und fügen Sie die folgenden Zeilen hinzu.

sshd: 192.168.43.192 192.168.43.193
sshd: ALL: DENY

Sie müssen keine Regel in /etc/hosts.deny angeben Datei.

Gemäß obiger Regel werden alle eingehenden Verbindungen für alle Hosts außer den beiden Hosts 192.168.43.192, 192.168.43.193 abgelehnt.

Versuchen Sie nun, von allen Hosts außer den oben genannten Hosts eine SSH-Verbindung zu Ihrem Linux-Server herzustellen. Sie erhalten die folgende Fehlermeldung.

ssh_exchange_identification: read: Connection reset by peer

Sie können dies anhand der Protokolldateien Ihres Linux-Servers überprüfen, wie unten gezeigt.

$ cat /var/log/secure

Beispielausgabe:

Jun 16 19:40:17 server sshd[15782]: refused connect from 192.168.43.150 (192.168.43.150)

Ebenso können Sie Regeln für andere Dienste, zB vsftpd, in /etc/hosts.allow definieren Datei wie unten gezeigt.

vsftpd: 192.168.43.192 
vsftpd: ALL: DENY

Auch hier brauchen Sie keine Regeln in /etc/hosts.deny zu definieren Datei. Gemäß der obigen Regel darf ein Remote-Host mit der IP-Adresse 192.168.43.192 über FTP auf den Linux-Server zugreifen. Alle anderen Hosts werden abgelehnt.

Außerdem können Sie die Zugriffsregeln in verschiedenen Formaten in der Datei /etc/hosts.allow definieren, wie unten gezeigt.

sshd: 192.168.43.192				#Allow a single host for SSH service
sshd: 192.168.43.0/255.255.255.0		#Allow a /24 prefix for SSH
vsftpd: 192.168.43.192				#Allow a single host for FTP
vsftpd: 192.168.43.0/255.255.255.0	        #Allow a /24 prefix for FTP
vsftpd: server1.ostechnix.lan                   #Allow a single host for FTP

Alle Hosts außer einem bestimmten Host zulassen

Sie können eingehende Verbindungen von allen Hosts zulassen, jedoch nicht von einem bestimmten Host. Sagen wir zum Beispiel, eingehende Verbindungen von allen Hosts in 192.168.43 zuzulassen Subnetz, aber nicht vom Host 192.168.43.192 , fügen Sie die folgende Zeile in /etc/hosts.allow hinzu Datei.

ALL: 192.168.43. EXCEPT 192.168.43.192

Im obigen Fall müssen Sie keine Regeln in der Datei /etc/hosts.deny hinzufügen.

Oder Sie können den Hostnamen anstelle der IP-Adresse angeben, wie unten gezeigt.

ALL: .ostechnix.lan EXCEPT badhost.ostechnix.lan

Weitere Einzelheiten finden Sie in den Manpages.

$ man tcpd

Lesen Sie auch: 

  • SSH-Zugriff für einen bestimmten Benutzer oder eine bestimmte Gruppe in Linux zulassen oder verweigern
  • Begrenzen Sie die Anzahl der SSH-Anmeldungen pro Benutzer/Gruppe/System

Lassen Sie uns noch einmal nicht vergessen, dass TCP Wrapper kein Ersatz für eine Firewall ist. Es sollte in Verbindung mit Firewalls und anderen Sicherheitstools verwendet werden.


Linux
  1. TCP-Wrapper

  2. So generieren Sie ein zufälliges Passwort unter Linux mit /dev/random

  3. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  4. Wie wird /etc/motd aktualisiert?

  5. Format von /etc/hosts unter Linux (anders als Windows?)

Der richtige Weg zum Bearbeiten von /etc/passwd- und /etc/group-Dateien unter Linux

Verwenden von Ajenti beim Verwalten von Linux-Servern

/etc/hosts-Datei unter Linux verstehen

Warum sind < oder > erforderlich, um /dev/tcp

Linux-Befehlszeilendienstprogramm zum Auflösen von Hostnamen mithilfe von /etc/hosts zuerst

Größenbeschränkung von /etc/hosts (Linux)