SSH Whitelist mit IPTables
Sven Fehling
mailings at spamfence.de
Mon Jun 5 20:50:54 BST 2006
Marc Risse wrote:
> ich benutze folgene regeln um bruteforce-attacken zu verhindern:
[snip]
> jetzt meine frage:
>
> kann man sowas auch bauen, wenn man kein recent-modul zur verfügung hat?
Genau soetwas kannst du nicht bauen, aber du könntest das LIMIT-Modul
verwenden. Das matched alerdings nicht auf einzelne IPs wie RECENT, aber
wenn du eh einzelne IPs whitegelisted hast ist die Gefahr eines Self-DoS
recht gering.
Was mir aber auffällt ist, dass deine Logs so schnell vollauffen können,
da du ab dem vierten neuen Paket pro Minute jedes weitere logst; wenn
wirklich einige hundert Pakete/Sekunde auflaufen würden wären die Logs
schnell voll, was auch eine Art gelungener DoS wäre. Außerdem würde ich
zumindest ein paar Pakete mehr ordentlich REJECTEN, falls sich wirklich
mal wer verlaufen sollte und es nicht direkt merkt.
(Aus der freien Hand):
IPT=/sbin/iptables
$IPT -N SSH
$IPT -N SSH_LOG
$IPT -A SSH_LOG -j LOG --log-prefix " SSH: "
$IPT -A SSH_LOG -j REJECT --reject-with tcp-reset
$IPT -A SSH -s $whitegelistete_ip -j ACCEPT
$IPT -A SSH -s $weitere_whitegelistete_ip -j ACCEPT
$IPT -A SSH -m limit --limit 3/minute -j ACCEPT
$IPT -A SSH -m limit --limit 3/second -j SSH_LOG
$IPT -A SSH -j DROP
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW \
-j SSH
Was die Regeln machen:
Jedes Paket im Zustand NEW an TCP22 wird in die Chain SSH gesteckt.
Dort werden die whitegelisteten Quell-IPs direkt akzeptiert. Weiterhin
werden drei Pakete pro Minute von anderen Quellen akzeptiert.
Ab dem vierten Paket pro Minute werden die ersten drei Pakete pro
Sekunde in die Chain SSH_LOG gesteckt; kommen mehr als drei pro Sekunde
an werden diese direkt verworfen.
In SSH_LOG werden die besagten ersten drei Pakete/Sekunde einmal geloggt
und dann wird die TCP-Verbindung aktiv mit einem RST geschlossen.
HTH
Sven