Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Alle LAN-IPs ausperren bis auf fünf auserwählte

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

Antworten
jk47
Newbie
Newbie
Beiträge: 15
Registriert: 1. Jan 2005, 16:53

Alle LAN-IPs ausperren bis auf fünf auserwählte

Beitrag von jk47 »

Moin, Moin,

ich habe eine Linux Firewall, die ganz normal funktioniert, die zwischen userem LAN und dem Internet routet.

Das Problem ist, das ich nur einer begrenzten Anzahl von Hosts zugriff gewähren möchte (und zwar über die IP der Hosts), also ip x darf, ip y darf auch und der Rest nicht.

Meine Frage ist erstmal, was muss in den iptables für funktionierendes DSL-Routing stehen haben? Z.T. wurden Seiten nicht angezeigt.

Das ganze hat übrigens schon eine Vorgeschichte: http://www.linux-club.de/viewtopic.php?t=22831

Ich hab mir iptables.org übrigens schon durgelesen...

Vielen Dank für Hilfe

Jan
gaw
Hacker
Hacker
Beiträge: 464
Registriert: 28. Sep 2004, 16:33

Beitrag von gaw »

Wenn du das schon durchgelesen und verstanden hast, verstehe ich deine Frage nicht. Deine Firewallregeln sind hoffentlich besser geworden denn du reduzierst durch deine Regeln die Möglichkeiten von iptables auf einen statischen Paketfilter. Wie sich so etwas mit stateful inspection einrichten lässt findest du hier:
http://www.linux-club.de/viewtopic.php?t=21303

Es gibt prinzipiell zwei Möglichkeiten bestimmte IP-Adressen in eine iptables Firewall einzubinden. Zum einen über eine Schleife, hier ein Beispiel um Webverkehr von bestimmten Rechnern aus dem LANzu erlauben, für hin und rücklaufende Pakete

Code: Alles auswählen

ALLOW_HOSTS="192.168.100.1 192.168.100.2 10.0.0.3 10.0.0.4"

for ADRESS in $ALLOW_HOSTS; do
   /usr/sbin/iptables -A FORWARD -i $INTERFACE_EXT -o $INTERFACE_INT -m state --state NEW,ESTABLISHED,RELATED -d $ADRESS -p tcp --dport 80 --sport 1024:65535 --j ACCEPT

  /usr/sbin/iptables -A FORWARD -i $INTERFACE_INT -o $INTERFACE_EXT -m state --state ESTABLISHED,RELATED -s $ADRESS -p tcp --sport 80 --dport 1024:65535 --j ACCEPT
done
Diese Regelpaare setzen das Prinzip verbiete alles/erlaube einiges vorraus und zwar auch für den rücklaufenden Tansfer (Es gibt andere Designs, die zum Beispiel Pakete, die als established und related gelten grundsätzlich passieren lassen oder die alles erlauben und einiges verbieten).

Eine zweite Möglichkeit besteht darin mit Subnetting zu arbeiten. So kann man intern mit einer völlig normalen Nertzwerkmaske arbeiten und auf der Firewall mit einer modifizierten. Man sollte dann nur die entprechenden Netzwerk- und Broadcastadressen die mit der modifizierten Subnetmask entstehen nicht belegen, weil diese sonst durch die Firewall nicht erfasst werden würden.

Für jedes Subnetz kann man dann die Regeln explizit formulieren.

Beispiel:

Code: Alles auswählen

/usr/sbin/iptables -A FORWARD -i $INTERFACE_EXT -o $INTERFACE_INT -m state --state NEW,ESTABLISHED,RELATED -d 192.168.100.128/25 -p tcp --dport 80 --sport 1024:65535 --j ACCEPT

/usr/sbin/iptables -A FORWARD -i $INTERFACE_INT -o $INTERFACE_EXT -m state --state ESTABLISHED,RELATED -s 192.168.100.128/25 -p tcp --sport 80 --dport 1024:65535 --j ACCEPT
Hier wird nur den Rechnern im Adressenbereich von 192.168.100.129 bis 192.168.100.253 der http-Zugang ermöglicht während Rechner des Adressenbereiches von 192.168.100.1 - 192.168.100.125 der Zugang vewehrt bleibt, immer das Design verbiete alles /erlaube einiges vorausgesetzt. Da das Subnetting nur auf der Firewall stattfindet, bleibt das interne Netz unberührt, nur dass neben den Adressen 192.168.100.0 und 192.168.100.255 auch die Adressen 192.168.100.126 und 192.168.100.127 als Broadcastadresse des 1. Subnet bzw. als Netzwerkadresse des 2. Subnet nicht belegt werden sollten.

Beide Prinzipien haben Vor- und Nachteile. Mit dem Subnetting lässt sich mit einer Regel gleich ein ganzes Bündel von Rechnern erfassen, man ist aber angewiesen die IP-Adresse entsprechend der Netzwerkmaske zu vergeben. Dagegen erzeugt die Schleife für jede Adresse eine eigene Regel, ist aber flexibler, nicht von Subnetzmasken abhängig und man kann Rechnernamen statt IP-Adressen verwenden was sich in Umgebungen mit DHCP als notwendig erweisen kann.

mfG
gaw
jk47
Newbie
Newbie
Beiträge: 15
Registriert: 1. Jan 2005, 16:53

Beitrag von jk47 »

Mal andersrum gefragt: Warum funktioniert folgendes Skript nicht?

Code: Alles auswählen

#! /bin/sh

############-- INIT  --###############
# flush
echo "flushing tables"
iptables -F
iptables -F -t nat

# policies

echo "setup policies"
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

echo "accepting ESTBLISHED, RELATED"
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#+++++++++++++++++++++++++   INPUT   ++++++++++++++++++++++++++++++

#DSL
#iptables -A INPUT -i PPP0 -j ACCEPT
iptables -A INPUT -i lo -s 127.0.0.1/255.0.0.0 -j ACCEPT
iptables -A FORWARD -i lo -s 127.0.0.1/255.0.0.0 -j ACCEPT 

echo "input"
####################################################################
iptables -A INPUT -s 10.238.0.28 -i eth0 -j ACCEPT	#MARC
####################################################################
iptables -A INPUT -s 10.238.103.100 -i eth0 -j ACCEPT	#PUHA
iptables -A INPUT -s 10.238.105.125 -i eth0 -j ACCEPT
####################################################################
iptables -A INPUT -s 10.238.105.102 -i eth0 -j ACCEPT	#JK47
####################################################################
iptables -A INPUT -s 10.238.184.105 -i eth0 -j ACCEPT	#PRYO
iptables -A INPUT -s 10.238.106.31 -i eth0 -j ACCEPT
####################################################################
iptables -A INPUT -s 10.238.111.31 -j ACCEPT		#rauder
iptables -A INPUT -s 0/0 -i ppp0 -j ACCEPT
####################################################################
#iptables -A INPUT -j DROP
#++++++++++++++++++++++++++++ OUTPUT  ++++++++++++++++++++++++++
echo "output"
####################################################################
iptables -A OUTPUT -d 10.238.0.28 -j ACCEPT		#MArc
####################################################################
iptables -A OUTPUT -d 10.238.103.100 -j ACCEPT		#PUHA
iptables -A OUTPUT -d 10.238.105.125 -j ACCEPT
####################################################################
iptables -A OUTPUT -d 10.238.105.102 -j ACCEPT		#JK47
####################################################################
iptables -A OUTPUT -d 10.238.184.105 -j ACCEPT		#PRYO
iptables -A OUTPUT -d 10.238.106.31 -j ACCEPT
####################################################################
iptables -A OUTPUT -s 10.238.111.31 -j ACCEPT		#rauder
iptables -A OUTPUT -d 10.238.111.31 -j ACCEPT
####################################################################
#iptables -A OUTPUT -j DROP


#++++++++++++++++++++++++++++++++++ forward ++++++++++++++++++++++++++

echo "forward"
iptables -A FORWARD -s 10.238.0.28 -i eth0 -j ACCEPT	#MARC
iptables -A FORWARD -s 10.238.103.100 -i eth0 -j ACCEPT	#PUHA
iptables -A FORWARD -s 10.238.105.125 -i eth0 -j ACCEPT	#PUHA
iptables -A FORWARD -s 10.238.105.102 -i eth0 -j ACCEPT	#JK47
iptables -A FORWARD -s 10.238.106.31 -i eth0 -j ACCEPT	#PRYO
iptables -A FORWARD -s 10.238.184.105 -i eth0 -j ACCEPT	#PRYO

iptables -A FORWARD -d 10.238.0.28 -i eth0 -j ACCEPT	#MARC
iptables -A FORWARD -d 10.238.103.100 -i eth0 -j ACCEPT	#PUHA
iptables -A FORWARD -d 10.238.105.125 -i eth0 -j ACCEPT	#PUHA
iptables -A FORWARD -d 10.238.105.102 -i eth0 -j ACCEPT	#JK47
iptables -A FORWARD -d 10.238.106.31 -i eth0 -j ACCEPT	#PRYO
iptables -A FORWARD -d 10.238.184.105 -i eth0 -j ACCEPT	#PRYO

iptables -A FORWARD -s 10.238.111.31 -j ACCEPT
iptables -A FORWARD -d 10.238.111.31 -j ACCEPT 
iptables -A FORWARD -s 10.238.111.31 -j ACCEPT
iptables -A FORWARD -d 10.238.111.31 -j ACCEPT 

iptables -A FORWARD -s 0/0 -i ppp0 -j ACCEPT		# dat indernet
#iptables -A FORWARD -j DROP



###########################################################
iptables -L -n
#iptables -L OUTPUT
#iptables -L FORWARD
echo "firewall up..."
#eof

Aus irgendeinem Grund funktioniert es entweder garnicht, oder es werden nicht alle Seiten geöffnet. Ich möchte eigentlich die "Was nicht erlaubt ist, ist verboten" Variante eistellen.

Danke für Hilfe!

Jan
Antworten