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

Sicherung Ihres Ubuntu/Debian-basierten VPS mit IPTABLES/Netfilter-Firewall

Im folgenden Artikel zeigen wir Ihnen, wie Sie Ihren Ubuntu- oder Debian-basierten virtuellen Server mit einer Firewall sichern und schützen können Anwendung namens iptables.

Was ist iptables?

Es ist ein Userspace-Anwendungsprogramm, das es einem Systemadministrator ermöglicht, die Tabellen zu konfigurieren, die von der Linux-Kernel-Firewall bereitgestellt werden (als verschiedene Netfilter-Module implementiert ) und die darin gespeicherten Ketten und Regeln.

Um die Anzahl der Einbruchsversuche gering zu halten und die auf Ihrem virtuellen Server geöffneten Ports zu filtern, ist es notwendig, Ihre Firewall richtig zu konfigurieren .

Um die Verwaltung der Firewall-Regeln Ihres Servers zu vereinfachen, stellen wir ein einfaches Shell-Skript bereit, das bei der Verwaltung der Firewall-Regeln hilft. Grundsätzlich würden Sie dieses Skript verwenden, um die gewünschte(n) Regel(n) hinzuzufügen/zu entfernen, wann immer Sie Ihre Firewall-Regeln ändern müssen.

FIREWALL-REGELN EINRICHTEN

Bevor Sie die Regeln in ein Skript packen, teilen Sie es in Abschnitte auf, damit Sie wissen, wie die Firewall aufgebaut ist und welche Regeln vorhanden sein werden.

ALTE REGELN LEEREN

Die Firewall-Regeln können mit den folgenden Befehlen geleert werden:

## iptables --flush
## iptables --delete-chain
## iptables --table nat --flush
## iptables --table nat --delete-chain

SERVICE-PORTS BESTIMMEN

Sie müssen wissen, welche Dienste Sie der Öffentlichkeit zugänglich gemacht haben, damit Sie geeignete Regeln für sie festlegen können. Eine Möglichkeit herauszufinden, welche Dienste auf welchen Ports lauschen, ist die Verwendung von netstat oder ss Befehle wie in:

## netstat -tunlp

or

## ss -tunlp

Zum Beispiel verwenden wir einen unserer virtuellen Ubuntu 12.04 LTS-Server und das Folgende ist die Ausgabe von netstat Befehl:

## netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      296/mysqld
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      449/sendmail: MTA:
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      261/dovecot
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      261/dovecot
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      590/apache2
tcp        0      0 209.135.140.77:53       0.0.0.0:*               LISTEN      353/named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      353/named
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      173/vsftpd
tcp        0      0 0.0.0.0:5622            0.0.0.0:*               LISTEN      630/sshd
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      449/sendmail: MTA:
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      353/named
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      590/apache2
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      261/dovecot
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      261/dovecot
udp        0      0 209.135.140.77:53       0.0.0.0:*                           353/named
udp        0      0 127.0.0.1:53            0.0.0.0:*                           353/named

Das bedeutet also, dass wir die folgenden Ports für die Öffentlichkeit geöffnet haben:

  • 25 (smtp)
  • 587 (smtp-Übermittlung)
  • 110 (pop3)
  • 143 (immap)
  • 993 (imap-ssl)
  • 995 (pop3-ssl)
  • 80 (http)
  • 443 (https)
  • 53 (dns)
  • 21 (ftp)
  • 5622 (ssh)

STANDARDRICHTLINIEN EINRICHTEN

ok, jetzt können wir die Richtlinien unserer Firewall auf DROP einstellen alles im INPUT und WEITER Ketten und erlauben Verkehr im OUTPUT Kette.

der Standardtabellen-filter enthält drei eingebaute Kette:

  1. Eingehender Datenverkehr, der an die Maschine selbst adressiert ist, trifft auf die INPUT-Kette.
  2. Ausgehender, lokal generierter Traffic trifft auf die OUTPUT-Kette.
  3. Gerouteter Datenverkehr, der nicht lokal zugestellt werden sollte, trifft auf die FORWARD-Kette.

überprüfen Sie man 8 iptables Weitere Informationen dazu

