[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 912389»
Модератор форума: Сергеев_ЕВ 
Форум учителей » Урочная деятельность » Обсуждаем Программное обеспечение » Контент-фильтр средствами СПО (Шлюз на Ubuntu с прокси-сервером squid - белый список сайтов)
Контент-фильтр средствами СПО
iyugov Дата: Среда, 21.12.2011, 18:25 | Сообщение #1
Профиль пользователя iyugov
Активист
Группа: Друзья
Сообщений: 1086
Статус: Отсутствует
Второй год успешно функционирует контент-фильтр, работающий по "чёрным" и "белым" спискам сайтов. При правильной настройки весьма суров - почти никуда не пускает. Самое то при прокурорском визите.

Вот как он был создан.

  • Взят более-менее приличный по характеристикам компьютер.

  • Установлена Ubuntu 10.04 LTS Desktop Edition.
    Руководство.

  • Настроены внутренняя и внешняя сети.

  • Настроены перенаправление пакетов между сетями.

    Вариант 1: на присутствие прокси-сервера не рассчитан, но у меня почему-то работает.

    Создать sh-скрипт следующего содержания:

    Code


               #!/bin/sh

               # Внутренняя сеть
               lan=192.168.0.0/24

               # Внешний адрес
               ip_wan=10.0.2.15

               # ПРАВИЛА
               # Разрешить перенаправление пакетов из внутренней сети
               iptables -A FORWARD -s ${lan} -j ACCEPT

               # Транслировать адрес отправителя на внешний
               iptables -t nat -A POSTROUTING -s ${lan} -j SNAT --to-source ${ip_wan}

               # Разрешить передачу пакетов между интерфейсами
               echo 1 > /proc/sys/net/ipv4/ip_forward

               


    Подставить действительные параметры сетей.
    Если подключение к внешней сети устанавливается при загрузке, то поместить скрипт в /etc/network/if-pre-up.d/.
    Если подключение к внешней сети устанавливается после загрузки с помощью NetworkManager, то поместить скрипт в /etc/NetworkManager/dispatcher.d/.

    Перезапустить сетевые интерфейсы.

    Вариант 2: на присутствие прокси-сервера должен быть рассчитан, но у меня не работает.

    Создать sh-скрипт следующего содержания:

    Code


               #!/bin/sh

               # Внутренняя сеть
               lan=192.168.0.0/24

               # Порт назначения
               dest_port=80

               # Порт прокси-сервера
               proxy_port=3128

               # ПРАВИЛА
               # Разрешить перенаправление пакетов из внутренней сети
               iptables -A FORWARD -s ${lan} -j ACCEPT

               # Перенаправить запросы с 80-го порта адрес отправителя на порт прокси-сервера
               iptables -t nat -A PREROUTING -s ${lan} -p tcp --dport ${dest_port} -j REDIRECT --to-port ${proxy_port}

               # Разрешить передачу пакетов между интерфейсами
               echo 1 > /proc/sys/net/ipv4/ip_forward

               


    Подставить действительные параметры сетей.
    Настроить прокси-сервер.
    Если подключение к внешней сети устанавливается при загрузке, то поместить скрипт в /etc/network/if-pre-up.d/.
    Если подключение к внешней сети устанавливается после загрузки с помощью NetworkManager, то поместить скрипт в /etc/NetworkManager/dispatcher.d/.

    Перезапустить сетевые интерфейсы.

  • Установлен squid.

  • Вариант 1: команда в консоли.
    Code
    sudo apt-get install squid

    Вариант 2: установка пакета squid через менеджер пакетов Synaptic.

    Настроен squid. Статья по настройке.

  • Созданы и пополняются чёрный и белый список.
    Введение в регулярные выражения (без подготовки не читать; для простейшей фильтрации можно обойтись одними доменами, без регулярных выражений).


Требуются следующие ЗУН:
  • понимание, что и куда надо воткнуть, чтобы доступ в интернет был физически;
  • запись образов дисков на болванки;
  • установка настольных операционных систем в диалоговом режиме (как в Windows);
  • настройка параметров сетей - IP-адрес, маска подсети, шлюз, DNS-серверы, примитивная маршрутизация;
  • простейшая работа в командной строке Linux;
  • запуск и остановка служб;
  • установка пакетов из интернета;
  • настройка squid (можно разобраться по ходу дела, есть руководство на русском);
  • составление регулярных выражений (если фильтрация будет осуществляться по ним).


Сомнительные моменты:
  • Данный прокси-сервер делается в основном для организации белого списка сайтов, то есть каждый разрешённый сайт нужно будет вносить в список. Необходимо оценить трудозатраты и оперативность пополнения списка.
  • Прокси-сервер работоспособен, но нагрузочное тестирование его не проводилось. Если, скажем, в белом списке будет 5000 записей и сервер будет обслуживать три компьютерных класса одновременно, то вдруг сервер начнёт "тормозить" и отдавать страницы с задержкой? Ответа на этот вопрос у меня пока нет.
  • Для squid есть, как минимум, один графический интерфейс - gadmin-squid. Никогда им не пользовался, но вдруг это что-то стоящее.


Позднее расширял белый список многократным копированием до 10000 строк и пробовал доступ с одного компьютера. Задержка не появилась.

При правильной конфигурации работе на белых-чёрных списках система:
  • устойчива к обращению к сайту по IP (если именно IP отсутствует в белом списке);
  • устойчива к обращению к сайту через веб-прокси (если веб-прокси отсутствует в белом списке);
  • в принципе устойчива к изменению IP-адреса и других сетевых настроек клиента, если прокси с авторизацией;
  • позволяет настроить доступ с точностью до элемента URL, вплоть до параметров GET-запроса (можно запретить редактирование Википедии и разрешить просмотр, можно разрешить сайт в целом, но запретить форум в его домене и т. п.)

При определённых условиях можно, конечно, преодолеть и эти ограничения доступа, но за всё время это выяснилось не в реальных боевых условиях, а лишь в моих упорных попытках испытать "неуязвимость" системы. Уязвимости есть, но устраняемые.


Dixi.

Сообщение отредактировал iyugov - Среда, 21.12.2011, 21:42
Сергеев_ЕВ Дата: Среда, 21.12.2011, 21:44 | Сообщение #2
Профиль пользователя Сергеев_ЕВ
Модератор форума
Группа: Модераторы
Сообщений: 2896
Статус: Отсутствует
Добро, Иван Олегович, спасибо за тему, уверен, будет полезна. Только надо было не здесь ее создавать. Но это ладно, я перенесу.

Насколько я понял, руление пакетами что сквидом, что айпитабэлзом требует серьезных ресурсов. У меня до недавнего времени на шлюзе стоял Целерон 1700 с убунту 10.10 в серверном релизе на борту. Раздавал интернет iptables-firewall'ом, без фильтрации. Потом селик мой помер, заменить было нечем: в моем распоряжении были только старенькие целероны же, только 500-е, с 28 метрами оперативы на борту. Долго подбирал дистрибутив, пока не остановился на ubuntu 6.06 server: только она смогла встать, и то, не сразу. Но файрволл поставить на него смог, скормив ему репозитории от восьмой убунты.

В-общем, ставить на такую машинку "пакетовый руль" смысла нет?

Есть еще чисто серверная тачка, 2Гига ОЗУ, 2ядра, зеркалирующий райд на пол-терабайта из двух винтов - нормальная, в-общем, тачка, как раз для сервера. Вот только не хочу я ее шлюзом ставить - боюсь внешних атак. Может зря боюсь?




Окажу помощь в создании и администрировании учительских сайтов в системе uCoz
iyugov Дата: Среда, 21.12.2011, 22:29 | Сообщение #3
Профиль пользователя iyugov
Активист
Группа: Друзья
Сообщений: 1086
Статус: Отсутствует
Насчёт ресурсов - для шлюза желательна быстрая сетевуха, побольше ОЗУ и быстрый жёсткий диск под кэш, если использовать кэширование в squid. Это для боевого варианта. Для учебно-тренировочного можно и поскромнее комп, а то и вовсе виртуальную машину.
Фразу "пакетовый руль" не понял.
По безопасности проблем не вижу - ставите Ubuntu 10.04 или, на худой конец - 11.10, и накатываете все обновления. Можно даже Debian 6.0.3 поставить - менее прожорливый и стабильный, как кости мамонта. Ваша серверная машина наверняка устойчивее к атакам, чем те динозавры с 28 Мб. Хотя бы к DDoS.


Dixi.
Сергеев_ЕВ Дата: Четверг, 22.12.2011, 08:19 | Сообщение #4
Профиль пользователя Сергеев_ЕВ
Модератор форума
Группа: Модераторы
Сообщений: 2896
Статус: Отсутствует
Quote (iyugov)
Фразу "пакетовый руль" не понял.
Извините, засловоблудился biggrin Со мной иногда бывает...
Средство для маршрутизации пакетов, я имел в виду.
Quote (iyugov)
для шлюза желательна быстрая сетевуха
Гигабитка? Удивлен: 100-мегабит уже недостаточно, что ли? Для чего нужна скоростная карта?
Quote (iyugov)
быстрый жёсткий диск под кэш, если использовать кэширование в squid
Т.е. ATA/IDE - уже не пляшут? А то у меня только такие, сказёвые, правда...
Quote (iyugov)
Это для боевого варианта
Скажем так, нужен учебный, плавно перерастающий в боевой
Quote (iyugov)
По безопасности проблем не вижу - ставите Ubuntu 10.04
Просто у меня 10.10. Пойдет, наверно, а то качать не хочется: как вспомню свою эпопею с поиском подходящего дистрибутива... Т.е. Вы считаете, что мне следует отказаться от своего мастодонта в роли шлюза и ставить вместо него нормальный сервер? Просто у меня на нем файлопомойка, тоже, кстати, непросто организованная, и, боюсь, что ненароком убью я ее во время экспериментов, а там документов - туча! И все чужие, да служебные...




Окажу помощь в создании и администрировании учительских сайтов в системе uCoz
iyugov Дата: Четверг, 22.12.2011, 09:57 | Сообщение #5
Профиль пользователя iyugov
Активист
Группа: Друзья
Сообщений: 1086
Статус: Отсутствует
По скорости 100 Мбит/с достаточно, но карта должна хорошо разруливать много почти одновременных запросов компьютеров-клиентов. В последнее время начал думать, что почти любой сетевухи хватит. У нас канал связи шлюза с вышестоящими серверами вообще беспроводной, через стенку. Через шлюз работают три класса, хотя не слишком активно. Задержки приемлемые, не нервирующие. Винты - SATA, но кэш не используется. Попробуйте, что ли, на старом, шанс есть. Просто туда более-менее новый дистр не поставить.
Наш ещё работает как Samba-, FTP- и веб-сервер с удалённым доступом по SSH, VNC и Jabber-shell. Важные каталоги бэкапятся автоматом. По Jabber-shell можно в некоторой степени рулить шлюзом через инет, даже если у него нет белого IP. Например, в принципе возможно такое: я на отпуске где-нибудь в соседней области в лесу в палатке; звонят с работы и говорят, что пришёл прокурор проверять контент-фильтр; на всякий случай для перестраховки решаю уронить интернет вообще; захожу с мобилы в "Mail.Ru Агент", там в списке контактов нахожу свой сервер и даю команду уронить сквид (или выключиться); коллеги с trollface-лицом говорят: "Извините, господин прокурор, у нас технические неполадки с интернетом, приходите завтра"; после ухода проверки даю команду поднять сквид или звоню коллегам с просьбой включить сервер. Также можно дать команду просканировать сеть на предмет работающих хостов (вдруг кто-то забыл компьютер выключить). Таким образом год назад был вычислен ночной сторож, использовавший один из компьютеров для своих целей (надо сказать, для нормальных целей - ходил по образовательным сайтам, скачивал статьи и разработки).


Dixi.

Сообщение отредактировал iyugov - Четверг, 22.12.2011, 10:23
Сергеев_ЕВ Дата: Четверг, 22.12.2011, 18:49 | Сообщение #6
Профиль пользователя Сергеев_ЕВ
Модератор форума
Группа: Модераторы
Сообщений: 2896
Статус: Отсутствует
Quote (iyugov)
карта должна хорошо разруливать много почти одновременных запросов компьютеров-клиентов
Всегда думал, что практически все сетевухи примерно одинаковы по своим характеристикам. Видимо, помимо пропускной способности для шлюза имеет значение что-то типа скорости обработки или маршрутизации пакетов? Например?
Quote (iyugov)
Винты - SATA, но кэш не используется
Для его использования нужны какие-то особые танцы с бубном?
Quote (iyugov)
Попробуйте, что ли, на старом, шанс есть. Просто туда более-менее новый дистр не поставить.
Это точно, не поставить. Я боюсь, что он начнет тупить, и в результате я лишусь даже такого дырявого шлюза. Ладно, пока отложу эту идею.
Quote (iyugov)
Наш ещё работает как Samba-, FTP- и веб-сервер с удалённым доступом по SSH, VNC и Jabber-shell.
У меня, в принципе, также: smb, SSH, DHCP принципиально не хочу ставить, FTP - пока нет особой нужды, Apache, вот только нету VNC с Jabber-shell. Ну, VNC, если я не путаю, это сервер для дистанционного подключения в рабочему столу. Вот только зачем, если рабочего стола, как такового, нету? А про Jabber-shell я вообще впервые слышу. Слушайте, прикольная штука! хАчу!!!

У меня уже есть печальный опыт потери документов учителей всей школы (благо это была только копия). А все в результате экспериментов над сервером. Так что, думаю, мне стоит подумать об учебно-полигонной машинке, прежде чем браться за новые эксперименты.




Окажу помощь в создании и администрировании учительских сайтов в системе uCoz
iyugov Дата: Пятница, 23.12.2011, 10:23 | Сообщение #7
Профиль пользователя iyugov
Активист
Группа: Друзья
Сообщений: 1086
Статус: Отсутствует
Какие-то другие характеристики сетевух тоже есть. У нас по региональной поставке сетевые карты на серверах были довольно навороченными. Хотя там большое подозрение на распил и откат поставщиков - два раза комплектацией системников приходила интересоваться прокуратура.
Для использования кэша камлать нужно не более, чем для любой другой настройки. Сам не пробовал, но ощущение такое, что довольно просто.
Иногда имею дело с XP+WinProxy. Это ужас, когда прокси-сервер непрозрачный, - приходится в каждой программе указывать настройки прокси. Причём не во всех программах такие настройки возможны. А при другом способе подключения надо везде убирать настройки прокси. Снесу при первой же возможности получить над ним контроль.
VNC у меня возможен, т. к. десктопная версия. Графическая среда для простого подключения к беспроводной сети, плюс можно работать, как на клиентской машине. Jabber-shell воспринимает всё, что придёт ему по чату, как команду для терминала. Работает от рута. Не умеет передавать сочетания клавиш и не умеет вводить пароли. Если у вас сервер с белым IP-адресом, то лучше подключаться по SSH (я так домой подключаюсь с мобилы через Putty).
Когда работал в фирме по обслуживанию IT-систем предприятий, у нас было главное правило - "Не навреди". Перед любой, даже самой простой операцией, делался полный бэкап. Столько раз спасало от законов Мэрфи...


Dixi.
Сергеев_ЕВ Дата: Пятница, 23.12.2011, 22:47 | Сообщение #8
Профиль пользователя Сергеев_ЕВ
Модератор форума
Группа: Модераторы
Сообщений: 2896
Статус: Отсутствует
А я сегодня уронил свою рабочую убунту. cry
Ладно там две оси было - винда пока еще держится. Придется на выходных заняться... Блин, другие планы были...




Окажу помощь в создании и администрировании учительских сайтов в системе uCoz
iyugov Дата: Суббота, 24.12.2011, 21:47 | Сообщение #9
Профиль пользователя iyugov
Активист
Группа: Друзья
Сообщений: 1086
Статус: Отсутствует
Зачем уронили и как?
Если это произошло из загруженной системы и с правами обычного пользователя, то было бы интересно узнать.
А то скажут потом, что Убунта виновата. smile


Dixi.

Сообщение отредактировал iyugov - Суббота, 24.12.2011, 21:47
Сергеев_ЕВ Дата: Суббота, 31.12.2011, 10:39 | Сообщение #10
Профиль пользователя Сергеев_ЕВ
Модератор форума
Группа: Модераторы
Сообщений: 2896
Статус: Отсутствует
Quote (iyugov)
А то скажут потом, что Убунта виновата
Нечего на убунту пенять, коли руки кривые! happy
А вообще с убунтой странные вещи творятся, я имею в виду 11е ее версии. Да и гном-шелл - безусловно, гораздо удобнее юнити, но тоже та еще штучка...

Ладно, в январе попробую переставить убунту и настроить фильтр по Вашим рекомендациям




Окажу помощь в создании и администрировании учительских сайтов в системе uCoz
Форум учителей » Урочная деятельность » Обсуждаем Программное обеспечение » Контент-фильтр средствами СПО (Шлюз на Ubuntu с прокси-сервером squid - белый список сайтов)
Страница 1 из 912389»
Поиск:

Если Вы хотите оставить сообщение на форуме,
то рекомендуем Вам зарегистрироваться на нашем сайте или войти на портал как зарегистрированный пользователь