[iptables] bestimmte IP sperren

LuxSkywalker

Lt. Junior Grade
Dabei seit
Juli 2002
Beiträge
284
#1
Moin!

auf unserem /root Server macht jemand blödsinn - traffic ohne Ende - TS Webport dicht u.ä.

nu wollt ich den hammelkopp per iptables sperren, bin mir aber nicht unbedingt sicher wo ich die regel einsetzten muss :(

ich nutzte das script von: http://www.harry.homelinux.org/ > IP Tables Generator

das sollte die funktionierende Regel sein: iptables -A INPUT -s <IP_Adress> -j DROP

hänge ich die aber hinter die ACCEPT Regeln -->

# HTTP
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 80 -j ACCEPT
... etc


kommt der trotzdem durch - is ja auch klar ich droppe ja erst nachdem der htpp durchgelassen wurde...

setzte ich die DROP regel für die IP früher werden alle ACCEPT regeln ausgehebelt...?!?! :freak:

wenn jemand das ganze Script sehen will, meldung dann verlinke ich das hier! :cool:
 
Dabei seit
März 2001
Beiträge
16.582
#3
Wieso forward ?

Die rule ist schon richtig und müsste vor die mit Port 80 erlauben.

Ist doch logisch, dass dann für dessen IP alle Accepts ignoriert werden, schließlich matcht der ja bei der ersten Regel.
 
Dabei seit
Mai 2003
Beiträge
4.253
#4
Zitat von Blutschlumpf:
Wieso forward ?

Die rule ist schon richtig und müsste vor die mit Port 80 erlauben.

Ist doch logisch, dass dann für dessen IP alle Accepts ignoriert werden, schließlich matcht der ja bei der ersten Regel.
Stimmt. - Es muss INPUT heißen. FORWARD sollte man auf dem Router, nicht auf dem Zielsystem einsetzen. Mein Fehler. (Hab das hier aus meinem Skript gezogen).

@LuxSkywalker:

Du musst wie Blutschlumpf gesagt hat, die Rule vor allen anderen setzen. ->

#!$SHELL
iptables=`which iptables`

$IPTABLES -F
[...]
$IPTABLES -A INPUT -i $DEVICE -s <IP-Addresse> -j DROP
[...]
MfG
 

LuxSkywalker

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Juli 2002
Beiträge
284
#5
Hi!

hier das ganze Script:

Code:
#!/bin/bash
# ---------------------------------------------------------------------
# Linux-iptables-Firewallskript, Copyright (c) 2005 under the GPL
# Autogenerated by iptables Generator v1.20 (c) 2002-2005 by Harald Bertram 
# Please visit http://www.harry.homelinux.org for new versions of
# the iptables Generator (c).
# 
# This Script was generated by request from:
# xxx@xxx.xx on: 2005-4-17 12:58.4 MET.
# 
# If you have questions about the iptables Generator or about
# your Firewall-Skript feel free to take a look at out website or
# send me an E-Mail to webmaster@harry.homelinux.org.
# 
# My special thanks are going to Lutz Heinrich (trinitywork at hotmail dot com)
# who made lots of Beta-Testing and gave me lots of well qualified
# Feedback that made me able to improve the iptables Generator.
# --------------------------------------------------------------------
#
### BEGIN INIT INFO
# Provides: IP-Paketfilter
# Required-Start: $network $local_fs
# Required-Stop: $local_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Short-Description: Harry's IP-Paketfilter
# Description: Harry's IP-Paketfilter provides reasonable
#      IP-Security for Home-Computers and small networks
### END INIT INFO
#

case "$1" in
  start)
    echo "Starte IP-Paketfilter"

    # iptables-Modul
    modprobe ip_tables
    # Connection-Tracking-Module
    modprobe ip_conntrack
    # Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
    modprobe ip_conntrack_irc
    modprobe ip_conntrack_ftp

    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X

    # Default-Policies setzen
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP

    # MY_REJECT-Chain
    iptables -N MY_REJECT

    # MY_REJECT fuellen
    iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
    iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
    iptables -A MY_REJECT -p icmp -j DROP
    iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

    # MY_DROP-Chain
    iptables -N MY_DROP
    iptables -A MY_DROP -j DROP

    # Korrupte Pakete zurueckweisen
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A OUTPUT -m state --state INVALID -j DROP

    # Stealth Scans etc. DROPpen
    # Keine Flags gesetzt
    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP

    # SYN und FIN gesetzt
    iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

    # SYN und RST gleichzeitig gesetzt
    iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

    # FIN und RST gleichzeitig gesetzt
    iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

    # FIN ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

    # PSH ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

    # URG ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP

    # Loopback-Netzwerk-Kommunikation zulassen
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    # Connection-Tracking aktivieren
    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

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

    # TeamSpeak WEB Status
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 39000 -j ACCEPT

    # SSH
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 22 -j ACCEPT

    # TS Server
    iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport xxx -j ACCEPT

    # Gameserver#1
    iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport xxx -j ACCEPT

    # Gameserver#2
    iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport xxx -j ACCEPT

    # Gameserver#3
    iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport xxx -j ACCEPT

    # Gameserver#4
    iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport xxx -j ACCEPT

    # IP sperren
    iptables -A INPUT -s <IP_Adress> -j DROP

    # Default-Policies mit REJECT
    iptables -A INPUT -j MY_REJECT
    iptables -A OUTPUT -j MY_REJECT

    # Max. 500/Sekunde (5/Jiffie) senden
    echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

    # Speicherallozierung und -timing für IP-De/-Fragmentierung
    echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
    echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
    echo 30 > /proc/sys/net/ipv4/ipfrag_time

    # TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

    # Maximal 3 Antworten auf ein TCP-SYN
    echo 3 > /proc/sys/net/ipv4/tcp_retries1

    # TCP-Pakete maximal 15x wiederholen
    echo 15 > /proc/sys/net/ipv4/tcp_retries2

    ;;

  stop)
    echo "Stoppe IP-Paketfilter"
    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
    # Default-Policies setzen
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    ;;

  status)
    echo "Tabelle filter"
    iptables -L -vn
    echo "Tabelle nat"
    iptables -t nat -L -vn
    echo "Tabelle mangle"
    iptables -t mangle -L -vn
    ;;

  *)
    echo "Fehlerhafter Aufruf"
    echo "Syntax: $0 {start|stop|status}"
    exit 1
    ;;

esac
damit funktioniert´s soweit, aber ich kann deutlich zugriffe auf den http port in den Logfiles erkennen... :(

setzte ich die iptables -A INPUT -s <IP_Adress> -j DROP Regel weiter vorne ein -> kein zugriff mehr auf TS Webport und Gameserver Status auf unserer Website

hm, was läuft falsch?

ich müsste die DROP IP Regel doch viel weiter oben einfügen können? damit die IP auf jeden Fall gedroppt wird... oder?

Grüsse
 
Dabei seit
März 2001
Beiträge
16.582
#7
Kenn IPTables auch nur aus ner 2 Std. googlen + ausprobieren-Aktion ;)
Hätte es von Logik her aber auch da probiert.
 

LuxSkywalker

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Juli 2002
Beiträge
284
#8
hm war gestern Nacht schon spät... hätte ich auch mal probieren können!

soweit oben hab ichs natürlich nicht probiert... :rolleyes:

Funzt! Danke euch beiden...

angenehmen Tag noch :cool:
 
Top