Zum Inhalt springen

IPTABLES für internes LAN


G0G0

Empfohlene Beiträge

Hallo!

Und zwar würde ich gerne mit IPTABLES auf meinem LINUX Rechner nur das Internet für mein LAN freigeben sonst nichts.

Auf dem LINUX läuft auch ein Squid Proxy der auch ohne die IPTABLES funktioniert und die Clients Internet bekommen.

Vor dem LINUX ist eine FritzBox SL

LINUX Rechner:

Die Externe IP ist 192.168.178.26

Die Interne IP ist 192.168.1.2

Subnet ist 255.255.255.0

Clients: 192.168.1.0/24

Gateway: 192.168.1.2

Ich hab schon einiges gegooglt aber irgendwie nicht das wahre gefunden.

Was ich bisher versucht habe ist:

#!/bin/sh

INTDEV="eth1"

EXTDEV="eth0"

ECHO="/bin/echo"

IPTABLES="/usr/sbin/iptables"

$IPTABLES -P INPUT DROP

$IPTABLES -P OUTPUT DROP

$IPTABLES -P FORWARD DROP

$IPTABLES -F

$IPTABLES -t nat -F

$IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -m state --state NEW -j ACCEPT

$IPTABLES -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT

$IPTABLES -t nat -A POSTROUTIN -o $EXTDEV -j MASQUERDE

$ECHO "1" > /proc/sys/net/ipv4/ip_forward

Ich muss ja irgendwie noch den Squid fürs interne freigeben oder nicht? Aber wie genau das funz weiss ich leider nicht....

Hoffe ihr könnt mir weiterhelfen.

Mfg

Gogo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du bei SQuid mittles

http_port 3128 transparent
angibst das SQUID auf Port 3128 lauschen soll (transparent erklärt sich von selbst) kannst du dann mit dem Befehl

iptables -t nat -A PREROUTING -i eth0 --dport 80 -p tcp -m tcp -j REDIRECT --to-ports 3128

Den normalen www Verkehr an SQUID weiterleiten, stellst du dann beim DHCP Server die IP des SQUID-Rechners eingibst (beim SQUID-Rechner Manuell das Gateway ins Internet eingeben) kannst du mit SQUID alle zugriffe Regeln wie du möchtest.

Hoffe das hilft dir ein Stück weiter.

P.S.: Achte darauf das SQUID im Transparent Modus etwas schwieriger für FTP und HTTPS zu konfigurieren ist (am HTTPS scheitere ich momentan selber noch ;-) )

gruß

chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmm hab das ebend mit dem http_port 3128 transparent versucht aber irgendwie will er nicht mehr starten und sagt dann nachdem ich rcsquid start ausführe:

Startingsquid WWW-proxy squid startproc: signal catched /usr/sbin/squid: Abortet

failed

Hab auch schonmal versucht mit

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_uses_host_header on

aber ich hab da jetzt auch nicht so den plan von *g* hatte das nur im netz gefunden... vielleicht könnt ihr mir ja noch weiterhelfen.

Wie gesagt normal funzt der Proxy wenn ich ihn bei den Clients eintrage...

Gruß

Gogo

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmm hab das ebend mit dem http_port 3128 transparent versucht aber irgendwie will er nicht mehr starten und sagt dann nachdem ich rcsquid start ausführe:

Startingsquid WWW-proxy squid startproc: signal catched /usr/sbin/squid: Abortet

failed

Hab auch schonmal versucht mit

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_uses_host_header on

aber ich hab da jetzt auch nicht so den plan von *g* hatte das nur im netz gefunden... vielleicht könnt ihr mir ja noch weiterhelfen.

Wie gesagt normal funzt der Proxy wenn ich ihn bei den Clients eintrage...

Gruß

Gogo

Die Einstellungen funktionieren nur bei älteren SQUID Proxies, die wechseln gerne n bissle den Syntax, aber dann so das ältere sachen nimmer gehen -.-

das er nicht mehr startet finde ich jetzt komisch, wenn du wirklich nur den eintrag http_port 3128 auf http_port 3128 transparent geändert hast, bitte keine Neue Zeile dafür Eintragen.

Welche Version nutzt du denn?

Willst du den eigentlich Transparent, habe mir deinen ersten eintrag durchgelesen und da war ja anscheinend nur das Problem das die Clients nicht ins Netz kommen, oder?

Sag bitte nochmal genau was du willst und welche Version du nutzt (steht ja in der squid.conf ganz oben mit drinne)

gruß

christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

Benutze Squid 2.

Wollte eigentlich lieber keinen Transparenten.

Mein Problem ist egtl nur das ich mit den clients nicht in das Internet komme sobald die Firewall gestartet wird, denke mal das ich mir da noch irgend eine Regel bei den IPTABLES eifügen muss aber weiss halt nicht welche...

Ich möchte das alle eingehenden Pakete geblockt werden und nur internen Anfragen nach außen hin durchgelassen werden.

