G0G0 Geschrieben 8. April 2009 Geschrieben 8. April 2009 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 Zitieren
hades Geschrieben 8. April 2009 Geschrieben 8. April 2009 Ich wuerde - wenn ich hier auch iptables haben moechte - iptables so konfigurieren, dass der squid dann als transparenter Proxy arbeitet. Denn dann brauchst Du den Proxy nicht mehr zwingend bei den HTTP-Clients konfigurieren. Zitieren
blackdevile Geschrieben 8. April 2009 Geschrieben 8. April 2009 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 Zitieren
G0G0 Geschrieben 8. April 2009 Autor Geschrieben 8. April 2009 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 Zitieren
blackdevile Geschrieben 8. April 2009 Geschrieben 8. April 2009 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 Zitieren
G0G0 Geschrieben 15. April 2009 Autor Geschrieben 15. April 2009 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. Zitieren
blackdevile Geschrieben 15. April 2009 Geschrieben 15. April 2009 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 Zitieren
G0G0 Geschrieben 15. April 2009 Autor Geschrieben 15. April 2009 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 Zitieren
blackdevile Geschrieben 15. April 2009 Geschrieben 15. April 2009 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 Zitieren
G0G0 Geschrieben 15. April 2009 Autor Geschrieben 15. April 2009 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 Zitieren
blackdevile Geschrieben 15. April 2009 Geschrieben 15. April 2009 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 Zitieren
DevilDawn Geschrieben 15. April 2009 Geschrieben 15. April 2009 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 ) dann greift man vielleicht zum Firewall Builder Zitieren
G0G0 Geschrieben 15. April 2009 Autor Geschrieben 15. April 2009 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. Zitieren
DevilDawn Geschrieben 15. April 2009 Geschrieben 15. April 2009 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. Zitieren
G0G0 Geschrieben 20. April 2009 Autor Geschrieben 20. April 2009 Habe an dem Beispiel nur nen paar kleine Dinge angepasst und dann hat alles super funktioniert. Vielen Dank für die Hilfe! Zitieren
Empfohlene Beiträge
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.