Установка LightSquid (перевод офиц. руководства)
Обновлено: 15.01.2025Необходимое программное обеспечение:
- Perl
- http сервер (Apache, lighthttpd, и др.)
- Squid
- Cron
или их аналоги.
В нашем случае рассматривается пример с сервером Apache
1. Распакуйте lightsquid.tgz в любую директорию
cd /var/www/htdocs/ mkdir lightsquid cd lightsquid tar -xzf lightsquid.tgz
Делаем скрипты исполняемыми
chmod +x *.cgi chmod +x *.pl
Меняем владельца
chown -R apache:apache *(где apache = пользователь, от имени которого запускается веб-сервер)
2. Вносим изменения в файл конфигурации Apache
.cgi файлы должны исполняться как CGI скрипты
<Directory "/var/www/html/lightsquid"> AddHandler cgi-script .cgi AllowOverride All </Directory>
Перезапускаем Apache
3. Редактируем lightsquid.cfg
4. При желании получить отчет по группам - редактируем group.cfg
Формат:
esl 01 SysAdmin karlos 01 SysAdmin thy 01 SysAdmin Ivanov 02 Developer Ivanov2 02 Developer Petrov 03 Commerial Petrova 03 Commerial vasyav 04 room 312 petyava 04 room 312
5. Если вы хотите отображать в отчете настоящее мия пользователя - отредактируйте realname.cfg
Формат:
esl Sergey Erokhin karlos Super User1 thy Tech Good Ivanov Developer numer one Ivanov2 Developer numbe two Petrov Good Commerial Petrova Bad Commerial vasyav Some User1 petyava Some User2
6. Если вам нужен графический отчет
7. Запустите check-setup.pl
Если все в порядке, переходите к следующему шагу
иначе проверьте конфигурационные файлы.
8. Попробуйте запустить lightparser.pl
Если все прошло успешно, никаких сообщений не будет
Сбор старой статистики
./lightparser.pl access.log.1.{gz|bz2}
./lightparser.pl access.log.2.{gz|bz2}
./lightparser.pl access.log.3.{gz|bz2}
...
9. Проверьте работу lightsquid
Используя ваш броузер, откройте страницу http://<адрес_хоста_с_Apache>/lightsquid/
10. Настройте crontab на выполнение lightparser каждый час
crontab -e
Следующий пример запускает импорт лог-файлов каждые 20 минут
*/20 * * * * /var/www/htdocs/lightsquid/lightparser.pl today
Если лог-файл не большой и омпьютер довольно шустрый, можете уменьшить интервал импорта логов
Внимание! Не устанавливайте интервал менее 10 мин
11. Вот и все!
12. В случае возникновения проблем, определите переменную $debug в файле lightsquid.cfg и перезапустите lightparser.
LightSquid: Анализ трафика прокси-сервера Squid
Обновлено: 15.01.2025Для доступа в интернет многие организации используют прокси сервер Squid. В этих случаях практически всегда squid установлен в операционной системе Linux (FreeBSD). И в большинстве случаев необходимо, хотя бы для примерного контроля ситуации, знать, кто, куда и сколько J. Многие системы учета трафика не совсем просты в установке, некоторые являются платными. Описываемая утилита для сбора и анализа трафика прокси-сервера Squid проста в установке, настройке и использовании. Это LightSquid.
LightSquid
Дом. страница: http://lightsquid.sourceforge.net/
Для установки требуются: Perl, http server (Apache, lighthttpd, etc), Squid, Cron.
Perl установлен в большинстве систем и так (значит, скорее всего, ставить вам его не придется).
Squid уже установлен (а как же иначе, что анализировать-то собираемся?!)
Cron тоже есть в любой unix-like системе.
Итак, необходим только http-сервер, наиболее популярным из которых, является Apache.
Apache
Дом. страница: http://httpd.apache.org/
Установка Apache проста и не затейлива.
Загрузка:
$ lynx http://httpd.apache.org/download.cgi
Распаковка:
$ gzip -d httpd-NN.tar.gz
$ tar xvf httpd-NN.tar
$ cd httpd-NN
Подготовка конфигурации:
$ ./configure --prefix=PREFIX
И, наконец, волшебные
$ make
$ make install
Далее редактируем основной файл конфигурации. Лежит он, например, в папке /usr/local/apache/conf/:
$ ee /usr/local/apache/conf/httpd.conf
либо, в более общем случае:
$ ee PREFIX/conf/httpd.conf
Тестируем то, что установили:
$ PREFIX/bin/apachectl -k start
Этот документ не является руководством по установке Apache, поэтому лучше всего сразу обратиться к офиц. руководству: http://httpd.apache.org/docs/2.2/install.html
Итак, с Apache все ясно более или менее. Теперь сама наша цель – LightSquid.
Установка LightSquid
Офиц. страница руководства: http://lightsquid.sourceforge.net/Installs.html
Распаковка дистрибутива. Предполагается, что папка /var/www/htdocs/ - это корень вашего сайта (см. настройки Apache: httpd.conf) |
cd /var/www/html/ mkdir lightsquid cd lightsquid tar -xzf lightsquid.tgz |
Делаем исполняемыми сценарии языка perl в директории с распакованным дистрибутивом. |
chmod +x *.cgi chmod +x *.pl |
Меняем владельца файлов на то имя, от имени которого запускается Apache. Опять смотри httpd.conf. |
chown -R apache:apache * |
Теперь нам надо добавить в файл конфигурации веб сервера Apache эти строки. Разрешаем выполнять скрипты на нашем локальном сайте http://127.0.0.1/ lightsquid/ |
AddHandler cgi-script .cgi AllowOverride All
|
Рестартуем Apache для учета наших изменений |
$ /usr/local/apache/bin/apachectl -k stop $ /usr/local/apache/bin/apachectl -k start |
Проверяем доступность сайта (либо локально, либо с другого компьютера). При этом желательно, чтобы к этому сайту, а еще лучше, вообще к этому веб-серверу, доступ был открыт только для администратора. Даже для начальства доступ лучше закрыть. Сами понимаете J |
Открываем страницу: http://local_ip_address/ lightsquid и убеждаемся, что система напишет о необходимости импорта лог-файлов. В противном случае ищем проблему в настройках Apache. |
Редактируем lightsquid.cfg (лежит в папке /var/www/html/lightsquid в нашем примере). Также можно отредактировать файлы group.cfg и realname.cfg в соответствии с примером на странице офиц. руководства, но это уже не обязательно. |
Минимально надо уточнить пути до лог файлов веб-сервера Squid. $logpath="/var/log/squid"; Естественно, это должно соответствовать настройкам хранения лог-файлов вашей системы. |
Все. По минимуму, вы уже готовы к тестированию системы учета трафика. Можете смотреть в вашем броузере, кто сколько скачал. Смотрите, не попадитесь сами ;) |
$ cd /var/www/html/lightsquid |
Примечание: если что-то не срастается, необходимо помнить, что все настройки хранятся в паре текстовых файлов. Первый: httpd.conf (Apache). Второй - lightsquid.cfg (LightSquid). Все. С вопросами пишите на info@bozza.ru либо оставляйте вопросы на сайте. Постараюсь ответить по мере сил.
На основании комментария от 03.08.2010 (Arata) напомню, что формат запуска Lightsquid такой:
$ ./lightparser.pl [параметр]
где [параметр] м.б. пустым либо явно указывающим на файл с логом.
Тестирование Firewall
Обновлено: 15.01.2025Методика тестов
Тестирование производилось на экспериментальном ПК под управлением лицензионной Windows XP с установленным SP1 (тестирования проводились в идеализированных условиях - "операционная система + Firewall" для исключения влияния других программ на чистоту эксперимента). В качестве индикатора успешного доступа к сервисам использовалась утилита APS. В качестве средств внешнего воздействия применялись:
- сканер XSpider 6.5 и 7.0
- Retina Network Security Scanner 4.9
- NMAP
- несколько сканеров моей разработки.
Кроме того, применялся сниффер CommView 4.1 (в качестве средства наблюдения за сетевым трафиком и в качестве утилиты для генерации и отправки пакетов с различными нарушениями в структуре). Применялись т.н. флудеры (flooder) распространенных типов, утилиты для имитации троянских программ.
На испытательном ПК в качестве средств доступа к сети и Интернет применялся IE 6, Outlook Express 6, TheBat 1.60, MSN Messanger 6.1. Кроме них в тесте участвовали имитаторы троянских программ и реальные троянские / Backdoor программы из моей коллекции (в частности Backdoor.Antilam, Backdoor.AutoSpy, Backdoor.Death, Backdoor.SubSeven, Backdoor.Netbus, Backdoor.BO2K), сетевые / почтовые вирусы (I-Worm.Badtrans, I-Worm.NetSky, I-Worm.Sircam, I-Worm.Mydoom, I-Worm.MSBlast), загрузчики троянских программ TrojanDownloader (в частности TrojanDownloader.IstBar) и шпионские SpyWare компоненты. Главной задачей тестов была попытка взглянуть на Firewall глазами пользователя, отметить его сильные и слабые с моей точки зрения стороны.
Kerio Technologies WinRoute Pro v4.2.5
Инсталляция и деинсталляция:
Проходит без проблем.
Установка с настройками "по умолчанию", без правил - действует только NAT. Работа в сети - без проблем, результаты сканирования - APS не показывает состояние тревоги, сканер считает, что все порты закрыты. Сам Winroute не выдает сигналов тревоги и никак визуально не идентифицирует факт сканирования.
Достоинства:
- Функционирует сразу после установки, дыры отсутствуют даже без настроек;
- NAT трансляция сразу дает существенную защиту от сканирования портов и удаленных атак;
- Хорошо построено протоколирование
Недостатки и особенности:
- Пароль администратора должен быть задан сразу после установки, иначе возможно удаленное отключение Firewall или его перенастройка;
- Процессы видны в памяти под характерными именами и их уничтожение приводит к отключению защиты - APS поднял тревогу в момент уничтожения процессов;
Общая оценка:
Winroute - это серьезный продукт, гибрид Firewall, прокси сервера, NAT транслятора, простого почтаря …, он требует настройки и понимания принципов работы сети.
Outpost Firewall Pro 2.5.369.4608 (369)
Дополнение: компания Агнитум приобретена Яндексом в 2016 году за 200 млн рублей с целью использования их разработок в Яндекс.Браузере, так что сейчас такого отдельного продукта уже нет.
Инсталляция и деинсталляция:
Установка под XP SP 2 проходит без проблем, после установки требует перезагрузку, при запуске включается режим обучения. Инсталлятор предлагает на выбор автонастройку Firewall или ручную настройку. Новшества этой версии описаны на сайте разработчиков http://www.agnitum.com/products/outpost/history.html
Достоинства:
- Есть режим "невидимость", и он включен по умолчанию;
- Экспериментально проверена стабильная работа этого Firewall под SP1 и SP2;
- Есть автопоиск подсетей - по крайней мере уверенно находится "домашняя" подсеть
- Настройки объединяются в конфигурации, которые можно сохранять на диске - таким образом можно сделать несколько разных конфигураций и загружать их по мере необходимости
- Русифицированный интерфейс, ориентированный на пользователя. Интерфейс достаточно хорошо продуман, все понятно с первого взгляда;
- Встроенный детектор атак. Обнаруживает простые атаки типа сканирования портов, тесты IDS это подтвердили - по крайне мере, сканирование портов он ловит отлично;
- Показывает список приложений, прослушивающих порты TCP и UDP (с указанием списка портов по каждому приложению и информации о моменте начала прослушивания - полезно для отлова троянских программ и шпионского ПО);
- Режим обучения удобен для обнаружения троянских программ и визуальной настройки правил - он реализован типовым образом и основан на запросе допустимости операции, производимой приложением. Кроме того, в описании заявлено, что есть защита от внедрения постороннего кода в доверенный процесс;
- В правилах можно указывать не только имя программы, но и ее параметры - это в ряде случаев полезно;
- В комплекте содержит ряд плагинов (IDS, средства борьбы с рекламой и т.п.)
- При удалении процесса outpost.exe происходит блокировка обмена с сетью - это полезная возможность
- Есть опция слежения за библиотеками процесса - к примеру, при появлении нового BHO в IE выводится сообщение о том, что у процесса IE изменился состав используемых им библиотек;
- Продуманный просмотрщик протоколов (работает в реальном времени, данные лдостаточно логично сгруппированы
- Есть особые настройки для RAW Socket - можно указать, каким приложениям можно их использовать
Недостатки и особенности:
- Firewall виден в списке задач и не препятствует своему удалению (но при удалении процесса происходит блокирование обмена с сетью - поэтому это не недостаток);
- Большое потребление ресурсов - 33 МБ ОЗУ + 31 МБ вирт. памяти, что конечно многовато, хотя на ПК с 1 ГБ ОЗУ это не особо ощущуется;
- Комплекстный тест IDS показал, что она отлично ловит сканирование портов, но остальньные атаки практически не детектирует. Например, явный SYN FLOOD был успешно заблокирован правилами, но IDS по этому поводу ничего не сказал (хотя флудил я со скоростью 2-3 тысячи пакетов/сек)
Общая оценка:
Как и предыдущая версия 2.1, по сочетанию возможностей и удобства работы (да еще и с поправкой на русскоязычный интерфейс) на мой взгляд один из лучших продуктов на момент тестирования.
ZoneLabs ZoneAlarm Pro with Web Filtering 4.5.594.000 - Personal Firewall
Инсталляция и деинсталляция:
В ходе установки подвесил XP в ходе попытки запуститься после инсталляции. После перезагрузки все заработало нормально.
Достоинства:
- По умолчанию у него практически ничего не разрешено (в отличие от Outpost)
Недостатки и особенности:
- Несколько запутанный на мой взгляд интерфейс
- Firewall виден в списке задач и не препятствует своему удалению - после удаления защита отключается (APS тут же фиксирует тревогу)
Общая оценка:
Персональный Firewall среднего класса, вполне соответствующий современным требованиям. Несколько запутанный англоязычный интерфейс является его минусом
AtGuard 3.22>
Инсталляция и деинсталляция:
Инталляция и деинсталляция особых проблем не вызывает
Достоинства:
- Небольшой по размеру Firewall, имеет интересное решение с точки зрения интерфейса - он выполнен в виде панели, размещаемой вверху экрана
Недостатки и особенности:
- В режиме обучения уязвим - с момента вывода запроса на создание правила до его создания пропускает пакеты в обоих направлениях
- Интерфейс немного поглючивает при перерисовке окон
Общая оценка:
Простой Firewall, однако вполне функциональный
Kerio Personal Firewall 4
Инсталляция и деинсталляция:
Установка проходит без проблем, удаление "чистое" - проблем после деинсталляции не замечено.
Достоинства:
- Антитроянские механизмы - может обнаруживать и блокировать запуск одной программы из другой (можно настроить правила), запуск новой программы. В настройках три градации (разрешить, запретить, спросить);
- Показывает, какие из запущенных приложений прослушивают порты
- Имеет механизмы обучение;
- Может настраиваться вручную;
- Имеет IDS, которая определяет типовые атаки, в частности сканирование портов;
- Может блокировать подозрительные куки (cookies)
Недостатки и особенности:
- Разрешения по умолчанию позволяют работать по 135 порту
- Есть ряд мелких багов, например при задании опции Alert в настройках фильтра пакетов в условиях атаки с Firewall работать невозможно - выскакивающее окно с сообщением об атаке забирает на себя фокус ввода
- В условиях большой нагрузки периодически подтормаживает (это совершенно не критично для работы по модему)
- Firewall виден в списке задач и не препятствует своему удалению - после удаления защита отключается (APS тут же фиксирует тревогу)
Общая оценка:
Хороший Firewall, я бы поставил его на одну ступень с Outpost.
Norton Internet Security 2004 (NIS)
Инсталляция и деинсталляция: Установка не вызывает проблем, но из всех проанализированных инсталлятор самый тяжеловесный.
Достоинства:
- Интегрированное решение (Антивирус + Firewall + IDS + блокиратор рекламы)
- Система обновления через Интернет;
- В настройках IDS есть опция блокирования компьютера всех пакетов с хоста, проводящего атаку на заданное время (по умолчанию на 30 минут);
- Содержит дополнительные надстройки, в частности, антиспам - систему, встраивающуюся в Outlook Express;
- При уничтожении процессов NIS продолжал блокировать доступ с атакующих хостов (большинство остальных при удалении процесса прекращали защищать ПК)
Недостатки и особенности:
- Самое "тяжеловесное" из исследованных решение - в памяти находится несколько процессов, потребляющих значительные ресурсы (хотя на ПК с 512 МБ ОЗУ эта тяжеловесность не ощущается)
- У меня в ходе тестов отмечался некий "глюк" с закладкой, отображающей статистику и протоколы системы - вместо статистики выдывались ошибки NIS с сообщением о невозможности вызнать некую DLL;
- IDS легко можно обмануть и заблокировать работу с "полезными" ПК. Это не минус конкретно NIS, это проблема всех подобных систем;
- Слишком тесная итеграция с системой - это по сути его плюс, но лично мне не нравятся программы, которые внедряются и прописываются по максимуму во все возможные места системы;
Общая оценка:
Internet Connection Firewall, ICF - встроенный брандмауэр Windows XP
Инсталляция и деинсталляция: Установка не требуется, является штатным средством XP. Включение производится в настройках сетевого адаптера. По умолчанию ICF работает в режиме максимальной безопасности и (это результат моего наблюдения) принцип его работы таков - запросы приложений выпускаются наружу, а снаружи принимаются только пакеты, пришедшие в ответ на мои запросы (соответствие запрос-ответ явно ведется в виде динамической таблицы). Таким образом, при сканировании портов на компьютере с включенным ICF нет ни одного открытого порта (это логично - пакеты сканера портов не будут пропущены, т.к. их никто не запрашивал). Аналогично дело обстоит с различного рода "нюками", основанными на отправке нестандартных пакетов.
Достоинства:
- Встроенное средство в XP - не требует установки и практически не требует настройки;
- Обеспечивает надежную защиту от внешнего вторжения даже при отсутствии настроек - ПК не отвечает на пинги, сканирование портов показывает, что все порты недоступны;
- Не виден как процесс (и, как следствие, не может быть остановлен вирусом или трояном);
- Возможен прием входящих пакетов с возможностью их переадресации на другой ПК и порт - маппингом (здесь можно провести аналогию с NAT - пакет с входящим запросом отправляется в соответвии со статической таблицей правил, заданной в настройке в нашем случае эта настройка задается на закладке)
- Блокирует работу троянских и Backdoor программ, которые прослушивают некий порт и ожидают подключение по нему хакера - по умолчанию все запросы на входящие подключения блокируются
Недостатки и особенности:
- Полное отсутствие визуализации происходящих процессов. Единственным способом контроля за работой ICF является текстовый протокол, который пишется в указанный файл на диске (протоколирование по умолчанию отключено и его рекомендуется включить). Отсутствие визуального оповещения и просмотра информации в реальном времени на мой взляд является самым большим недостатком;
- Достаточно скудные возможности - нет возможности обучения и настройки правил для отдельных приложений, настройки правил для разрешения/запрета работы с определенными хостами по определенным портам. В небольшой степени этот минус скрашивается наличием фильтра пакетов в настройках протокола TCP/IP ;
- ICF хорош для защиты домашнего ПК при доступе в Интернет, использовать его в ЛВС сложнее.
- ICF прекрасно обходится троянскими программам, которые вместо прослушивания порта организуют отправку данных по email или устанавливают соединение с удаленным сервером по своей инициативе - ICF пропустит исходящий запрос и позволит пройти ответу. В этом плане ICF существенно проигрывает другим персональным Firewall, которые информирут пользователя о попытках приложений обмениваться с сетью
Общая оценка:
Отличное средство для защиты ПК в Интернет начального уровня. Я бы назвал вещи своими именами, т.е. ICF по сути не Firewall, а NAT. Уровень защиты от сканирования и атаки извне при использовании настроек по умолчанию на очень высоком уровне - все мои сканеры показали отсутствие ответов от ПК и отсутствие открытых портов. Если дополнить это тем фактом, что ICF не нужно инсталлировать и он практически не потребляет ресурсов, то это выдвигает его в разряд лидеров
Internet Connection Firewall, ICF - встроенный брандмауэр Windows XP SP2
Инсталляция и деинсталляция: Установка не требуется, является штатным средством XP (входит в пакет обновлений SP2 для XP). Включение производится в настройках сетевого адаптера. Следует заметить, что при установке SP2 или при установке XP с интегрированным SP2 кроме Firewall в системе появляется центр обеспечения безопасности, который может показывать настройки ICF
Достоинства:
- Все достоинства, присущие его предыдущей версии;
- Появилась возможность индивидуальной настройки для приложений (приложению можно прописать, по каким портам и с какими ПК можно работать). Правила для приложений можно включать и выключать. Еще одним полезным моментом является запрет индивидуальных исключений-настроек одним чекбоксом в основном окне, что позволяет быстро перейти в режим максимальной безопасности;
- При нарушении правил выводится окно с предупреждением и возможностью запретить или разрешить активность приложения;
Недостатки и особенности:
- По моему мнению сырой драйвер, на котором основан Firewall. Во время тестов я не менее 5 раз наблюдал "синий экран смерти", после таких повисаний Firewall самопроизвольно отключался (после перезагрузки его приходилось включать вручную). Это опасно, т.к. после такой аварийной загрузки ПК не защищен. Кроме того, я наблюдал полное зависание из-за конфликта с драйвером TDI от утилиты TDIMon, в момент старта APS (т.е. Firewall не справился с попытком массового открытия множества портов). Замечу, что такие ошибки носят разовый характер, т.е. при моделировании ситуации, приведшей к повисанию мне не удавалось его повторить. Однако, тем не менее факт есть факт - виснет он часто;
- По умолчанию в исключениях разрешен доступ по портам 135,137,138,445 для подсети класса C компьютера (т.е. при выходе в Интернет можно заполучить вирус от соседей). Вывод - это исключение нужно запретить или настроить;
- Выводимое окно сообщения (см. рисунок) крайне неинформативно - нет информации о имени exe файла, его местоположении; нет данных о том, по какому порту и к какому хосту идет попытка обращения (или какие порты программа пытается прослушивать ... вместо этого потрясающее сообщение "... брандмауер заблокировал некоторые возможности программы". Узнать подробности невозможно (хотя кнопочка "Подробнее" прямо напрашивается);
- При разрешении активности программы в окне запроса (кнопка "Разблокировать") программе разрешается прослушивание любого порта и обмен с любым ПК в Интернет по любому порту ... Что, по моему мнению, избыточно и опасно.
Общая оценка:
Оценка аналогична оценке предыдущей версии - хорошая встроенная защита в Интернет начального уровня. В новой версии интерфейс стал немного лучше, появились новые возможности ... но по сравнению с другими Firewall он конечно никакой критики не выдерживает. По субъективной оценке стабильность у новой версии хуже.
Sygate Personal Firewall Pro 5.5 build 2525
Инсталляция и деинсталляция: Установка программы и ее деинсталляция происходит без проблем. После инсталляции требуется перезагрузка.
Достоинства и особенности:
- В окне информации о сетевом событии (в режиме обучения) выводится детальная информация о программе (версия, описание, полный путь, ID процесса, параметры подключения (адреса и порты), данные о пакете (MAC адреса, заголовок и фрагмент пакета). Это очень полезно в режиме обучении Firewall;
- Можно создавать правила фильтрации по MAC адресу;
- Правила могут действовать по расписанию;
- Встроенная IDS. Тесты показали, что уверенно опознаются атаки типа сканирования портов, "пинг смерти", разные виды флуда порта. IDS может блокировать атакующего (блокировка ведется на 10 минут);
- Имеется система оповещения по email;
- Достаточно удобный просмотрщик протоколов;
- Процесс имеет защиту от завершения (стандартными средствами остановить его невозможно);
- Есть режим полного блокирования трафика на время работы экранной заставки
- Есть режим полного захвата пакетов (по сути получается аналог сниффера, полезно для анализа пакетов)
Недостатки:
- Существенных недостатков не замечено
Общая оценка:
Хороший Firewall в плане функциональности, стоит обратить внимание на то, что он может использовать правила фильтрации трафика по MAC адресам, производить захват пакетов для их последующего анализа, содержит хорошо работающую IDS
ISS BlackIce 3.6.cci
Инсталляция и деинсталляция: Установка программы и ее деинсталляция происходит без проблем, но в ходе инсталляции возникает ошибка в библиотеке ikernel. Эта-же ошибка возникла и при деинсталляции. Возникнование данной ошибки не влияет на процесс установки и удаления программы. Инсталлятор не потребовал перезагрузку системы, что для Firewall необычно
Достоинства и особенности:
- После инсталляции не требуется перезагрузка
- Содержит систему "AP" - некий "Firewall для процессов" - позволяет отслеживать появления новых программ и блокировать их запуск в возможностью обучения. Это полезно для борьбы с червями и троянскими программами.
- Может проводить захват пакетов для их последующего анализа
- Опознает типовые атаки - сканирование портов, SYN флуд
- В информации по атакующему показывает его MAC и данные Netbios
Недостатки и особенности:
- Может быть удален как процесс, защита при этом пропадает
- Содержит достаточно строгий интерфейс, которому на мой взгляд не хватает информативности (это не недостаток, а констатация факта)
Общая оценка:
Достаточно функциональный Firewall, ничем существенным не выделяется
Visnetic Firewall 2.2
Инсталляция и деинсталляция: Установка программы и ее деинсталляция происходит без проблем. После инсталляции требуется перезагрузка.
Достоинства и особенности:
- Содержит функцию блокирования сетевого трафика при условии, что Firewall еще не запущен или его процесс принудительно завершен;
- Правила фильтрации трафика могут строиться на основе MAC адреса;
- Содержит детектор сканирования портов, в котором есть настройка, позволяющая автоматически блокировать атакующий хост;
- Имеется функция захвата пакетов;
- Содержит функцию оповещения по email;
- Содержит функцию экспорта правил в текстовом виде (для распечатки, анализа)
- Поддерживает удаленное администрирование - по умолчанию порт 8519
Недостатки:
- Не привязывает сетевую активность к процессам. Т.е. является Firewall в чистом виде. Однако подавляющее большинство персональных Firewall обладают такой функцией
- Процесс модет быть удален и на короткое время до его автоматического восстановления компьютер уязвим (опция блокирования трафика при отсутствии Firewall сводит этот недостаток к нулю)
- В меню, вызываемом по правой кнопке мыши над иконкой в SysTray есть переключение режима работы - пропускать все пакеты, фильтр, блокировать все пакеты. Опцию отключения фильтрации трафика лично я бы вообще не вводил
Общая оценка:
Хороший Firewall, достаточно функциональный. Но не хватает возможности привязки сетевой активности к породившим ее процессам - эта возможность очень полезна для персонального Firewall.
Look n stop personal firewall 2.05
Инсталляция и деинсталляция: Установка программы и ее деинсталляция происходит без проблем. После инсталляции требуется перезагрузка. Для работы устанавливает свой драйвер.
Достоинства и особенности:
- Правила могу строится с учетом MAC адреса, есть возможность привязки правила к процессу
- Виден как процесс, но удаление этого процесса не приводит к выключению защиты
Недостатки:
- В окне запроса (в режиме обучения) абсолютный минимум информации о программе и вообще нет информации собственно о факте сетевой активности. Это серьезный минус, т.к. по сообщению "Программа желает соединиться с Интернет" принимать решения о разрешении/блокировании действия сложно
- Очень большое потребление ресурсов во время отражения атаки - на слабом ПК во время атаки вполне возможна ситуация DoS. Процессор Pentium 4 c с тактовой частотой 3 ГГц загружался на время атаки на 60-75% (в тестах других Firewall нагрузка была несущественна - менее 5%)
- Протокол непрерывно обновляется на каждое событие - во время флуда портов или сканирования портов работать с ним невозможно
- Работа бортовой IDS никак положительно себя не проявила, явные атаки она не детектировала
Общая оценка:
Простой Firewall, на уровне других проигрывает по интерфейсу и функциональности, сильно нагружает процессор в моменты атаки.
Kaspersky AntiHacker 1.5
Инсталляция и деинсталляция: Установка программы и ее деинсталляция происходит без проблем. После инсталляции требуется перезагрузка.
Достоинства и особенности:
- Хорошо действующая бортовая IDS. Уверенно распознаются типовые атаки, атакующий хост блокируется на заданное время. Особенностью IDS является возможность просмотра обнаруживаемых типов атак (с кратким пояснением, в чем состоит тот или иной тип атаки) и настройки параметров (что очень полезно и важно, причем для каждой разновидности атаки есть специфичные для нее параметры);
- Информативное окно системы обучения. В режиме обучения есть возможность однократной блокировки запрошенного действия;
- Есть режим невидимости (который включается независимо от других настроек) и регулировка уровня безопасности
- Есть возможность просмотра прослушиваемых портов и установленных соединений с привязкой к процессу;
- Содержит встроенный набор типовых правил (которые могут быть удалены или отредактированы)
- Процесс AntiHacker-а виден в списке процессов, но имеет защиту от удаления
- Малое потребление ресурсов во время работы и в моменты отражения атаки
Недостатки:
- Нет возможности построения правил фильтрации трафика по MAC адресу
- Во время настроки один раз имело место полное повисание системы ("экран смерти")
- Во время обучения удалось пробить защиту по нескольким портам (это, как показали тесты, типовая проблема многих Firewall) - это произошло в момент создания правила. После настройки правил пробить Firewall не удалось
- Блокировка и разблокировка атакующих проходит автоматически с занесением отметки в протокол, но я не нашел возможности просмотра списка заблокированных хостов с возможностью ручной разблокировки и настройки исключений
Общая оценка:
Хороший Firewall, содержит отличную IDS. Предоставляет типовые для современного Firewall функции.
Получить подробное описание Kaspersky AntiHacker 1.5 и приобрести его можно в магазине OZON Kaspersky Anti-Hacker
Tiny Personal Firewall Pro 6.0
Инсталляция и деинсталляция:
Установка программы и ее деинсталляция происходит без проблем. После инсталляции требуется перезагрузка.
Достоинства:
- Хороший инсталлятор - позволяет выбрать компоненты (можно отказаться от установки ненужного компонента);
- Информативное окно системы обучения. В режиме обучения есть возможность однократной блокировки запрошенного действия, создания правил;
- Есть достаточно мощный "Firewall системных операций" - т.е. кроме функций Firewall еще есть возможность отслеживать и блокировать нежелательную активность приложений (по отношению к реестру, файлам, запуску приложений, установке сервисов) ... - все это настраивается. Для приложений ведется контроль цифровой подписи в формате MD5 (т.е. привязка идет не к имени программы, а еще и к ее MD5 хешу - это позволит поймать заражение программы вирусом или подмену программы). В режиме обучения, таким образом, программа информирует о системной и сетевой активности приложений. Есть возможность аудита системных операций (аудит настраивается).
- Очень неплохая IDS - все ее правила можно просматривать и редактировать. В базе IDS уже имеется большое количество правил для разных троянов/backdoor, разнообразных видов атак ... Все правила сгруппированы по категориям и могут активироваться индивидуально (или активируются/выключаются все правила группы). В правиле могут фигурировать не только порты и адреса, но содержимое пакета (включая поля заголовка пакета);
- Содержит встроенный набор типовых правил (которые могут быть удалены или отредактированы). По умолчанию привила позволяют довольно много - стоит начать работу их анализа и ужесточения;
- Правила можно создавать на уровне конкретных пользователей - это позволяет индивидуально настроить Firewall многопользовательской среде
- Управление и мониторинг событий выполнены в виде двух отдельных приложений - это экономит память, т.к. их можно выгрузить и загружать по необходимости. Центр управления можно защитить паролем;
- Firewall имеет встроенный NAT и ICS, есть поддержка VPN (правда я ее не тестировал)
Недостатки и особенности:
- Много настроек (очень много). Это естественно не недостаток (скорее плюс), но рекомендовать такой Firewall начинающему пользователю я бы не стал;
- В настройке по умолчанию IDS вяло реагирует на явные атаки, секция WEB атак и Backdoor у нее вообще отключена.
- При включении большинства встроенных правил имели место ложные срабатывания IDS - например, при посещении www.ozon.ru IDS был замечен "вредоносный java script" - ничего подобного на самом деле там конечно не было
- Процессы Firewall видны в памяти и могут быть удалены;
- Я не нашел возможности создания правил по MAC адресам;
- За время тестирования центр управления несколько раз "падал" с ошибкой защиты памяти, но на работу Firewall это не оказывало влияния;
Общая оценка:
Хороший Firewall, содержит хорошую настраиваемую IDS и отличные средства мониторинга операционной системы (т.е. по сути Tiny не Firewall, а антихакерский комплекс, что мне в нем и понравилось). Собственно Firewall-ная часть предоставляет типовые для современного Firewall функции. Перед эксплуатацией рекомендуется провести тщательную настройку правил Firewall и его IDS.
McAfee Personal Firewall Plus 6.0 Build 6014
Инсталляция и деинсталляция:
Установка программы и ее деинсталляция происходит без проблем. После инсталляции требуется перезагрузка.
Достоинства:
- Небольшой размер, наличие мастера, позволяющего начинающему пользователю настроить Firewall;
- Есть визуальный индикатор трафика и карта, на которой отображается продполагаемое местоположение атакующего;
- Удаление процессов Firewall не привело к пропаданию защиты
Недостатки и особенности:
- В настройке по умолчанию оказались открыты многие опасные порты (я пробовал выбирать разные профили, но результат примерно одинавок);
- Окно сообщения о попытке доступа приложения в сеть неиформативно (нет данных о том, c каким IP идет попытка соединения, по каким портам, нет полного пути к программе и дополнительных данных по нему ...);
- Не прослеживается возможность ручного создания правил фильтрации пакетов. Я не нашел такой возможности - может быть, она и есть - но закопана далеко .... Правила для приложений есть, но крайне примитивны (разрешить приложению все, запретить все);
- Блокирование прослушивая порта, по моему мнению, сделано очень некорректно - все исследованные мной Firewall позволяли программе открыть порт на прослушивание (и при запрете в правилах Firewall обмена с сетью программа просто не получала по этому порту пакеты). В данном случае блокируется открытие порта - это приводит к ошибкам в некоторых программах;
- IDS отсутствует - я проводил лобовые атаки (сканирование портов в 200 потоков, флуд порта со скоростью 2000 соединений/сек ...) - Firewall не выдал никаких сообщений или предупреждений. Зато он обнаружил прихождение на мой ПК единичного пакета по порту 514 (Syslog) и записал это в протокол.
- В ходе тестов отмечался некий интересный глюк в системе - перестали отображаться иконки на рабочем столе
Общая оценка:
Весьма примитивный Firewall, ориентированный на уровень начинающего пользователя. Очень бедные возможности, IDS не определяет явные атаки
R-Firewall 1.0 Build 43
Инсталляция и деинсталляция:
Установка программы и ее деинсталляция происходит без проблем. Размер дистрибутива небольшой (3.8 МБ), можно настроить состав продукта. Работа достаточно стабильная, на эталонном ПК явных сбоев и зависаний не замечено
Достоинства:
- Небольшой размер;
- Два уровня настройки - упрощенный для начинающего и расширенный для опытного пользователя;
- Содержит детектор атак, фильтр контента для блокирования баннеров, скриптов и т.п. Детектор атак реагирует на сканирование портов, флуд (правда флуд считается как Single port scan)
- Детектирует внедрение посторонних DLL в критические процессы типа iexplorer.exe, предупреждая с указанием библиотеки и процесса. Правда не содержит системы проверки цифровых подписей или базы чистых файлов, поэтому ругается на все, включая системные DLL
- Блокиратор контента реально опробирован на сайтах типа cracks.am, что показало его работоспособность (конечно, блокирование не стопроцентное, но файктс срабатывания имеет место)
- Есть профили настроек с правилами для распространенных программ, что может быть полезно для начинающего пользователя
Недостатки и особенности:
- Окно системы обучение не информативно (не выводится полный путь к программе-нарушителю и подробной информации о ней). В случае работы троянской DLL в сообщение фигурирует не DLL, а применяющая ее программа. Например, на тестах Backdoor.Win32.Thunk.i (библиотека c:windowscpu.dll) был запущен через rundll32.exe - в сообщениях firewall ругался именно на эту DLL
- Процессы не защищены от убиения, нет контроля установки посторонних драйверов и записи в чужие процессы, из-за чего защита не может быть всесторонней. После убиения управляющих процессов защита судя по всему частично сохраняется, обмен с сетью по крайней не блокируется и ряд тестовых TrojanDownloader смогли успешно работать и обмениваться с Интернет. Убиение процессов провело к отказу контроля за внедрением посторонних DLL
- Я не обнаружил (по крайней мере на поверхности) возможностей фильтрации по MAC адресам
- Интерфейс и система построения правил лично мне показалась немного запутанной
Общая оценка:
Еще один Firewall, ничем радикально новым или особенным не обличается. Главный его плюс (и несомненный на мой взгляд) состоит в том, это этот продукт бесплатный - один только этот момент может перечеркнуть все его минусы и недостатки.
Общие выводы и заключение
Итак, подведем итоги тестов. По сути, тесты подтвердили мои теоретические представления о состоянии проблемы:
- Firewall нужно настраивать. Все тестируемые Firewall неплохо работали, но только после настройки (обучения, создания настроек вручную - не важно). Эксплуатация ненастроенного Firewall может нанести больше вреда, чем пользы (он пропустит опасные пакеты и наоборот, будет мешать полезным программам);
- После настройки Firewall и IDS нужно тестировать - это тоже достаточно очевидный вывод, но тем не менее он важен. Первый шаг к созданию тестера я сделал - это утилита APS. Осталось еще два - имитатор троянской програмы (т.е. утилита, которая будет выполнять безопасные для пользователя попытки "сломать" Firewall изнутри (естественно, атаки будут описаны базой данных и будут проводиться по команде пользователя под его управлением), что позволит наблюдать за реакцией Firewall и IDS) и утилита для экспресс-сканирования портов и проведения базовых атак (по сути APS с точностью до наоборот - база портов у них может быть общая). Разработкой этих утилит я уже занимаюсь - их наличие в арсенале пользователя позволит произвести некий "инструментальный контроль".
- Персональный Firewall уязвим перед вредоносными программами, работающими из контекста полезных. Вывод - как минимум долой разные "левые" панели и прочие BHO из браузера и электронной почты !! Перед установкой любого плагина, панели, утилиты расширения и т.п. нужно десять раз подумать о их необходимости, т.к. они не являются отдельными процессами операционной системы и работают из контекста родительской программы. Троянская программа легко детектируется персональным Firewall - он "видит", что некоторый процесс (скажем, bo2k.exe) пытается начать прослушивание порта xxxxx или обмен с неким хостом - выдается запрос о допусимости, пользователь начинает разбираться, что же это за "bo2k.exe" и Backdoor оказывается пойман. А вот если бы троянская программа работала из контекста браузера, то на обращение браузера в Интернет почти наверняка никто не обратит внимание. Такие троянские программы существуют, ближайший пример - TrojanDownloader.IstBar - он устанавливается именно как панель IE (в процессах его естественно нет, в списке автозапуска - тоже);
- Многие персональные Firewall видны как процессы операционной системы и могут быть остановлены вирусом. Вывод - за работой Firewall нужно следить и его внезапное завершение может служить сигналом о проникновении на ПК вируса;
- Некоторые Firewall (например Kerio) допускают дистанционное управление - функцию дистанционного управления необходимо или отключить, или запаролить.
Источник здесь.
Безопасный аноним squid
Обновлено: 15.01.2025Думаю, многие люди, посетив страничку http://checker.samair.ru/, увидят, что они передают в сеть такую информацию, как свой внутренний ip-адрес и другие заголовки, что несет с собой потенциальные уязвимости. Если вы используете прокси-сервер squid для доступа локальной сети в интернет, то исправить ситуацию вам поможет применение двух простых правил в squid.conf, а именно:
- forwarded_for off
- header_access Via deny all
Добавьте их в файл /usr/local/squid/etc/squid.conf, после чего введите команду:
После этого на вышеуказанном сайте проверьте результат. Ваш статус должен стать: hight anonymous (elite) proxy
Параметр "header_access Via deny all" запретит передавать ваш внутренний ip-адрес.
А вот что написано о параметре "forwarded_for off":
если включено - по умолчанию - то squid будет вставлять IP-адрес или имя в заголовок перенаправляемых HTTP-запросов: "X-Forwarded-For: 192.1.2.3"; если выключено, то "X-Forwarded-For: unknown"
Так что спите спокойно. Главное - чтобы ваш сон был безопасным.
Безопасность Windows XP. Часть 2
Обновлено: 15.01.2025Пришло время познакомиться со второй частью материала, рассказывающего о том, как повысить безопасность персонального компьютера, работающего под управлением операционной системы Windows XP.
Перед тем, как приступить к чтению, мы рекомендуем ознакомиться с первой частью материала, расположенной по следующему адресу.
Shared-ресурсы
Shared-ресурсы, в народе называемые просто "шары", всегда были и будут одной из главных головных болей пользователей Windows XP. Изначально задуманный как неоценимая помощь для пользователей, находящихся в локальных сетях, проект содержал множество багов, которыми непременно и пользовались злоумышленники при захвате удаленной машины.
Но, не удержавшись, дам совет пользователям локальных сетей. Если при работе вам столь необходимо часто обмениваться файлами, для этого есть более безопасные методы.
Как пример - создание ftp-сервера. Скажу по секрету, что такого рода материал планируется для написания, так что ждите анонсов и чаще заходите на www.3dnews.ru! Но вернемся к делу. Наша задача - отключить расшаренные ресурсы, к чему и приступим. Заглянем в свойства диска C, затем на вкладку "Sharing".
Взглянув на скриншот, мы видим, что у нас имеется расшаренный диск. И его немедленно нужно отключить. Это нужно сделать, отметив опцию "Do not share This Folder". Так нужно сделать со всеми логическими дисками, имеющими место у вас в системе.
Еще одна особенность Windows XP - появление папки Shared Documents (Общие документы). Перемещаем в папку любой файл, и вуаля - он доступен по сети. Чтобы прекратить данное безобразие, в который раз воспользуемся услугами редактора системного реестра. Пройдем сюда - HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion Explorer MyComputer NameSpace DelegateFolders {59031a47-3f72-44a7-89c5-5595fe6b30ee}, удалим в пух и прах этот раздел реестра, после чего папка станет недоступна.
Все бы хорошо, но расслабляться еще рано. В системе присутствует протокол под названием NetBIOS, который также следует удалить от греха подальше. Суть протокола заключается в том, что он предоставляет удаленный доступ к файлам и папкам и может раскрыть нежелательную информацию о компьютере. Сомнений не осталось? Тогда в свойствах используемого соединения, во вкладке "свойства протокола TCP/IP" -> "дополнительно" выбираем пункт "отключить NetBIOS через TCP/IP". Там же убираем галочку напротив сервиса "Доступ к файлам и принтерам сети Microsoft".
Автозагрузка
Часто пользователи персональных компьютеров не интересуются тем, какие программные продукты стартуют при загрузке системы. Этим фактом и пользуются злоумышленники, подсаживая трояны и прочую нечисть в автозагрузку.
Поэтому хотя бы раз в неделю запускайте программу msconfig (Пуск-Выполнить), чтобы проверить, какие утилиты загружаются при старте. Помимо автозагрузки, вирусописатели любят засовывать старт своих детищ в следующие ветки реестра:
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersion WindowsRun.
Выходов, как обычно, имеется множество. К примеру, можно проводить аудит данных ветвей на предмет новых записей самостоятельно. А можно для этого использовать программный продукт, такой как RegMon.
Удаление неиспользуемых аккаунтов
А зачем вам нужны пользователи, учетными записями которых вы никогда и не воспользуетесь? Компания Microsoft, помимо стандартных записей, успела запихать "секретные" учетные записи по типу SUPPORT_586975a0, которая, кстати, предназначена для получения удаленной помощи от службы технической поддержки. Вы себе это представляете? Я - нет. И именно по этому берите в руки пилу, двигайтесь по направлению к Панель Управления - Администрирование - Управление компьютером - Локальные пользователи и группы - Пользователи и начинайте пилить всех, кто попадется под горячую руку.
Популярная брешь в IE
Вообще, следуя советам различных IT-экспертов, использовать Internet Explorer в качестве основного браузера для путешествий по сети нецелесообразно. Виной тому огромное количество уязвимостей, каждодневно находимых в коде. К примеру, разберем одну достаточно серьезную уязвимость, позволяющую запускать любые приложения, имеющиеся на жестком диске. Для этого наберем в блокноте следующий html-код:
Сохранив код как exploit.html, запустите его в браузере.
Если у вас произошло такое же событие, как и показано на скриншоте, то используемый IE уязвим. Проявив чуточку фантазии, вы, несомненно, сможете придумать, как злоумышленник может использовать данную дырку в системе безопасности. И поверьте мне, таких дыр будет еще много. Но, а пока пройдите по данному пути - HKEY_CURRENT_USER SOFTWARE Microsoft Windows CurrentVersion Internet Settings Zones и присвойте значение dword:00000001 параметру "104".
Автор: Ярослав Дмитриев
Источник: http://www.3dnews.ru/
Безопасность Windows XP. Часть 1
Обновлено: 15.01.2025Операционная система Microsoft Windows XP вышла на рынок 25-го ноября 2001-го года. Сотрудники компании возлагали на неё большие надежды и, как оказалось, не прогадали. По заявлению самих разработчиков, новоиспеченная на тот момент XP включала в себе опыт, накопленный за многие годы построения операционных систем.
Как и ожидалось, перед выходом, пользователям было дано множество обещаний (к примеру, непробиваемую защиту от несанкционированного доступа, невиданную ранее стабильность и "багоустойчивость"), но не все оказалось настолько уж гладко.
Но довольно лирических отступлений, сегодня на повестке дня - повышение безопасности операционной системы. Пошаговый формат выбран не с проста - так наиболее просто выполнять инструкции, описанные в статье.
Шаг 1. Отключение автоматического запуска CD
Купили вы диск, доверху набитый полезным программным обеспечением. Принесли домой, вставили в дисковод, автоматически запустился диск, а там - вирус. Чтобы этого не произошло, вам нужно пройти по следующему адресу в реестре - HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesCdrom, и параметру AutoRun присвоить значение 0. Для редактирования реестра вам нужно запустить программу RegEdit, которая запускается так: Пуск - Выполнить - regedit.
Шаг 2. Автоматическое обновление системы
Как каждому из нас известно, достаточно часто в операционных системах Windows находятся ошибки и критические огрехи в безопасности, исправить которые следует сразу же после выхода патча. Ушедший 2004-ый год лишний раз это доказал, явив миру несколько глобальных вирусных эпидемий.
Поэтому кликаем правой кнопкой мыши по иконке Мой Компьютер, а затем направляемся по пути Свойства - Автоматическое Обновление. Перед нами возникает дилемма - либо остановить свой выбор на опции "Автоматически", либо сделать активной опцию "Уведомлять, но не загружать и не устанавливать их автоматически".
Дам несколько рекомендаций. Если вы владелец выделенного интернет-канала, и закачивать каждый день в фоновом режиме (а именно так происходит обновление системы через Windows Update) файла приличного размера не составляет большой проблемы, то однозначно ваш выбор - Автоматически.
Другим же пользователям, а в особенности модемным, советую выбрать "Уведомлять, но не загружать и не устанавливать их автоматически", где качать и устанавливать файлы вы будете, предварительно оценив их важность, дабы не захламлять итак слабый интернет-канал.
Шаг 3. Отключение ненужных сервисов
Не знаю зачем, но Билл Гейтс и сотоварищи нагородили в Windows XP такое огромное количество ненужных служб, запускающихся автоматически, что не отключить их - грех. Но так как разговор мы ведем о безопасности операционной системы, обратим наше внимание на системные сервисы, подрывающие наши старания. Для этого пройдем по пути Панель управления - Администрирование - Службы и займемся работой.
Напомню, как работать со службами. Кликнув на одну из них, перед собой вы увидите окно с четырьмя закладками: Общие, Вход в систему, Восстановление, Зависимости. По сути дела, наиболее важными являются две: первая и последняя. На первой вкладке, "Общие", вы можете прочитать название службы, ее функции, исполняемый файл, а также выставить тип запуска: авто, вручную, отключено. Так как нам предстоит деактивировать ненужные системные сервисы, мы будет выставлять тип "отключено". На последней вкладке, "Зависимости", вы можете увидеть, с какими из служб выбранный вами сервис находится в зависимости, то есть если служба отключена или неправильно работает, это может отразиться на зависимых от нее сервисах.
Внимание: прежде чем начать резкое удаление ненужных служб, я советую сохранить первоначальные настройки, чтобы избежать возможных конфликтов. Для этого нужно пройти по HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiсes и кликнув правой кнопкой, выбрать пункт "Экспортировать". Далее сохраняем данные в *.reg-файл.
Служба удаленного управления реестром (Remote Registry Service) - позволяет удаленно управлять системным реестром. Если служба остановлена, то редактировать реестр может только локальный пользователь. Надеюсь, лишних вопросов не возникает. Режем.
Служба сообщений (Messenger) - данная служба позволяет получать и отправлять сообщения. Часто используется для розыгрышей и спама. Оно вам нужно? Режем.
Служба терминалов (Terminal Service) - одной из функций службы является предоставление услуг Remote Desktop. Несомненно, данный сервис не является безопасным, поэтому нуждается в отключении, что и делаем.
NetMeeting Remote Desktop Sharing - служба позволяет определенным пользователям получать доступ к рабочему столу Windows. Давно вы пользовались Windows NetMeeting? И пользовались ли вообще? Режем.
Telnet - позволяет удаленным пользователям работать с машиной по протоколу Telnet. Если вы не пользуетесь данными услугами, отключение произойдет незаметно. Режем.
Шаг 4. Установка фаервола
Согласно статистике, большинство злоумышленников, существующих в сети, ломают не определенные системы, а путем сканирования выявляют слабые точки и делают свои "грязные" дела. Чтобы не стать их жертвой, вам обязательно нужно установить брандмауэр. В комплекте с XP идет встроенный фаервол, но он не отвечает тем требованиям, которые предъявляются хорошим программным продуктам.
К сожалению, тема и формат статьи не позволяет нам провести сравнительное тестирование n-го количества программ (что мы обязательно сделаем в будущем), но, основываясь на своем опыте, я могу посоветовать вам остановить свой выбор либо на Outpost Firewall Free от Agnitum Limited, либо на Zone Labs' ZoneAlarm. По своей функциональности - это схожие продукты, поэтому выбор за вами.
Шаг 5. Пароли и все о них
По мнению большинства IT-экспертов, именно халатность пользователей при составлении паролей во многом предопределяет ход событий при взломе. Пароли на пользовательские аккаунты хранятся в файле .sam в директории systemrootsystem32config. Но доступ к файлу во время работы компьютера не имеет даже пользователь с правами администратора.
Локально получить доступ не составляет никакого труда. Мне видится два варианта. Первый - загрузить на дискету альтернативную ось (Trinux, PicoBSD), способную читать из раздела NTFS, и прочитать файл. Второй - достаточно распространенная связка Win9x + WinXP, где первая система ставится для игр, а вторая для работы. И, естественно, чтобы избежать лишних манипуляций, пользователи охотно ставит WinXP на файловую систему FAT32 для получения доступа к рабочим файлам. Что из этого выйдет - огромная дыра в безопасности.
Пароли в Windows XP шифруется сразу по двум алгоритмам. Первый - LM-Hash, существующий для аутентификации в сетях LanMan, второй - NT-Hash. Алгоритм LM-Hash работает довольно глупо, чем и пользуются программы расшифровки паролей, хранящихся в файле .sam. LM-Hash разделяет полученный пароль на части по 7 символов (например, если пароль из 10 символов, то пароль будет разделен на две части - 7 символов и 3), переводит все символы в верхний регистр, шифрует каждую часть отдельно, и два полученных хэша объединяет в LM-Hash.
Стоит ли говорить о том, что пароль из десяти символом расшифровать сложнее, чем два, состоящих из 7 и 3 символов? Этой огрехой и пользуются программы для взлома. Быстро расшифровав вторую часть, можно составить общее впечатление о пароле, что, согласитесь, плохо. Учитывая вышесказанное, пароль из 7 символом будет надежнее 8,9 или 10. Но бороться с этой проблемой можно. Для этого пройдем по пути Панель Управления - Администрирование - Локальные параметры Безопасности, далее Локальные политики - Параметры безопасности, и ищем в появившемся списке опцию "Сетевая безопасность: уровень проверки подлинности LAN Manager".
В выпадающем списке выбираем "Отправлять только NTLM ответ" и нажимаем на ok. Одной проблемой стало меньше.
Шаг 6. Теория составления паролей
Для начала ответьте на вопрос: вы когда-нибудь задумывались о том, насколько легко можно угадать ваш пароль? Если да, то хорошо. А если нет, то плохо. Своей халатностью вы только упростите работу взломщика, поставивший цель уложить на лопатки вашу систему. В сети Интернет существует огромное количество программ, подбирающих пароль методом bruteforce (или же "в лоб"). Подбор может вестись как по словарю, так и по определенным правилам, установленным взломщиком. Во-первых, никогда не используйте в качестве паролей ФИО, дату рождения, кличку любимой собаки и т.д.
Этой информацией очень легко завладеть, следуя обычной логике. Если человек без ума от собак, то почему бы ему не назначить паролем для доступа к e-mail имя своего любимого пса? Злоумышленник же, узнав это, легко представится в ICQ таким же собаководом, и начнет тщательный опрос. А вы, того не подозревая, в чистую выложите всю информацию о себе и своем питомце.
Пароль нужно придумать. И для этого есть свой алгоритм, которым я спешу поделиться с вами. Возьмите бумажку и напишите любое слово. Затем добавьте две цифры между букв. Приобщите к делу знак пунктуации, вставив его в самое неожиданное место. Из легко угадываемого пароля password мы получили pass2w!ord. Крепкий орешек, согласны? То-то.
Шаг 7. Аккаунт "Администратор"
По настоянию компании Microsoft, сменим логин администратора на что-нибудь более звучное и одновременно менее бросающее в глаза. Поэтому пройдем по Панель Управления - Администрирование - Локальная политика безопасности. В выпавшем списке выберем опцию "Локальная политика", далее Параметры безопасности, и после ищем в открывшемся списке "Учетные записи: Переименование учетной записи администратора". Придумываем логин, и соответственно, вписываем в открывшемся окне. И еще - никогда не используйте аккаунт Администратора при каждодневных делах. Для этого создайте другой пользовательский аккаунт, и именно с него путешествуйте в сети, работайте и развлекайтесь.
Шаг 8. Опасная заставка
Безобидный на первый взгляд файл заставки несет в себе большую опасность, так как внутри файла может быть все что угодно. Для исправления бага нужно пройти по следующему ключу в реестре - HKEY_USERS.DEFAULTControl PanelDesktop и найдя параметр ScreenSaveActive, присвоить значение 0.
Шаг 9. Реестр, друг наш!
Реестр очень полезная вещь. Полазив, можно настроить систему так, что работа будет только в удовольствие. Чтобы не занимать много места, разбивая по шагам, я решил представить вашему вниманию подборку ключей в системном реестре, пройти мимо которых невозможно.
Очистка файла PageFile - HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control Session Manager Memory Management - присвоив значение 1 параметру ClearPageFileAtShutdown, тем самым вы активируете возможность удалять при завершении работы все данные, которые могли сохраниться в системном файле. Автоматические удаление трэшевых файлов после работы в сети Интернет - HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion Internet Settings Cache - присвоив 0 значению Persistent, вы больше не будете вынуждены собственноручно стирать остатки путешествий по сети Интернет. Internet Explorer будет делать это за вас. Удобно.
Установка минимального количества символов в паролях - HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion Policies Network - чтобы отбить у вас охоту каждый раз вписывать пароль меньше 6-ти символов, присвойте значение hex:6 параметру MinPwdLen. Отныне все пароли в вашей системе будут больше 6 символов.
Требовать пароли только из букв и цифр - HKEY_LOCAL_MACHINE Software Microsoft Windows CurrentVersion Policies Network - предыдущий ключ отбил охоту придумывать пароль меньше 6-ти символов. Данная опция заставит вас комбинировать при составлении пароля как буквы, так и цифры. Активировать опцию можно присвоив значение 1 параметру AlphanumPwds.
Шаг 10. Проводник
И последнее, что мы сегодня исправим, будет касаться программы Проводник. Мало кто знает, что в реестре можно указать путь, где физически располагается Проводник, чтобы избежать несанкционированной замены. Для этого пройдем по _LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon и укажем полный путь до Проводника.
На этом наш сегодняшний экскурс в мир безопасности закончен. Но мы не остановимся на достигнутом, а постоянно будет подпитывать вас новой информацией. Оставайтесь на нашей волне!
Источник: http://www.3dnews.ru/
Настройка 3proxy для чайников
Обновлено: 18.03.2020Пара ремарок перед началом чтения:
- Несмотря на то, что на сайте 3proxy.ru гордо отображается сообщение о том, что антивирусы могут воспринимать 3proxy как вирус, я с таким не сталкивался. Возможно, это относится к исходникам и компиляции, а не к бинарникам. Все же современные антивирусы могут собрать статистику, что файл с такой-то контрольной суммой скачан 100500 раз и не начинают голосить почем зря. Кто знает...
- Несмотря на то, что оригинал статьи не новый (в оригинале речь идет про версию 0.5.2, а на текущий момент стабильная версия 0.8.13), все подойдет и будет работать. Начинайте читать и совсем скоро вы увидите, что этот proxy действительно может быть простым.
Что это вообще такое?
3proxy - это прокси сервер (proxy, socks, pop3proxy) для Windows, Linux, Unix. Исходники открыты, бинарники скомпилировны, инструкции по компиляции указаны. Много лет развития. Что еще надо? Вперед!
Проще некуда
Для затравки, если уж "для чайников", да простят меня читатели, то вот простой конфиг 3proxy.cfg:
auth none
log
proxy
Куда уж проще... Вообще, 3proxy хорош тем, что он может быть и очень простым и лаконичным. Да и запуск его не сложен вовсе.
Скачали с сайта архив, распаковали в c:\3proxy, создали тектовый файл 3proxy.cfg и положили его в папку с exe-файлом, запустили cmd:
C:\Users\>cd "C:\3proxy\bin"
C:\3proxy\bin>3proxy.exe 3proxy.cfg
200318221136.662 3128 00000 - 0.0.0.0:0 0.0.0.0:0 0 0 0 Accepting connections [8996/8360]
Все, ничего не устанавливая, мы запустили proxy сервер, который принимает соединения на порт 3128. Можно прописать даже у себя в браузере, 127.0.0.1 3128 и все уже начинает работать, вы сразу увидите, как в консоли побегут строчки лога.
В этом конфиге:
log
без параметров означает выводить лог на stdout (на экран, в общем)proxy
- запускаем именно прокси, а не socks, на стандартном порту 3128auth none
- не запрашивать авторизацию, открытый прокси.
Оригинал с правками
Автор статьи: Kurmaeff Halit
halit_at_mail_dot_ru
Хочу поделиться своим опытом по настройке замечательного прокси-сервера от Заразы - 3proxy. Долгое время пользовался другим интересным прокси-сервером ES Proxy http://esproxy.org.ua от Георгия Павленко - маленького (всего один exe-шник на 300 кБ), довольно простого в настройке и очень нетребовательного к ресурсам - по крайней мере, при почти сотне пользователей он умудрялся работать на старинном P133, почти не затыкаясь. И только вот это <почти> - иногда все же проксик самопроизвольно пожирал 100% процессора, хотя и продолжал частично или полностью справляться со своими обязанностями - а также то, что автор уже почти 2 года как не подает никаких признаков жизни, то есть продукт замер в развитии - привели к поискам другого подходящего сервера. Скажу сразу - прокси-сервера с красивыми GUI меня привлекали мало, я сторонник принципа <Мне чтобы ехать>, а красивый интерфейс - это, конечно, хорошо, но не в ущерб производительности. Перепробовав не от хорошей жизни 5-6 разных продуктов (среди них Usergate, Proxy+, Lan4net....) и не оставшись довольным получаемыми результатами (должен заметить, что известный продукт от Майкрософт я решительно отмел ввиду его высокой стоимости), решил попробовать таки 3proxy, тем паче слышал в основном хорошие отклики. Если кто и жаловался на него, то только на сложность настройки, в чем, должен скачать, немного забегая вперед, я и имел возможность убедиться.
Безопасность сервера FreeBSD
Обновлено: 15.01.2025Каждый компьютер, подключенный к Интернет, является потенциальным объектом хакерских атак. Если компьютер подключается к сети через модем, да и то на 10 минут в день, то единственным достоянием хакера может стать только Ваш пароль на вход в Интернет (и, естественно, деньги, лежащие на счету у провайдера). Так как Ваш сервер, очевидно, имеет постоянное высокоскоростное соединение с Интернет, он является очень лакомым куском для хакера, и в том, что рано или поздно (скорее - рано) он подвергнется атаке - можно не сомневаться. Поэтому, прежде чем описвать дальнейшую настройку таких служб, как DHCP, DNS, VPN и др., необходимо защитить сервер от возможных непрятностей. В этой главе будут даны только начальные сведения по защите, и предложена настройка, способная отбить большинство непрофессиональных атак, и некоторые общие правила работы. Данная глава не предендует на статус полного руководства по защите, но на первое время хватит и этих данных. В дальнейшем Вам будет необходимо изучить вопросы безопасности более плотно, причем не откладывая этого дела в долгий ящик (практически на каждой из доступных мне машин, имеющих постоянное подключение к Интернет периодически (не реже раза в месяц) обнаруживаются следы попыток незконного проникновения...)
Чтобы защитить свою систему от хакеров, нужно изучить своего врага - его возможности, его оружие, его стандартные приемы. Для этого нужно рассмотреть типовые атаки (и методы защиты или уменьшения ущерба от каждой из них).
Вот тут то и самая большая сложность, которая возникла у меня при написании этой главы: каждый, кто пишет книги, статьи и руководства по защите, придумывает свою классификацию, основываясь на разных признаках атак. Поэтому я пойду другим путем, и не буду говорить что все атаки разделяются на 3 (5,7,19 или 244) класса, а опишу, по каким характеристикам их можно классифицировать.
Итак, у каждой хакерской атаки есть:
- Цель. Целью хакера может быть получение какой-то секретной информации, изменение информации (например, 10 баксов к себе на счет) или ее уничтожение, использование мощностей атакуемого объекта в личных целях (рассылка спама, экономия на "российском" и "зарубежном" трафике, использование "захваченной" машины в качестве плацдарма для атаки на другие машины), вывод объекта из строя (например, "подвесить" веб-сервер конкурента), для тренировки, самоудовлетворения и т.д.
- Используемые "дыры". Для атаки на компьютер хакер может использовать ошибки в программном обеспечении, ошибки администрирования (например, случайно доступная простому пользователю возможность изменения конфигурационных файлов операционной системы), незащищенность среды и протоколов передачи данных (например, "подслушивание" паролей пользователей, находящихся в одной сети с хакером), социальный инжениринг (например, подбор пароля администратора последовательным перебором имен всех его бывших любовниц и их номеров телефонов), метод "грубой силы" (подбор пароля простым перебором всех возможных комбинаций или по словарю), человеческие ошибки. Хакер, так-же, может использовать несколько "дыр" для одной атаки (например, используя сетевой снифер получить зашифрованный пароль администратора, и расшифровать его методом грубой силы).
- Направаление. Атака может быть как активно инициирована хакером (например, прямой перебор паролей или прослушивание сети), так и произведена с помощью какой-либо ловушки (например, "хитрый" JavaScript на веб-странице, зайдя на которую пользователь "поделится" с хакером какой-нибудь нужной информацией).
- Характер воздействия. Атака может быть активной (хакер непосредственно обращается к атакуемому компьютеру или тесно связвнным с ним системами) или пассивной (например, прослушивание сетевого трафика атакуемой системы). Пассивные атаки почти невозможно обнаружить.
- Количество атакующих. Атаковать систему может один хакер, группа хакеров, или один хакер с использованием нескольких компьютеров в сети. Групповые атаки обычно направлены на выведение системы из строя (DDoS).
- Местонахождение атакующего. Хакер может атаковать систему, находясь к по отношению к ней в разных зонах доверия. В нашем случае (сервер доступа для домашней сети) это следующие зоны: интернет, обслуживаемая домашняя сеть, доверенная зона (компьютер администратора, дополнительные сервера (файловый, баз данных), при общении с которыми защизаемый сервер использует более "мягкие" правила безопасности), внутри самой системы (например, хакер имеет права доступа обычного пользователя, и атакует учетную записть сисадмина).
Естественно, атаки можно классифициорвать и по другим признакам - данный список не претендует на полноту.
Для защиты от хакерских атак необходимо знать и понимать методы, используемые хакерами. Далее предлагаю рассмотреть несколько наиболее распоcтраненных (впрочем, я могу и ошибаться) типов атак и методов защиты от них.
Атака "переполнение буфера"
Атаки данного типа эксплуатируют "неявные" ошибки в прграммном обеспечении, обычно не влияющие на нормальную работу программы, но способные привести к взлому системы, или выведению ее из строя.
Предположим, существует некоторая программа, выпоняющаяся на атакуемой машине, и принимающая некоторые данные от пользователей (не важно, что она с ними потом делает). Пусть это будет, к примеру... web-сервер. Итак, Web-сервер позволяет пользователю подключиться к определенному порту, передать свой запрос, состоящий из нескольких полей, и передающий некоторые данные в ответ на запрос. Формат запроса к Web-серверу:
GET /название/страницы.html HTTP/1.1
Параметр: значение
Параметр: значение
...и так далее. В "параметрах" броузер может передать, например, желаемую им кодировку текста, содержимое Cookie и т.д. Пусть сервер обрабатывает запрос следующим участком программы на языке C:
int ReadParam()
{
static char* s;
static int c;
char namebuf[256]; // область памяти для записи имени параметра
char namevalue[1024]; // область пямяти для записи значение параметра
s=namebuf;
while( (c=NetReadChar()) != ':' && !NetworkError() ) *s++=c;
.... далее что-то с этим делаем ...
Что делает этот участок кода: выделяет в стеке некоторый объем памяти для сохранения названия параметра и его значения, читает из пользовательского запроса символы до первого появления символа двоеточия и последовательно записывает их в предназначенную для этого область памяти. Здесь уже есть ошибка! Программист при написании программы точно знал, что наименование параметра никогда не будет длинее, чем 30-40 символов, и отвел 256 байт с запасом, чтобы не мучаться с дополнительной обработкой ошибок - "влезет" строка в память или нет, и что потом делать дальше. При этом количество реально записанных в память символов он уже не проверяет.
Казалось бы, что случится, если название параметра будет длинее, чем 256 символов? Ну не обслужит сервер такой запрос - а нечего слать непредусмотренные запросы... однако, точно зная структуру программы хакер может загнать в качестве названия параметра строку, содержащую выполняемый машинный код. Казалось бы - ну и пусть, ведь его-же никто не выполнит. Ну "повиснет" сервер, делов-то... Однако, адрес возврата из процедуры чтения параметров в основную программу тоже хранится в стеке (т.е. в той-же области памяти, из которой программист выделил место под хранение названия параметра), и хакер имеет все возможности изменить его (опять же, точно зная структуру программы), и заставить программу веб-сервера выполнить его код.
Рассмотренный пример очень прост, и ошибка в нем видна со всех сторон. В реальности в одну и ту же облась памяти может последовательно записываться множество данных в различных частях программ. Заметить такую ошибку в этом случае может только человек, который специально ее ищет.
Бороться с такими атаками практически невозможно. Большинство специалистов по безопасности предлагают отключить все ненужные сервисы (ну зачем, скажите, на вашем сервере доступа, например, NIS?) и устанавливать все свежие патчи. От себя могу посоветовать затруднить хакеру возможность правильного определения версии вашего программного обеспечения: большинство сетевых программ вставляют в свои ответы еще и подпись - "Ответ сгенерирован программой такой-то, версия такая-то". Например, сервер www.hub.ru (очевидно, вы читаете этот текст именно с этого сайта) в свой ответ вставляет следующую информацию:
Server: Apache/1.3.26 (Unix) PHP/4.2.2 mod_deflate/1.0.12 rus/PL30.14
Исходя из этой информации хакер может начать поиск либо готовых экспоитов для данной версии, либо самостоятельно начать анализировать исходные коды Apache. Чтобы помешать хакеру определить версию программного обеспечения, нужно заставить сервер выдавать вместо своего "паспорта" что-либо другое. С системой FreeBSD поставляются исходные коды практически всех используемых в ней программ, а многие программы вообще позволяют настраивать свой "паспорт", только этим никто не пользуется. Хакер же, увидев вместо вышеприведенной строки что-нибудь вроде "Server: SmartW3Daemon/0.3.12beta" будет вынужден сначала поискать этот SmartW3Daemon, а потом, когда поймет, что его надули, ему придется долго определять настоящую версию сервера по косвенным признакам.
Прослушивание сетевого трафика
Существует множество протоколов (таких как POP3, telnet, ftp и др.), передающих по сети незашифрованные данные, в том числе и пароли. Принцип же действия сети Ethernet таков, что любой посланный системой пакет доступен для просмотра всем членам домена коллизий, из которого послан пакет, а так-же всем членам доменов коллизий, через которые пакет пройдет на пути к адресу назначения.
Программное или аппаратное средство, позволяющее просматривать все проходящие мимо пакеты данных называется снифер. Программные сниферы существуют под любую операционную систему, и способны работать с практически любыми сетевыми картами. К счастью, в последнее время в сетях перестал встречаться коаксиальный кабель, а хабы (просто ретранслирующие пакеты на все порты) стали заменяться на коммутаторы, переправляющие пакет только адресату, однако и коммутаторы небезгрешны - если коммутатор специально не защищен от подобного рода атак, его можно за несколько секунд превратить в хаб, забив его внутренние таблицы коммутации большим количеством пакетов с сотен и тысяч фиктивных MAC-адресов. К сожалению, при разработке оборудования производители меньше всего думают о безопасности.
Если ваша сеть построена с использованием хабов, Вы сможете сами попробовать перехватить трафик ваших соседей, установив на свой компьютер, например, триальную версию пакета CommView компании TamoSoft (Для Windows).
К счастью, присутствие в сети большинства программных сниферов можно обнаружить с помощью специальных программных средств, провоцирующих такие компьютеры отвечать на запросы, на которые они бы не ответили в обычном режиме.
Атака "Фальшивый Сервер"
Предположим (для простоты описания) что хакер находится в одной сети с администратором и сервером, а администратор предпочитает "рулить" сервером не непосредственно с его консоли, а делает это через сеть (и я его понимаю :)).
Итак, администратор набирает в командной строке ssh server.home.net, и надеется, что через несколько секунд он окажется на сервере. Ничего подобного! Умный хакер, использовав весь арсенал из предыдущего способа атаки, перехватывает запрос к серверу DNS, который посылает система администратора для получения IP-адреса компьютера с именем server.home.net. Хакеру остается только успеть раньше настоящего сервера DNS отправить системе администратора фальшивый ответ, указав в качестве адреса свою, заранее подготовленную систему, и понаблюдать, как администратор вводит свой пароль. Грамотный хакер может даже самостоятельно установить соединение ssh с сервером, и передавать введенные администратором данные на сервер (а администратору, соответственно, ответы), так что администратор ничего не заметит.
В данной атаке самое важное - успеть ответить на запрос раньше, чем это сделает настоящий сервер, а здесь у хакера есть все преимущества: перед тем, как дать ответ, сервер должен просмотреть свою базу данных, на что ему требуется некоторе время. Хакер же может держать "фальшивый" пакет уже наготове, и съэкономить на этом драгоценные миллисекунды. Кроме того, у хакера есть возможность предварительно загрузить сервер большим количеством запросов (легкая DoS-атака), что значительно увеличит время, требуемое серверу для выдачи ответа.
Ошибки в программах и скриптах
Пожалуй, больше всего ошибок, связанных с безопасностью, допускают web-программисты в cgi-скриптах. Особенно часто такие ошибки гнездятся в скриптах, посылающих почтовые сообщения по адресу, указанному пользователем. Вот примерный код такого скрипта на языке perl:
$email=param('email');
open(MAIL,"| sendmail $email");
print MAIL "......"
Этот скрипт в первой строчке получает введенный пользователем адрес, после чего организуют конвейер (или пайп - механизм, принятый в unix и DOS, позволяющий "вывод" одной программы переправить на "ввод" другой). "Хитрый" хакер может вместе с адресом электронной почты ввести символы, "продожающие" конвейр, например cool@hacker.ru | rm -Rf /bin. Результатом подстановки такого адреса во вторую строку будет двойной конвейр: open(MAIL,"| sendmail cool@hacker.ru | rm -Rf /bin"). При выполнении этой команды текст письма будет перенаправлен на ввод команде sendmail, а вот ее вывод будет перенаправлен на ввод команде rm, которая в данном случае (если у процесса, исполняющего скрипт, хватит полномочий), удалит из системы все основные программы, расположенные в каталоге /bin.
Внутрисистемная атака
Нижеописанным способом практически при мне (но без моего участия) студентами был взломан компьютер института, и получены полномочия root. Эта атака весьма похожа не предыдущую, с той только разницей, чтохакер уже имел права обычного пользователя в системе.
В операционных системах семейства UNIX процессы выполняются от имени и с полномочиями пользователя, их запустившего. Исключение составляют программы, на который установлен аттрибут SETUID, заставляющий систему выполнить программу от имени и с полномочиями владельца программы.
Администратором институтского компьютера была написана такая программа (выпоняющая какие-то административные действия, сейчас это уже не важно). При этом администратор допустил целых три ошибки: оставил возможность запуска этой программы всем подряд (она, собственно, ничего опасного не делала), оставил на всеобщем обозрении исходный код программы, и сделал маленькую незаметную ошибочку в программе.
Ошибочка состояла в следующем: в своей программе администратор пользовался услугами другой программы (ну, предположим, passwd - изменение пользовательского пароля), и запускал ее функций execlp. В отличие от обычного execl, функции execlp не нужно передавать полный путь к программе (/bin/passwd), а достаточно передать только имя файла - passwd. Путь к программе execlp находит сама, пользуясь для этого переменной окружения PATH... казалось бы - ничего страшного, PATH то обычно и начинается с этого самого /bin... однако, пользователь имеет право менять свою собственную переменную PATH, которую и получит программа.
Юными хакерами была написана собственная программа, названа passwd, выложена в собственном каталоге. Переменная PATH была соответсвенным образом изменена, в результате чего программа администратора вместо /bin/passwd запустила на выполнение /home/.../passwd с правами администратора. К счастью для института, и несчастью для хакеров, взлом был довольно быстро обнаружен сиситемой слежения (хакерам не хватило опыта), но система после этого не работала неделю - искали оставленные хакерами "закладки".
Как видим, арсенал хакеров достаточно богат, и строится, в основном, на непродуманностях отдельных программ и базовых протоколов. Аминистраторам же приходится становиться параноиками, и подозревать всё и всех. Абсолютной защиты пока никто не создал, да и ошибки в программах выявляются каждый день пачками, но, тем не менее, в силах администратора отбить большую часть атак и снизить потенциальный ущерб от атак успешных.
Предотвращение атак
Во-первых, необходимо отказаться от использование не необходимых служб на сервере. Если Вам необходим какой-то сервис, но его можно вынести на другую машину - сделайте это. Естественно, эти машины должны быть как можно меньше логически связаны между собой - на каждой из них должна быть собственная система авторизации, пароли администраторов и пользователей, имеющих какие-либо административные привелегии не должны совпадать. Машины не должны "слепо" доверять друг-другу только потому, что они стоят в одной комнате - любое общение между ними должно быть защищено. Если какой-то сервис необходимо оставить на одной машине с критично-важными данными - попробуйте поискать информацию про известные уязвимости, и про более защищенные альтернативные реализации. Для самостоятельного изучения оставлю так-же такие средства безопасности отдельных приложений, как chroot и jail.
Если сервис не тербует для работы административных полномочий - не давайте их ему только потому, что Вам так проще. Сделайте для каждого сервиса отдельного пользователя, который будет иметь доступ только к необходимым для работы файлам - этим Вы предотвратите полный захват системы, если хакер сможет найти уязвимость в данном сервисе.
Вот примерный спикок сервисов, которые могут оказаться запущеными на Вашем сервере, и которые желательно "пристрелить", если в них нет необходимости:
|
Не менее важно для безопасности системы и само поведение администратора в системе. Учетная запись root - самый лакомый кусочек для хакера, и задача администратора - постараться не дать хакеру возможности ее заполучить, даже если хакер уже пробился в систему с пользовательскими правами, или имеет возможность перехвата сетевого трафика. Чем меньше администратор совершает действий с привилегиями учетной записи root, тем меньше риск ошибки. Вот пример того, как администратор (правда, системы Windows NT) "подарил" хакеру свой пароль. А все только потому, что воспользовался браузером из под административной учетной записи.
Хорошим правилом является заведение себе отдельной учетной записи, не обладающей административными привелегиями. Обычных пользовательских прав хватает для выяснения причин возникновения проблемы, а для ее исправления обычно достаточно выполнения всего одной-двух команд с привелениями root - для этого удобно воспользоваться командой su, которая временно даст Вам полномочия root (естественно, только после ввода пароля. Кроме того, для возможности запуска команды su пользователь должен быть членом встроенной группы wheel).
Весьма желательно не пользоваться административными правами при подключении к серверу через сеть. Даже в случае подключения по защищенному каналу ssh или VPN риск перехвата значительно возрастает по сравнению с непосредственной работой за консолью сервера. Кроме того, в этом случае приходится заботиться еще и о безопасности той машины, с которой производится подключение.
Обнаружение и нейтрализация атак
Наравне с задачей защиты системы от взлома стоит и задача своевременного обнаружения атаки и уменьшения ущерба от взлома. Ущерб, и способы его уменьшения зависят больше от функций, выполняемых системой, поэтому какие-то рекомендации, кроме набившей уже оскомину "делайте резервные копии", дать сложно. А вот обнаружение атаки на разных стадиях - дело вполне алгоритмируемое.
Одним из первых инструментов хакера при атаке на систему является сканер портов - некая программа, пытающаяся подключиться к удаленной системе по множеству известных ей протоколов для выяснения дальнейших возможных путей взлома. Функции этих программ могут быть весьма продвинутыми, а могут ограничиваться и последовательным перебором всех портов протоколов TCP и UDP, но в любом случае процесс сканирования портов можно засечь и принять соответствующие меры. Понятно, что постоянно сидеть и следить за системой администратор не будет, поэтому существуют программные средства, способные самомтоятельно засекать такие атаки, и отбивать их. Одна из таких программ - portsentry.
Установить PortSentry можно из набора портов - /usr/ports/security/portsentry (для установки программы подключитесь к сети Интернет, перейдите в этот каталог, и введите команду make install - программа будет скачана с сайта производителя и автоматически установлена в системе). После установки программы ее необходимо будет сконфигурировать, отредактировав файл /usr/local/etc/portsentry.conf.
Для начала нужно составить списки портов, попытка подключения к которым будет расцениваться, как криминал. Для этого нужно создать собственные строки TCP_PORTS и UDP_PORTS, или воспользоваться одной из имеющихся. Естественно, в список "криминальных" портов не следует включать те, на которых в Вашей системе существуют "легальные" сервисы. После создания списка "криминальных" портов необходимо настроить действие, предпринимаемое portsentry для отбивания атаки. Если в вашей системе установлен файрвол, то найдите и раскомментируйте (удалите начальный значек '#' ) строку:
KILL_ROUTE="/sbin/ipfw add 1 deny all from $TARGET$:255.255.255.255 to any"
При данной настройке portsentry запретит прохождение любых пакетов с атакующего хоста добавлением правила в файрвол. Если файрвол на вашей машине не установлен - найдите и раскомментируйте строчку:
KILL_ROUTE="route add -net $TARGET$ -netmask 255.255.255.255 127.0.0.1 -blackhole"
При данной настройке пакеты от атакующего хоста по-прежнему смогут достигать Вашего сервера, но ответные пакеты будут направлены в "черную дыру" (blackhole), и уничтожены. Это почти так-же эффективно, как и запрещение входящих пакетов с помощью firewall, но не помогает от DoS-атак.
Внимание! После перезагрузки все добавленные в файрвол правила, и добавленные в таблицу роутинга маршруты будут забыты, поэтому хакер опять сможет получить доступ к Вашей машине до первой попытки сделать что-либо запрещенное. Если Ваш сервер перезагружется достаточно часто - напишите собственный скрипт, который будет не только вносить правило в firewall, но и приписывать его к файлу настройки firewall, исполняемому при загруке системы.
К сожалению, в поставке portsentry пока не идет скрипт автоматической загрузки программы при старте системы, поэтому Вам самостоятельно придется создать файл /usr/local/etc/rc.d/portsentry.sh со следующим содержимым:
#!/bin/sh
PSENTRY="/usr/local/bin/portsentry"
case "$1" in
start)
${PSENTRY} -tcp
${PSENTRY} -udp
echo " PortSentry "
;;
stop)
killall portsentry
;;
*)
echo " "
echo "start or stop parameter required."
echo " "
;;
esac
После установки portsentry будьте крайне осторожны при администрировании сервера через сеть - при неверных действия Вы можете оказаться отключенным.
Следующая полезная утилита - tripwire, которую Вы можете установить из /usr/ports/security/tripwire. Не забудьте обновить дерево портов - из того порта, что идет вместе с FreeBSD 4.7 tripwire не устанавливается (по крайней мере, на моей машине не установилось). Самый простой вариант обновления - скачать содержимое каталога ftp4.ru.freebsd.org/pub/FreeBSD/ports/ports-stable/security/tripwire к себе в /usr/ports/security/tripwire. Более сложный, но гораздо более правильный метод - использовать CVSUpdate, но это отдельная большая тема.
Эта утилита (tripwire) предназначена для отслеживания состояния системных файлов. Хакер, проникший в систему, скорее всего попытается оставить для себя "закладки на будущее" - программы, или настройки стандартых программ, обеспечивающие хакеру более простые способы добраться до системы в следующий раз. Таких мин может быть раскидано достаточно много, в расчете на то, что администратор сервера, заметив взлом, найдет не все закладки. Tripwire облегчает поиск таких закладок, сообщая администратору о всех изменениях в потенциально опасных каталогах и файлах.
В процессе установки tripwire создаст базу данных, в которую будут занесены сведения о всех системных и конфигурационных фалйх. База по умолчанию создается в каталоге /var/db/tripwire, но в этом случае хакер может ее изменить после установки "закладок", поэтому базу желательно хранить на защищенной от записи дискете. Для этого при установке tripware надо использовать команду make install TRIPEWIRE_FLOPPY=YES. При этом, естественно, в дисководе должна находиться чистая форматированная дискета. Если на машине установлено много всякого барахла - база на дискету может и не влезть. В этом случае Вам придется самому переписать ее, например, на CDRW: если система настроена и стабильно работает, то изменения в системные файлы вносятся не часто, и перенос базы tripwire на внешние носители не будет слишком обременительным.
Информация в базе содержится в зашифрованном виде, поэтому при установке tripwire попросит Вас придумать два пароля - одним будут закодированы настройки, а другим сама база. Пароли забывать не стоит - могут пригодиться при изменении настроек и "принятия к сведению" легальных изменений в файловой системе.
При создании базы tripwire начнет ругаться на отсутствие у Вас некоторых каталогов вроде /usr/tmp и т.п. Самое обидное, что эта же ругань будет и в ежедневных отчетах. Поэтому придется немного поизучать настройку tripwire. Самый главный файл настройки - /usr/local/etc/tripwire/twpol.txt. Это обычный текстовый файл, в котором описано, какие файлы надо проверять, и с какой степенью придирчивости это делать. Файл логически состоит из двух частей: общие настройки и правила проверки. В общих настроках прописываются пути к основным файлам tripwire, и задаются символические имена для уровней "придирчивости". Список правил - это собственно и есть указания, какие каталоги проверять. Правило состоит из заголовка и тела. Заголовок имеет следующий вид:
(
rulename = "Root's home",
severity = $(SIG_HI),
emailto="admin@host.domain"
)
, где rulename - название правила, severity - уровень "придирчивости", emailto - кому сообщать о происшествиях. Строки emailto приходится к каждому правилу добавлять вручную. Тело правила выглядит следующим образом:
{
/.profile -> $(SEC_CRIT) ;
/.cshrc -> $(SEC_CRIT) ;
/.forward -> $(SEC_CRIT) ;
/root -> $(SEC_CRIT) (recurse = true) ;
!/root/.history ;
!/root/.bash_history ;
}
Тело правила представляет из себя список каталогов с необязательным указанием изменения уровня "придирчивости" и способа обработки. Также возможно исключение некоторых файлов или подкаталогов из проверяемого списка. В данном примере из списка проверки исключаются файлы истории команд, изменение которых бесполезно отслеживать, т.к. они происходят при любых действиях пользователя root. Впрочем, если Вы не собираетесь в обозримом будущем работать под этой учетной записью, их можно не исключать из списка - их изменение будет сигналом о том, что кто-то таки работал под этим логином.
twpol.txt не используется при работе tripwire напрямую. Используется его зашифрованная версия, получить которую из текстового файла можно следующим образом:
/usr/local/sbin/twadmin -m P /usr/local/etc/tripwire/twpol.txt
при этом Вам придется ввести пароль. Сам текстовый файл с настройкой политики желательно тоже хранить в недоступном хакеру месте (на дискете в ящике стола), т.к. по этому файлу он сможет вычислить области с меньшей параноидальностью проверки.
Если Вы произвели какие-то изменения в системе, и не хотите, чтобы tripwire каждый день о них рассказывал - переинициализируйте базу командой /usr/local/sbin/tripwire --update (для обновления базы) или /usr/local/sbin/tripwire --init для создания базы "с нуля". Естественно, понадобится пароль - иначе хакер тоже сможет изменить базу.
Неплохо так-же переместить все относящиеся к tripwire файлы куда-нибудь в глубины файловой системы, например /usr/src/sys/libkern/patch/7.40, чтобы уменьшить вероятность обнаружения хакером нашей системы слежения, но при этом все-равно останется "след" - где-то должен сидеть автоматический запуск tripwire с некоторой периодичностью. Стандартный способ запуска - добавить в /etc/crontab строчку
15 6 * * * root /usr/local/sbin/tripwire --check --silent --email-report
для запуска проверки каждый день в 6:15 утра, но это будет слишком быстро вычислено хакером. Более замороченным способом будет вставка вызова tripwire в какой-нибудь другой регулярно запускаемый служебный скрипт (например, подсчет статистики), достаточно сложный и неинтересный, чтобы хакеру хотелось в нем копаться, либо внесение изменения в код какого-либо постоянно исполняемого системой демона (благо исходные коды есть почти для всех программ). Переименование всех файлов tripwire во что-нибудь более безобидное тоже пойдет на пользу - тупой перебор всех каталогов на поиск слова tripwire не принесет хакеру желаемого результата.
Если предприняты меры по "прятанью" tripwire от глаз хакера, придется так-же выполнить make clean в каталоге /usr/ports/security/tripwire и удалить /usr/ports/distfiles/tripwire* для сокрытия следов сборки и установки tripwire. Правда, после этого останутся еще следы в протоколе работы почтовой системы, т.к. доставка администратору сообщений от tripwire должна быть регулярной, но tripwire можно настроить и для использвания внешнего почтового сервера. После этого можно быть уже относительно спокойным за скрытность работы tripwire. Конечно, останется еще вероятность того, что хакер будет работать в системе одновременно с работой tripwire, засечет какой-то чрезмерно активный процесс, и найдет наш замаскированный tripwire по этой ниточке, но с этим ничего не сделаешь (разве что поставить второй сервер специально для tripwire, и проверять диски через сеть), но вероятность такого обнаружения довольно мала.
Настройка tripewire - дело достаточно тонкое, т.к. неправильно настроенная tripewire засыпет Вас ложными сообщениями о неполадках в системе, в то время как настоящие нарушения могут быть пропущены. К сожалению, действительно хорошего руководства на русском языке в Интернете обнаружить не удалось, а насчет достаточности собственного опыта для написания действительно толкового полного руководства я не уверен. Тем не менее рекомендую почитать:
'http://bog.pp.ru/work/tripwire.html/'
'http://tcb.spb.ru/other/docum/linuxsos/ch12_1.html/'
а так-же все, что найдет yandex и google по этому поводу. Возможно, из моего рассказа что-то осталось непонятным - надеюсь, в этих статьях Вы сможете найти ответ на интересующие Вас вопросы по установке и первоначальному конфигурированию.
На этом предлагаю закончить экскурсию в сумасшедший дом по отделению параноиков, и в следующей главе обсудить настройку firewall'а - вещи, полезной как в плане безопасности, так и длятонкой настройки работы сервера доступа.
(C) 2002 by Kuzmich
Настройка firewall FreeBSD
Обновлено: 15.01.2025FreeBSD 4.x и 5.x позволяет настроить сетевой экран (firewall) очень просто. С помощью сетевого экрана Вы можете защитить как один сервер, так и всю сеть. Также Вы можете легко включить поддержу трансляции сетевых адресов (NAT) для того, чтобы компьютеры из Вашей внутренней сети могли получить доступ к внешней сети используя всего один внешний IP адрес.
Для этого необходимы три простых шага
1. Во-первых, Вам будет необходимо внести несколько изменений в Ваше ядро. На самом деле это не так сложно, как звучит на первый взгяд. Используйте команду su для того, чтобы получить права суперпользователя, при помощи команды cd перейдите в каталог /usr/src/sys/i386/conf, скопируйте файл GENERIC в новый файл. Назовём его, к примеру, ROUTER. Этот файл будет Вашим новым конфигурационным файлом Вашего ядра. Ниже приведены изменения, которые Вам необходимо будет внести:
--- GENERIC Sun Jul 6 17:09:42 2003 +++ ROUTER Sun Jul 6 17:11:06 2003 @@ -22,7 +22,7 @@ cpu I486_CPU cpu I586_CPU cpu I686_CPU -ident GENERIC +ident ROUTER maxusers 0 #makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols @@ -259,3 +259,9 @@ device aue # ADMtek USB ethernet device cue # CATC USB ethernet device kue # Kawasaki LSI USB ethernet + +# Enable ipfw and natd. +options IPFIREWALL +options IPFIREWALL_VERBOSE +options IPDIVERT +options DUMMYNET
2. Другими словами, Вам необходимо будет изменить идентификатор (ident) ядра и добавить опции для включения сетевого экрана в ядре. После настройки конфигурационного файла скомпилируйте и установите новое ядро:
# cd /usr/src # make buildkernel KERNCONF=ROUTER # make installkernel KERNCONF=ROUTER
# Enable firewall firewall_enable="YES" firewall_type="type" firewall_quiet="NO"
Переменная firewall_type должна быть установлена в значение "client" для того, чтобы защитить отдельностоящую машину или в "simple" для шлюза, защищающего внутреннюю сеть. Если Вам необходимо также поддержка трансляции сетевых адресов (NAT), добавьте нижеследующие установки:
# Enable natd. natd_enable="YES" natd_interface="fxp0" # your public network interface natd_flags="-m" # preserve port numbers if possible
3. В-третьих, Вам будет необходимо сделать несколько правок в файле rc.firewall. Комментарии в нём помогут Вам понять, что необходимо, это действительно очень просто. Найдите раздел с правилами для Вашего типа сетевого экрана (firewall), как то: "client" или "simple". В начале раздела Вы найдете несколько переменных, указывающих Ваши IP адреса, сетевые интерфейсы и т.д.; заполните их.
Вот и все, по крайней мере для начальной настройки. Перезагрузите машину и Вы получите настроеный и работающий сетевой экран (firewall).
Важное замечание о исправлении неполадок (troubleshooting)
Сетевой экран (firewall) в FreeBSD спроектирован так, что он безопасен по умолчанию. Если Вы включите его и не добавите никаких правил, он не будет пропускать никаких пакетов. Это означает, что, если Вы что-то сделаете неправильно в Вашем файле конфигурации сетевого экрана (firewall), Вы можете оказаться в ситуации, в которой не сможете получить доступ к Вашей машине через сеть для того, чтобы исправить это. Вам понадобится зайти на машину через системную консоль (клавиатуру, подсоединённую к машине).
Это случилось со мной один раз во время тестирования. Это не большая проблема, если Вы понимаете, что происходит. Очень просто исправить ситуацию, если Вы имеете доступ к консоли; просто отредактируйте файл /etc/rc.conf, установив firewall_type в значение "open" или просто закомментируйте строки, относящиеся к firewall и перезагрузитесь. Но будьте бдительны, если Вы настраиваете Ваш сетевой экран через сеть.
Замечание о FTP
Настройки сетевого экрана, подобные этим, не дают возможности работать FTP. На самом деле, это вина FTP. FTP - это старомодный и черезчур усложнённый протокол, который требует от сервера инициировать обратное соединение к клиенту. Так как сетевые экраны запрещают открытие нового соединения извне (кроме некоторых протоколов типа SMTP или ssh), FTP не работает.
Есть обходное решение - использовать "пассивный" режим работы FTP, который заставляет проводить работу в обычном режиме клиент-сервер. Каждый раз, когда Вы будете использовать клиента FTP просто отдайте команду, которая включает пассивный режим. В новых версиях FTP клиента Вы можете сделать этот режим режимом по умолчанию при помощи переменной окружения FTP_PASSIVE_MODE, установленное в значение "yes". Современные веб-браузеры используют этот режим по умолчанию и/или позволяют включить его использование по умолчанию в настройках.
Другое обходное решение - избегать использования FTP и использовать HTTP или scp.
Более сложные темы
Как только Вы настроите сетевой экран, Вы можете найти, что Вас не устраивают те наборы правил, которые включены в файл rc.firewall. Если это так, то Вы можете очень просто написать свои собственные. Первое, что Вы можете сделать, это разрешить соединения ssh. (ssh - это безопасная замена для telnet/rlogin; Вы можете его найти в базовой системе или в коллекции портов). В том месте набора правил, где разрешается соединение для входящей почты, добавьте подобное правило для ssh путём копирования и последующего изменения номера порта с 25 на 22.
Или Вы можете взять контроль в свои руки и написать совершенно новый набор правил. Для этой статьи у меня получилось два таких набора: router-solo и router-net, которые являются улучшеными версиями стандартных наборов "client" и "simple". Вот что у меня получилось (комментарии на английском дабы избежать возможных проблем, связанных с пониманием /bin/sh кириллических символов):
[Rr][Oo][Uu][Tt][Ee][Rr]-[Ss][Oo][Ll][Oo]) ############ # ROUTER single-machine custom firewall setup. Protects somewhat # against the outside world. ############ # Set this to your ip address. ip="192.168.0.1" # Allow communications through loopback interface and deny 127.0.0.1/8 # from any other interfaces setup_loopback # Allow anything outbound from this address. ${fwcmd} add allow all from ${ip} to any out # Deny anything outbound from other addresses. ${fwcmd} add deny log all from any to any out # Allow TCP through if setup succeeded. ${fwcmd} add allow tcp from any to any established # Allow IP fragments to pass through. ${fwcmd} add allow all from any to any frag # Allow inbound ftp, ssh, email, tcp-dns, http, https, pop3, pop3s. ${fwcmd} add allow tcp from any to ${ip} 21 setup ${fwcmd} add allow tcp from any to ${ip} 22 setup ${fwcmd} add allow tcp from any to ${ip} 25 setup ${fwcmd} add allow tcp from any to ${ip} 53 setup ${fwcmd} add allow tcp from any to ${ip} 80 setup ${fwcmd} add allow tcp from any to ${ip} 443 setup ${fwcmd} add allow tcp from any to ${ip} 110 setup ${fwcmd} add allow tcp from any to ${ip} 995 setup # Deny inbound auth, netbios, ldap, and Microsoft's DB protocol # without logging. ${fwcmd} add deny tcp from any to ${ip} 113 setup ${fwcmd} add deny tcp from any to ${ip} 139 setup ${fwcmd} add deny tcp from any to ${ip} 389 setup ${fwcmd} add deny tcp from any to ${ip} 445 setup # Deny some chatty UDP broadcast protocols without logging. ${fwcmd} add deny udp from any 137 to any ${fwcmd} add deny udp from any to any 137 ${fwcmd} add deny udp from any 138 to any ${fwcmd} add deny udp from any 513 to any ${fwcmd} add deny udp from any 525 to any # Allow inbound DNS and NTP replies. This is somewhat of a hole, # since we're looking at the incoming port number, which can be # faked, but that's just the way DNS and NTP work. ${fwcmd} add allow udp from any 53 to ${ip} ${fwcmd} add allow udp from any 123 to ${ip} # Allow inbound DNS queries. ${fwcmd} add allow udp from any to ${ip} 53 # Deny inbound NTP queries without logging. ${fwcmd} add deny udp from any to ${ip} 123 # Allow traceroute to function, but not to get in. ${fwcmd} add unreach port udp from any to ${ip} 33435-33524 # Allow some inbound icmps - echo reply, dest unreach, source quench, # echo, ttl exceeded. ${fwcmd} add allow icmp from any to any icmptypes 0,3,4,8,11 # Everything else is denied and logged. ${fwcmd} add deny log all from any to any ;; [Rr][Oo][Uu][Tt][Ee][Rr]-[Nn][Ee][Tt]) ############ # ROUTER network custom firewall setup. The assumption here is that # the internal hosts are trusted, and can do anything they want. # The only thing we have to be careful about is what comes in over # the outside interface. So, you'll see a lot of "in via ${oif}" # clauses here. ############ # Set these to your outside interface network and netmask and ip. oif="fxp0" onet="217.20.160.0" omask="255.255.255.0" oip="217.20.160.1" # Set these to your inside interface network and netmask and ip. iif="fxp1" inet="192.168.0.0" imask="255.255.255.0" iip="192.168.0.1" # Allow communications through loopback interface and deny 127.0.0.1/8 # from any other interfaces setup_loopback # Stop spoofing ${fwcmd} add deny log all from ${inet}:${imask} to any in via ${oif} ${fwcmd} add deny log all from ${onet}:${omask} to any in via ${iif} # Stop RFC1918 nets on the outside interface ${fwcmd} add deny log all from any to 10.0.0.0/8 via ${oif} ${fwcmd} add deny log all from any to 172.16.0.0/12 via ${oif} ${fwcmd} add deny log all from any to 192.168.0.0/16 via ${oif} # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1, # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E), # RFC 3330 nets on the outside interface ${fwcmd} add deny log all from any to 0.0.0.0/8 via ${oif} ${fwcmd} add deny log all from any to 169.254.0.0/16 via ${oif} ${fwcmd} add deny log all from any to 192.0.2.0/24 via ${oif} ${fwcmd} add deny log all from any to 198.18.0.0/15 via ${oif} ${fwcmd} add deny log all from any to 224.0.0.0/4 via ${oif} ${fwcmd} add deny log all from any to 240.0.0.0/4 via ${oif} # Network Address Translation. This rule is placed here deliberately # so that it does not interfere with the surrounding address-checking # rules. If for example one of your internal LAN machines had its IP # address set to 192.168.0.2 then an incoming packet for it after being # translated by natd(8) would match the `deny' rule above. Similarly # an outgoing packet originated from it before being translated would # match the `deny' rule below. case ${natd_enable} in [Yy][Ee][Ss]) if [ -n "${natd_interface}" ]; then ${fwcmd} add divert natd all from any to any via ${natd_interface} fi ;; esac # Stop RFC1918 nets on the outside interface ${fwcmd} add deny log all from 10.0.0.0/8 to any via ${oif} ${fwcmd} add deny log all from 172.16.0.0/12 to any via ${oif} ${fwcmd} add deny log all from 192.168.0.0/16 to any via ${oif} # Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1, # DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E), # RFC 3330 nets on the outside interface ${fwcmd} add deny log all from 0.0.0.0/8 to any via ${oif} ${fwcmd} add deny log all from 169.254.0.0/16 to any via ${oif} ${fwcmd} add deny log all from 192.0.2.0/24 to any via ${oif} ${fwcmd} add deny log all from 198.18.0.0/15 to any via ${oif} ${fwcmd} add deny log all from 224.0.0.0/4 to any via ${oif} ${fwcmd} add deny log all from 240.0.0.0/4 to any via ${oif} # Allow anything on the internal net ${fwcmd} add allow all from any to any via ${iif} # Allow anything outbound from this net. ${fwcmd} add allow all from ${onet}:${omask} to any out via ${oif} # Deny anything outbound from other nets. ${fwcmd} add deny log all from any to any out via ${oif} # Allow TCP through if setup succeeded. ${fwcmd} add allow tcp from any to any established # Allow IP fragments to pass through. ${fwcmd} add allow all from any to any frag # Allow inbound ftp, ssh, email, tcp-dns, http, https, pop3, pop3s. ${fwcmd} add allow tcp from any to ${oip} 21 setup in via ${oif} ${fwcmd} add allow tcp from any to ${oip} 22 setup in via ${oif} ${fwcmd} add allow tcp from any to ${oip} 25 setup in via ${oif} ${fwcmd} add allow tcp from any to ${oip} 53 setup in via ${oif} ${fwcmd} add allow tcp from any to ${oip} 80 setup in via ${oif} ${fwcmd} add allow tcp from any to ${oip} 443 setup in via ${oif} ${fwcmd} add allow tcp from any to ${oip} 110 setup in via ${oif} ${fwcmd} add allow tcp from any to ${oip} 995 setup in via ${oif} # Deny inbound auth, netbios, ldap, and Microsoft's DB protocol # without logging. ${fwcmd} add deny tcp from any to ${oip} 113 setup in via ${oif} ${fwcmd} add deny tcp from any to ${oip} 139 setup in via ${oif} ${fwcmd} add deny tcp from any to ${oip} 389 setup in via ${oif} ${fwcmd} add deny tcp from any to ${oip} 445 setup in via ${oif} # Deny some chatty UDP broadcast protocols without logging. ${fwcmd} add deny udp from any 137 to any in via ${oif} ${fwcmd} add deny udp from any to any 137 in via ${oif} ${fwcmd} add deny udp from any 138 to any in via ${oif} ${fwcmd} add deny udp from any 513 to any in via ${oif} ${fwcmd} add deny udp from any 525 to any in via ${oif} # Allow inbound DNS and NTP replies. This is somewhat of a hole, # since we're looking at the incoming port number, which can be # faked, but that's just the way DNS and NTP work. ${fwcmd} add allow udp from any 53 to ${oip} in via ${oif} ${fwcmd} add allow udp from any 123 to ${oip} in via ${oif} # Allow inbound DNS queries. ${fwcmd} add allow udp from any to ${oip} 53 in via ${oif} # Deny inbound NTP queries without logging. ${fwcmd} add deny udp from any to ${oip} 123 in via ${oif} # Allow traceroute to function, but not to get in. ${fwcmd} add unreach port udp from any to ${oip} 33435-33524 in via ${oif} # Allow some inbound icmps - echo reply, dest unreach, source quench, # echo, ttl exceeded. ${fwcmd} add allow icmp from any to any in via ${oif} icmptypes 0,3,4,8,11 # Broadcasts are denied and not logged. ${fwcmd} add deny all from any to 255.255.255.255 # Everything else is denied and logged. ${fwcmd} add deny log all from any to any
(c) 2003, Alexandr Kovalenko <never АТ nevermind.kiev.ua>
Настройка VPN через IPsec. Руководство FreeBSD
Обновлено: 15.01.2025Руководство FreeBSD |
Глава 14. Безопасность |
14.10. VPN через IPsec
Написал Nik Clayton.Создание VPN между двумя сетями, соединенными через интернет, с использованием шлюзов FreeBSD.
14.10.1. Принципы работы IPsec
Написал Hiten M. Pandya.Этот раздел послужит вам руководством по настройке IPsec и его использованию в среде FreeBSD и Microsoft® Windows® 2000/XP, соединяемых безопасным способом. Для настройки IPsec необходимо ознакомиться с процессом сборки ядра (Гл. 8).
IPsec это протокол, расположенный поверх слоя Internet Protocol (IP). Он позволяет двум или более хостам связываться защищенным способом (отсюда и название протокола). ''Сетевой стек'' FreeBSD IPsec основан на реализации KAME, поддерживающей оба семейства протоколов, IPv4 и IPv6.
Замечание: FreeBSD содержит ''аппаратно поддерживаемый'' стек IPsec, известный как ''Fast IPsec'', заимствованный из OpenBSD. Для оптимизации производительности IPsec он задействует криптографическое оборудование (когда оно доступно) через подсистему crypto(4). Это новая подсистема и она не поддерживает всех возможностей, доступных в KAME версии IPsec. Для включения IPsec с аппаратной поддержкой необходимо добавить в файл настройки ядра следующий параметр:
options FAST_IPSEC # new IPsec (cannot define w/ IPSEC)Обратите внимание, что на данный момент невозможно использовать подсистему ''Fast IPsec'' вместе с KAME реализацией IPsec. Обратитесь к странице справочника fast_ipsec(4) за дальнейшей информацией.
Замечание: Для того, чтобы применять к туннелям gif(4) межсетевые экраны, вам потребуется включить в ядро опцию
IPSEC_FILTERGIF
:options IPSEC_FILTERGIF #filter ipsec packets from a tunnel
IPsec состоит из двух подпротоколов:
-
Encapsulated Security Payload (ESP), защищающей данные IP пакета от вмешательства третьей стороны путем шифрования содержимого с помощью симметричных криптографических алгоритмов (таких как Blowfish,3DES).
-
Authentication Header (AH), защищающий заголовок IP пакета от вмешательства третьей стороны и подделки путем вычисления криптографической контрольной суммы и хеширования полей заголовка IP пакета защищенной функцией хеширования. К пакету добавляется дополнительный заголовок с хэшем, позволяющий аутентификацию информации пакета.
ESP и AH могут быть использованы вместе или по отдельности, в зависимости от обстоятельств.
IPsec может быть использован или для непосредственного шифрования трафика между двумя хостами (транспортный режим); или для построения ''виртуальных туннелей'' между двумя подсетями, которые могут быть использованы для защиты соединений между двумя корпоративными сетями (туннельный режим). Последний обычно называют виртуальной частной сетью (Virtual Private Network, VPN). За детальной информацией о подсистеме IPsec в FreeBSD обратитесь к странице справочника ipsec(4).
Для включения поддержки IPsec в ядре, добавьте следующие параметры к файлу настройки ядра:
options IPSEC #IP security options IPSEC_ESP #IP security (crypto; define w/ IPSEC)
Если желательна поддержка отладки IPsec, должна быть также добавлена следующая строка:
options IPSEC_DEBUG #debug for IP security
14.10.2. Проблема
Не существует стандарта VPN. Они могут быть реализованы множеством различных технологий, каждая из которых имеет свои сильные и слабые стороны. Этот раздел представляет сценарий и стратегию реализации VPN для этого сценария.
14.10.3. Сценарий: Две сети, подключенных к интернет, работающие как одна
Исходные условия таковы:
-
Существует как минимум две сети
-
Внутри обеих сетей используется IP
-
Обе сети соединены через интернет через шлюз, работающий на FreeBSD.
-
У шлюза каждой из сетей есть как минимум один публичный IP адрес.
-
Внутренние IP адреса двух сетей могут быть публичными или приватными, не имеет значения. На шлюзе может работать NAT, если это необходимо.
-
Внутренние IP адреса двух сетей не должны пересекаться. Хотя вероятно теоретически возможно использование комбинации VPN технологии и NAT для настройки такой конфигурации, эта конфигурация будет кошмарна.
Если две сети, которые вы пытаетесь соединить, используют один и тот же диапазон приватных адресов (например, обе используют 192.168.1.x), номера в одной из сетей необходимо изменить.
Топология сети может выглядеть примерно так:
Заметьте, что здесь присутствуют два публичных IP-адреса. В дальнейшем для их обозначения будут использоваться буквы. Если вы увидите эти буквы, замените их на свои публичные IP адреса. Также обратите внимание, что у обеих шлюзов внутренний адрес заканчивается на .1 и диапазоны приватных адресов двух сетей различны (192.168.1.x и 192.168.2.x соответственно). Все компьютеры локальных сетей настроены на использование в качестве шлюза по умолчанию компьютера с адресом, оканчивающимся на .1.
С сетевой точки зрения замысел в том, чтобы каждая сеть видела компьютеры из другой сети так, как если бы они были непосредственно подключены к тому же самому маршрутизатору -- хотя и немного медленному маршрутизатору, иногда теряющему пакеты.
Это означает, что (например) компьютер 192.168.1.20 может запустить
ping 192.168.2.34
и это будет прозрачно работать. Компьютеры с Windows должны видеть компьютеры в другой сети, просматривать сетевые ресурсы, и так далее, точно так же, как и для компьютеров в локальной сети.
И все это безопасным способом. Это означает, что трафик между сетями зашифрован.
Создание VPN между этими двумя сетями это многошаговый процесс. Этапы создания VPN таковы:
-
Создание ''виртуального'' сетевого подключения между двумя сетями через интернет. Тестирование подключения с помощью таких инструментов как ping(8), чтобы убедиться, что оно работает.
-
Применение политики безопасности чтобы убедиться, что трафик между двумя сетями прозрачно шифруется и расшифровывается если необходимо. Тестирование с помощью таких инструментов как tcpdump(1), чтобы убедиться, что трафик шифруется.
-
Настройка дополнительных программ на шлюзах FreeBSD, чтобы компьютеры Windows из одной сети видели компьютеры в другой через VPN.
14.10.3.1. Шаг 1: Создание и тестирование ''виртуального'' сетевого подключения
Предположим, что вы работаете на шлюзе сети #1 (с публичным адресом A.B.C.D, приватным адресом 192.168.1.1) и запускаете ping 192.168.2.1, т.е. на приватный адрес машины с IP адресом W.X.Y.Z. Что должно произойти, чтобы это сработало?
-
Шлюз должен знать, как достичь 192.168.2.1. Другими словами, у него должен быть маршрут к 192.168.2.1.
-
Приватные IP адреса, такие как диапазон 192.168.x не адресуются в интернет. Каждый пакет, отправляемый на 192.168.2.1 должен быть ''завернут'' в другой пакет. Исходным адресом пакета должен быть A.B.C.D, а адресом назначения W.X.Y.Z. Этот процесс называется инкапсуляцией.
-
Как только этот пакет достигнет W.X.Y.Z, необходимо будет ''декапсулировать'' его и доставить к 192.168.2.1.
Как вы можете увидеть, это требует ''туннеля'' между двумя сетями. Два конца ''туннеля'' это IP адреса A.B.C.D и W.X.Y.Z. Туннель используется для передачи трафика с приватными IP адресами через интернет.
В FreeBSD этот туннель создается с помощью устройства generic interface, или gif. Как вы можете догадаться, интерфейс gif на каждом хосте должен быть настроен с четырьмя IP адресами; два для публичных IP адресов и два для приватных IP адресов.
В ядро обеих компьютеров FreeBSD должна быть встроена поддержка устройства gif. Вы можете сделать это, добавив строку:
device gif
к файлу настройки ядра на обеих компьютерах, с последующей компиляцией, установкой и перезагрузкой.
Настройка туннеля это двухшаговый процесс. Во-первых, необходимо задать сведения о внешнем (или публичном) IP адресе с помощью ifconfig(8). Затем о приватном IP адресе, также с помощью ifconfig(8).
На шлюзе сети #1 для настройки туннеля вам потребуется запустить следующие две команды.
ifconfig gif0 A.B.C.D W.X.Y.Z ifconfig gif0 inet 192.168.1.1 192.168.2.1 netmask 0xffffffff
На другом шлюзе подобные команды, но с IP адресами в обратном порядке.
ifconfig gif0 W.X.Y.Z A.B.C.D ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffff
Затем вы можете запустить:
ifconfig gif0
для просмотра настройки. Например, на шлюзе сети #1 вы увидите:
# ifconfig gif0 gif0: flags=8011<UP,POINTTOPOINT,MULTICAST> mtu 1280 inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff physical address inet A.B.C.D --> W.X.Y.Z
Как вы можете видеть, был создан туннель между физическими адресами A.B.C.D и W.X.Y.Z, для туннелирования разрешен трафик между 192.168.1.1 и 192.168.2.1.
Это также добавляет запись к таблице маршрутизации на обеих машинах, вы можете проверить запись командой netstat -rn. Вот вывод этой команды на шлюзе сети #1.
# netstat -rn Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire ... 192.168.2.1 192.168.1.1 UH 0 0 gif0 ...
Как показывает значение поля ''Flags'', это маршрут к хосту, что означает, что каждый шлюз знает, как достичь другого шлюза, но не знает как достичь остальной части соответствующей сети. Эта проблема будет быстро решена.
Вероятно, на обеих машинах запущен брандмауэр. VPN должен обходить его. Вы можете разрешить весь трафик между двумя сетями, или включить правила, защищающие каждый конец соединения от другого.
Это сильно упрощает тестирование настройки брандмауэра, если вы разрешаете весь трафик через VPN. Вы всегда можете Вы всегда можете усилить защиту позже. Если вы используете на шлюзах ipfw(8), команда вроде этой
ipfw add 1 allow ip from any to any via gif0
разрешит весь трафик между двумя концами VPN без влияния на другие правила брандмауэра. Очевидно, вам потребуется запустить эту команду на обеих шлюзах.
Этого достаточно для включения ping с одного шлюза на другой. На 192.168.1.1, вы сможете запустить
ping 192.168.2.1
и получить ответ, и аналогично на другом шлюзе.
Однако, машины в другой сети пока недоступны. Это из-за маршрутизации -- хотя шлюзы знают, как связаться друг с другом, они не знают, как связаться с сетью за другим шлюзом.
Для решения этой проблемы вы должны добавить статический маршрут на каждом шлюзе. Команда на первом шлюзе будет выглядеть так:
route add 192.168.2.0 192.168.2.1 netmask 0xffffff00
Она говорит ''Для достижения хостов в сети 192.168.2.0, отправляйте пакеты хосту 192.168.2.1''. Вам потребуется запустить похожую команду на другом шлюзе, но с адресами 192.168.1.x.
IP трафик с хостов в одной сети теперь может достичь хосты в другой сети.
Теперь создано две трети VPN между двумя сетями, поскольку это ''виртуальная (virtual)'' ''сеть (network)''. Она еще не приватная (private). Вы можете протестировать ее с помощью ping(8) и tcpdump(1). Войдите на шлюз и запустите
tcpdump dst host 192.168.2.1
В другой сессии на этом же хосте запустите
ping 192.168.2.1
Вы увидите примерно такие строки:
16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request 16:10:24.018109 192.168.1.1 > 192.168.2.1: icmp: echo reply 16:10:25.018814 192.168.1.1 > 192.168.2.1: icmp: echo request 16:10:25.018847 192.168.1.1 > 192.168.2.1: icmp: echo reply 16:10:26.028896 192.168.1.1 > 192.168.2.1: icmp: echo request 16:10:26.029112 192.168.1.1 > 192.168.2.1: icmp: echo reply
Как вы видите, ICMP сообщения пересылаются вперед и назад незашифрованными. Если вы использовали с tcpdump(1) параметр -s
для получения большего объема данных пакета, то увидите больше информации.
Конечно же это неприемлемо. В следующем разделе мы обсудим защиту соединения между двумя сетями, так что весь трафик будет автоматически шифроваться.
Резюме:
-
Настройте оба ядра с ''device gif''.
-
Отредактируйте /etc/rc.conf на шлюзе #1 и добавьте следующие строки (подставляя IP адреса где необходимо).
gifconfig_gif0="A.B.C.D W.X.Y.Z" ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff" static_routes="vpn" route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"
-
Отредактируйте скрипт брандмауэра (/etc/rc.firewall, или подобный) на обеих хостах и добавьте
ipfw add 1 allow ip from any to any via gif0
-
Выполните соответствующие изменения в /etc/rc.conf на шлюзе #2, меняя порядок IP адресов.
14.10.3.2. Шаг 2: Защита соединения
Для защиты соединения мы будем использовать IPsec. IPsec предоставляет хостам механизм определения ключа для шифрования и для последующего использования этого ключа для шифрования данных между двумя хостами.
Здесь будут рассмотрены два аспекта настройки.
-
У хостов должен быть способ согласования используемого алгоритма шифрования. Как только хосты договорятся об этом, можно говорить об установленном между ними ''безопасном соединении''.
-
Должен быть механизм определения, какой трафик необходимо шифровать. Конечно, вам не требуется шифровать весь исходящий трафик -- достаточно шифровать только трафик, идущий через VPN. Правила, определяющие то, какой трафик необходимо шифровать, называются ''политикой безопасности''.
Безопасное соединение и политика безопасности поддерживаются ядром, и могут быть изменены программами пользователя. Однако перед тем, как вы сможете сделать это, необходимо настроить поддержку протоколов IPsec и Encapsulated Security Payload (ESP) в ядре. Это делается добавлением в настройку ядра параметров:
options IPSEC options IPSEC_ESP
с последующим перекомпилированием, переустановкой и перезагрузкой. Как и прежде вам потребуется сделать это с ядрами на обеих шлюзах.
При настройке параметров безопасности (security associations) у вас есть два варианта. Вы можете настроить их вручную для обеих хостов, задав алгоритм шифрования, ключи для шифрования и так далее, или использовать даемоны, реализующие Internet Key Exchange protocol (IKE), который сделает это за вас.
Рекомендуется последнее. Помимо прочего, этот способ более прост.
Редактирование и отображение политики безопасности выполняется с помощью setkey(8). По аналогии, setkey используется для настройки таблиц политики безопасности ядра так же, как route(8) используется для настройки таблиц маршрутизации ядра. setkey также может отображать текущие параметры безопасности, и продолжая аналогию дальше, это соответствует netstat -r.
Существует множество даемонов для управления параметрами безопасности в FreeBSD. Здесь будет описано использование одного из них, racoon -- он доступен в составе порта security/ipsec-tools в Коллекции Портов FreeBSD.
Даемон racoon должен работать на обеих шлюзах. На каждом из хостов он настраивается с IP адресом другого конца VPN, и секретным ключом (по вашему выбору, должен быть одним и тем же на обеих шлюзах).
Эти два даемона подключаются друг к другу, подтверждают, что они именно те, за кого себя выдают (используя секретный ключ, заданный вами). Затем даемоны генерируют новый секретный ключ и используют его для шифрования трафика через VPN. Они периодически изменяют этот ключ, так что даже если атакующий сломает один из ключей (что теоретически почти невозможно) это не даст ему слишком много -- он сломал ключ, который два даемона уже сменили на другой.
Настройки racoon сохраняются в файле ${PREFIX}/etc/racoon. Этот файл не требует слишком больших изменений. Другим компонентом настройки racoon, который потребуется изменить, является ''предварительный ключ''.
В настройке по умолчанию racoon ищет его в файле ${PREFIX}/etc/racoon/psk.txt. Необходимо отметить, что предварительный ключ не используется для шифрования трафика через VPN соединение это просто маркер, позволяющий управляющим ключами даемонам доверять друг другу.
psk.txt содержит строку для каждого удаленного сервера, с которым происходит соединение. В этом примере два сервера, каждый файл psk.txt будет содержать одну строку (каждый конец VPN общается только с другим концом.
На шлюзе #1 эта строка будет выглядеть примерно так:
W.X.Y.Z secret
То есть публичный IP-адрес противоположной стороны, пробел и текстовая строка c секретной фразой. Конечно, вам не стоит использовать в качестве ключевой фразы слово ''secret'' -- здесь применяются обычные правила выбора паролей.
На шлюзе #2 строка будет выглядеть примерно так:
A.B.C.D secret
То есть публичный IP адрес удаленной стороны и та же секретная фраза. Перед запуском racoon режим доступа к файлу psk.txt должен быть установлен в 0600 (т.е. запись и чтение только для root).
Вы должны запустить racoon на обоих шлюзах. Вам также потребуется добавить правила для включения IKE трафика, передающегося по UDP через порт ISAKMP (Internet Security Association Key Management Protocol). Опять же, они должны быть расположены насколько возможно ближе к началу набора правил.
ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
Как только racoon будет запущен, вы можете попробовать выполнить ping с одного шлюза на другой. Соединение все еще не зашифровано, но racoon установит параметры безопасности между двумя хостами -- это может занять время и вы можете заметить небольшую задержку перед началом ответа команды ping.
Как только параметры безопасности установлены, вы можете просмотреть их используя setkey(8). Запустите
setkey -D
на любом из хостов для просмотра информации о параметрах безопасности.
Это одна сторона проблемы. Другая сторона это настройка политики безопасности.
Для создания разумной политики безопасности давайте вспомним, что уже было настроено. Это рассмотрение относится к обеим концам соединения.
Каждый отправляемый IP пакет имеет заголовок, содержащий информацию о пакете. Заголовок включает IP адреса источника и назначения. Как мы уже знаем, приватные IP адреса, такие как 192.168.x.y, не могут появиться в интернет. Они должны быть сначала включены внутрь другого пакета. В этом пакете приватные IP адреса источника и назначения заменяются публичными IP адресами.
То есть исходящий пакет, который выглядит примерно так:
будет инкапсулирован в другой пакет, выглядящий примерно так:
Этой инкапсуляцией занимается устройство gif. Как вы можете видеть, теперь у пакета есть реальный IP адрес, исходный пакет был включен в этот пакет в виде данных, которые передаются через интернет.
Конечно, мы хотим зашифровать весь трафик между VPN. Вы можете сформулировать это на словах так:
''Если пакет отправляется с A.B.C.D, и предназначен для W.X.Y.Z, расшифровать его, используя необходимые параметры безопасности.''
''Если пакет отправляется с W.X.Y.Z, и предназначен для A.B.C.D, расшифровать его, используя необходимые параметры безопасности.''
Это похоже на желаемое, но не совсем то. Если вы сделаете это, весь трафик от и к W.X.Y.Z, даже если он не является частью VPN, будет зашифрован. Правильная политика такова:
''Если пакет отправляется с A.B.C.D, в нем инкапсулирован другой пакет и адрес назначения W.X.Y.Z, зашифровать его, используя необходимые параметры безопасности.''
''Если пакет отправляется с W.X.Y.Z, в нем инкапсулирован другой пакет и адрес назначения A.B.C.D, зашифровать его, используя необходимые параметры безопасности.''
Тонкое, но необходимое различие.
Политика безопасности также устанавливается с использованием setkey(8). В setkey(8) предусмотрен язык определения политики setkey(8). Вы можете или ввести инструкции по настройке со стандартного ввода, или использовать параметр -f
для задания файла, содержащего эти инструкции.
Настройка на шлюзе #1 (где есть публичный IP адрес A.B.C.D) для включения шифрования всего предназначенного W.X.Y.Z трафика:
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;
Поместите эти команды в файл (например, /etc/ipsec.conf) и запустите
# setkey -f /etc/ipsec.conf
spdadd
указывает setkey(8) добавить правило к базе данных политики безопасности. Остальная часть строки указывает какие пакеты будут соответствовать политике. A.B.C.D/32 и W.X.Y.Z/32 это IP адреса и сетевые маски, определяющие сети или хосты, к которым будет применяться данная политика. В данном случае мы хотим применить их к трафику между этими двумя хостами. Параметр ipencap
сообщает ядру, что эта политика должна применяться только к пакетам, инкапсулирующим другие пакеты. Параметр -P out
сообщает, что эта политика применяется к исходящим пакетам, и ipsec
-- то, что пакеты будут зашифрованы.
Оставшаяся часть строки определяет, как эти пакеты будут зашифрованы. Будет использоваться протокол esp
, а параметр tunnel
показывает, что пакет в дальнейшем будет инкапсулирован в IPsec пакет. Повторное использование A.B.C.D и W.X.Y.Z предназначено для выбора используемых параметров безопасности, и наконец параметр require
разрешает шифрование пакетов, попадающих под это правило.
Это правило соответствует только исходящим пакетам. Вам потребуется похожее правило, соответствующее входящим пакетам.
spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;
Обратите внимание, что вместо in
используется out
и IP адреса переставлены.
Другому шлюзу (с публичным IP адресом W.X.Y.Z) потребуются похожие правила.
spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require; spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;
Наконец, вам потребуется добавить правила к брандмауэру для включения прохождения пакетов ESP и IPENCAP в обе стороны. На обеих хостах потребуется добавить следующие правила:
ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
Поскольку правила симметричны, можно использовать их без изменения на обеих хостах
Исходящие пакеты теперь будут выглядеть примерно так:
Когда эти пакеты будут получены на удаленном конце VPN соединения, они будут расшифрованы (используя параметры безопасности, о которых договорился racoon). Затем они будут переданы интерфейсу gif, который ''развернет'' второй слой, оставив пакет с внутренними адресами, который сможет попасть во внутреннюю сеть.
Вы можете проверить безопасность тем же ping(8), который использовался ранее. Сначала войдите на шлюз A.B.C.D и запустите:
tcpdump dst host 192.168.2.1
В другой сессии на том же хосте запустите
ping 192.168.2.1
В этот момент вы должны увидеть примерно это:
XXX tcpdump output
Теперь, как видите, tcpdump(1) показывает ESP пакеты. Если вы попытаетесь просмотреть их с параметром -s
, то вероятно увидите нечто непонятное, поскольку применяется шифрование.
Поздравляем. Вы только что настроили VPN между двумя удаленными сетями.
Резюме
-
Настройте оба ядра с:
options IPSEC options IPSEC_ESP
-
Установите security/ipsec-tools. Отредактируйте ${PREFIX}/etc/racoon/psk.txt на обеих шлюзах, добавив запись для каждого IP адреса удаленного хоста и секретный ключ, который будет известен им обеим. Убедитесь, что режим доступа к файлу 0600.
-
Добавьте к /etc/rc.conf на каждом хосте следующие строки:
ipsec_enable="YES" ipsec_file="/etc/ipsec.conf"
-
Создайте /etc/ipsec.conf на каждом хосте с необходимыми строками spdadd. На шлюзе #1 он будет таким:
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require; spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;
А на шлюзе #2 таким:
spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require; spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;
-
Добавьте правила к брандмауэрам обеих хостов для включения IKE, ESP и IPENCAP трафика:
ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
Двух приведенных шагов должно быть достаточно для настройки и включения VPN. Машины в каждой сети смогут обращаться друг к другу по IP адресам, и весь трафик через соединение будет автоматически надежно зашифрован.
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.
Последние комментарии
Популярно:
Разделы статей:
Подскажите. подключение с ПК все работает все ок. Делал по вашей мурзилке.
Но при подключе...