• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Squid und iptables

H3llGhost

Newbie
Hallo Leute,

ich habe squid auf meinem Suse installiert und wollte nun die iptabes konfigurieren.
Für squid habe ich bis jetzt folgendes hinzugefügt:

iptables -A INPUT -p tcp --dport 880 --src 192.168.0.0/24 -i eth1 -j ACCEPT #SQUID erlauben
iptables -A OUTPUT -p tcp --sport 880 --dst 192.168.0.0/24 -o eth1 -j ACCEPT #SQUID erlauben

iptables -A INPUT -p udp --dport 880 -j ACCEPT #SQUID erlauben
iptables -A OUTPUT -p udp --sport 880 -j ACCEPT #SQUID erlauben

iptables -A INPUT -p tcp --dport 53 -i eth0 -j ACCEPT #SQUID erlauben aus lokalen Netz
iptables -A OUTPUT -p tcp --sport 53 -o eth0 -j ACCEPT #SQUID erlauben aus lokalen Netz
iptables -A INPUT -p udp --dport 53 -i eth0 -j ACCEPT #SQUID erlauben aus lokalen Netz
iptables -A OUTPUT -p udp --sport 53 -o eth0 -j ACCEPT #SQUID erlauben aus lokalen Netz
Wichtig sind die letzten 6 Zeilen.
Die ersten beiden sind für den Zugriff aus dem lokalen Netzwerk.

Zu meiner squid.conf:
cache_peer grosser.proxy.corp parent 80 880 proxy-only no-query no-delay login=blabla:blabla
http_port 880 transparent

Sobald ich meine iptables aktiviere bekomme ich folgendes in der cache.log:
2009/11/05 09:23:16| comm_udp_sendto: FD 6, 53.146.91.248, port 53: (1) Operation not permitted
2009/11/05 09:23:16| idnsSendQuery: FD 6: sendto: (1) Operation not permitted

Ich kann leider nicht verstehen warum, denn der Port 53 ist freigeschaltet.
Oder benutze ich das falsche Protokoll?

Bin über jeden Tipp dankbar. :)
 

framp

Moderator
Teammitglied
Ich gehe mal davon aus dass Du Deine Änderungen in die /etc/sysconfig/scripts/custom-rules reingestellt hast und die SusEFirewall benutzt.

Zwei Anmerkungen:
1) Enable mal DENYLOG in der SuSEFW2.conf. Dann siehst Du allen Traffice, der geblocked wird im log. Das hilft beim Debguugen.
2) Warum definierst Du die Dinge nicht in der SuSEFW2.conf?

Ausserdem schiebe ich den Thread mal ins Netzwerk.
 
OP
H

H3llGhost

Newbie
Ähm ...
beides nicht ...

Also ich habe einfach nen Startskript erstellt der im runlevel S auf der Position 99 ausgeführt wird.
Aber ich werde mir gerne mal die Datei SuSEFW2.conf anschauen. ;)

Danke. :)
 

framp

Moderator
Teammitglied
H3llGhost schrieb:
... Also ich habe einfach nen Startskript erstellt der im runlevel S auf der Position 99 ausgeführt wird.
... ich hoffe nur das sind nicht nur die 10 Zeilen die Du gepostet hast. Eine FW besteht aus ein paar mehr Regeln :roll:
 

josef-wien

Ultimate Guru
Verwendet Du SuSEfirewall2? Wenn ja, wird Dir so ein Skript nichts nützen, Deine iptables-Befehle müssen an die richtige Stelle in /etc/sysconfig/scripts/SuSEfirewall2-custom eingefügt und die Verwendung dieser Datei in /etc/sysconfig/SuSEfirewall2 aktiviert werden. Wenn nein, mußt Du ein korrektes Init-Skript in /etc/init.d erstellen und mit insserv aktivieren.

spoensche schrieb:
Bis jetzt ist mir so eine Datei nicht untergekommen.
 
OP
H

H3llGhost

Newbie
Also meine iptables Konfiguration findet ihr unter dem Link.
http://pastebin.com/m3d46789c

Mit der Konfig habe ich nun folgenden Fehler:
TCP connection to meinproxy.corp (meinproxy.corp:80) failed

Bin über jeden Tipp dankbar. :)
 

spoensche

Moderator
Teammitglied
Die default Policy "Alles was nicht explicit erlaubt ist, ist verboten" greift bei Port 80, weil du den Port nicht explicit geöffnet hast und daher keine Anfragen entgegengenommen werden.

Du hast Forwarding (Kernel: /proc/sys/net/ipv4/ip_forward) nicht aktiviert oder hast du das in der SuSEfirewall festgelegt? Ohne Forwarding kein routen.

Am besten du gehst das Script noch mal Schritt für Schritt durch, weil einige Fehler vorhanden sind. Der Proxy wäre momentan überflüssig, weil die Pakete an ihm vorbei geschleusst werden.

Einfacher ist es, wenn du die Regeln erst aufschreibst, wie z.B:

Aus dem LAN sollen die HTTP- Anfragen (Quelports 1024:65563) über den Proxy (Port 3148, da lauscht der Squid auf Anfragen) in das Internet (IP 0/any, Zielport 80 oder 8080) weitergeleitet werden.

Unter http://www.oreilly.de/online-books/index.html findest du ein sehr gutes openbook zum Thema Firewall und anderen Linux Themen.

Wenn ddu Fragen hast, stelle sie ruhig. Wir helfen dir gerne.
 
OP
H

H3llGhost

Newbie
Also /proc/sys/net/ipv4/ip_forward ist auf 1.

Ähm deine Aussage, dass ich die 80 nicht geöffnet habe verstehe ich nicht ganz ...

ich benutze doch hier folgendes:
iptables -A INPUT -p tcp --dport http -j ACCEPT #Zugriff auf Apache erlauben
iptables -A OUTPUT -p tcp --sport http -j ACCEPT #Zugriff auf Apache erlauben
 

framp

Moderator
Teammitglied
Die SuSEFW hat ein nettes kleines Flag, mit dem man sie leicht debuggen kann - aber wie ich sehe willst Du unbedingt Dein FW Script benutzen. Dann mein Tip: Bau TraceStatements ein.
 
OP
H

H3llGhost

Newbie
Ja das liegt einfach daran, dass ich nicht so fertige Lösungen mag und gerne selbst mit den iptables mal eine Lösung erstellen möchte. :eek:ps:
 

framp

Moderator
Teammitglied
Kann ich verstehen. Allerdings nicht unbedingt bei SecurityDingen. Denn wenn Du was falsch machst - und die Warscheinlichkeit ist zu Anfang gross - steht Dein Rechner offen wie ein Scheunentor :roll:
Es gibt ein LOG flag bei iptables. Wenn Du das geschickt bei Deinem Script einbaust kannst Du sehr schnell sehen welche Rule etwas blocked - obwohl sie nicht sollte - und das scheint ja Dein Problem zu sein :roll:
 
OP
H

H3llGhost

Newbie
Also da der Server netzintern steht ist er jetzt nicht der größten Sicherheitsgefahr ausgesetzt. ;)
Ich werde mir dein "TraceStatements" mal anschauen. :)
Danke für den Tipp.
 
Oben