Unix-planeta-it
Задания второго очного тура Олимпиады в номинации Администрирование Linux (2009).
1. Базовая часть задания (10 баллов) Настроить прокси-сервер squid на порту 3128/TCP с использованием следующей дисциплины доступа:
1.1. Разрешить доступ к прокси из подсети 10.100.254.0/24 с базовой аутентификацией 1.2. Из всех остальных подсетей доступ запретить. 1.3. С хоста 10.100.254.100 разрешить доступ без аутентификации. 1.4. Группе хостов 10.100.254.1-10.100.254.25 запретить доступ к IP 10.100.254.120 и к доменам mail.ru и yandex.ru, без учета регистра символов в доменном имени. 1.5. Базовую аутентификацию производить при помощи программы /etc/webmin/squid/squid-auth.pl /etc/webmin/squid/users 1.6. Не кешировать результаты работы скриптов, имена которых оканчиваются на '.asp' и скриптов, находящихся на серверах по пути /cgi-bin/ и ниже. 1.7. Запретить метод CONNECT на все порты, кроме 443, 5190, 10000 и 20000. 1.8. Хосту 10.100.254.101 разрешить любые запросы и методы. 1.9. Хостам 10.100.254.24 и 10.100.254.25 разрешить доступ к mail.yandex.ru 1.10. Хосту 10.100.254.102 разрешить доступ только к srv.olimp.local без аутентификации.
2. Дополнительные задания, связанные с прокси-сервером
2.1. Настроить программу-редиректор (/opt/rejik/redirector) для преобразования URL в запросах в целях фильтрации контента по уже имеющимся спискам: порно, баннеры, javascript. - (1 балл) 2.2. Настроить http-сервер nginx для обслуживания страниц с сообщениями об ошибках от rejik/redirector. Страницы предустановлены в /var/www/htdocs/ban/. - (3 балла) 2.3. Настроить редиректор на блокировку закачек файлов с расширениями .wav, .wmv, .avi, .mp3, .mpg и создать отдельную страницу о запрете для перенаправления запроса. - (2 балла). 2.4. Написать скрипты для генерации отчетов по протоколу доступа squid при помощи генератора sarg: - нарастающим итогом с начала текущего месяца — в /var/www/htdocs/current/ (3 балла); - помесячный архив с добавлением полной статистики по истекшему месяцу 1-го числа каждого месяца — в /var/www/htdocs/monthly/ (3 балла)
3. Дополнительные задания, связанные с межсетевым экраном (конфигурация файрвола сдается в виде дампа /etc/rc.d/rc.firewall.conf, созданного при помощи iptables-save, либо в виде скрипта генерации набора правил /etc/rc.d/rc.firewall):
3.1. Обеспечить транспарентную работу прокси для траффика по портам 81/TCP и 443/TCP. (2 балла) 3.2. Реализовать следующую дисплину доступа к портам настраиваемой системы (4 балла):
Разрешить все уже установленные соединения. Разрешить все соединения на loopback интерфейсе. Разрешить все исходящие соединения. Разрешить входящие соединения на порты 80/TCP, 81/TCP, 443/TCP и 3128/TCP из подсети 10.100.254.0/24. Разрешить входящие соединения на порты 22/TCP и 10000/TCP с хостов 10.100.254.100, 10.100.254.101 и 10.100.254.200.
4. Дополнительные бонусы: 4.1. За минимальное количество проверок пакетов при прохождении пакетом правил фильтрации задания 3.2 по самому длинному пути (минимум правил при наихудшем варианте). — 1 балл.
4.2. Первому участнику, сдающему работу (независимо от результатов) — 1 балл.
Итого: максимум 30 баллов.
Реализация
Доступ в интернет с авторизацией
Создание файла с логинами и паролями для Squid:
squid ~ # htpasswd -c /создаваемый/файл/паролей имя_пользователя New password: Re-type new password: Adding password for user имя_пользователя squid ~ # htpasswd /редактируемый/фвйл/паролей имя_пользователя2 New password: Re-type new password: Adding password for user имя_пользователя2 squid ~ # ############################################################## squid ~ # # с ключом -с команда htpasswd выполняется первый раз (создает новый файл), пример: squid ~ # # без ключа -c происходит добавление пользователей к уже существующему файлу:
Настройка squid Для работы с авторизацией:
squid ~ # grep -v ^# /etc/squid3/squid.conf | grep -v ^$ auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/squidusers acl lan proxy_auth REQUIRED http_access allow lan <....>
http://www.k-max.name/linux/avtorizaciya-autentifikaciya-squid/
Не кэшировать скрипты из каталога cgi-bin
hierarchy_stoplist cgi-bin ?
http://www.info-x.org/freebsd/programmy/nastroika_squid.html
acl QUERY urlpath_regex cgi-bin \? cache deny QUERY