• 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

OP
K

kap

Newbie
Ich habe "Das Firwallbuch" schon durchgelesen und nicht alles genau kapiert. Jetzt habe ich es wieder von vorne angefangen und verstehe die Regeln besser. bzw. verstehe ich so langsam was sie meinen. Aber sie beschreiben überwiegend mehr als nur ein Rechner und bin mir nicht immer Sicher ob das nur an einem Host auch funktionieren würde. Das mit Whitelisting hört sich gut an. Wo finde ich dazu doku?
 

oc2pus

Ultimate Guru
zum Beispiel:
http://www.safesquid.com/home/

oder
dansguardian

oder

ansonsten bei google ...
 
OP
K

kap

Newbie
jetzt habe ich noch eine Frage:

Dann geht das wohl nicht auf nur einem Rechner mit Transparent Proxy, so wie es Fytzi beschrieben hat oder?
 
OP
K

kap

Newbie
muß ich dann im Firewall ausser redirect noch etwas eintragen wenn ich es mit Transparent Proxy lösen möchte?
Wie verhalten sich dann die 2 IP Adressen auf einer NIC. Muß ich dann eine IP als Ext und eine als INT denken oder? Sorry wenn ich noch weit entfern bin von eurem Level. Aber das muß wohl jeder durchmachen.
 

framp

Moderator
Teammitglied
Auszug aus man iptables:

Code:
  owner
       This module attempts to match various characteristics of the packet creator, for locally-generated packets.   It
       is  only  valid in the OUTPUT chain, and even this some packets (such as ICMP ping responses) may have no owner,
       and hence never match.

       --uid-owner userid
              Matches if the packet was created by a process with the given effective user id.

       --gid-owner groupid
              Matches if the packet was created by a process with the given effective group id.

       --pid-owner processid
              Matches if the packet was created by a process with the given process id.

       --sid-owner sessionid
              Matches if the packet was created by a process in the given session group.

       --cmd-owner name
              Matches if the packet was created by a process with the given command name.  (this option is present only
              if iptables was compiled under a kernel supporting this feature)

Squid laeuft unter einem anderen User als der FF Benutzer. Somit sollte es moeglich sein, das transparent proxying allgemein einzuschalten und als Ausnahme den squid user zu definieren. 8)

EDIT: Nachtrag
Code:
iptables -I OUTPUT -m owner --uid-owner squid -p tcp --dport 80 -j ACCEPT
tut genau was es soll :lol:

@kap
Also nur einen transparent proxy definieren (Links gab es ja schon genuegend ;-) ) und die obige ExceptionRule einbauen und dann wars das.
 
OP
K

kap

Newbie
Hallo Framp,

vielen Dank!

Würde das so reichen?
------------------------------------------iptables script--------------------
surfer=192.168.171.20
ns=192.168.171.1
p_high=1024:65535
p_ssh=1000:1023
#IPTABLES=/usr/sbin/iptables

#dynamische Kerrrnelparameter setzen

echo "0" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#echo "5" > /proc/sys/net/ipv4/icmp_destunreach_rate
#echo "5" > /proc/sys/net/ipv4/icmp_echoreply_rate
#echo "5" > /proc/sys/net/ipv4/icmp_paramprob_rate
#echo "10" > /proc/sys/net/ipv4/icmp_timeexeceed_rat

echo "1" > /proc/sys/net/ipv4/conf/eth1/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/eth1/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/eth1/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/eth1/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/eth1/log_martians

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -F

#Antispoofing

iptables -A INPUT -s 192.168.171.20 -i eth1 -j DROP

#Lokale Prozesse über loopback erlauben, damit ein Prozes dem anderen übergeben kann

iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

#Ausgehende PING wird erlaubt aber eingehende nicht

iptables -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type echo-request -j DROP

#DNS
iptables -A OUTPUT -p UDP --sport $p_high -d $ns --dport 53 -j ACCEPT
iptables -A INPUT -p UDP --dport $p_high -s $ns --sport 53 -j ACCEPT
iptables -A OUTPUT -p TCP --sport $p_high -d $ns --dport 53 -j ACCEPT
iptables -A INPUT -p TCP --dport $p_high -s $ns --sport 53 ! --syn -j ACCEPT
iptables -A INPUT -p TCP --sport 53 --syn -j DROP
iptables -A INPUT -p UDP --sport 53 -j DROP

#HTTP
iptables -A OUTPUT -p TCP --sport $p_high --dport 80 -j ACCEPT
iptables -A INPUT -p TCP --dport $p_high --sport 80 ! --syn -j ACCEPT
iptables -A INPUT -p TCP --dport 80 --syn -j DROP

iptables -I OUTPUT -m owner --uid-owner squid -p tcp --dport 80 -j ACCEPT

#REST Droppen
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
iptables -A OUTPUT -j REJECT

Würde das so reichen?
 

framp

Moderator
Teammitglied
Wo ist die eigentliche transparent proxying Regel?

iptables -t nat -I PREROUTING -i nic0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Auch solltest Du alle Rules mit -i nic0 oder -o nic0 versehen. Das erleichtert das Lesen und Verstehen der Rules. :roll:

Da gab es so einen schoenen Link von Breidy :wink:
 
OP
K

kap

Newbie
Hallo Framp,

