PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQUID / iptables: Proxy-Umgehung (Sabotage) erkennen und verhindern?



Wurstpelle
07.05.10, 20:44
Hallo,

ich habe für unser Firmennetzwerk einen transparenten Proxy für unseren Web-Zugang eingerichtet, der mit einem Squid3 den Web-Traffic reglementiert (Black- und Whitelists) und somit "verbotene" Websites aussperrt. Die iptables lenken Port 80 auf Squid und schaltet ansonsten auf Durchzug (unten mein Boot-Skript).

Mittlerweile haben die ersten Schlaumeier sich bereits eigene root-Server als Proxy eingerichtet und surfen nun wieder von ihrem Arbeitsplatz nach belieben in der Weltgeschichte rum. (bitte nun aber keine juristischen Tipps. Ich weiss selbst dass man derartige Sabotage abmahnen kann - in dieser Anfrage geht es mir jedoch rein um die technischen Möglichkeiten)

Mein Problem: zwar kann ich derartige Surf-Proxies per iptables kappen, aber hierzu muss ich ja erst mal erkennen dass so ein Proxy genutzt wird. Da wir auch beruflich auf zahlreichen externen Servern per SSH drauf müssen, ist es schwer herauszufinden, ob ein Mitarbeiter einen Kundenserver betreut oder z.B. 443 als Surf-Proxy nutzt. Daher zwei Fragen:

a) wie kann ich effizient solche Surf-Proxies erkennen?

und

b) wenn ich einen solchen Host per "iptables –I OUTPUT –s 1.2.3.4 –j DROP" aussperre, so habe ich beobachtet dass ich trotzdem diesen Rechner noch pingen oder mich per SCP einloggen kann. Ich würde gerne die Kommunikation komplett(!) unterbinden. Mache ich bei den iptables was falsch?

Für Hinweise bin ich dankbar.



#!/bin/sh
# squid server IP
SQUID_SERVER="192.168.0.250"
# Interface connected to Internet
INTERNET="eth1"
# Interface connected to LAN
LAN_IN="eth0"
# Squid port
SQUID_PORT="3128"
# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# einzelne, externe IP-Adressen sperren.
# Beispiel: Kommunikation zu 1.2.3.4 soll komplett unterbunden werden
iptables –I OUTPUT –s 1.2.3.4 –j DROP
iptables –I INPUT –s 1.2.3.4 –j DROP

# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP

derRichard
07.05.10, 20:52
die einzige möglichkeit um das wirklich zu stoppen ist, dass du den gesamten internetverkehr sperrst und http, https, ssh durch proxy-server von dir filterst.

ja, es gibt auch https und ssh-proxies. :rolleyes:
diese kosten aber dementsprechend...

als notlösung kannst du im netz einen ssh-rechner aufstellen, mit dem man nur zu bestimmen ssh-servern zugreifen kann.
und dort kann man auch keine speziel-features von ssh verwenden...

hth,
//richard

Wurstpelle
07.05.10, 21:26
mhh... kann ich denn zumindest den Traffic etwas "intelligent" loggen? Es wäre ja schon hilfreich, wenn ich sämtlichen nicht-HTTP(S)-Traffic auf dem Proxy loggen könnte. Hiermit könnte ich "verdächtliche Vielnutzung" von andern Ports relativ schnell ausfindig machen...

derRichard
07.05.10, 21:30
wenn sich die leute direkte ssh-verbindungen machen können, dann hast du verloren.
dann siehst du nur viel ssh-traffic zu einem bestimmten server.
ob dieser server nun gut oder böse ist, kannst nur du feststellen.

aber, dass solche hardcore blockereien so und so für den fuß sind, solltest eh schon wissen oder zumindest gehört haben. :ugly:

//richard

Wurstpelle
09.05.10, 01:13
jemand vielleicht noch ne Idee zu meinem iptables-Problem?

derRichard
09.05.10, 01:41
jemand vielleicht noch ne Idee zu meinem iptables-Problem?
ein sauberes iptables-script wär mal ein anfang. am besten auch gleich statful.
"iptables –I OUTPUT –s 1.2.3.4 –j DROP" greift natürlich nur, wenn der recher, auf dem iptables läuft direkt mit 1.2.3.4 daten austauscht.
wenn er nur router ist, dann gehört das in die FORWARD tabelle...

hth,
//richard

honkstar
09.05.10, 15:44
Es wäre ja schon hilfreich, wenn ich sämtlichen nicht-HTTP(S)-Traffic auf dem Proxy loggen könnte
Mit ntop kannst du dir angucken, welcher Traffic wie wohin fließt und wieviel verbraucht wird. wireshark kann das imho auch, aber nicht so schön.
Das ist dann aber schon wieder ziemlicher Arbeitsaufwand.
Nur mit iptables ist das Problem nicht in den Griff zu kriegen.

wie kann ich effizient solche Surf-Proxies erkennen?
kaum, normalerweise nach Netzlast, aber wenn ihr viel mit scp macht, ist das auch kein Argument.

Der Tipp von der_Richard (alles sperren) ist aber schon ein guter Anfang.
Dann kannst du dich im nächsten Schritt auf wenige Protokoll beschränken und mit $WERKZEUG dies speziell protokollieren.