Es sollen nur ICMP anfragen zwischen Server und Client zulässig sein. Andere Systeme dürfen keine Antwort vom Server bzw. Client erhalten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich das jetzt richtig verstehe (ich schreib einfach mal wie ichs verstanden habe) dann willst du:

- Rechner von Lan dürfen ins I-Net

- Proxy soll eingetragen werden müssen

- alles andere soll geblockt sein?

Wenn dem so stimmt dann kannst du das ganze alleine mit SQUID erreichen. dafür wäre dann ja die /etc/squid/squid.conf zuständig.

Wenn ich soweit richtig liege, dann poste bitte auch mal die squid.conf ansonsten korrigiere mich bitte.

gruß

chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die schnelle Antwort.

Genau so meine ich das :)

- Rechner von Lan dürfen ins I-Net

- Proxy soll eingetragen werden

- alles andere soll geblockt sein

Ausser das im LAN noch ein WinServer steht der eine Antiviresoftware von Bitdefender besitzt und die Clients überwacht. Diese muss auch regelmäßig geupdatet werden.

Werde in den nächste Stunden die Squid.Conf mal posten da ich grade noch was mit der 3.0 Stable 10 auf SuSE LINUX 11 am testen bin.

Achso noch eine Frage, brauch ich dann keine Firewall?

hat sich nämlich grade so angehört...

Es sollen auch keine Ping anfragen vom Internet ins LAN bzw auf den LINUX dürfen.

Gruß Gogo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die schnelle Antwort.

Genau so meine ich das :)

- Rechner von Lan dürfen ins I-Net

- Proxy soll eingetragen werden

- alles andere soll geblockt sein

Gruß Gogo

Freut mich wenn ich helfen kann, und wenn ich eh grad online bin ;-)

Um dein Problem anzugehen

-Rechner von Lan ins I-net

Dazu musst du in der squid.conf IP Bereiche eintragen die den Proxy nutzen dürfen

Bsp.:

acl Lan src 192.168.1.0/255.255.255.0

(Musst du natürlich auf dein Lan abstimmmen, könnte aber auch z.B. so aussehen 192.168.1.5/255.255.255.255 dann darf nur diese eine IP)

http_access allow Lan (jetzt dürfen die IP's aus dem Lan Bereich surfen.

-Proxy soll eingetragen sein

Das ist das leichteste ;-)

Einfach bei den Usern den Port eintragen der in der squid.conf hinter http_port steht

(wahrscheinlich ist das der Port 3128 [standartport von Squid] hier kannst du aber wenn du möchtest mehrere Ports Definieren)

- alles ander soll geblockt sein

Hierfür einfach die Regeln in der squid.conf entsprechend einstellen welche Ports erlaubt sind etc. wenn du dir das mal genauer durchschaust wirst du sehen wie mächtig Squid ist und weshalb ich jetzt nicht genau sagen kann was wie sein muss.

An der Firewall würde ich (am ehestens mittels IPTABLES) alles Speeren außer es kommt von IP 1 (Die vom Server) oder IP 2 (der Server mit der Antivirensoftware)

Das "sollte" dann so Funktionieren.

Zur Firewall bzw. den IPTABLES müsste sich dann aber noch mal jemand anderes zu Wort melden weil da bin ich selber gerade was am suchen. Und solang ich nicht wenigstens halbwegs weiß was ich da tu gebe ich da keine genauern aussagen zu ab ^^

Gruß

chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay das mit dem Squid funzt nu soweit, allerdings brauch ich jetzt noch die IPTABLES ^^

hab da mal was in einem Buch gefunden:

Das Firewall-Skript erlaubt nur Verbindungen von innen.

#!/bin/sh

INTDEV="eth1"

EXTDEV="eth0"

ECHO="/bin/echo"

SYSCTL="/bin/sysctl"

IPTABLES="/sbin/iptables"

$IPTABLES -P INPUT DROP

$IPTABLES -P OUTPUT DROP

$IPTABLES -P FORWARD DROP

$IPTABLES -F

$IPTABLES -t nat -F

$IPTABLES -A FORWARD -i $INTDEV -m state --state NEW -j ACCEPT

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -t nat -A POSTROUTING -o $EXTDEV -j MASQUERDE

Allerdings muss ich ja noch irgendwie die Squid erlauben usw... vll kann mir ja einer weiterhelfen weil so komme ich vom LAN nicht ins Internet

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und google sprach ;-)


 iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source 123.123.123.123 -p tcp -j ACCEPT

das sollte/könnte dir weiterhelfen Natürlich zweimal anwenden einmal mit der IP von Squid und einmal mit der anderen Server IP und diese Regel

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp -j DROP

sollte alles andere Verwerfen.

Sagt zumindest google zu mir.

Kannst ja mal testen und Feedback geben.

greetz

chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und zwar würde ich gerne mit IPTABLES auf meinem LINUX Rechner nur das Internet für mein LAN freigeben sonst nichts.

