У меня есть машинное ядро Linux 3.7.0 с прокси-сервером Squid и прямым интернет-соединением. Браузеры и Squid находятся на одной машине. Можно ли разрешить доступ к сети только через Squid? Может быть, использовать SELinux?
3 ответа
7
Вы можете использовать модуль владельца в iptables
(-m owner --uid-owner $SQUID_UID
), чтобы настроить разрешающие правила для Squid, а затем запретить другой трафик.
1
Может как то так?
# Your debian machine (gateway)
LAN_IP="192.168.0.1"
# Your network
LAN_IP_RANGE="192.168.0.0/24"
# Your squid machine
PROXY_IP="192.168.0.254"
PROXY_PORT="3128"
iptables -t mangle -A PREROUTING -s $LAN_IP_RANGE ! -d $LAN_IP_RANGE -p TCP --destination-port 80 -j MARK --set-mark 11
iptables -t nat -A PREROUTING -m mark --mark 11 -p TCP -j DNAT --to-destination ${PROXY_IP}:${PROXY_PORT}
iptables -t nat -A POSTROUTING -m mark --mark 11 -p TCP -j SNAT --to-source $LAN_IP
0
Вот код:
iptables -P INPUT DROP
iptables -P FORWARD DROP
#loopback interface
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
#http,https traffic only through Squid - nobody user
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m state -m owner --uid-owner nobody --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT