LXF76:Hardcore Linux1
|
|
|
Содержание |
Squid Настройка прокси-сервера
Пол Хадсон (Paul Hudson) затевает новую серию статей для продвинутых пользователей.
Недавно мучились с головоломной настройкой прокси-сервера? Ну и зря. О нудных проблемах должны заботиться небритые системные администраторы, сутками не вылезающие из офиса и ведрами хлебающие кофе. В данной рубрике мы будем рассказывать о вещах, подобных гоночным болидам: мощных и невероятно сложных. Зато интересных!
Squid — это круто
Вы угадали: Squid — это прокси-сервер. Но почему крутой? Скоро узнаете. У нас, в LinuxFormat, все начинают бесноваться, если какой-нибудь web-сайт открывается дольше наносекунды, переводя наше драгоценное время. При этом мы постоянно скачиваем новые дистрибутивы, так что пробки в канале нас тоже волнуют. Однако ситуация поправима: есть способ сэкономить — сразу! — и время, и полосу пропускания. Имя ему — правильно, Squid. Этот свободный скоростной прокси-сервер кэширует сайты и контролирует права доступа к сетевым ресурсам, а если его хорошенько попросить, то и порядок у вас наведет. В процессе урока вы узнаете, как:
- базовая установка Squid оптимизирует Интернет-соединение
- продвинутый Squid защищает детей от гадких сайтов
- Squid’но подшутить над вашими коллегами
Ну что ж, довольно слов. Начнем, пожалуй!
Кэш в руках
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Некоторые дистрибутивы запускают Squid автоматически при загрузке; в других, например, Fedora и SUSE, это нужно делать вручную. Для запуска Squid в Fedora, выполните от лица суперпользователя команду service squid start, а для подключения при загрузке — chkconfig -level 345 squid on. В SUSE, откройте YaST, выберите настройку системных сервисов (System Services) в разделе System (Система), отыщите в списке Squid, и активируйте его, щелкнув по кнопке Enable. Squid стартует, а потом будет сам включаться при загрузке системы. На худой конец, выполните команду /etc/init.d/squid start (или /etc/rc.d/squid start), она запускает Squid в большинстве дистрибутивов.
Мы запустили Squid без всякой настройки, и теперь он работает в фоновом режиме, ожидая HTTP-запросов. Чтобы убедиться, что он действительно работает, настроим-ка браузер на доступ в сеть через прокси.
Если вы используете Firefox, зайдите в Preferences (Настройки) в меню Edit (Правка), щелкните на кнопке Connection Settings (Настройки соединения) и выберите Manual Proxy Configuration (Ручная конфигурация прокси). Укажите в качестве прокси 127.0.0.1, а в качестве порта — 3128. Поставьте «галочку» напротив Use this proxy server for all protocols (Использовать этот прокси для всех протоколов).
Пользователям Konqueror следует зайти в Настройки Konqueror (Settings -> Configure Konqueror), перейти на вкладку Proxy (Прокси), щелкнуть на Manually Specify Proxy Settings (Указать настройки прокси-сервера вручную). В окне настроек введите 127.0.0.1 и 3128.
Теперь откройте окно терминала и выполните следующую команду от лица суперпользователя: tail -f /var/log/Squid/access.log. Да, запуск программ от лица root может быть опасен, однако Squid устанавливает права доступа к своим каталогам так, что читать их могут только пользователь «Squid» (или «proxy», это зависит от дистрибутива) и root. Так что обычным пользователям файлы журналов Squid не прочитать, и никто не догадается, по каким сайтам вы полазили! Откройте браузер и введите какой-нибудь адрес, не спуская глаз с окна терминала tail -f. Если все нормально заработало, там должны мелькать сообщения о том, что запрошенная страница в кэше не обнаружена и Squid получает ее из сети («TCP_MISS/200»).
В самом браузере страница открывается как обычно, только теперь она сохранена в кэше Squid. При следующем обращении Squid возьмет ее из кэша, а не из сети.
Все для всех
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Пока вы не побежали звонить своим друзьям/коллегам и приглашать их срочно опробовать ваш замечательный прокси-сервер, спешу сказать — обождите. По умолчанию Squid блокирует запросы со всех машин, кроме вашей, так что друзья-коллеги получат одни сообщения об ошибках. Чтобы пресечь это, а заодно и дурацкую манеру Squid использовать порт 3128, нужно отредактировать /etc/squid/squid.conf, небольшой конфигурационный файлик на пару тысяч строк кода. Отставить валерьянку! Объясняю: большинство из них — комментарии. Мы обойдемся десятью-пятнадцатью строками (только никому не рассказывайте).
Начнем с HTTP-порта. 3128 — не очень удачное число, сложновато для запоминания. Да и как только выйдет эксплойт для Squid, хакеры именно с этого порта и начнут. Большинство обладателей Squid меняют порт на 80, 1080, 8000 или 8080, это несложно: откройте в любимом редакторе Squid.conf (с правами root) и поищите строку http_port. Скорее всего, первым вхождением будет «TAG: http_port», начало директивы установки порта http_port. Спустившись ниже, вы обнаружите строку «# http_port 3128». # в начале строки обозначает комментарий, то есть данная строка Squid’ом игнорируется (3128-й порт явно устанавливать не нужно, он назначен по умолчанию). Удалите # и вместо 3128 подставьте нужный вам порт, например, 8080. Разумеется, настройку браузера тоже надо скорректировать.
Сохраните файл и запустите команду Squid -k reconfigure (с правами суперпользователя), чтобы Squid перечитал конфигурационный файл. Если вы не ищете легких путей, могу особо предложить другой вариант: kill -SIGHUP `cat /var/run/ squid.pid`. Результат тот же, просто это для любителей забивать гвозди микроскопом.
Уладив проблемы с портом, приступим к открытию доступа к прокси-серверу другим пользователям. Вернитесь в файл squid.conf и поищите в нем строку «acl all». ACL - аббревиатура от «Access Control List»: списки контроля доступа. Доступ, естественно, надо ограничить, чтобы до вас не добрались злые хакеры. По строке «acl all» вы найдете блок из 16-и строк — «рекомендуемая минимальная конфигурация» (оставьте его в покое), потом кое-какие комментарии и, наконец, строки http_access allow localhost (разрешен доступ к прокси-серверу с локальной машины) и http_access deny all (блокировать всех).
Как проще всего открыть доступ к вашему прокси-серверу? Всего-навсего поменять http_access deny all на http_access allow all! После этого сохраните squid.conf и выполните squid -k reconfigure. Теперь к вам может достучаться каждый встречный. Только не оставляйте прокси-сервер в таком состоянии надолго: разве что полные чайники держат прокси-сервер открытым настежь, зато и внушительный счет на оплату «левого» трафика им обеспечен.
Если все заработало (есть контакт с другими машинами), остановите Squid и снова измените правило на http_access deny all. Вы, наверное, удивитесь: чему тут не работать? Дело в том, что мы будем устанавливать гораздо более сложные ACL, и предварительно следует убедиться, что ваш прокси-сервер не блокирован собственным брандмауэром и проблемы могут возникать только у Squid. Кстати, если при «allow all» прокси-сервер не работает, либо выключите брандмауэр (метод грубой силы), либо разрешите на нем использование порта 8080.
Адреса закажет CIDR
Squid позволяет вам ограничить доступ по IP-адресам пользователей, причем вы можете указать точные адреса или задать группу адресов с помощью CIDR-нотации. Начнем с простейшей конфигурации для небольшой локальной сети, когда список адресов (назовем его «internal_network») вводится вручную. Компьютеры, не включенные в список, подключиться к вашему прокси-серверу не смогут. Вставьте в конфигурационный файл перед «http_access deny all» следующие строки:
acl internal_network src 192.168.133.1 192.168.133.2 192.168.133.3 192.168.133.22 http_access allow internal_network
(естественно, вы должны ввести IP-адреса компьютеров вашей локальной сети). Сохраните файл и заставьте Squid его перечитать — Squid -k reconfigure. Теперь убедимся, что «кому доступ, а кому и от ворот поворот»: с любого из перечисленных ip вы должны успешно зайти на сервер, а на попытку зайти с ip-адресов, не указанных в списке, получить сообщение «Access Denied» (Доступ запрещен).
[Прим. переводчика: Squid можно научить сообщать об ошибках на русском языке. Проверьте, есть ли у вас директория /usr/share/Squid/errors/Russian-koi8-r, и не пуста ли она. Если там имеются текстовые файлы, то стоит открыть /etc/Squid/Squid.conf и поменять значение переменной «error_directory» на «/usr/share/Squid/errors/Russian-koi8-r». После перезапуска Squid будет ругаться по-русски.]
Данный способ приемлем для малых сетей, однако если у вас тысячи компьютеров или используется динамическая адресация с DHCP-сервером, он уже не годится — в этом случае поможет CIDR-нотация адресов, до ужаса, правда, нудная и требующая знаний о двоичной системе счисления.
Кратко поясним: люди привыкли видеть IP-адреса в формате 123.123.123.123. А вот компьютеры работают с т. н. «длинным» IP-адресом, например, 2071690107 — думаете, случайное число? Вы будете смеяться, но это эквивалент 123.123.123.123.
В ip-адресах мы используем, разделяя точками, числа от 0 до 255. Самое малое число в двоичной системе будет выглядеть как 00000000 (0), а самое большое — как 11111111 (255). Компьютер переводит каждый сегмент ip-адреса в двоичную систему счисления и «склеивает» с остальными в одно длинное число. Например, число 123 — это 01111011, значит, адрес 123.123.123.123 преобразуется в 01111011011110110 1111011. В десятичной системе счисления получится как раз 2071690107. Улавливаете связь?
Теперь самая сложная часть. Диапазон ip-адресов в CIDR-нотации (ее еще называют краткой формой записи группы адресов) задается указанием неизменных разрядов и маски. Например, так: 192.168.100.0/24. Это значит, что первые 24 разряда двоичного эквивалента 192.168.100.0 остаются неизменными (это 192.168.100), а последние 8 бит могут меняться (0-255). А если адрес такой: 10.0.0.0/8, то фиксированы только первые 8 разрядов (это как раз первое число — 10), а остальные числа могут меняться. То есть вместо того, чтобы перечислять в конфигурационном файле все адреса от 192.168.0.1 до 192.168.0.255, мы можем указать их в краткой форме: 192.168.0.0/24.
Надеюсь, теорию вы усвоили. Продолжим настройку Squid:
acl internal_network src 192.168.132.0/24 192.168.133.0/24 192.168.134.10 http_access allow internal_network
Тут мы указали две группы адресов в CIDR-нотации (192.168.132.1-255 и 192.168.133.1-255) и еще один ip-адрес в обычном виде (192.168.134.10). Убедитесь, что правило «deny all» стоит после этих строк.
Детишки под контролем
Допущенный к родительскому компьютеру с благородной целью — делать уроки, ваш отпрыск в лучшем случае проест все деньги, часами просиживая в чатах и обмениваясь копиями игр, а в худшем — натащит вирусов и насмотрится порнухи. Оборонить компьютер поможет все тот же Squid!
Во-первых, можно просто перекрыть доступ к Интернету в определенное время дня — это будет хорошим стимулом сделать, наконец, домашнее задание (сообразительный малютка все равно откопает игру «Сапер», но тут уж ваша вина: нечего было использовать Windows в учебном процессе). Ограничение по времени устанавливается в ACL типа «time», только укажите день недели и временной промежуток. Дни недели обозначаются буквами: M — понедельник, T — вторник, W — среда, H — четверг, F — пятница, A — суббота, S — воскресенье; комбинация MTWHF (рабочие дни) — D. Так, для того, чтобы создать ACL для периода с Воскресенья по Четверг с 19:00 до 20:00, вставьте в Squid.conf такую строку:
acl homework_time time SMTWH 19:00-20:00
Раньше мы использовали ACL только для ограничения по ip-адресам. Теперь к ним добавятся ограничения по времени. Разграничим адреса детей (kids) и взрослых (adult):
acl kids_computers src 192.168.133.3 192.168.133.4 192.168.133.5 acl adult_computers src 192.168.133.0/24
Адреса взрослых расположены в диапазоне 192.168.133.1-255, но три адреса, хотя и входят в этот диапазон, в списке адресов взрослых не числятся, потому что раньше были указаны в другом списке — kids_computers. Создадим правила доступа для них:
http_access deny kids_computers homework_time http_access allow kids_computers http_access allow adult_computers
Второе и третье правила очевидны, однако в первом можно увидеть два параметра: kids_computers и homework_time. Squid работает с правилами в том порядке, в каком вы их записали. То есть в данном случае, он при попытке соединения смотрит на первое правило — если компьютер принадлежит списку kids_computers и текущее время входит во временной промежуток homework_time, то он сразу запрещает соединение и отправляется на заслуженный отдых. При несоблюдении хотя бы одного из указанных условий он переходит к разборке следующего правила, и так далее. Короче, соединение либо его запрет устанавливается на основании первой найденной строки, для которой выполняются все условия. Если список начинается с «accept all», то ни до каких дальнейших ограничений дело не дойдет. Главное — понять этот принцип и соблюдать правильный порядок (прокрутите свои правила в уме).
Что ж, пока детишки выполняют домашнее задание (блажен, кто верует), продолжим вакханалию запрещений и заблокируем скачивание файлов с сайтов сомнительного содержания.
Анализу подлежат три объекта: сомнительные сайты, о которых вы знаете, сомнительные сайты, о которых вы не знаете, и файлы, которые могут нагадить приютившему их компьютеру.
Для первого случая (запрет конкретного ресурса) предусмотрена директива dstdomain. Вот пример ее использования:
acl banned_sites dstdomain bbc.co.uk http_access deny kids_computers homework_time http_access deny kids_computers banned_sites http_access allow kids_computers
Мы запретили детям посещать любые сайты во время выполнения домашнего задания и bbc.co.uk в любое время. Причем в список запрещенных сайтов не попадают, например, news.bbc.co.uk и www.bbc.co.uk. Для того, чтобы запретить все ресурсы домена bbc.co.uk, нужно добавить перед ним точку: .bbc.co.uk.
Неизвестные вам сайты, не предназначенные для малолеток, вычисляются по употреблению нехороших слов, например «sex», «porno», «freeipod». Конечно, всех не перевешаешь, но мы можем воспользоваться регулярными выражениями:
acl noporno url_regex -i porno
Параметр -i означает, что регулярное выражение не различает строчных и заглавных букв (то есть включает Porno, PORNO, PoRNo и т. д.). Теперь блокируем все сомнительные сайты:
acl nosex url_regex -i sex acl nofreeipod url_regex -i freeipod acl noporno url_regex -i porno
Наконец, хорошо бы запретить детишкам скачивать подозрительные файлы. В регулярных выражениях можно использовать знаки «^» и «$», означающие начало и конец строки соответственно. Так, для того, чтобы заблокировать скачивание исполняемых файлов для Windows (с расширением exe), следует добавить что-то вроде этого:
acl noexe $ url_regex -i exe$
Знак доллара означает конец строки URL, так что сайт www.hexen.com не вызовет никаких подозрений у Squid, а вот http://evilsite.com/virus.exe будет заблокирован.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить