7532689170
15.06.2023
3212
8
0
IP-Adressbereich mit IPTables sperren ( Ubuntu 22.04 )
Guten Morgen Gemeinde,
zum üblichen Grundrauschen eines Servers, der im Internet hängt bzw. beim Hoster steht, gehören ja immer wieder Versuche verschiedener IP-Adressen/Server sich u.a. in das SSH per Bruteforce reinzuklinken.
Nun habe ich mir aus den Auth.log-Dateien von meinem Linux-Server mal die IP-Adressen per Script rausgesucht und möchte ein paar Adressbereiche per IPTables sperren.
z.B. komplett 80.10.2.yyy (also von 80.10.2.0 bis 80.10.2.255)
Oder muss ich jede IP-Adresse einzeln sperren?
Google hat da leider nicht so für mich logische Antworten ausgespuckt.
Mir ist klar das es ein Kampf gegen Windmühlen ist aber ich will zumindest etwas ruhe reinbekommen.
Vielen Dank schonmal für eure Hilfe.
zum üblichen Grundrauschen eines Servers, der im Internet hängt bzw. beim Hoster steht, gehören ja immer wieder Versuche verschiedener IP-Adressen/Server sich u.a. in das SSH per Bruteforce reinzuklinken.
Nun habe ich mir aus den Auth.log-Dateien von meinem Linux-Server mal die IP-Adressen per Script rausgesucht und möchte ein paar Adressbereiche per IPTables sperren.
z.B. komplett 80.10.2.yyy (also von 80.10.2.0 bis 80.10.2.255)
Oder muss ich jede IP-Adresse einzeln sperren?
Google hat da leider nicht so für mich logische Antworten ausgespuckt.
Mir ist klar das es ein Kampf gegen Windmühlen ist aber ich will zumindest etwas ruhe reinbekommen.
Vielen Dank schonmal für eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7533026827
Url: https://administrator.de/forum/ip-adressbereich-mit-iptables-sperren-ubuntu-22-04-7533026827.html
Ausgedruckt am: 23.12.2024 um 12:12 Uhr
8 Kommentare
Neuester Kommentar
Hallo,
3ter Eintrag auf Google:
https://www.google.com/search?client=firefox-b-d&q=iptables+ip+berei ...
https://www.kh2004.de/tipps/iptables-firewall-beispiele-um-ips-zu-sperre ...
... Aber sowas macht man vollautomatisiert mittels fail2ban ;)
VG
bitnarrator
3ter Eintrag auf Google:
https://www.google.com/search?client=firefox-b-d&q=iptables+ip+berei ...
https://www.kh2004.de/tipps/iptables-firewall-beispiele-um-ips-zu-sperre ...
iptables --append INPUT --src 80.10.2.0/24 --jump DROP
... Aber sowas macht man vollautomatisiert mittels fail2ban ;)
VG
bitnarrator
Hi.
ähm, .. wieso händisch?
Also: das Grundrauschen bekommt man schon mal massiv reduziert wenn man den default SSH Port von 22 ändert (ich nehme häufig 15000+).
Wichtig: pass auf, dass Du dich nicht aussperrst!
Beispiel: per Default ist Port 22 in der FW freigegeben. Änderst Du nun den Port auf 1337, sollte das die Firewall VORHER(!) mitbekommen (sollte im Vorfeld freigegeben werden in der FW) sonst wars das mit deinem Zugang.
Dann: fail2ban installieren der automatisch dein Logdir prüft und nach deinen Vorgaben die IPs direkt in die ufw/iptables packt. (n Fehlversuche innerhalb x Minuten => ban für 3600 Minuten).
Fail2ban kannste dann auch noch dazu nötigen, dass es Dir bspw. eine Mailschickt mit den komplett Daten der IP (vermutliches Herkunftsland, dauer, wann, reputation .. etc.) die gesperrt wurde.
Gruß
ähm, .. wieso händisch?
Also: das Grundrauschen bekommt man schon mal massiv reduziert wenn man den default SSH Port von 22 ändert (ich nehme häufig 15000+).
Wichtig: pass auf, dass Du dich nicht aussperrst!
Beispiel: per Default ist Port 22 in der FW freigegeben. Änderst Du nun den Port auf 1337, sollte das die Firewall VORHER(!) mitbekommen (sollte im Vorfeld freigegeben werden in der FW) sonst wars das mit deinem Zugang.
Dann: fail2ban installieren der automatisch dein Logdir prüft und nach deinen Vorgaben die IPs direkt in die ufw/iptables packt. (n Fehlversuche innerhalb x Minuten => ban für 3600 Minuten).
Fail2ban kannste dann auch noch dazu nötigen, dass es Dir bspw. eine Mailschickt mit den komplett Daten der IP (vermutliches Herkunftsland, dauer, wann, reputation .. etc.) die gesperrt wurde.
Gruß
Ausgezeichnet.
Auch hier: wenn Du Fail2ban aufsetzt, achte darauf, dass Du deine (eigenen) IPs whitelistest. Solltest Du (kenne ich aus eigener Erfahrung heraus) bspw. ein relativ kryptisches PW (bitte SSH nur via Zertifikat nutzen) hast und es mehrfach selbst falsch eingibst, wirst auch Du irgendwann gesperrt werden. War schon da, war doof. :D
Gruß und viel Erfolg.
Aber das mit Fail2Ban klingt gesünder für mich
Auch hier: wenn Du Fail2ban aufsetzt, achte darauf, dass Du deine (eigenen) IPs whitelistest. Solltest Du (kenne ich aus eigener Erfahrung heraus) bspw. ein relativ kryptisches PW (bitte SSH nur via Zertifikat nutzen) hast und es mehrfach selbst falsch eingibst, wirst auch Du irgendwann gesperrt werden. War schon da, war doof. :D
Gruß und viel Erfolg.
Hier ein /etc/nftables.conf Beispiel wie du mit den moderneren nftables so einen Host, natürlich noch mit fail2ban zusätzlich noch on Top, absicherst. Moderne Debian basierte Distros ab Bullseye haben schon keine iptables mehr an Bord und kommen per Default nur noch mit nftables!
Dieses Beispiel ist ein vServer Jumphost der außer SSH nur noch Wireguard und IPsec passieren lässt was du natürlich weglassen kannst wenn du keinen VPN Zugang hast. Wenn du noch weitere Dienste freigeben willst oder musst, dann trägst du das unter "accept common local TCP services on public interface" ein. Ein ...dport { ssh, http, https } lässt z.B. noch Webtraffic zu.
Fail2ban legt in nftables automatisch einen Filter für die geblockten IPs der Angriffsversuche an muss aber auf nftables eingestellt sein was im Konfig File /etc/fail2ban/jail.local mit den folgenden Änderungen schnell erledigt ist:
Mit nft list ruleset kannst du dir den Filterstatus ansehen und auch welche Angreifer IP Adressen durch fail2ban automatisch geblockt wurden.
Idealerweise arbeitest du statt mit Username/Passwort bei SSH mit einem Key auf deinem Host!
https://www.heise.de/select/ct/2022/21/2223709091059562015
Dieses Beispiel ist ein vServer Jumphost der außer SSH nur noch Wireguard und IPsec passieren lässt was du natürlich weglassen kannst wenn du keinen VPN Zugang hast. Wenn du noch weitere Dienste freigeben willst oder musst, dann trägst du das unter "accept common local TCP services on public interface" ein. Ein ...dport { ssh, http, https } lässt z.B. noch Webtraffic zu.
#!/usr/sbin/nft -f
flush ruleset
define pub_iface = "eth0"
define wg_port = 57820
table inet drop-bad-ct-states {
chain prerouting {
type filter hook prerouting priority -150; policy accept;
# drop packets in "invalid" connection-tracking state
ct state invalid drop
# drop tcp packets for new connections that aren't syn packets
tcp flags & (fin|syn|rst|ack) != syn ct state new counter drop
# drop XMAS packets.
tcp flags & (fin|syn|rst|psh|ack|urg) == fin|syn|rst|psh|ack|urg counter drop
# drop NULL packets.
tcp flags & (fin|syn|rst|psh|ack|urg) == 0x0 counter drop
# drop new connections over rate limit
ct state new limit rate over 1/second burst 10 packets drop
}
}
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# accept any localhost traffic
iif lo accept
# accept any wireguard traffic
# iifname $wg_iface tcp dport http accept
iifname "wg0" accept
# accept traffic originated from us
ct state established,related accept
# accepted ICMP types
# ip protocol icmp icmp type {echo-request, echo-reply, time-exceeded, parameter-problem, destination-unreachable } accept
ip protocol icmp icmp type {time-exceeded, parameter-problem, destination-unreachable } accept
# accept common local TCP services on public interface
iif $pub_iface tcp dport { ssh } ct state new accept
# accepted UDP ports and ESP on public interface (VPN)
iif $pub_iface udp dport { isakmp, ipsec-nat-t, $wg_port } accept
iif $pub_iface ip protocol esp accept
# allow IPsec VPN networks
meta ipsec exists accept
# accept neighbour discovery otherwise IPv6 connectivity breaks.
ip6 nexthdr icmpv6 icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept
# log and count dropped traffic
# log prefix "[nftables]Denied: " counter drop
# only count dropped traffic
counter drop
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
Fail2ban legt in nftables automatisch einen Filter für die geblockten IPs der Angriffsversuche an muss aber auf nftables eingestellt sein was im Konfig File /etc/fail2ban/jail.local mit den folgenden Änderungen schnell erledigt ist:
[DEFAULT]
banaction = nftables-multiport
banaction_allports = nftables-allports
chain = input
[recidive]
banaction = nftables-allports
Idealerweise arbeitest du statt mit Username/Passwort bei SSH mit einem Key auf deinem Host!
https://www.heise.de/select/ct/2022/21/2223709091059562015
Nun - ich mache generell BEIDES. Wenn ich sehe das da mal wieder irgendwo aus den Logs div. (gerne russische) Bereiche auftauchen dann gibts nen extra IP-Tables Eintrag spendiert - dann braucht F2B da keine Arbeit für opfern... Da es oft selbst schon /16 oder sogar noch grössere sind fällt da auch schon gut was weg... Damit braucht F2B sich nur noch um Einzelschicksale zu kümmern ;).
Oder sie gleich länderbezogen blocken mit Geo IPs:
https://wiki.nftables.org/wiki-nftables/index.php/GeoIP_matching
https://wiki.nftables.org/wiki-nftables/index.php/GeoIP_matching