Ports und ausgehende Sperren
Portscans erkennen, offene Datenbank- und Admin-Ports schließen und ausgehenden Verkehr zu Bedrohungsadressen sperren, jede Änderung geprüft und zurückgenommen, wenn etwas ausfällt.
Zuletzt aktualisiert:
Portscan-Erkennung
Der Agent sieht jeden eingehenden TCP-Verbindungsversuch, auf offene wie auf geschlossene Ports, über einen reinen Lesefilter im Kernel. Ein Portscan ist:
- eine Adresse, die innerhalb von 10 Minuten 15 verschiedene Ports anspricht, oder
- ein Netz (ein /24 bei IPv4, ein /64 bei IPv6), das innerhalb von 10 Minuten von 3 oder mehr Adressen aus 30 verschiedene Ports anspricht.
Portscans erkennen ist standardmäßig an und meldet eine Warnung port_scan. Portscanner sperren ist standardmäßig aus, weil auch Monitoring-Dienste und Suchmaschinen scannen; eingeschaltet sperrt es einzelne Adressen, nie ganze Netze.
Einen Port schließen
Datenbanken und Admin-Dienste gehören nicht ins offene Internet. Einen Port zu schließen verwirft neue Verbindungen von öffentlichen Adressen zu ihm; Loopback, private Netze und Adressen auf der Whitelist behalten den Zugriff, ebenso Programme auf dem Server selbst. Das gilt auch für Ports, die Docker-Container veröffentlichen, und auch für IPv6, wenn ip6tables verfügbar ist.
Nur diese Ports lassen sich schließen: 3306, 5432, 6379, 6380, 27017, 27018, 9200, 9300, 11211, 2375, 2376, 5984, 8086, 15672, 5601, 9042, 7000, 7001, 8529 und 28015 (MySQL, PostgreSQL, Redis, MongoDB, Elasticsearch, Memcached, die Docker-API, CouchDB, InfluxDB, RabbitMQ, Kibana, Cassandra, ArangoDB, RethinkDB).
Nie geschlossen werden: 22, 80, 443, jeder Port, auf dem SSH lauscht oder den eine offene SSH-Sitzung nutzt, und jeder Port, auf dem ein Webserver lauscht. Ein Port wird nicht geschlossen, solange eine öffentliche Adresse mit ihm verbunden ist.
Ausgehenden Verkehr sperren
Ein Ziel kann nur gesperrt werden, wenn der Agent selbst es in den letzten 24 Stunden als Bedrohung gemeldet hat: eine Verbindung zu einer gelisteten Adresse, eine DNS-Antwort, die auf eine solche zeigt, oder ein Eintrag der durchgesetzten Bedrohungsliste. Nie gesperrt werden: private, geschützte und auf der Whitelist stehende Adressen, das Dashboard, die konfigurierten DNS-Server, eine Adresse, die gerade per SSH angemeldet ist oder von der in den letzten 30 Tagen ein SSH-Login kam, oder eine Adresse, die gerade mit einem Dienst des Servers verbunden ist. Eine Verbindung zu SSH ohne Anmeldung, etwa ein Brute-Force-Angriff, schützt niemanden. Ausgehende Sperren gelten für IPv4.
Regelmäßige Ziele
Der Agent zählt die eigenen ausgehenden Verbindungen des Servers pro Adresse und Tag: nur öffentliche IPv4-Adressen und eine Tageszahl, 7 Tage lang aufbewahrt. Eine Adresse ist ein regelmäßiges Ziel, wenn sich der Server, als sie zum ersten Mal auf einer Bedrohungsliste auftauchte, an 3 oder mehr der 7 Tage davor 5-mal oder öfter mit ihr verbunden hatte. Eine API, ein Backup-Dienst oder ein Update-Mirror, der auf einer Bedrohungsliste landet, darf nicht durch eine automatische Entscheidung abgeschnitten werden. Ein regelmäßiges Ziel zu sperren braucht deshalb einen Menschen: Anwenden durch einen Inhaber oder Administrator mit Zwei-Faktor-Authentifizierung oder eine Freigabe unter Freigaben. Der Treffer nennt, wie viele Verbindungen an wie vielen Tagen. Eine bereits aktive Sperre bleibt. Eine Adresse, die schon gelistet war, als der Server sie zum ersten Mal erreichte, wird nie regelmäßig (Agent 1.0.35 oder neuer).
Ein Treffer nennt auch seine Richtung. inbound heißt, dass sich die gelistete Adresse mit einem Dienst des Servers verbunden hat: Sie ist ein Angreifer, kein Ziel, und AutoMode sperrt sie, statt den Verkehr zu ihr zu blockieren.
Wer sie auslöst
Ports werden geschlossen und Ziele gesperrt, wenn jemand das im Dashboard verlangt oder wenn AutoMode oder der Notfallmodus es entscheiden. Jede Änderung erscheint unter Aktivität, mit Rückgängig. Im Überwachungsmodus ändert sich nichts.
AutoMode und der Notfallmodus schließen einen Port nur dann selbst, wenn er einer von 3306, 5432, 6379, 27017, 9200, 11211, 2375, 2376, 5984 und 8086 ist, die Härtungsprüfung ihn als aus dem Netz erreichbar gemeldet hat und er in den letzten 24 Stunden angegriffen wurde (Agent 1.0.31 oder neuer, der seine SSH-Ports meldet). Jeder andere Port braucht deine Freigabe: 3306 von MySQL ohne Angriff, 5432 von PostgreSQL oder 15672 von RabbitMQ warten unter Freigaben. AutoMode und der Notfallmodus sperren ein Ziel nur dann selbst, wenn eine ausgehende Verbindung einen kritischen Treffer hatte, und nie ein regelmäßiges Ziel.
Einen Port freizugeben erfordert Zwei-Faktor-Authentifizierung. Nur ein Inhaber oder Administrator, der mit Zwei-Faktor-Authentifizierung angemeldet ist, kann das Schließen eines Ports freigeben oder ihn mit Anwenden beim Sicherheitswert sofort schließen; ohne 2FA wird auch dieses Anwenden zu einer Anfrage unter Freigaben. Schalte sie unter Einstellungen › Sicherheit ein.
Geprüft oder zurückgenommen
Vor jeder Änderung notiert der Agent, welche SSH-Ports und Websites antworten; danach prüft er sie erneut. Antwortet etwas nicht mehr, nimmt er die Änderung selbst zurück und meldet Vom Server zurückgenommen.
Die Regeln liegen in den Ketten INFRAFENCE-PORTS und INFRAFENCE-EGRESS des Agenten und werden nach einem Neustart wiederhergestellt. Grenzen: 200 geschlossene Ports und 1.000 gesperrte Ziele pro Server.
