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

Programme kommen nicht ins Internet (Squid)

Hallo,
ich habe nach diesem Howto mein Netzwerk aufgebaut:

http://www.linux-club.de/viewtopic.php?t=13317

Somit habe ich folgenden Aufbau

Windows Clients => Switch => 1. Netzwerkkarte = Squid => Routing durch Suse 9.3 => 2. Netzwerkkarte => Internet

Nun habe ich aber das Problem, dass ich mit manchen Programmen auf den Windows XP Clients (Banking-Software usw.) nicht mehr ins Internet komme. Wie kann ich die benötigten Ports in der SuseFirewall freigeben um wieder mit diesen Programmen ins Internet zukommen?

Kasselhöfer
 

ThomasF

Hacker
ich habe nach diesem Howto mein Netzwerk aufgebaut:

http://www.linux-club.de/viewtopic.php?t=13317

Somit habe ich folgenden Aufbau

Windows Clients => Switch => 1. Netzwerkkarte = Squid => Routing durch Suse 9.3 => 2. Netzwerkkarte => Internet

Hehe, ich finde in dem Howto kein Wort von Squid ....

Wenn Du mit Deinen Clients "über" Squid nicht ins Inet kommst ist das wahrscheinlich ein Problem mit Squid (falsche squid.conf) und nicht mit der Firewall ....


So long

ThomasF
 
Hi,

Hast du mal geschaut, ob du bei den Programmen manuell einen Proxy eintragen kannst? Ansonsten musst du dich mit iptables beschäftigen.
 

Martin Breidenbach

Ultimate Guru
Bei der Konfiguration (entsprechend dem zitierten Howto) sollte eigentlich alles durchgeroutet werden.

Poste doch mal Deine SuSEFirewall2 (bitte ohne die Kommentare... das wird sonst so kilometerlang).
 

framp

Moderator
Teammitglied
Wenn Du alles ueber squid routest muss nur noch port 8080 (normalerweise fuer squid benutzt) im FW freigeben. Allerdings sollte normalerweise jeglicher outbound traffic sowieso frei sein.
Der Rest ist dann im squid.conf zu definieren. Und da solltest Du mal nach port 443 (ssl) suchen. Wenn der nicht frei ist tun natuerlich Deine BankingDinge nicht, da die ssl benutzen.

Stichwort acl & http_access
 
OP
K

Kasselhöfer

Member
Hallo,
danke für die schnellen Antworten.
Scheinbar habe ich die Sache nicht ganz verstanden, daher möchte ich mein Netzwerkaufbau und den Grund hierfür genauer beschreiben.
Netzwerk:

Windows-Clients (192.168.1.x; per DHCP Suse 9.3 vergeben) => Switch => 1. Netzwerkkarte (192.186.1.1; in der Firewall als intern) => Squid (192.168.1.1) mit Authentifzierung => Routing durch Suse 9.3 => 2. Netzwerkkarte (192.186.0.1; in der Firewall als extern) => DSL/ ISDN- Router (192.168.0.2)

Nun meine Beweggründe für diesen Aufbau. Die WindowsXP-Clients, haben das „Problem“, dass sie gerne „Nachhause“ telefonieren, bzw. installierte Programme, Vieren, Trojaner, usw.. Vorher war es so, dass der Router im gleiche IP-Bereich wie die WindowsXP-Clients war. Da der Router auf jeglichen „Einwählbefehl“ regierte, hat er somit sich sehr oft ins Internet eingewählt. Leider kann ich nur über ISDN ins Internet gehen., und somit sind teilweise erheblich Kosten entstanden. Daher habe ich Squid mit Authentifizierung eingerichtet. Somit wählt sich der Router erst ins Internet, wenn ein Benutzer sich z.B. im Internet-Explorer richtig anmeldet. Um aber zu verhindern, dass Programme die Proxy-Einstellungen in den Internetoption umgehen, wollt ich den Router aus dem IP-Bereich der Windows-Clients herausnehmen. Bei der Suche nach einer Möglichkeit, bin ich auf das HowTo von Martin Breidenbach gestoßen, und habe dieses nun auf mich angepasst und umgesetzt.
Ich bin nun davon ausgegangen, das die SuseFirewall sich zwischen Netzwerkkarte 1 (intern) und Netzwerkkarte 2 (extern) schaltet und hier den Verkehr überwacht. Unter dem Yast-Firewall Modul habe ich für Extern alle Berechtigungen heraus genommen, da ich dachte, das somit alles andere aus Internet geblockt wird. Des weiteren bin ich davon ausgegangen, dass Squid nur als Tor für den Internetzugang in der Firewall dient. Nun wollte ich gezielt die Ports öffnen, welche ich für manche Programme benötige.
Wenn dem alles so nicht ist, wie kann ich nun meine Wünsche anderst umsetzten.

