PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : blocken von einzelnen IP-Adressen



kumo
03.01.06, 11:58
die Firewall, die wir einsetzten auf iptables basierend, lässt erstmal grundsätzlich alle IP-Adressen die per ssh etc. anklingeln auf den Server.
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
Auf Grund der vielen Hackerangriffe habe ich ein Skript geschrieben welches die IP-Adressen blockt. So weit, so gut.
Zeile aus dem Perl-Skript:
`echo iptables -A INPUT -s $IPAdresse -j DROP >> /drop`;
Leider funktioniert das Blocken nur bei deaktivierter Firewall.
Jetzt meine Frage:
Wie schaffe ich es trotzdem die anderen IP-Adressen der Hacker zu sperren.
Nach meinem Verständnis können die Hacker-IP-Adressen nicht gedropt werden, da sie ja auch unter "0.0.0.0" laufen und wenn man es allen erlaubt dann auch den Hackern.
Kann mir jemand helfen? Bin dankbar für jede Lösung!

tschloss
03.01.06, 12:06
Zur Klarheit:
Dieses Skript manipuliert die Firewall des Servers?
Und dieses funktioniert nur, wenn die eigentliche (dedizierte) FW deaktiviert ist? Oder wie?

Und wo genau liegt das Problem, bestimmte IPs (um solche geht es doch oder?) zu blockieren?

Sorry, blicke die Situation nicht ganz.
Greetz
Thomas

kumo
03.01.06, 13:24
Bei aktivierter Firewall werden die IP-Adresse, die gedropt werden sollen mit iptables -L -n -x –v zwar als gedropt angezeigt, aber die Regeln greifen nicht, die Angriffe gehen munter weiter. Nur bei „heruntergefahrener “ Firewall greifen die Skripte. Habe dies getestet.

tschloss
03.01.06, 16:06
Der Firewall Rechner ist identisch mit dem Server?
Mit "Firewall deaktiviert" meinst Du die Deaktivierung eines iptables-Regelwerks auf dem Firewall PC, d.h. der Rechner und iptables laufen weiterhin. Und Ist das so?

Dann ist es vielleicht eine Frage der Reihenfolge, in der die Regeln abgearbeitet werden.
Probiere doch mal sowas wie

iptables -I INPUT -s $IPAdresse -j DROP
Das fügt diese Regel an der ersten Stelle in dieser Kette ein.

Greetz
Thomas

kumo
03.01.06, 16:42
Der Firewall Rechner ist der Server. Ich kann keine Firewall davorschalten. Die Firewall per iptables fährt beim Booten hoch. Die IP-Adressen, die gedropt werden sollen, werden anschließend ( per Skript bei Hackangriffen) automatisch dazu geschrieben, ich kann also NICHT die Adressen vorher eingeben. Das ist das Problem.
Arbeitsweise der Skripte: es wird regelmäßig die /var/log/messages ausgelesen, ob sich jemand es mehr wie 10mal probiert hat mit einer falschen Identität (illegal user) anzumelden. Wenn ja, greifen einige Skripte und die IP-Adresse soll sich garnicht mehr mit dem Server verbinden (alle Anfragen ablehnen). Ist die Firewall runtergefahren, dann funktioniert es, das die IP-Adressen gedropt werden.

tschloss
03.01.06, 17:34
Der Firewall Rechner ist der Server. Ich kann keine Firewall davorschalten. Die Firewall per iptables fährt beim Booten hoch. Die IP-Adressen, die gedropt werden sollen, werden anschließend ( per Skript bei Hackangriffen) automatisch dazu geschrieben, ich kann also NICHT die Adressen vorher eingeben. Das ist das Problem.
Arbeitsweise der Skripte: es wird regelmäßig die /var/log/messages ausgelesen, ob sich jemand es mehr wie 10mal probiert hat mit einer falschen Identität (illegal user) anzumelden. Wenn ja, greifen einige Skripte und die IP-Adresse soll sich garnicht mehr mit dem Server verbinden (alle Anfragen ablehnen). Ist die Firewall runtergefahren, dann funktioniert es, das die IP-Adressen gedropt werden.
Glaube, Du hast mich mißverstanden. Es gib mir um die Reihenfolge der iptables-Regeln in einer Kette. "A" appended halt hinten und evtl. gab es vorher schon ein Accept.
Benutze mal "-I" statt "-A" bei deinen iptables Befehlen?

Übrigens gibt es IDS (Intrusion-Detection-Systeme; Snort->Netz!, Tripwire->Host), die genau das auf etwas höherem Niveau machen.

obzidian
03.01.06, 18:05
Startet das Skript denn iptables neu? Das die Regeln bei nicht aktiviertem Filter wirken klingt eher nach dunkler Magie.

steve-e
03.01.06, 18:38
Iptables arbeitet die Regeln von oben nach unten ab. Trifft eine Regel auf eine Verbindung zu, werden weitere Regeln nicht beachtet.

Ist also ganz logisch, dass dein Script nicht funktioniert, wenn du die Regel ans Ende der existierenden Regel-Liste anfügst.

tschloss
03.01.06, 18:54
Startet das Skript denn iptables neu? Das die Regeln bei nicht aktiviertem Filter wirken klingt eher nach dunkler Magie.

Probier es doch einfach mal.

Nein, es wird nichts neu gestartet. iptables ist eine userspace Funktion, die eine Engine im Kernel konfiguriert. "FW ausschalten" heißt wahrscheinlich: "FW Regeln löschen". Dann ist deine Regel die einzige und sie wird beachtet. Sonst kommt die Engine eben gar nicht bis ans Ende - vermute ich / wir.

Greetz
Thomas

sirmoloch
03.01.06, 19:26
Warum so kompliziert mit iptables arbeiten, wenn sich einzelne IPs doch hervorragend mit der /etc/hosts.deny blocken lassen? ;) Damit läufst du dann auch nicht Gefahr deine Firewall-Regel für iptables zu zerstören.

kumo
03.01.06, 19:36
kurz zum "runterfahren" der FW. Ich meine natürlich, das alle Rules etc. gelöscht werden. (iptables -F ... )
Ich werde die Vorschläge morgen ausprobieren in einer Testumgebung.
Für uns ist die Sicherheit der Server sehr wichtig und Hackerangriffe sind nur lästig und schreiben die messages nur voll.

kumo
04.01.06, 10:25
:)
Hallo Thomas,
vielen Dank für die Hilfe.
Es lag tatsächlich an dem -A.
iptables -I INPUT -s $IPAdresse -j DROP ist genau das was es jetzt blockt auch mit Firewall sprich anderen iptables-Rules.

Ich bedanke mich auch für die anderen Beträge. Das mit der /etc/hosts.deny werde ich später noch einmal ausprobieren.

Gruß Kumo