Назад | Перейти на главную страницу

как настроить iptables, чтобы разрешить доступ к конкретному домену через прокси-сервер squid на порт 3128?

Что не так с моими правилами? Я установил squid на свой сервер и хочу, чтобы через squid можно было подключиться только к некоторым конкретным доменам, но iptables полностью заблокировал меня

Я нашел это: правила iptables, разрешающие HTTP-трафик только в один домен , И я попытался применить и скорректировать его в соответствии с моими Правилами, но мне это не удалось.

вот мои правила:

iptables -F
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5801  -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5901  -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 6001  -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 777 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 321 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 2222 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 953 -j ACCEPT
iptables -A OUTPUT -p tcp -d domain1.com --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d domain2.com --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d sub1.domain2.com --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d sub2.domain2.com --dport 3128 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables-save > /etc/sysconfig/iptables
service iptables restart

iptables так не работает. Это подсистема уровня 3 (и, в некоторой степени, уровня 2), и она ничего не знает о таких вещах, как доменные имена. Вы можете заблокировать доступ к IP-адресу, и если так получится, что имена хостов domain[12].com и sub[12].domain2.com разрешить IP-адреса, которые сами по себе не содержат служб для других доменов, вы можете заблокировать их по IP-адресу.

Если вы хотите заблокировать доступ squid к определенным URL-адресам, вам нужно сделать это внутри конфигурации squid. я - нет squid эксперт, но похоже, что вы могли бы сделать это примерно так:

acl          aclname   dstdomain   "/etc/squid/allow/safe-sites"  # file must exist
http_access  allow     aclname
http_access  deny      all

с участием /etc/squid/allow/safe-sites содержащий, например,

domain1.com
domain2.com
sub1.domain2.com
sub2.domain2.com

(благодаря этот блог для некоторых шпаргалок).

Как упоминал @MadHatter, правила iptables не используются таким образом, и для squid вы должны разрешить некоторые IP-адреса, чтобы разрешить доступ к некоторым конкретным сайтам. Для этого выполните следующие действия:

Добавьте эти строки в ваш файл Squid.conf.

acl allow_ip src “/etc/squid/allow_ip”

acl allow_ip_site url_regex “/etc/squid/block_ip_allow”

http_access allow allow_ip allow_ip_site

ИЛИ Для справки:

https://stackoverflow.com/questions/10599122/restrict-squid-access-to-only-one-site

Для некоторых веб-сайтов вы можете напрямую указать url и ip в squid.conf, но лучше всего подходит подход madhatter.