es ist dir doch klar, daß ich nur ein einziges Host habe oder?
Die Regel Proxy Port 80 --> 3128 Weiterleitung hatte ich bei den Versuchen glatt vergessen. Ich weiß nur nicht in welcher Reihenfolge die Regel reinkommt? Kommt UID owner Regel vor oder nach der Proxy weiterleitung? Kommt die 80 Port freigabe vor oder nach diesen 2 Regeln?

Bei Transparent Proxy muß ich ja noch dem Host seine eigene IP als Gateway eintragen, weil ja auf diesem auch der Squid läuft.
So nun habe ich daß Problem, daß die Namensaufläsung nicht mehr funktioniert. Im Resolve.conf ist der DSL Router als Namensserver eingetragen.

Zur Vereinfachung
DSLRouter 192.168.171.1 <---> Host mit Firewall, Squid, und Firefox als Browser 192.168.71.20 NM255.255.255.0 GW196.168.71.20 wegen Transparent Proxy, sonst kein Rechner vorhanden.

Vielen Dank für deine Mühe. Bin heute Nacht leider nicht online aber werde die Beiträge von dir morgen abend gerne nachholen.

Gruß
Kap
 

framp

Moderator
Teammitglied
kap schrieb:
Ich weiß nur nicht in welcher Reihenfolge die Regel reinkommt?
Haengt davon ab ob Du -I oder -A benutzt. Oben hast du -A dann
1) port 80 fuer owner output freigeben
2) port 80 input freigeben
3) transparent proxy rules
Ansonsten bei -I genau andersherum.

Code:
Bei Transparent Proxy muß ich ja noch dem Host seine eigene IP als Gateway eintragen, weil ja auf diesem auch der Squid läuft.
So nun habe ich daß Problem, daß die Namensaufläsung nicht mehr funktioniert. Im Resolve.conf ist der DSL Router als Namensserver eingetragen.
Ich verstehe das Problem nicht.
 
OP
K

kap

Newbie
Hallo framp oder champ, wie soll ich dich am besten nennen.

Jemand sagte mir, daß die besonderheit am Transparent Proxy sein, daß jeder die IP Adress v. Proxy Server als Gateway bekomm (per DHCP). Nun da hat es bei mir natürlich gescheitert, weil dann am Host keine Namensauflösung mehr möglich war.(www.t-online.de, konnte nicht mehr aufgelöst werden). Nun habe ich das wieder geändert und noch im Port 80 noch den Owner hinzugefügt und wie ein Wunder es geht. Tja ich bin eben noch ein Anfänger, aber ich denke ich brauche noch ein bisschen Übung. Du hättest mir auch gleich sagen können, daß ich die owner Geschichte auch am http rein raus benützen muß. Ich hatte daß nur für die weiterleitung zu port 3128 verwendet.

Auf jeden Fall danke ich dir und hoffe von dir mehr zu lernen.
 

Martin Breidenbach

Ultimate Guru
kap schrieb:
Jemand sagte mir, daß die besonderheit am Transparent Proxy sein, daß jeder die IP Adress v. Proxy Server als Gateway bekomm (per DHCP).

Nein.

Das besondere am Transparent Proxy ist daß er für den Benutzer 'transparent' ist - der Benutzer muß keinen Proxy einstellen aber der Proxy wird trotzdem benutzt.

Das was Du meinst kann durch eine proxy.pac realisiert werden.
 
OP
K

kap

Newbie
Hallo Martin,

was muß ich tun, damit keiner dein Proxy einstellen muß?
Das habe ich noch nicht raus.

Ich bedanke mich schon mal im voraus
 
OP
K

kap

Newbie
Mensch Madddin,

laß dich nicht hängen. Ich kann doch net so gut english. Mein Proxy läuft ja aber weiß nicht ob es Transparent ist. Wenn du User die Proxy Adresse einstellen müssen, dann wohl ja nicht. Wo liegt der Hacken? Gib dir ein Ruck und antworte progressive.

Küsschen
 

framp

Moderator
Teammitglied
kap schrieb:
Jemand sagte mir, daß die besonderheit am Transparent Proxy sein, daß jeder die IP Adress v. Proxy Server als Gateway bekomm (per DHCP).
Der jemand hat da wohl was nicht richtig verstanden - das ist Unfug. Transparent proxy heisst einfach nur, dass der Router alle Requests, die vom Client an einen Port gesendet werden (z.B. 80) von diesem unbemerkt (daher der Name transparent) auf einen anderen Port (z.B. 3128) umgelenkt wird.
Transparent proxying wird normalerweise immer nur fuer remote Clients benutzt und da wird einfach fuer die der port 80 dichtgemacht und unter der Deck auf port 3128 umgelenkt.
Dein Problem ist das der Client auf dem Router sitzt und iptables technisch ist das da eben schwieriger da sowohl der Client als auch squid port 80 outbound requests hat. Deshalb muss man eben port 80 outbound generell droppen und einzig und allein fuer squid erlauben mit owner. Das hatte ich eigentlich in meinen vorherigen Posts so geschrieben :roll:
 
OP
K

kap

Newbie
Hallo Framp,

daß habe ich ja auch so getan, wie du mir es beschrieben hast. Squid läuft,
iptables, auch. Port 80 outbound darf nur squid mit uid owner. Soweit funktioniert das ja schon. Ich dachte nur, daß ich den nächsten Schritt mache und die Clients, bzw. der Client am Host ohne Proxy Einträge im Firefox schon surfen kann.
 
Oben