Standardrichtlinien können mit den folgenden Befehlen angewendet werden:

## iptables -P INPUT DROP # <- do not run this over ssh as it will lock you out
## iptables -P FORWARD DROP
## iptables -P OUTPUT ACCEPT

FIREWALL-REGELN EINRICHTEN

Als nächstes müssen Sie die Firewall-Regeln für unsere Dienste tatsächlich einrichten. Da die INPUT-Kette DROPPED ist, müssen wir die Dienste, die an öffentlichen Ports lauschen, auf die weiße Liste setzen, also:

Das erste ist, die kostenlose Nutzung der loopback interfaces zu ermöglichen , um sicherzustellen, dass alle TCP-Sitzungen mit SYN beginnen, und um etablierte und verwandte Pakete zuzulassen:

## iptables -A INPUT -i lo -j ACCEPT
## iptables -A OUTPUT -o lo -j ACCEPT
## iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
## iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Lassen Sie uns als Nächstes unsere Service-Ports öffnen, indem Sie Firewall-Regeln verwenden wie:

### SSH
## iptables -A INPUT -p tcp --dport 5622  -m state --state NEW -j ACCEPT

### HTTP
## iptables -A INPUT -p tcp --dport 80  -m state --state NEW -j ACCEPT

### SMTP
## iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT

usw. Sobald alle Dienste auf der weißen Liste stehen, ist es eine gute Idee, ICMP-Pakete zuzulassen und alles andere in der INPUT-Kette zu LOGEN und zu DROPEN.

## iptables -A INPUT -p ICMP --icmp-type 8 -j ACCEPT
## iptables -A INPUT -j LOG
## iptables -A INPUT -j DROP

SPEICHERN/WIEDERHERSTELLEN DER FIREWALL-REGELN

Firewall-Regeln sind standardmäßig nicht persistent, was bedeutet, dass sie verloren gehen, wenn Sie beispielsweise Ihren virtuellen Server neu starten. So speichern Sie Ihre aktuelle Firewall in /etc/fwall.rules Sie würden so etwas verwenden wie:

## iptables-save > /etc/fwall.rules

und um die gespeicherten Regeln wiederherzustellen, würden Sie Folgendes verwenden:

## iptables-restore -c /etc/fwall.rules

Um die Regeln beim Systemstart automatisch wiederherstellen zu lassen, müssten Sie entweder ein Paket namens iptables-persistent verwenden oder Sie können einfach ein Skript in /etc/network/if-pre-up.d erstellen Dadurch werden die in /etc/fwall.rules gespeicherten Regeln geladen , zum Beispiel:

## vim /etc/network/if-pre-up.d/iptables

#!/bin/bash
test -e /etc/fwall.rules && iptables-restore -c /etc/fwall.rules

## chmod +x /etc/network/if-pre-up.d/iptables

FIREWALL-SKRIPT

Speichern Sie das Skript in /usr/local/bin/fwall-rules und ausführbar machen

#!/bin/bash

IPTABLES=/sbin/iptables

echo " * flushing old rules"
${IPTABLES} --flush
${IPTABLES} --delete-chain
${IPTABLES} --table nat --flush
${IPTABLES} --table nat --delete-chain

echo " * setting default policies"
${IPTABLES} -P INPUT DROP
${IPTABLES} -P FORWARD DROP
${IPTABLES} -P OUTPUT ACCEPT

echo " * allowing loopback devices"
${IPTABLES} -A INPUT -i lo -j ACCEPT
${IPTABLES} -A OUTPUT -o lo -j ACCEPT

${IPTABLES} -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
${IPTABLES} -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## BLOCK ABUSING IPs HERE ##
#echo " * BLACKLIST"
#${IPTABLES} -A INPUT -s _ABUSIVE_IP_ -j DROP
#${IPTABLES} -A INPUT -s _ABUSIVE_IP2_ -j DROP

echo " * allowing ssh on port 5622"
${IPTABLES} -A INPUT -p tcp --dport 5622  -m state --state NEW -j ACCEPT

echo " * allowing ftp on port 21"
${IPTABLES} -A INPUT -p tcp --dport 21  -m state --state NEW -j ACCEPT

