понедельник, 18 мая 2015 г.

Черный и белый список в squid.

Много материала по настройке ограничений доступа посредством squid-а. Но есть желание задокументировать (пока не забыл) еще один совсем простой способ. Итак, что нам нужно. Сначала допущения. Заворот на прокси-сервер мы тут не рассматриваем, будем только предполагать что сама сеть или запрещает прямой доступ наружу, или заворачивает трафик на прокси и у пользователей нет никаких шансов это дело проскочить (tor, внешние прокси и пр. нас тут не интересуют). Теперь идея. Пользователи разделены на три группы - некое большинство, для которого нет никаких особых ограничений. Белый список (только белый список, совсем жестко). Черный список, их тоже много.

/etc/squid3/squid.conf

Собственно списки и сети. В localnet попадают все пользователи, в том числе и те, которые фигурируют в черном или белом списке.

acl localnet src 10.0.0.0/23
acl onlywhite src "/etc/squid3/onlywhite.ip"
acl onlyblack src "/etc/squid3/onlyblack.ip"
acl whitelist url_regex -i "/etc/squid3/whitelist.url"

acl blacklist url_regex -i "/etc/squid3/blacklist.url"

Стандартный доступ
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost
http_access allow localnet manager
http_access deny manager

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user


http_access deny to_localhost

И наши ограничения следом
http_access deny onlyblack blacklist
http_access deny onlywhite !whitelist
http_access allow localnet
# And finally deny all other access to this proxy

http_access deny all

/etc/squid3/onlyblack.ip

10.0.1.0-10.0.1.127

/etc/squid3/blacklist.url

vk\.com
ok\.ru
odnoklassniki\.ru
facebook\.com
\.porn
\.sex

Оставшиеся 2 файла ничего нового нам не добавят, все аналогично.
Появилось предновогоднее дополнение

Сортировка dnsmasq.leases по ip-адресам

Совсем простое дело, но пришлось чуть-чуть повозиться. При наведении порядка в большой сети полезно бывает получить сортированный список назначенных ip. Пример вот:
cat /var/lib/misc/dnsmasq.leases |grep "0\.1\."| sort -V -k3.8,3.11|less
В результате получим.