Viel geschrieben. Hoffentlich auch verständlich :?

Kasselhöfer
 

crazyrolf

Advanced Hacker
Beim Squid werden nur die Port 80 Anfragen durchgeleitet.

Programme benutzen aber andere Ports um eine Verbindung in das Internet herzustellen. Diese werden nicht vom Squid unterstützt.

Hier müssen die Ports in der Firewall durchgeleitet werden.

Also eine Port-Weiterleitung.

Problem. wenn man diese Einschaltet, werden alle Ports weitergeleitet, also auch der Port 80. Der Squid kann also umgangen werden.

Will man das nicht, muss jetzt noch in der Firewall der Port 80 auf den Squid (8080) umgeleitet werden. Ein sogenannter transparenter Proxy.
 
OP
K

Kasselhöfer

Member
Hallo,
hier meine squid.conf:

http_port 3128
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_dir ufs /var/cache/squid 100 16 256
auth_param basic program /usr/sbin/ncsa_auth /etc/squid/squid.pw
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl our_networks src 192.168.1.0/18
acl auth_users proxy_auth REQUIRED
http_access allow our_networks auth_users
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
cache_effective_user squid
coredump_dir /var/cache/squid
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF
maximum_object_size 100 MByte
maximum_object_size_in_memory 8 KB

und meine SuSEfirewall2:

FW_DEV_EXT="eth-id-00:0a:5e:53:08:d8"
FW_DEV_INT="eth-id-00:0f:b5:44:4f:ab"
FW_DEV_DMZ=""
FW_ROUTE="yes"
FW_MASQUERADE="yes"
FW_MASQ_DEV="$FW_DEV_EXT"
FW_MASQ_NETS="192.168.1.0/18"
FW_PROTECT_FROM_INT="no"
FW_SERVICES_EXT_TCP=""
FW_SERVICES_EXT_UDP=""
FW_SERVICES_EXT_IP=""
FW_SERVICES_EXT_RPC=""
FW_SERVICES_DMZ_TCP=""
FW_SERVICES_DMZ_UDP=""
FW_SERVICES_DMZ_IP=""
FW_SERVICES_DMZ_RPC=""
FW_SERVICES_INT_TCP=""
FW_SERVICES_INT_UDP=""
FW_SERVICES_INT_IP=""
FW_SERVICES_INT_RPC="mountd nfs nfs_acl nlockmgr portmap status"
FW_SERVICES_DROP_EXT=""
FW_SERVICES_REJECT_EXT="0/0,tcp,113"
FW_SERVICES_ACCEPT_EXT=""
FW_TRUSTED_NETS=""
FW_ALLOW_INCOMING_HIGHPORTS_TCP=""
FW_ALLOW_INCOMING_HIGHPORTS_UDP=""
FW_FORWARD=""
FW_FORWARD_MASQ=""
FW_REDIRECT=""
FW_LOG_DROP_CRIT="yes"
FW_LOG_DROP_ALL="no"
FW_LOG_ACCEPT_CRIT="yes"
FW_LOG_ACCEPT_ALL="no"
FW_LOG_LIMIT=""
FW_LOG=""
FW_KERNEL_SECURITY="yes"
FW_STOP_KEEP_ROUTING_STATE="no"
FW_ALLOW_PING_FW="yes"
FW_ALLOW_PING_FW="yes"
FW_ALLOW_PING_EXT="no"
FW_ALLOW_FW_SOURCEQUENCH=""
FW_ALLOW_FW_BROADCAST_EXT=""
FW_ALLOW_FW_BROADCAST_DMZ=""
FW_IGNORE_FW_BROADCAST_EXT="yes"
FW_IGNORE_FW_BROADCAST_DMZ="no"
FW_ALLOW_CLASS_ROUTING=""
FW_CUSTOMRULES=""
FW_REJECT=""
FW_HTB_TUNE_DEV=""
FW_IPv6=""
FW_IPv6_REJECT_OUTGOING=""
FW_IPSEC_TRUST="no"
FW_ZONES=""

