[IPTables] nur 1 IP darf auf eth0:1 zugreifen - alle Anderen droppen

cppnap

Lt. Junior Grade
Registriert
Nov. 2008
Beiträge
487
Guten Tag,

wie oben beschrieben habe ich einen Server mit 2 IP-Adressen

Code:
eth0:0    Link encap:Ethernet  HWaddr 14:dd:a9:d3:36:f1  
          inet addr: xxx.xxx.xxx.248  Bcast:xxx.xxx.xxx.248  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Memory:fa100000-fa17ffff 

eth0:1    Link encap:Ethernet  HWaddr 14:dd:a9:d3:36:f1  
          inet addr:xxx.xxx.xxx.245  Bcast:xxx.xxx.xxx.245  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Memory:fa100000-fa17ffff


Auf eth0:1 läuft eine Webseite mit SSL. Diese Webseite soll nur von einer festen Anzahl von IP-Adressen verfügbar sein, alle Anderen sollen gedroppt werden.

Bisher bin ich soweit gekommen, dass alle aktuell Alle gedroppt werden. Wenn ich die erste fixe IP-Adresse versuche freizuschalten ist das aber leider ohne Erfolg.

Code:
iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -j DROP
iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -p tcp --source yyy.yyy.yyy.66 -j ACCEPT     
iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -p udp --source yyy.yyy.yyy.66 -j ACCEPT

Wo liegt da jetzt der Hund begraben, dass das für die fixe IP-Adresse yyy.yyy.yyy.66 erreichbar ist?

Vielen Dank schon mal :-)
 
Bin nicht der IPTables Held aber mMn. sollte die DROP Regel anders eingerichtet werden. Ansonsten werden von Anfang an alle Pakete gedroppt.

Code:
iptables -P INPUT DROP #alle eingehenden Verbindungen werden geblockt, sofern sie nicht explizit zugelassen werden (unten)
iptables -A INPUT -i lo -j ACCEPT #akzeptiert alle Verbindungen nach localhost
iptables -A INPUT -i eth1 -j ACCEPT #akzeptiert alle Verbindungen nach eth1
iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -p tcp --source yyy.yyy.yyy.66 -j ACCEPT     
iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -p udp --source yyy.yyy.yyy.66 -j ACCEPT

Weitere Hilfe hier --> https://wiki.ubuntuusers.de/iptables2/
 
Zuletzt bearbeitet:
Jap das scheint funktioniert zu haben - komme mit der fixen IP drauf aber über VPN wird geblockt.

Super danke! :-)
 
Über VPN hast du eine andere Source IP...
 
Vielleicht nochmal zur Verdeutlichung: Die Regeln werden der Reihe nach abgearbeitet. Sobald eine Regel greift und ein Paket verwirft oder erlaubt, wird keine weitere Regel in der Kette (hoffe der Begriff passt hier) mehr berücksichtigt. Daher wurden bei deinem ursprünglichen Aufbau auch schlicht einfach alle Pakete, die an die .245 gingen, verworfen ;)

Und im Webserver willst du das nicht abbilden? Finde ich persönlich in vielen Fällen übersichtlicher und einfacher zu pflegen, als regelmäßig an der FW zu arbeiten ^^ Außerdem ließe sich über den Webserver z.B. auch eine Absicherung per Clientzertifikaten einrichten.
 
cppnap schrieb:
Guten Tag,

wie oben beschrieben habe ich einen Server mit 2 IP-Adressen

Code:
eth0:0    Link encap:Ethernet  HWaddr 14:dd:a9:d3:36:f1  
          inet addr: xxx.xxx.xxx.248  Bcast:xxx.xxx.xxx.248  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Memory:fa100000-fa17ffff 

eth0:1    Link encap:Ethernet  HWaddr 14:dd:a9:d3:36:f1  
          inet addr:xxx.xxx.xxx.245  Bcast:xxx.xxx.xxx.245  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Memory:fa100000-fa17ffff


Auf eth0:1 läuft eine Webseite mit SSL. Diese Webseite soll nur von einer festen Anzahl von IP-Adressen verfügbar sein, alle Anderen sollen gedroppt werden.

Bisher bin ich soweit gekommen, dass alle aktuell Alle gedroppt werden. Wenn ich die erste fixe IP-Adresse versuche freizuschalten ist das aber leider ohne Erfolg.

Code:
iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -j DROP
iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -p tcp --source yyy.yyy.yyy.66 -j ACCEPT     
iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -p udp --source yyy.yyy.yyy.66 -j ACCEPT

Wo liegt da jetzt der Hund begraben, dass das für die fixe IP-Adresse yyy.yyy.yyy.66 erreichbar ist?

Vielen Dank schon mal :-)

Hallo, folgendes damit du auch verstehst was du machst.

iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -j DROP

iptables empfängt das Paket über die Schnittstelle eth0 und sobald dort das Ziel x.254 hinterlegt ist, wird das Paket verworfen.

iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -p tcp --source yyy.yyy.yyy.66 -j ACCEPT
iptables -A INPUT -i eth0 -d xxx.xxx.xxx.245 -p udp --source yyy.yyy.yyy.66 -j ACCEPT

iptables empfängt das Paket über die Schnittstelle eth0 und sobald es das Ziel x.254 mit den Protokoll TCP/UDP und von der Quelle x.66 kommt, wird akzeptiert.



Du willst aber, dass nur von einer bestimmten Anzahl von bekanten IP-Adressen eine Verbindung aufgebaut werden kann, dafür musst du folgendes machen.

# Dieser Befehl erlaubt den Zugriff auf x.245 von y.66 via TCP und dem Port 443
iptables -A INPUT -i eth0 -d x.245 -p TCP --source y.66 --dport 443 -j ACCEPT

# Bitte nicht vergessen, dass du für localhost usw.. die Einstellungen, welcher weiter oben bereits erwähnt wurden, durchführst.
# Dieser Befehl stellt das Standardverhalten von iptables um auf verwerfen. Solltest du dieses Einstellung vergessen, wird iptables weiterhin alles erlauben, da das Standardverhalten von iptables Accept ist.
iptables -P INPUT -j DROP


Ich hoffe, dass ich dir helfen konnte.
 
Zuletzt bearbeitet:
Zurück
Oben