Auf dem LINUX läuft auch ein Squid Proxy der auch ohne die IPTABLES funktioniert und die Clients Internet bekommen.

Erstmal würde ich gerne wissen was du unter "das Internet" verstehst, denn über den Squid kommt kein Client "ins Internet" sondern allenfalls ins WWW. Reden wir hier nur über Port 80/443, oder über vollen Internet Zugang mit allen Diensten?

Vor dem LINUX ist eine FritzBox SL

LINUX Rechner:

Die Externe IP ist 192.168.178.26

Die Interne IP ist 192.168.1.2

Subnet ist 255.255.255.0

Clients: 192.168.1.0/24

Gateway: 192.168.1.2

Das bedeutet für mich: Die FritzBox hat die offizielle IP und macht Hiding-NAT für 192.168.178.0/24

Nun die Frage was du willst.

Sollen alle Maschinen direkt ins Internet kommen? Dann benötigst du forwarding für 192.168.1.0/24 auf die Fritzbox (FORWARD Tabelle)

Sollen alle Maschinen via Squid ins WWW kommen? Dann benötigst du Zugang zum Squid-Port (INPUT Tabelle) und Squid muss raus dürfen mit den http safe ports und DNS (OUTPUT Tabelle) zu deinen DNS Servern

Insbesondere sollte iptables auch auf dem loopback interface alles erlauben, sonst können andere Dienste stolpern.

Mach dir also erst mal eine Tabelle welche Ports/Services von wo nach wo laufen (dürfen). Bekommt dein Linux seine "externe" IP z.b. via DHCP? Dann muss auch DHCP offen sein auf dem Interface. Verteilt dein Linux an die Clients im LAN via DHCP? dann muss DHCP auf dem internen Interface erlaubt sein. usw...

Wenn man es etwas bequemer mag (so wie ich :D) dann greift man vielleicht zum Firewall Builder

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also die Maschinen sollen via Squid ins WWW kommen.

Es soll nur aus dem LAN das WWW genutzt werden und der Antivirenserver geupdated werden.

Die Externe IP von der LINUX Kiste bekommt er von der FritzBox SL via DHCP zugewiesen.

Die Interne IP ist statisch (192.168.1.2)

Die IP´s der Clients sind ebenfalls statisch und befinden sich im 192.168.1.xxx Bereich

Subnetmask ist 255.255.255.0

Habe ebend nochmal rumprobiert aber kp...

werde vll später mal den Fwbuilder testen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also die Maschinen sollen via Squid ins WWW kommen.

-> Port tcp3128 (or whatever) auf dem LAN Interface in der INPUT chain erlauben

-> Im Squid konfigurierte http_safe_ports auf dem externen Interface in der OUTPUT chain erlauben

-> DNS (udp53) auf externen Interface in der OUTPUT chain erlauben (Squid macht die Namensauflösung)

Es soll nur aus dem LAN das WWW genutzt werden und der Antivirenserver geupdated werden.

Antivirenserver proxy beibringen oder der IP des AV-Servers für http/https in der FORWARD chain erlauben

Die Externe IP von der LINUX Kiste bekommt er von der FritzBox SL via DHCP zugewiesen.

-> bootpc/bootps auf dem externen Interface in der INPUT und OUTPUT chain erlauben

Dazu generell alles auf loopback erlauben, und natürlich ssh Zugang für die Adminstation nicht vergessen ;)

werde vll später mal den Fwbuilder testen.


# Default: Nix darf

$IPTABLES -P OUTPUT  DROP

$IPTABLES -P INPUT   DROP

$IPTABLES -P FORWARD DROP


# Pakete mit bekannten State durchlassen

$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


# loopback erlauben

$IPTABLES -A INPUT  -i lo  -m state --state NEW  -j ACCEPT

$IPTABLES -A OUTPUT  -o lo  -m state --state NEW  -j ACCEPT


# SSH erlauben

$IPTABLES -A INPUT -p tcp -m tcp  --dport 22  -m state --state NEW  -j ACCEPT


# Squid erlauben

$IPTABLES -A INPUT -p tcp -m tcp  -s 192.168.1.0/24  --dport 3128  -m state --state NEW  -j ACCEPT


# DNS/http/https nach draussen ok

$IPTABLES -A OUTPUT -p tcp -m tcp  -m multiport  --dports 53,80,443  -m state --state NEW -j ACCEPT

$IPTABLES -A OUTPUT -p udp -m udp  --dport 53  -m state --state NEW  -j ACCEPT


# Direkt http für fiktiven AV-Server .66 erlauben

$IPTABLES -A INPUT -p tcp -m tcp  -m multiport  -s 192.168.1.66  --dports 80,443  -m state --state NEW  -j ACCEPT

$IPTABLES -A FORWARD -p tcp -m tcp  -m multiport  -s 192.168.1.66  --dports 80,443  -m state --state NEW  -j ACCEPT


So als Ansatz ohne Gewähr.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...