Kasselhöfer
 

Martin Breidenbach

Ultimate Guru
OK, dann ist das beschriebene Verhalten im Prinzip gewünscht.

Squid ist nur ein Proxy für HTTP und FTP. Für andere Protokolle braucht man andere Proxies.

Dann muß man also ermitteln was für Protokolle die anderen Programme verwenden (und ob man die nicht doch irgendwie HTTP-Proxy-tauglich konfigurieren kann).
 
OP
K

Kasselhöfer

Member
Hallo
Nun habe ich mir mal die Banking-Software genauer angeschaut und bemerkt, das der Port 80+8080 offen sein muss. Dieses würde aber bedeuten, das dann jeder Internetzugang den Proxy umgehen könnte. Was ich aber nicht haben möchte. Ich kann zwar in der Software einen Proxy angeben, aber zur Authentifizierung notwendigen Angaben kann ich nicht eintragen. Es kommt auch keine Abfrage bei der Einwahl der Software ins Internet. Somit hat sich dieses auch erledigt.
Nun habe ich aber bemerkt, dass die Software über einen Socks-Server sich Einwählen kann. Hierzu kann auch eine UserID und ein Passwort eingeben werden. Was ist nun ein Socks-Server, und kann ich diesen neben dem Proxy-Server betreiben? Würde ich meine gewünschte Absicherung durch einen Socks-Server aushebeln?

Kasselhöfer
 

Martin Breidenbach

Ultimate Guru
Du kannst einen transparent proxy einrichten.

Howto für Squid als transparent proxy lesen (in der squid doku)

Port 80 von intern eingehend auf 3128 umleiten

-> alles was über Port 80 gehen soll geht automatisch über squid
 
OP
K

Kasselhöfer

Member
Ich habe gelsen, dass bei einem Transparent Proxy keine Authentifizierung möglich ist. Das würde dann ja so nicht funktionieren.

Folgende Ports müssenten offen sein: 53, 80, 443, 866, 3000, 8000, 8080 und 3004

Müsste ich dann alle umleiten?
 

Martin Breidenbach

Ultimate Guru
Nein. 53 ist DNS und geht nicht über http proxy. 443 ist https und das geht nicht über *transparent* proxy soweit mir bekannt. Was die anderen Ports sein sollen weiß ich nicht.

Für DNS kann man einen caching DNS server einrichten aber der veranlaßt dann bei Bedarf Interneteinwahlen.

Ich fürchte das geht so nicht wie Du willst.
 

framp

Moderator
Teammitglied
crazyrolf schrieb:
Beim Squid werden nur die Port 80 Anfragen durchgeleitet.
Wie man oben bei dem squid.conf Listing sehen kann, sind da auch andere Ports unterstuetzt (443/ssl, 21/ftp, u.a.).
Ich habe mal testhalber bei mir den 443 rausgenommen - und schwupps - bekam ich eine 'Access denied' message vom squid.

1) Der Ansatz fuer 'normales' Surfen squid zu benutzen ist richtig. Wie oben schon erwaehnt solltest Du aber transparent Proxying einsetzen.

2) Wenn Du andere Programme von deinen WindowsClients ins Netz gehen lassen willst kannst Du socks (dante bei Linux) einsetzen sofern Du Deine Clients 'socksifiest'. Da gibt es einen freien Socksclient von Hummingbird.

3) Willst Du noch speziellere Dinge machen, wie zum Beispiel Onlienspiele, bleibt Dir nichts anderes uebrig als doch direkte verbindungen zuzulassen.

Zu deinem Problem: Ich wuerde mal auf dem Linux
tcpdump -i eth0 -n
laufen lassen und mal nachsehen welche Ports denn da so benutzt werden. Dann weiss man wenigstens in welche der 3 Klassen Dein Problem faellt und kann ueberlegen wie man das Problem loest.
 

framp

