пятница, 11 декабря 2015 г.

Блокировка url, squid, firefox и chromium


Сначала было слово

    Поступило распоряжение верховного руководства заблокировать ряд забугорных сервисов. Блокировать по ip как-то коряво, никто не несет никаких обязательств в части смены оных ip-шников, так же, в случае попадания в список каких-либо не крупных сервисов, можно нарваться на ip, расшаренный между несколькими, а то и многими сайтами. Стало быть по url. Тут кроме родного и близкого дедушки squid-а и ухватить-то некого... Его и ухватим. В сети примерно 160 ltsp-шных бездисковых станций, штук 40 Xubuntu, штук 50 Win... разномастных, пара Маков, штук 30 Андроидов. Попробуем максимально принудительно прописать им путь до прокси, потом закроем прямую дорогу.

Полезные ссылки в части принудительного насаждения прокси
http://en.wikipedia.org/wiki/Proxy_auto-config
http://wiki.squid-cache.org/SquidFaq/ConfiguringBrowsers
http://tdkare.ru/sysadmin/index.php/Chromium-browser
http://technet.microsoft.com/ru-ru/library/cc985352.aspx
и самое ценное
http://askubuntu.com/questions/263567/set-web-proxy-using-pac-file-url-in-lubuntu

Делаем

Сначала анонсируем прокси обоими возможными способами. dnsmasq обзавелся в своем конфиге вот такой строкой.
# wpad option
dhcp-option=252,http://wpad/wpad.pac

Местный apache был дообозван именем wpad и в корень ему был записан скрипт с именем wpad.dat И его же обозвали (прилинковали) как wpad.pac
В /etc/apache2/mods-available/mime.conf добавлена строчка
AddType application/x-ns-proxy-autoconfig .pac

Содержимое скрипта тривиально.

// Some ideas by Oskar Pearson and the Internet Solution (http://www.is.co.za)

function FindProxyForURL(url, host)
{
    //If they have only specified a hostname, go directly.
    if (isPlainHostName(host))
            return "DIRECT";

    //Connect directly to our domains (for Important News www)
    if (dnsDomainIs( host,"okgvv.loc"))
        return "DIRECT";
    // See next!
    if (dnsDomainIs( host,"www.monitor.kuzdrav.ru"))
        return "PROXY proxy:3128";
    // Parus use 81 port
    if (dnsDomainIs( host,"monitor.kuzdrav.ru"))

        return "DIRECT";

    //Vipnet client's direct path
    if (isInNet(host, "11.0.0.174", "255.255.255.255"))
        return "DIRECT";

    //Local IPs
    if (isInNet(host, "10.0.0.0", "255.255.254.0"))
        return "DIRECT";
    else
            return "PROXY proxy:3128";
}

Это было авто, для всех кто готов слушать и внимать. Всем "своим" еще более принудительно... 

На клиентах

На всех linux-ах, включая и ltsp пропишем для всех простых клиентов (midori например) в /etc/evironment

http_proxy=http://proxy:3128/
https_proxy=http://proxy:3128/
ftp_proxy=http://proxy:3128/
no_proxy="localhost,127.0.0.1,10.0.0.0/23"
HTTP_PROXY=http://proxy:3128/
HTTPS_PROXY=http://proxy:3128/
FTP_PROXY=http://proxy:3128/
NO_PROXY="localhost,127.0.0.1,10.0.0.0/23"

Для Хромиума в файле /etc/chromium-browser/default пропишем
CHROMIUM_FLAGS="--proxy-pac-url=http://wpad/wpad.dat --enable-plugins"



Для Ф-фокса в /etc/firefox/syspref.js в хвост
lockPref("network.proxy.autoconfig_url", "http://wpad/wpad.dat");
lockPref("network.proxy.type", 2);



если почитать about:config в Мозилле, много чего захочется добавить следом, например для бездисковых клиентов.

lockPref("browser.cache.disk.filesystem_reported", 1);
lockPref("browser.cache.disk.capacity", 35840);
lockPref("browser.cache.disk.smart_size.enabled", false);
lockPref("browser.startup.homepage", "http://yandex.ru");
pref("browser.search.defaultenginename","Яндекс");
pref("browser.search.order.2","Яндекс");


и в /etc/apt/apt.conf (сам файл скорее всего нужно создать).
Acquire::http::proxy "http://proxy:3128/";
Acquire::https::proxy "http://proxy:3128/";
Acquire::ftp::proxy "http://proxy:3128/";
Acquire::::Proxy "true";



В Windows достаточно прописать "автоматическое определение настроек". С ними сильно церемониться не будем (в этом лесу законы не писаны) а просто перекроем прямой роутинг (http+https) на пограничном шлюзе... Сами приползут :-)


Комментариев нет:

Отправить комментарий