echo " * allowing dns on port 53 udp"
${IPTABLES} -A INPUT -p udp -m udp --dport 53 -j ACCEPT

echo " * allowing dns on port 53 tcp"
${IPTABLES} -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT

echo " * allowing http on port 80"
${IPTABLES} -A INPUT -p tcp --dport 80  -m state --state NEW -j ACCEPT

echo " * allowing https on port 443"
${IPTABLES} -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT

echo " * allowing smtp on port 25"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT

echo " * allowing submission on port 587"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT

echo " * allowing imaps on port 993"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT

echo " * allowing pop3s on port 995"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT

echo " * allowing imap on port 143"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT

echo " * allowing pop3 on port 110"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT

echo " * allowing ping responses"
${IPTABLES} -A INPUT -p ICMP --icmp-type 8 -j ACCEPT

# DROP everything else and Log it
${IPTABLES} -A INPUT -j LOG
${IPTABLES} -A INPUT -j DROP

#
# Save settings
#
echo " * SAVING RULES"

if [[ -d /etc/network/if-pre-up.d ]]; then
    if [[ ! -f /etc/network/if-pre-up.d/iptables ]]; then
        echo -e "#!/bin/bash" > /etc/network/if-pre-up.d/iptables
        echo -e "test -e /etc/iptables.rules && iptables-restore -c /etc/iptables.rules" >> /etc/network/if-pre-up.d/iptables
        chmod +x /etc/network/if-pre-up.d/iptables
    fi
fi

iptables-save > /etc/fwall.rules
iptables-restore -c /etc/fwall.rules
## chmod +x /usr/local/bin/fwall-rules

Um die Regeln zu aktivieren, die Sie im Skript vorbereitet haben, führen Sie einfach

aus
## fwall-rules

von der Kommandozeile. Um eine Regel hinzuzufügen oder zu entfernen, müssen Sie nur das Skript öffnen, die gewünschte Regel hinzufügen oder entfernen, speichern und erneut ausführen, zum Beispiel:

## fwall-rules
 * flushing old rules
 * setting default policies
 * allowing loopback devices
 * allowing ssh on port 5622
 * allowing ftp on port 21
 * allowing dns on port 53 udp
 * allowing dns on port 53 tcp
 * allowing http on port 80
 * allowing https on port 443
 * allowing smtp on port 25
 * allowing submission on port 587
 * allowing imaps on port 993
 * allowing pop3s on port 995
 * allowing imap on port 143
 * allowing pop3 on port 110
 * allowing ping responses
 * SAVING RULES

Natürlich müssen Sie nichts davon tun, wenn Sie einen unserer Linux-VPS-Hosting-Dienste nutzen. In diesem Fall können Sie einfach unsere erfahrenen Linux-Administratoren bitten, dies für Sie zu tun. Sie sind 24×7 erreichbar und kümmern sich umgehend um Ihr Anliegen.

PS. Wenn Ihnen dieser Beitrag gefallen hat, teilen Sie ihn bitte mit Ihren Freunden in den sozialen Netzwerken über die Schaltflächen auf der linken Seite oder hinterlassen Sie einfach unten eine Antwort. Danke.


Debian
  1. Firewall-Konfiguration mit Iptables unter Ubuntu 14.04

  2. So machen Sie iptables-Firewall-Regeln unter Debian/Ubuntu persistent

  3. Beispiel für die Verwendung der UFW-Firewall in Debian/Ubuntu

  4. Debian – Verwenden von zwei Displays unter Debian?

  5. So installieren Sie SSHGuard auf einem Ubuntu VPS

So finden Sie Ihre öffentliche IP-Adresse in Ubuntu 20.04 LTS

So aktivieren/deaktivieren Sie Ping mit iptables unter Debian 10

So finden Sie mit Debian Linux mit Ihrem Netzwerk verbundene Geräte

Gewusst wie:Sichern Sie Ihren Ubuntu- oder Debian-Server mit IPTables

Ändern Sie Ihren SSH-Port in Ubuntu und Debian

So richten Sie eine Firewall auf Ihrem Linux-Server ein