Moderator
Teammitglied
Kasselhöfer schrieb:
Folgende Ports müssenten offen sein: 53, 80, 443, 866, 3000, 8000, 8080 und 3004
Die Frage bei den Ports ist immer ob Inbound oder Outbound. Ich kenne Deine BankingAppl nicht - aber ich wuerde schaetzen sie braucht 80 und 443 outbound - und das geht ueber squid - und der Rest bis auf dns ist inbound und sollte squid abhandeln. 53 musst Du natuerlich oeffnen. Aber wenn Du einen Client bei Dir hast, der 'nach Hause' will, wird der erste Request ein DNS Lookup sein - und schon ist Deine ISDN Leitung an :cry:
 

framp

Moderator
Teammitglied
Kasselhöfer schrieb:
Kann ich hier eine Authentifizierung einsetzen?
Ich weiss nicht warum das nicht gehen sollte. Transparent Proxying heisst nur, dass fuer den Client 'transparent' also unbemerkt ein proxy benutzt wird. Die Authentifizierung nimmt dann natuerlich der Proxy vor.
 

ThomasF

Hacker
Hmm,

wo is den nun das Problem ???

Transparent Proxying über Squid ??? macht nur Sinn um Anfragen an Port 80 umzuleiten, andere Protokolle wie FTP müssen HTTP_Proxy unterstützen ... und von wegen Auth ...

hier ein Zitat aus der squid.conf

Code:
# WARNING: proxy_auth can't be used in a transparent proxy. It
# collides with any authentication done by origin servers. It may
#seem like it works at first, but it doesn't.

Hab es selber noch nicht getestet aber das sagt ja wohl das es nicht geht ....

Folgende Ports müssenten offen sein: 53, 80, 443, 866, 3000, 8000, 8080 und 3004

und wo ist das Problem ?
diese Ports werden in der Squid.conf in den safe_acl freigegeben ... Auf der Firewall müssen diese Ports von localhost aus ins Internet möglich sein .... aber das heißt nicht das die Clients von intern das auch können !!!

Außerdem .... Jedes Programm das einen HTTP_Proxy unterstützt kann auch über Squid ins Internet wenn der Zielport von Squid und dem Paketfilter erlaubt ist .... z.B ICQ, IRC

Die WindowsXP-Clients, haben das „Problem“, dass sie gerne „Nachhause“ telefonieren, bzw. installierte Programme, Vieren, Trojaner, usw.

Nun wenn die Trojaner dies über Port 80 tun und sie auch noch den Internetzugang aus den Browsereinstellungen holen wirst Du selbst mit Proxyauth das telefonieren nicht ganz vermeiden können ... zumindest nicht in der Zeit in der Du ordentlich authentifiziert selber surfst *gg*

Es gibt da ein nettes Video vom CCC in dem gezeigt wird wie ein Trojaner eine PersonalFirewall austricksen kann ohne das Du etwas davon merkst ...

Naja ich will Dich aber nicht ganz entmutigen ;-) Die Kombination mit Router, Iptables und Squid bringt Dich schon ein ganzes Stück weiter ...

Geh noch mal zurück und schau Dir an welche Dienste Du von Deinen Clients aus nutzen möchtest ... Schau dann ob die Programme die Du benutzt HTTP_Proxy oder Socks unterstützen und richte dann die Firewall und Squid und/oder Dante entspreche nd ein ....

So long

ThomasF
 
OP
K

Kasselhöfer

Member
Hallo,
Danke an alle für die schnellen und hilfreichen Antworten. Das mit dem Transparenten Proxy und Auth.. möchte ich mal testen. Nur habe ich leider mit den Einstellungen in der Firewall Probleme. In der squid.conf habe ich folgende Nachgetragen:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Alle Einträge zur Auth.. habe ich erstmal deaktiviert, um zu testen ob der transparente Proxy erstmal funktioniert.

Nun habe ich laut dem Suse Admin-Handbuch

http://sman.informatik.htw-dresden.de/doc/manual.9.2/suselinux-adminguide_de/html/ch26s03.html

in die SuSEfirewall2 folgende Einträge auf mich angepasst und eingetragen:

FW_REDIRECT_TCP="192.168.1.0/18,0/0,80,3128 192.168.1.0/18,0/0,21,3128"
FW_REDIRECT_UDP="192.168.1.0/18,0/0,80,3128 192.168.1.0/18,0/0,21,3128"
FW_SERVICES_INT_TCP="domain www 3128"
FW_SERVICES_INT_UDP="domain"
FW_SERVICE_DNS="yes"

Nur leider funktioniert die ganze sache nicht. Was mache ich hier falsch?

Kasselhöfer
 
Oben