Transparenter Proxy mit OBSD 5.3/5.4 pf & relayd

yggdrasil

Well-Known Member
Hallo zusammen,

wollte für einen Bekannten ein Terminal aufsetzen, welches in einem Verkaufsraum stehen und sehr eingeschränkten Internetzugang haben soll. Effektiv sollen nur ein paar bestimmte Seiten zugänglich sein, also dachte ich mir, setze ich einen lokal laufenden transparenten Proxy mit einer Whitelist auf. Da die vorhandene Hardware eher betagt ist habe ich mich für OpenBSD entschieden.

In einer Test-VM hab ich mal ein 5.3 installiert und SLiM als DM, der einen User automatisch einloggt draufgeschmissen. Der User startet per .xinitrc direkt und ohne WM den Midori-Browser. Das haut soweit alles hin. Ich dachte mir nun, benutze ich doch die tollen OpenBSD Bordmittel pf und relayd. Anhand von man relayd.conf und eines Beispiels aus einem Vortrag über relayd dachte ich eigentlich, dass die folgenden pf.conf und relayd.conf eigentlich funktionieren müssten.

pf.conf
Code:
set skip on lo
block
pass quick inet proto {tcp,udp} from any to any port domain
anchor "relayd/*"

relayd.conf Versuch 1
Code:
http protocol httpfilter {
 return error
 label "Url filtered"
 request url filter "wdr.de"
 request url expect "wikipedia.org"
}

relay httpproxy {
 listen on 127.0.0.1 port 8080
 protocol httpfilter
 forward to destination
}

relayd.conf Versuch 2 mit gleichem relay-Block, aber folgendem http protocol-Block
Code:
http protocol httpfilter {
 return error
 label "Url filtered"
 request url filter "wdr.de"
 request header filter "*wdr.de*" from "Host"
}

Auch ein
request url filter "*"
u.ä. hat keinen Effekt

btw starte ich via
relayctl reload
pfctl -f /etc/pf.conf

pf und relayd nach jeder config-Änderung neu.

Tut aber kein bisschen, alle Seiten können geladen werden. Nachdem drüber schlafen auch nichts gebracht hat dachte ich mir, lasse ich mal andere Augen drüberschauen, welche Fehler ich mache.

Übersehe ich mal wieder irgendetwas offensichtliches?

Danke,
yggdrasil
 
hi

du hast die funktion vom relayd falsch verstanden, dieser ist fuer incoming connections gedacht , als loadbalancer und oder als ssl endpunkt.
fuer das was du willst kannst du den nginx nutzen ( auch board mittel ) .

diese als proxy konfigurueren samt den urldie du erlauben willst , ist alles im netz hinreichenden dokumentiert.

holger
 
du hast die funktion vom relayd falsch verstanden, dieser ist fuer incoming connections gedacht , als loadbalancer und oder als ssl endpunkt.
Nicht für ungut, aber das scheint mir allem zu widersprechen, was ich im Netz und in der man-page zu relayd gefunden habe. Relayd funktioniert meiner Ansicht nach in beide Richtungen. Die Konfiguration hier ist direkt aus Vorträgen (einer von Henning Brauer) kopiert. Aus diesen geht explizit hervor, dass relayd als transparenter Proxy funktionieren kann, nicht nur als Load Balancer etc. Selbst die vom System mitgelieferte relayd.conf scheint diese Angabe zu machen:
Code:
#
# Relay and protocol for a transparent HTTP proxy
#
http protocol httpfilter {
	# Return HTTP/HTML error pages to the client
	return error

	# Block disallowed sites
	label "URL filtered!"
	request url filter "www.example.com/"

	# Block disallowed browsers
	label "Please try a <em>different Browser</em>"
	header filter "Mozilla/4.0 (compatible; MSIE *" from "User-Agent"

	# Block some well-known Instant Messengers
	label "Instant messenger disallowed!"
	response header filter "application/x-msn-messenger" from "Content-Type"
	response header filter "app/x-hotbar-xip20" from "Content-Type"
	response header filter "application/x-icq" from "Content-Type"
	response header filter "AIM/HTTP" from "Content-Type"
	response header filter "application/x-comet-log" from "Content-Type"
}

relay httpproxy {
	# Listen on localhost, accept diverted connections from pf(4)
	listen on 127.0.0.1 port 8080
	protocol httpfilter

	# Forward to the original target host
	forward to destination
}
 
hi

es mag sein das es geht , dass entzieht sich meiner kentniss.

und vermutlich ist der weg ueber nginx auch "einfacher"

holger
 
Ich denke er meint, dass du manuell de Proxy im Browser einträgst und nicht durch einen Paketfilter allen verkehr zwangsweise durchleitest.

Wenn es sich bei dem Kiosk-PC wirklich nur um einen Browser handelt, kannst du das meiner Meinung nach ruhig machen, musst jedoch bei der Browser-Konfiguration darauf achten, diese gegen Veränderung zu schützen.

Alternativ bietet dein gewählter Browser auch diesen Kiosk-Modus (Fullscreen und erlaubte Seiten per Regexp...) http://wiki.xfce.org/midori/faq#kiosk_mode

Gruß
Markus
 
Du könntest auch mit dem Paketfilter einfach jeden Web-Traffic blocken, und nur explizit dem Proxy dem Internetzugriff erlauben (sofern er nicht eh auf der gleichen Kiste läuft wie der Paketfilter, dann ist es nochmal etwas einfacher)

Dann besteht nicht die Gefahr das jemand durch "Manipulation" der Proxyeinstellungen am Client einfach so ins Internet kommt - so ist das z.B. bei dem Unternehmen bei dem ich tätig bin geregelt. Wenn man z.B: Squid nutzt hat man z.B. auch die möglichkeit Benutzer mit verschiedenen Internetberechtigungsgruppen zu erstellen e.t.c. - z.B. sich einen Benutzer für den Proxy einzurichten für den Techniker-Einsatz damit er Updates e.t.c. herunterladen kann ...
 
m4arkus: So genau hatte ich mir den Midori noch gar nicht angesehen, das werd ich bei Zeiten mal nachholen. Das könnte evtl. eine Alternative werden. Ich wollte eigentlich nicht mit Browsersicherheitseinstellungen rumhantieren, sondern lieber einen Zwangsproxy einrichten, den der User garantiert nicht umgehen kann.

CommanderZed: Es geht um nen kleinen Laden mit nem Windows-"Netzwerk". Aus dreieinhalb alten Rechnern bastel ich den neuen für den Verkaufsraum zusammen, sprich, alles wird auf dieser einen Kiste laufen. Das wollte ich so simpel wie möglich halten, daher meine Idee, pf+relayd zu benutzen. Und ich seh einfach den Fehler in dieser enorm simplen Konfiguration nicht.
 
Ich auch nicht - ich wollte nur eine Alternative zeigen, zumal Squid auch nicht gerade Komplex ist ;) - Browsersicherheitseinstellungen e.t.c. kann man sich in dem Fall dann auch sparen.
 
Zurück
Oben