Оценка эффективности систем защиты информации
Обновлено: 13.09.2025
В.В. Домарев, к.т.н.
Содержание:
Системный подход
Понятие системности заключается не просто в создании соответствующих механизмов защиты, а представляет собой регулярный процесс, осуществляемый на всех этапах жизненного цикла ИС. При этом все средства, методы и мероприятия, используемые для защиты информации объединяются в единый целостный механизм - систему защиты.
К сожалению, необходимость системного подхода к вопросам обеспечения безопасности информационных технологий пока еще не находит должного понимания у пользователей современных ИС.
Сегодня специалисты из самых разных областей знаний, так или иначе, вынуждены заниматься вопросами обеспечения информационной безопасности. Это обусловлено тем, что в ближайшие лет сто нам придется жить в обществе (среде) информационных технологий, куда перекочуют все социальные проблемы человечества, в том числе и вопросы безопасности:
Каждый из указанных специалистов по-своему решает задачу обеспечения информационной безопасности и применяет свои способы и методы для достижения заданных целей. Самое интересное, что при этом каждый из них в своем конкретном случае находит свои совершенно правильные решения. Однако, как показывает практика, совокупность таких правильных решений не дает в сумме положительного результата - система безопасности в общем и целом работает не эффективно.
Если собрать всех специалистов вместе, то при наличии у каждого из них огромного опыта и знаний, создать СИСТЕМУ информационной безопасности зачастую так и не удается. Разговаривая об одних и тех же вещах, специалисты зачастую не понимают друг друга поскольку у каждого из них свой подход, своя модель представления системы защиты информации. Такое положение дел обусловлено отсутствием системного подхода, который определил бы взаимные связи (отношения) между существующими понятиями, определениями, принципами, способами и механизмами защиты:
Постановка задачи
Одиннадцать отдельно взятых футболистов (даже очень хороших) не составляют команду до тех пор, пока на основе заданных целей не будет отработано взаимодействие каждого с каждым. Аналогично СЗИ лишь тогда станет СИСТЕМОЙ, когда будут установлены логические связи между всеми ее составляющими.
Как же организовать такое взаимодействие? В футболе команды проводят регулярные тренировки, определяя роль, место и задачи каждого игрока. Качество или эффективность команд оценивается по игре в матчах, результаты которых заносятся в турнирную таблицу. Таким образом, после проведения всех встреч команд (каждой с каждой), можно сделать вывод об уровне состояния мастерства как команды в целом, так и отдельных ее игроков. Побеждает тот, у кого наиболее четко организовано взаимодействие:
Выражаясь терминами современного бизнеса, для решения вопросов взаимодействия нужно перейти от "чисто" технического на "конкретно" логический уровень представления процессов создания и функционирования СИСТЕМ защиты информации. Хотелось бы, чтобы все специалисты, считающие себя профессионалами в информационных технологиях, поднялись чуть выше "багов" и "кряков" и уже сейчас задумались над тем как их знания и опыт будут логически увязаны со знаниями и опытом других специалистов.
В "строгой научной постановке" задача автора состоит в предоставлении пользователям вспомогательного инструмента "елки" - (модели СЗИ), а задача читателя (пользователя) - украсить эту "елку" новогодними игрушками - (своими знаниями и решениями). Даже если "игрушек" пока еще нет, наличие "елки" поможет выбрать и приобрести нужные "украшения".
Конечный результат работы (степень красоты елки) зависит от ваших желаний, способностей и возможностей. У кого-то получится хорошо, у кого-то - не совсем: Но это естественный процесс развития, приобретения знаний и опыта.
Кстати, оценить красоту елки (эффективность системы защиты) весьма проблематично, поскольку у каждого из нас свои требования и вкусы, о которых, как известно, не спорят, особенно с руководством.
Таким образом, многообразие вариантов построения информационных систем порождает необходимость создания различных систем защиты, учитывающих индивидуальные особенности каждой из них. В то же время, большой объем имеющихся публикаций вряд ли может сформировать четкое представление о том как же приступить к созданию системы защиты информации для конкретной информационной системы, с учетом присущих ей особенностей и условий функционирования. Как сказал классик юмора: ":многообразие ваших вопросов порождает многообразие наших ответов:"
Возникает вопрос: можно ли сформировать такой подход к созданию систем защиты информации, который объединил бы в нечто единое целое усилия, знания и опыт различных специалистов? При этом желательно что бы указанный подход был универсальным, простым, понятным и позволял бы в одинаковой степени удовлетворить любые вкусы (требования) гурманов информационной безопасности?
Модель представления системы информационной безопасности
Практическая задача обеспечения информационной безопасности состоит в разработке модели представления системы (процессов) ИБ, которая на основе научно-методического аппарата, позволяла бы решать задачи создания, использования и оценки эффективности СЗИ для проектируемых и существующих уникальных ИС. Что понимается под моделью СЗИ? Насколько реально создать такую модель? В упрощенном виде модель СЗИ представлена на Рис.1.
Рис.1. Модель СЗИ
Основной задачей модели является научное обеспечение процесса создания системы информационной безопасности за счет правильной оценки эффективности принимаемых решений и выбора рационального варианта технической реализации системы защиты информации.
Специфическими особенностями решения задачи создания систем защиты являются:
· неполнота и неопределенность исходной информации о составе ИС и характерных угрозах;
· многокритериальность задачи, связанная с необходимостью учета большого числа частных показателей (требований) СЗИ;
· наличие как количественных, так и качественных показателей, которые необходимо учитывать при решении задач разработки и внедрения СЗИ;
· невозможность применения классических методов оптимизации.
Требования к модели
Такая модель должна удовлетворять следующим требованиям (Рис. 2.):
Использоваться в качестве:
· Руководства по созданию СЗИ
· Методики формирования показателей и требований к СЗИ
· Инструмента (методика) оценки СЗИ
· Модели СЗИ для проведения исследований (матрица состояния)
Обладать свойствами:
· Универсальность
· Комплексность
· Простота использования
· Наглядность
· Практическая направленность
· Быть самообучаемой (возможность наращивания знаний)·
· Функционировать в условиях высокой неопределенности исходной информации
Позволять:
· Установить взаимосвязь между показателями (требованиями)
· Задавать различные уровни защиты
· Получать количественные оценки
· Контролировать состояние СЗИ
· Применять различные методики оценок
· Оперативно реагировать на изменения условий функционирования
· Объединить усилия различных специалистов единым замыслом
Рис. 2. Требования к модели СЗИ
Описание подхода к формированию модели ИБ
Как составить такое представление об информационной безопасности, что бы охватить все аспекты проблемы? Человек получает наиболее полное представление об интересующем его явлении, когда ему удается рассмотреть это нечто неизвестное со всех сторон, в трехмерном измерении.
Воспользуемся этим принципом.
Рассмотрим три "координаты измерений" - три группы составляющих модели СЗИ.
1. Из чего состоит (ОСНОВЫ)
2. Для чего предназначена (НАПРАВЛЕНИЯ)
3. Как работает (ЭТАПЫ)
Рис. 3. Три "координаты измерений" - три группы составляющих модели СЗИ
ОСНОВАМИ или составными частями практически любой сложной СИСТЕМЫ (в том числе и системы защиты информации) являются:
· Законодательная, нормативно-правовая и научная база;
· Структура и задачи органов (подразделений), обеспечивающих безопасность ИТ;
· Организационно-технические и режимные меры и методы (политика информационной безопасности);
· Программно-технические способы и средства.
Рис. 4. Координата ОСНОВЫ
НАПРАВЛЕНИЯ формируются исходя из конкретных особенностей ИС как объекта защиты. В общем случае, учитывая типовую структуру ИС и исторически сложившиеся виды работ по защите информации, предлагается рассмотреть следующие направления:
· Защита объектов информационных систем;
· Защита процессов, процедур и программ обработки информации;
· Защита каналов связи;
· Подавление побочных электромагнитных излучений.
· Управление системой защиты;
Рис. 5. Координата НАПРАВЛЕНИЯ
Но, поскольку каждое из этих НАПРАВЛЕНИЙ базируется на перечисленных выше ОСНОВАХ, то элементы ОСНОВ и НАПРАВЛЕНИЙ, рассматриваются неразрывно друг с другом. Например, одну из ОСНОВ под названием "Законодательная база:" необходимо рассматривать по всем НАПРАВЛЕНИЯМ, а именно:
Законодательная база защиты объектов:
Законодательная база защиты процессов, процедур и программ:
Законодательная база защиты каналов связи:
Законодательная база подавления побочных электромагнитных излучений:
Законодательная база по управлению и контролю самой системы защиты:
Аналогично следует рассматривать остальные грани ОСНОВ (структуру:, меры:, средства) по всем НАПРАВЛЕНИЯМ.
Как видите, для формирования самого общего представления о конкретной системе защиты необходимо ответить минимально на 20 (4*5=20) самых простых вопросов. Но и это еще не все... Далее необходимо рассмотреть ЭТАПЫ (последовательность шагов) создания СЗИ, которые необходимо реализовать в равной степени для каждого в отдельности НАПРАВЛЕНИЯ с учетом указанных выше ОСНОВ.
Проведенный анализ существующих методик (последовательностей) работ по созданию СЗИ позволяет выделить следующие ЭТАПЫ:
· Определение информационных и технических ресурсов, а также объектов ИС(!) подлежащих защите;
· Выявление полного множество потенциально возможных угроз и каналов утечки информации;
· Проведение оценки уязвимости и рисков информации (ресурсов ИС) при имеющемся множестве угроз и каналов утечки;
· Определение требований к системе защиты информации;
· Осуществление выбора средств защиты информации и их характеристик;
· Внедрение и организация использования выбранных мер, способов и средств защиты.
· Осуществление контроля целостности и управление системой защиты.
Рис. 6. Этапы создания систем защиты информации.
Поскольку ЭТАПОВ семь, и по каждому надо осветить 20 уже известных вам вопросов то в общей сложности для формирования представления о конкретной системе защиты необходимо ответить на 140 простых вопросов. Совершенно очевидно что по каждому вопросу (элементу) возникнет несколько десятков уточнений.
В общем случае количество элементов матрицы может быть определено из соотношения
K = Oi*Hj*Mk
Где
К - количество элементов матрицы
Oi - количество составляющих блока "ОСНОВЫ"
Hj - количество составляющих блока "НАПРАВЛЕНИЯ"
Mk - количество составляющих блока "ЭТАПЫ"
В нашем случае общее количество элементов "матрицы" равно 140
K=4*5*7=140.
поскольку Oi=4, Hj=5, Mk=7
Все это можно представить в виде своеобразного кубика Рубика, на гранях которого образовалась мозаика взаимосвязанных составляющих элементов системы защиты.
А теперь для простоты понимания попробуем преобразовать трехмерную фигуру в двухмерную. Для этого развернем трехмерный куб на плоскости (на листе бумаги) и получим трехмерную матрицу в виде двухмерной таблицы, которая поможет логически объединить составляющие блоков "ОСНОВЫ", "НАПРАВЛЕНИЯ" и "ЭТАПЫ" по принципу каждый с каждым.
Напомним, что матрица в виде двухмерной таблицы появляется не сама по себе, а формируется в каждом конкретном случае, исходя из конкретных задач по созданию конкретной СЗИ для конкретной ИС.
Представление элементов матрицы
Элементы матрицы имеют соответствующую нумерацию. Следует обратить внимание на обозначения каждого из элементов матрицы, где:
первое знакоместо (Х00) соответствует номерам составляющих блока "ЭТАПЫ",
второе знакоместо (0Х0) соответствует номерам составляющих блока "НАПРАВЛЕНИЯ",
третье знакоместо (00Х) соответствует номерам составляющих блока "ОСНОВЫ".
На Рис.7 представлен пример, элемента матрицы 321, который формируется с учетом следующих составляющих:
300 - Проведение оценки уязвимости и рисков (составляющая № 3 блока "ЭТАПЫ");
020 - Защита процессов и программ (составляющая № 2 блока "НАПРАВЛЕНИЯ")
001 - Нормативная база (составляющая № 1 блока "ОСНОВЫ")
Рис. 7. Пример нумерации элемента матрицы №321
Приведем пример содержания информации для элементов матрицы № 321, 322, 323, 324, которые объединяют следующие составляющие:
№ 3 (300 проведение оценки уязвимости и рисков) блока "ЭТАПЫ",
№ 2 (020 защита процессов и программ) блока "НАПРАВЛЕНИЯ"
№ 1, 2, 3, 4 (001 нормативная база, 002 структура органов, 003 мероприятия, 004 используемые средства) блока "ОСНОВЫ".
Вот что получилось:
Элемент № 321 содержит информацию о том насколько полно отражены в законодательных, нормативных и методических документах вопросы, определяющие порядок проведения оценки уязвимости и рисков для информации используемой в процессах и программах конкретной ИС?
Элемент № 322 содержит информацию о том имеется ли структура органов (сотрудники), ответственная за проведение оценки уязвимости и рисков для процессов и программ ИС?
Элемент № 323 содержит информацию о том определены ли режимные меры, обеспечивающие своевременное и качественное проведение оценки уязвимости и рисков для информации используемой в процессах и программах ИС?
Элемент № 324 содержит информацию о том применяются ли технические, программные или другие средства, для обеспечения оперативности и качества проведения оценки уязвимости и рисков в процессах и программах ИС?
Это содержание только четырех вопросов из ста сорока, но ответы на них уже позволяют сформировать некое представление о состоянии дел по защите информации в конкретной ИС.
В общем случае рассматриваются все 140 вопросов (по числу элементов матрицы). Полное содержание 140 элементов матрицы можно посмотреть здесь. Описание этих вопросов позволяют составить полное представление о СЗИ и оценить достигнутый уровень защиты.
Сложно? Да! Однако именно такой подход дает возможность держать правильное направление в процессе создания сложных систем защиты. ":Верной дорогой идете, товарищи:". А поскольку при этом постоянно учитываются взаимные логические связи между многочисленными элементами СЗИ, то есть шанс построить именно СИСТЕМУ, а не набор решений. Напомним, что матрица не сществует сама по себе, а формируется исходя из описания конкретной ИС и конкретных задач по защите информации в этой системе, см. рисунок:
Свойства матрицы
Предложенная модель представления СЗИ в виде трехмерной матрицы позволяет не только жестко отслеживать взаимные связи между элементами защиты, но может выступать в роли руководства по созданию СЗИ. Если вы, приступая к созданию системы защиты, не знаете с чего начать, попробуйте ответить на предлагаемые общие вопросы, начиная с любого из них. И когда вы пройдетесь по всем, то поймете что уже есть, а чего не хватает для достижения поставленной цели.
Если желаете поставить задачу на создание СЗИ, то заполнив 140 элементов матрицы соответствующими требованиями, получим достаточно полное техническое задание. Причем сформулировать эти требования можно на основе любых стандартов - международных, европейских, американских., российских, украинских:
Ну а как оценить эффективность создаваемой или уже функционирующей СЗИ?
Снова поможет подход на основе трехмерной матрицы. Только теперь по 140 показателям (элементам матрицы) надо выставить соответствующие оценки. Существует много методов оценок, выбирайте любой понятный и прозрачный для вас. Наиболее популярный на сегодняшний день метод "Три П" - пол, палец, потолок.
Наглядно указанные свойства матрицы приведены на Рис.8.
Рисунок 8. Свойства матрицы информационной безопасности
Программа оценки эффективности систем защиты информации "Оценка СЗИ"
Программа "Оценка СЗИ" иллюстрирует работу модели СЗИ представленной в виде трехмерной матрицы, описание которой приведено выше, она разработана с целью демонстрации преимуществ системного подхода к созданию и оценке эффективности систем защиты информации.
С помощью указанной программы осуществляется расчет условных показателей эффективности СЗИ, а также графическое представление состояния достигнутого уровня безопасности по отношению к заданному.
Программа "Оценка СЗИ" реализована на языке программирования Delphi и предназначена для оценки эффективности мероприятий, проводимых при создании и функционировании систем защиты информации.
Предложенная модель СЗИ в виде трехмерной матрицы позволяет не только жестко отслеживать взаимные связи между элементами защиты, но может выступать в роли руководства по созданию СЗИ. Если вы, приступая к созданию системы защиты, не знаете с чего начать, попробуйте ответить на предлагаемые в матрице вопросы, начиная с любого из них. И когда вы пройдетесь по всем вопросам, то поймете что уже сделано, а чего не хватает для достижения поставленной цели.
Если желаете поставить задачу на создание СЗИ, то заполнив 140 элементов (вопросов) матрицы соответствующими требованиями, получим достаточно полное техническое задание. Причем сформулировать эти требования можно на основе любых стандартов - международных, европейских, американских., российских, украинских:
Ну а как оценить эффективность создаваемой или уже функционирующей СЗИ?
Снова поможет подход на основе трехмерной матрицы. Только теперь по 140 показателям (элементам матрицы) надо выставить соответствующие оценки. Существует много методов оценок, выбирайте любой понятный и прозрачный для вас. Наиболее популярный на сегодняшний день метод "Три П" - пол, палец, потолок.
Интерфейсы программы с некоторыми комментариями представлены на рисунках 9, 10, 11, 12.
При внимательном рассмотрении можно узнать уже знакомую нам "матрицу знаний СЗИ" в несколько другом представлении.
На Рис. 9. показан интерфейс ввода данных. Заказчик определяет необходимые требования к системе защиты и устанавливает заданный уровень безопасности в соответствующие элементы матрицы. Экесперты в процессе проведения оценки качества созданной системы защиты определяют реализован ли заданный уровень безопасности и свои оценки выставляют в тех же элементах матрицы, только в режиме "достигнутый"
Рис. 9. Интерфейс ввода данных
На рис. 10 можно посмотреть графическеое представление количественных и качественных оценок по каждому из элементов матрицы. Здесь наглядно показано как сравнивается заданный уровень безопасности с достигнутым.
Рис. 10. Сравнение заданного и достигнутого уровеней безопасности.
Далее с помощью интерфейса на рис 11. имеется возможность получить представление о ситеме защиты в целом. Ее эффектиность наглядно отражена графически, а также расчитана в виде обобщенных показателей уровня безопаности (количественного и качественного)
Рис. 11. Графичекое представление оценки эффетивности СЗИ.
Не стоит забывать, что требования к СЗИ имеют разную степень важности, которую необходимо учитывать при расчетах, используя соответствующие коэффициенты важности. Интерфес для ввода коэффициентов важности представлен на рис. 12.
Рис. 12. Интерфес для ввода коэффициентов важности.
Вместо заключения (Read me):
Хочется напомнить золотое правило: если после долгих попыток ничего не получается, ознакомьтесь, наконец, с инструкцией для пользователя! Прежде чем приступить к использованию программы "Оценка СЗИ", желательно разобраться с особенностями похода к рассмотрению вопросов информационной безопасности, предложенного автором.
Здесь можно скачать файл инсталляции указанной программы оценки эффективности систем защиты информации. (680 793 байт)
Программа предназначена для свободного использования.
Источник: http://bezpeka.com/
Исследование эффективности средств защиты от шпионских программ
Обновлено: 13.09.2025Быстрый рост киберпреступности остро ставит вопрос: насколько эффективно анти-шпионские и антивирусные программные продукты защищают конфиденциальную информацию от программ, которые специально создаются для кражи этой информации?
Ведь от того, будет ли надежно защищена информация пользователей, зависит развитие и, в сущности, само дальнейшее существование электронной коммерции и финансовых расчетов в Сети.
В связи с угрозой утечки данных о реквизитах кредитных карт и другой конфиденциальной информации исследователи указывают на ощутимое снижение активности онлайновых покупателей. Другими словами, spyware бьет по доверию потребителей к Сети.
Согласно отчету компании Webroot "State of Spyware" за третий квартал 2005 года (http://www.webroot.com/land/sosreport-2005-q3.php), количество шпионских программ продолжает стремительно расти; возрастает и риск, которому подвергаются пользователи в Интернете. Исследование Consumer Reports за третий квартал 2005 показывает, что 86% пользователей так или иначе изменили свое поведение с Сети, боясь утечки данных о своей личности. 30% пользователей уменьшили общее время работы в Интернет; 53% пользователей перестали сообщать свою персональную информацию в Интернет; 25% отказались от покупок онлайн; 29% из тех, кто совершает покупки онлайн, стали реже покупать в Интернет.
Единственная цель нашего исследования - определение именно эффективности антишпионского программного обеспечения против программ, которыми все чаще пользуются киберпреступники для кражи конфиденциальной информации.
Методика нашего исследования такова, что каждый желающий, даже не очень опытный в программировании, сможет сам воспроизвести эти или подобные исследования - и получить сходный результат.
Изучая на протяжении многих лет ситуацию на мировом рынке программных продуктов, предназначенных для защиты конфиденциальной информации, мы пришли к выводу, что необходимо срочно провести собственное сравнительное тестирование антишпионских программных продуктов, опубликовав полученные результаты для всеобщего обсуждения, потому что:
- Хотя в сети Интернет постоянно публикуются различные сравнительные тесты антишпионских, антивирусных и т.п. программных продуктов, эти исследования основаны на совершенно различных методиках тестирования, расчета рейтингов и т.д. Поэтому тесты не всегда отражают реальное положение вещей. Например, одним из основных критериев при сравнении антишпионских продуктов является количество сигнатур в базе. Но даже самые лучшие продукты, побеждающие в таких рейтингах, не в состоянии бороться с угрозами, описанными ниже.
- Даже если в тесте одна программа заблокировала, к примеру, 10 из 10 вредоносных программ, а вторая только 7 из 10, это вовсе не означает, что первая программа лучше защитит конфиденциальную информацию пользователей. Как правило, к шпионским программам причисляются все программы, отсылающие третьей стороне любую информацию о пользователе, независимо от ценности этой информации. Таким образом, в одной группе оказываются и вполне безобидные программы, собирающие информацию о посещенных сайтах и сделанных в Интернете покупках - и чрезвычайно опасные программы и модули, специально разработанные для кражи банковских паролей и другой критической информации.
- Критерии оценки программ определяют результаты тестирования - во многих исследованиях среди критериев оказывается не столько эффективность против наиболее опасных шпионских программ, сколько способность закрывать всплывающие окна (pop-ups), борьба с adware и красота интерфейса.
- Маркетологи отлично знают, что тот товар, что лучше, не обязательно более распространен в мире. Как правило, лучше всех распространяется товар, торговая марка которого хорошо известна, и в продвижение которого на рынок вложены большие финансовые средства.
Цели тестирования
- Оценить программные продукты и составить рейтинг с точки зрения их эффективности против самых опасных шпионских программ - тех, которые опубликованы в сети Интернет в открытых исходных кодах со свободным доступом для всех желающих. Поскольку скомпилировать такой код можно по-разному, как правило, традиционный сигнатурный анализ с ним не справляется.
- Проверить качество работы "эвристических анализаторов", наличие которых в своих программных продуктах декларируют практически все всемирно известные производители антивирусных и антишпионских продуктов.
Предпосылки для разработки методики
В последнее время резко возросло количество публикаций о такой стремительно растущей разновидности киберпреступлений, как кража конфиденциальной информации с помощью программ-шпионов, и мерах по защите от них. В докладе "Превентивный подход к защите информации от современных шпионских программ" (http://bezpeka.com/en/lib/antispy/anot2868.html) подчеркивалась особая опасность угроз класса System Monitors (согласно классификации SpyAudit). К ним относятся кейлоггеры и их усовершенствованные модификации, позволяющие перехватывать нажатия клавиатуры (в пользовательском режиме и в режиме ядра системы), текст из окон приложений и буфера обмена, графические снимки экрана и др. Именно такие угрозы и являются предметом нашего рассмотрения, мы не включаем в понятие "шпионская программа" (spyware) угрозы класса adware, cookie и т.п. Последствия целенаправленной атаки с помощью кейлоггера несоизмеримы с вредом от внедрения adware на ПК пользователя. Со временем, System Monitors становятся все более опасными и вытесняют все остальные угрозы, которые ранее традиционно включались в понятие spyware. Это подтверждается многочисленными сообщениями в прессе, документами Anti-Spyware Coalition (http://www.antispywarecoalition.org), отчетами Webroot, Earthlink SpyAudit и другими ведущими компаниями и организациями в данной сфере. Подробно о нашей классификации шпионских программ см. статью "Шпионские программы и новейшие методы защиты от них" (http://bezpeka.com/ru/lib/sec/gen/art382.html).
Свое описание модели риска выпустила Anti-Spyware Coalition (http://www.antispywarecoalition.org/documents/RiskModelDescription.htm). К высокому риску Коалиция относит программы, самовоспроизводящиеся через массовые почтовые рассылки, червей и вирусы, а также программы, которые устанавливаются без разрешения или ведома пользователя посредством секьюрити-эксплойта, и программы, которые без согласия пользователя перехватывают сообщения email или интернет-пейджера, передают персональные данные или изменяют параметры защиты. Коалиция надеется, что ее рекомендации приведут к созданию более качественных антишпионских продуктов.
Что же может противопоставить пользователь персонального компьютера программам-шпионам?
Решение данной проблемы возможно только в использовании комплекса программных продуктов:
- Программный продукт N1 - это продукт, который использует эвристические механизмы защиты против программ-шпионов. Он оказывает защиту непрерывно и не использует никакие сигнатурные базы.
- Программный продукт N2 - это Антивирусный программный продукт, использующий постоянно обновляемые сигнатурные базы.
- Программный продукт N3 - это персональный Firewall, контролирующий выход в сеть Интернет с персонального компьютера на основании конфигурации, которую определяет сам пользователь.
Антивирусный программный продукт не способен защищать пользователя от новых неизвестных ранее вирусов со встроенными шпионскими модулями, т.к. новые вирусы на момент атаки еще не внесены в сигнатурную базу антивирусного продукта, и как следствие этого, сигнатурная база не успела обновиться на компьютере пользователя. В результате конфиденциальная информация пользователя оказывается похищенной.
Персональный файрволл задает много вопросов, на которые даже очень хорошо подготовленный пользователь может ответить некорректно, тем самым неправильно его сконфигурировав. Например, даже некоторые коммерческие мониторинговые программные продукты (не говоря даже о специализированных хакерских программных продуктах) используют процессы, которым заведомо разрешен выход в Интернет (браузеры, почтовые клиенты и т.д.). Как правило, пользователь обязан разрешить им выход в Интернет. А это приводит к тому, что украденная шпионской программой информация будет отослана в Интернет на заранее подготовленный злоумышленником адрес (email, ftp и т.д.). Другие типы шпионских программ обходят защиту файрволов иными способами и также невидимы для них.
Антишпионский программный продукт, использующий эффективные эвристические алгоритмы, способен работать непрерывно в фоновом режиме, не требует вмешательства пользователя и осуществляет защиту системы "на лету", блокируя любые попытки перехвата информации пользователя.
Но все ли пользователи устанавливают хотя бы те защитные программы, что имеются на рынке? К сожалению, далеко не все. По результатам недавнего исследования, проведенного совместно компанией AOL и организацией National Cyber Security Alliance (NCSA), на 81% ПК не установлен, по крайней мере, один из трех рекомендуемых компонентов интернет-защиты - межсетевой экран, обновляемый антивирус или приложение для защиты от шпионского ПО. Антивирусная программа вообще не инсталлирована или не обновлялась неделю и более на 56% домашних компьютеров. Межсетевые экраны с неправильными настройками обнаружены на 44% ПК. А антишпионская утилита отсутствует на 44% машин (http://bezpeka.com/ru/news/2005/12/08/5221.html).
Как же выбрать действительно надежную антишпионскую программу? Действительно ли программы, занимающие верхние позиции в различных рейтингах, надежно защитят информацию от кражи? Существующие методики сравнительного тестирования антишпионских продуктов, на основе которых и составляют рейтинги, не учитывают возможность защиты от неизвестных шпионских программ. Первым и одним из наиболее весомых критериев тестирования обычно является количество записей в сигнатурной базе (иными словами - количество обнаруживаемых spyware). Что дают такие сравнительные обзоры? Пользователь, ознакомившись с таблицей, выбирает один из продуктов, занимающих верхние позиции в результатах тестирования, устанавливает его на свой компьютер и верит, что теперь его персональная информация надежно защищена.
Между тем, даже для программиста средней руки не составляет труда написать собственную шпионскую программу, которая не попадет ни в одну сигнатурную базу и не будет обнаруживаться. Те, кто не обладает достаточной квалификацией, могут поступить еще проще - скачать из сети Интернет открытый исходный код шпионской программы. Остается только скомпилировать готовый код, внеся небольшие изменения. И в итоге опять получится уникальный код, против которого невозможно бороться только с помощью классического сигнатурного анализа.
Методика тестирования
Учитывая все вышесказанное, нами был выбран принципиально новый подход к сравнительному тестированию антишпионских программных продуктов. С одной стороны, он довольно прост - любой специалист в состоянии повторить испытания и убедиться в правильности результатов. С другой стороны, результаты тестирования получились наглядными и опровергают расхожее мнение, что самые популярные на сегодняшний день программные продукты надежно защищают конфиденциальную информацию пользователя от кражи.
Тестирование проводилось следующим образом.
Из сети Интернет были скачаны 9 шпионских программ с открытым исходным кодом:
- Key Logger by Jerome Scott II (K1)
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId
=1645&lngWId=7 - KeyLoggerMore_Sample (K2)
http://www.codeguru.com/code/legacy/system/KeyLoggerMore_Sample.zip - try_wnd1 (K3)
http://www.ladia.ru/cpp/appli/files/log.zip - KEYLOGGER (K4)
http://www.delphifr.com/gma/Keyloggers - KEY LOGGER, ENREGISTREMENT CRYPTÉ + DÉCODEUR (K5)
http://www.delphifr.com/code.aspx?id=12616 - SIMPLE PETIT KEYLOGGER (K6)
http://www.delphifr.com/code.aspx?id=12279 - TOUCHES DE CLAVIER EN SIMULTANNÉ (HOOK) (K7)
http://www.delphifr.com/code.aspx?id=12276 - Best Free Keylogger (BFK) (K8)
http://sourceforge.net/projects/bfk - Simple Python Keylogger for Windows (K9)
http://sourceforge.net/projects/pykeylogger
Данные исходные коды были скомпилированы и использовались в качестве тестовых кейлоггеров для проверки наиболее популярных антишпионских программ.
Испытания проводились на операционных системах Windows XP Professional SP2 и Windows 2000 SP4 с последними обновлениями, на 32-битной архитектуре Intel.
Для тестирования были выбраны 22 всемирно известные антишпионские программы, включаемые в большинство Интернет-рейтингов:
Кроме антишпионских продуктов интерес представляют также антивирусные продукты, поскольку на сегодняшний день практически все их производители декларируют функции борьбы со spyware. Поэтому был проведен отдельный тест антивирусных продуктов на тех же шпионских программах.
Для тестирования были выбраны 22 всемирно известные антивирусные программы, включаемые в большинство Интернет-рейтингов (для нашего тестирования использовался специализированный интернет-ресурс http://www.virustotal.com):
Продукт | URL | Разработчик | Версия | Обновление |
---|---|---|---|---|
AntiVir | http://www.hbedv.com/en/ | H+BEDV (AntiVir) | 6.33.0.70 | 12.23.2005 |
Avast | http://www.avast.com/ | ALWIL (Avast! Antivirus) | 4.6.695.0 | 12.22.2005 |
AVG | http://www.grisoft.com/ | Grisoft (AVG) | 718 | 12.23.2005 |
Avira | http://www.avira.com/ | AVIRA (AVIRA Desktop) | 6.33.0.70 | 12.23.2005 |
BitDefender | http://www.bitdefender.com/ | Softwin (BitDefender) | 7.2 | 12.23.2005 |
CAT-QuickHeal | http://www.quickheal.co.in/ | Cat Computer Services (Quick Heal) | 8 | 12.21.2005 |
ClamAV | http://www.clamwin.com/ | ClamAV (ClamWin) | devel-20051108 | 12.19.2005 |
DrWeb | http://www.drweb.com/ | Doctor Web, Ltd. (DrWeb) | 4.33 | 12.23.2005 |
eTrust-Iris | http://www.ca.com/ | Computer Associates (Iris, Vet) | 7.1.194.0 | 12.23.2005 |
eTrust-Vet | http://www.ca.com/ | Computer Associates (Iris, Vet) | 12.4.1.0 | 12.23.2005 |
Fortinet | http://www.fortinet.com/ | Fortinet (Fortinet) | 2.54.0.0 | 12.23.2005 |
F-Prot | http://www.f-prot.com/ | FRISK Software (F-Prot) | 3.16c | 12.22.2005 |
Ikarus | http://www.ikarus.at/ | Ikarus Software (Ikarus) | 0.2.59.0 | 12.23.2005 |
Kaspersky | http://www.kaspersky.com/ | Kaspersky Lab (AVP) | 4.0.2.24 | 12.23.2005 |
McAfee | http://www.mcafee.com/ | McAfee (VirusScan) | 4657 | 12.23.2005 |
NOD32v2 | http://www.nod32.com/ | Eset Software (NOD32) | 1.1335 | 12.22.2005 |
Norman | http://www.norman.com/ | Norman (Norman Antivirus) | 5.70.10 | 12.23.2005 |
Panda | http://www.pandasoftware.com/ | Panda Software (Panda Platinum) | 8.02.00 | 12.22.2005 |
Sophos | http://www.sophos.com/ | Sophos (SAV) | 4.01.0 | 12.23.2005 |
Symantec | http://www.symantec.com/ | Symantec (Norton Antivirus) | 8 | 12.23.2005 |
TheHacker | http://www.hacksoft.com.pe/ | Hacksoft (The Hacker) | 5.9.1.060 | 12.21.2005 |
VBA32 | http://www.anti-virus.by/ | VirusBlokAda (VBA32) | 3.10.5 | 12.22.2005 |
Результаты тестирования
Результаты тестирования антишпионских продуктов:
AntiSpy Product Test Spy | K1 | K2 | K3 | K4 | K5 | K6 | K7 | K8 | K9 |
---|---|---|---|---|---|---|---|---|---|
Ad-aware SE Pro | - | - | - | - | - | - | - | - | - |
AntiSpy | - | - | - | - | - | - | - | - | - |
BPS Spyware Remover | - | - | - | - | - | - | - | - | + |
CounterSpy | - | - | - | - | - | - | - | - | - |
Maxion Spy Killer | - | - | - | - | - | - | - | - | - |
McAfee Anti-Spyware | - | - | - | - | - | - | - | + | - |
Microsoft AntiSpyware | - | - | - | - | - | - | - | - | - |
PestPatrol | - | - | - | - | - | - | - | - | - |
PrivacyKeyboard | + | + | + | + | + | + | + | + | + |
Spy Cleaner Gold | - | - | - | - | - | - | - | - | - |
Spy Sweeper | - | - | - | - | - | - | - | + | - |
Spybot Search & Destroy | - | - | - | - | - | - | - | - | - |
SpyHunter | - | - | - | - | - | - | - | - | - |
SpyRemover | - | - | - | - | - | - | - | - | - |
SpySubtrac | - | - | - | - | - | - | - | + | - |
Spyware Be Gone | - | - | - | - | - | - | - | - | - |
Spyware Blaster | - | - | - | - | - | - | - | - | - |
Spyware Crusher | - | - | - | - | - | - | - | - | - |
Spyware Doctor | - | - | - | - | - | - | - | - | - |
Spyware Stormer | - | - | - | - | - | - | - | - | - |
TrueWatch | - | - | - | - | - | - | - | + | + |
XoftSpy | - | - | - | - | - | - | - | - | - |
Результаты тестирования антивирусных продуктов:
AntiVirus Product Test Spy | K1 | K2 | K3 | K4 | K5 | K6 | K7 | K8 | K9 |
---|---|---|---|---|---|---|---|---|---|
AntiVir | no | no | no | Heuristic / Trojan. Keylogger |
no | Heuristic /Trojan. Keylogger |
no | no | no |
Avast | no | no | no | no | no | no | no | no | no |
AVG | no | no | no | no | no | no | no | no | no |
Avira | no | no | no | Heuristic /Trojan. Keylogger |
no | Heuristic /Trojan. Keylogger |
no | no | no |
BitDefender | no | no | no | no | no | no | no | Generic .Malware. SLM. 10535C5E |
no |
CAT-QuickHeal | no | no | no | Monitor. KeyLogger. i (Not a Virus) |
no | no | no | Monitor. BFK. 11 (Not a Virus) |
no |
ClamAV | no | no | no | no | no | no | no | no | no |
DrWeb | Trojan .KeyLogger. 342 |
no | no | no | no | no | no | no | no |
eTrust-Iris | no | no | no | no | no | no | no | no | no |
eTrust-Vet | no | no | no | no | no | no | no | no | no |
Fortinet | no | no | no | no | no | no | no | Keylog!tr | no |
F-Prot | no | no | no | no | no | no | no | no | no |
Ikarus | no | no | no | no | no | no | no | no | no |
Kaspersky | no | no | no | not-a-virus: Monitor. Win32. KeyLogger.i |
no | no | no | not-a-virus: Monitor. Win32. BFK.11 |
no |
McAfee | no | no | no | no | no | no | no | Keylog.gen | no |
NOD32v2 | no | no | no | no | no | no | no | probably unknown NewHeur_PE virus |
no |
Norman | no | no | no | no | no | no | no | no | no |
Panda | no | no | no | no | no | no | no | no | no |
Sophos | no | no | no | no | no | no | no | no | no |
Symantec | no | no | no | no | no | no | no | no | no |
TheHacker | no | no | no | no | no | no | no | no | no |
VBA32 | Trojan. KeyLogger. 342 |
no | no | no | no | no | no | no | no |
Итоговая таблица
Рейтинг продуктов, осуществляющих противодействие программам-шпионам:
Выводы
Результаты тестирования оказались неожиданными даже для проводивших тестирование специалистов. Ведь программы-шпионы, из которых были скомпилированы тестовые шпионы, общедоступны, они свободно распространяются в сети Интернет в виде открытых исходных кодов.
Результаты тестирования четко показали, что самые современные антивирусные и антишпионские продукты не в состоянии противостоять краже конфиденциальной информации с персональных компьютеров через встроенные в вирусы шпионские программы, количество которых постоянно возрастает.
Программный продукт производства ООО "Центр информационной безопасности" PrivacyKeyboard занял первое место, что объясняется отсутствием сигнатурных баз в принципе. Реализованный в программе подход позволяет одинаково эффективно защищать как от известных угроз, связанных с перехватом информации пользователей ПК, так и от неизвестных.
На втором месте оказались 5 продуктов - TrueWatch компании Esaya, Inc., AntiVir компании H+BEDV, Avira компании AVIRA (AVIRA Desktop), CAT-QuickHeal компании Cat Computer Services, Kaspersky Anti-Virus Personal Pro компании Kaspersky Lab, которые справились с двумя из девяти шпионов.
Третье место разделили сразу 10 продуктов. Они смогли обнаружить лишь один (!) из девяти шпионов.
Все остальные 28 продуктов оказались бессильны и не смогли обнаружить ни одного (!) из тестовых шпионов.
Наша методика открыта и потому исключает предвзятость. Любые специалисты в состоянии воспроизвести подобное тестирование, самостоятельно скомпилировав собственные тестовые программы из исходного кода, свободно распространяемого в Интернет, и с условиями испытаний, отличающимися от наших.
Источник: http://bezpeka.com/
Безопасность компьютерной сети: Сканер в вопросах и ответах
Обновлено: 13.09.2025Что такое сканер?
Сканер — это программа, предназначенная для автоматизации процесса поиска слабостей в защите компьютеров, подключенных к сети в соответствии с протоколом TCP/IP. Наиболее совершенные сканеры обращаются к портам TCP/IP удаленного компьютера и в деталях протоколируют отклик, который они получают от этого компьютера. Запустив сканер на своем компьютере, пользователь, скажем, из подмосковной Малаховки, лаже не выходя из дома, может найти бреши в защитных механизмах сервера, расположенного, например, в Лос-Анджелесе.
Каковы системные требования для работы со сканерами?
Большинство сканеров предназначено для работы в среде операционном системы UNIX, хотя к настоящему времени такие программы имеются практически для любой операционной системы. Возможность запустить сканер на конкретном компьютере зависит от операционной системы, под управлением которой работает этот компьютер, и от параметров подключения к Internet. Есть сканеры, которые функционируют только в среде UNIX, а с остальными операционными системами оказываются несовместимыми. Другие отказываются нормально работать на устаревших компьютерах с Windows 3.11 и с медленным (до 14 400 бит/с) доступом к Internet, осуществляемым по коммутируемым линиям. Такие компьютеры будут надоедать сообщениями о переполнении стека, нарушении прав доступа или станут просто зависать.
Критичным является и объем оперативной памяти компьютера. Сканеры. которые управляются при помощи командной строки, как правило, более умеренны в своих требованиях, предъявляемых к объему оперативной памяти. А самыми "прожорливыми" являются сканеры, снабженные оконным графическим интерфейсом пользователя.
Трудно ли создать сканер?
Написать сканер не очень трудно. Для этого достаточно хорошо знать протоколы TCP/IP, уметь программировать на С или Perl и на языке сценариев, а также разбираться в программном обеспечении сокетов. Но и в этом случае не следует ожидать, что созданный вами сканер принесет большую прибыль, поскольку в настоящее время предложение на рынке сканеров значительно превышает спрос на них. Поэтому наибольшая отдача от усилий, вложенных в написание сканера, будет скорее моральной (от осознания хорошо выполненной работы), чем материальной.
Что не по силам даже самому совершенному сканеру?
Не следует переоценивать положительные результаты, которых можно достичь благодаря использованию сканера. Действительно, сканер может помочь выявить дыры в защите хост-машины, однако в большинстве случаев информацию о наличии этих дыр сканер выдает в довольно завуалированном виде, и ее надо еще уметь правильно интерпретировать. Сканеры редко снабжаются достаточно полными руководствами пользователя. Кроме того. сканеры не в состоянии сгенерировать пошаговый сценарий взлома исследуемой компьютерной системы. Поэтому для эффективного использования сканеров на практике прежде всего необходимо научиться правильно интерпретировать собранные с их помощью данные, а это возможно только при наличии глубоких знаний в области сетевой безопасности и богатого опыта.
Насколько легальны сканеры?
Обычно сканеры создаются и используются специалистами в области сетевой безопасности. Как правило, они распространяются через сеть Internet. чтобы с их помощью системные администраторы могли проверять компьютерные сети на предмет наличия в них изъянов. Поэтому обладание сканерами, равно как и их использование на практике, вполне законно. Однако рядовые пользователи, не являющиеся системными администраторами. должны быть готовы к тому, что, если они будут применять сканеры для обследования чужих сетей, то могут встретить яростное сопротивление со стороны администраторов этих сетей. Более того, некоторые сканеры в процессе поиска брешей в защите компьютерных сетей предпринимают такие действия, которые по закону могут квалифицироваться как несанкционированный доступ к компьютерной информации, или как создание, использование и распространение вредоносных программ, или как нарушение правил эксплуатации компьютеров, компьютерных систем и сетей. И если следствием этих деяний стало уничтожение, блокирование, модификация или копирование информации, хранящейся в электронном виде, то виновные в них лица в соответствии с российским законодательством подлежат уголовному преследованию. А значит, прежде чем начать пользоваться первым попавшимся под руку бесплатным сканером для UNIX-платформ, стоит убедиться, а не копирует ли случайно этот сканер заодно и какие-нибудь файлы с диска тестируемой им хост-машины (например, файл password из каталога /ETC).
В чем различие между сканерами и сетевыми утилитами?
Часто к сканерам ошибочно относят утилиты типа host, rusers, finger. Traceroute, Showmount. Связано это с тем, что, как и сканеры, данные утилиты позволяют собирать полезную статистическую информацию о сетевых службах на удаленном компьютере. Эту информацию можно затем проанализировать на предмет выявления ошибок в их конфигурации.
Действительно, сетевые утилиты выполняют ряд функций, которые характерны для сканеров. Однако в отличие от последних использование этих утилит вызывает меньше подозрений у системных администраторов. Выполнение большинства сетевых утилит на удаленной хост-машине практически не оказывает никакого влияния на ее функционирование. Сканеры же зачастую ведут себя как слон в посудной лавке и оставляют следы, которые трудно не заметить. Кроме того, хороший сканер — явление довольно редкое, а сетевые утилиты всегда под рукой. К недостаткам сетевых утилит можно отнести то, что приходится выполнять вручную слишком большую работу, чтобы добиться того же результата, который при помощи сканера получается автоматически.
Упомянутые выше сетевые утилиты можно встретить в любой операционной системе семейства UNIX. Однако предоставляемые ими возможности для сбора данных об удаленной хост-машине интересуют не только пользователей UNIX. Поэтому неудивительно, что многие из jthx утилит были перенесены в другие операционные системы.
Для Windows 95/98 имеются программные пакеты NetScan Tools (http://www.eskimo.com/~nwps/index.html). Network Toolbox (http://www.jriver. com/netbox.html) и TCP/IP Surveyor (http://www.rocketdownload.com/details/inte/wssrv32nsrc.htm), которые реализуют выполнение сетевых утилит host, rusers, finger, Traceroute, ping, WHOIS. Последний из упомянутых пакетов не только осуществляет сбор информации о сети и подключенных к ней компьютерах, но и представляет собранную таким образом информацию в виде графа, вершинами которого служат найденные в сети маршрутизаторы, серверы и рабочие станции.
Пользователям персональных компьютеров типа Macintosh можно посоветовать обратить внимание на программные пакеты МасТСР Watcher (http://waldo.wi.mit.edu/WWW/tools/util/Mac/MacTCP_Watchei), Querylt! (http://tucows.online.ru/mac/adnload/dlqueryitinac.html) и What Route (http://homepages.ihug.co.nz/~bryanc).
Источник: http://www.computerbooks.ru/books/Security/Book-Protection-to-Information/4/Index2.htm
Сокрытие PHP
Обновлено: 13.09.2025В общем случае внесение неясности ненамного улучшает защищенность системы. Но бывают случаи, когда следует использовать малейшую возможность.
Несколько несложных методик могут помочь вам скрыть PHP, что усложняет работу потенциального взломщика, который пытается найти брешь в вашей системе. Установив опцию expose_php = off в конфигурационном файле php.ini, вы уменьшите количество доступной хакеру информации.
Еще одна методика заключается в настройке веб-сервера таким образом, чтобы он обрабатывал файлы с различными расширениями как PHP-скрипты. Это можно указать как в .htaccess файлах, так и конфигурационном файле Apache. В таком случае вы сможете использовать при написании кода нестандартные расширения:
Пример 32-1. Маскировка PHP под другие языки программирования# Теперь PHP-скрипты могут иметь те же расширения, что и другие языки программирования AddType application/x-httpd-php .asp .py .pl
Или скрыть его совсем:
Пример 32-2. Использование неизвестных расширений для PHP-скриптов# Теперь PHP-скрипты могут иметь неизвестные типы файлов AddType application/x-httpd-php .bop .foo .133t
Также можно спрятать его под видом HTML-кода, что приведет к потере производительности, так как все HTML файлы будут обрабатываться как PHP-код:
Пример 32-3. Маскировка PHP-кода под html-файлы# Теперь PHP-скртпы могут выглядеть как обыкновенный HTML AddType application/x-httpd-php .htm .html
Чтобы достичь желаемого эффекта, вы должны переименовать все ваши скрипты в соответствии с выбранным вами расширением. Описанное в этом разделе документации повышение безопасности через сокрытие PHP имеет мало недостатков при небольших затратах.
источник: http://php.ru/manual/security.hiding.html
Защита хранилища базы данных
Обновлено: 13.09.2025SSL/SSH защищает данные, которыми обмениваются клиент и сервер, но не защищают сами данные, хранимые в базе данных. SSL - протокол шифрования на уровне сеанса передачи данных.
В случае, если взломщик получил непосредственный доступ к БД (в обход веб-сервера), он может извлечь интересующие данные или нарушить их целостность, поскольку информация не защищена на уровне самой БД. Шифрование данных - хороший способ предотвратить такую ситуацию, но лишь незначительное количество БД предоставляют такую возможность.
Наиболее простое решение этой проблемы - установить вначале обыкновенный программный пакет для шифрования данных, а затем использовать его в ваших скриптах. PHP, в таком случае, может помочь вам в работе с такими расширениями как Mcrypt и Mhash, реализующими различные алгоритмы криптования. При таком подходе скрипт вначале шифрует сохраняемые данные, а затем дешифрует их при запросе. Ниже приведены примеры того, как работает шифрование данных в PHP-скриптах.
В случае работы со скрытыми служебными данными их нешифрованное представление не требуется (т.е. не отображается), и, как следствие, можно использовать хеширование. Хорошо известный пример хэширования - хранение MD5-хеша от пароля в БД, вместо хранения оригинального значения. Более детальная информация доступна в описании функций crypt() and md5().
Использование хешированных паролей<?php // сохранение хешированного пароля $query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');", addslashes($username), md5($password)); $result = pg_exec($connection, $query); // проверка введенного пользователем логина и пароля на корректность $query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';", addslashes($username), md5($password)); $result = pg_exec($connection, $query); if (pg_numrows($result) > 0) { echo "Welcome, $username!"; } else { echo "Authentication failed for $username."; } ?>
источник: http://php.ru/manual/security.database.storage.html
Настройка Squid
Обновлено: 13.09.2025
Автор: erasha@bsdportal.ru
Данная статья описывает настройку прокси сервера SQUID версии 2.5.14 с использованием аудентификации по mac адресу с ограничением скорости закачки с помощью пулов задержки, анализа статистики лога с помощью sarg-2.2. А также в кратце описан процесс поднятия WWW сервера на основе apache-1.3.36 для удобства доступа до статистики полученной sarg. Для тех, кто торопиться, может помочь статья "Быстрая настройка Squid". А тех, кто считает, что все равно с быстрой настройки сюда же и вернуться, прошу читать дальше.
Настройка сервера FreeBSD с поддержкой NAT
Для начала надо пересобрать ядро с поддержкой DIVERT для NAT и ipfw.
Добавляем вот это в конфигурационный файл ядра:
options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPFIREWALL_FORWARD options IPFIREWALL_FORWARD_EXTENDED options IPDIVERT
пересобираем ядро и устанавливаем его. Затем в файл /etc/rc.conf добавляем
firewall_enable="YES" firewall_script="/etc/rc.ipfw1" natd_enable="YES" natd_interface="fxp0"
первая строка включает firewall ipfw, вторая указывает какой скрипт указания правил использовать при загрузке, третья включает NAT, чертвертая определяет на каком внешнем сетевом интерфейсе будет работать NAT. В моем случае внешний интерфейс fxp0.
потом создаем файл rc.ipfw1 и ставим ему безопасные права
#cd /etc #touch rc.ipfw1 #chmod 600 rc.ipfw1
с таким содержанием
#!/bin/sh fwcmd="/sbin/ipfw" ${fwcmd} -f flush # VAR if_inet="fxp0" # внешний сетевой интерфейс ip_inet="aaa.aaa.aaa.aaa" # ip внешнего сетового интерфейса net="bbb.bbb.b.b/24" # ваша подсетка # Local ${fwcmd} add allow all from any to any via lo0 ${fwcmd} add deny all from any to 127.0.0.0/8 ${fwcmd} add deny all from 127.0.0.0/8 to any # тут разрешаю SSH чтоб безбоязненно можно было удаленно # править правила которые идут дальше ${fwcmd} add allow tcp from any to any ssh ${fwcmd} add allow tcp from any ssh to any # anti spoofing #1 ${fwcmd} add deny all from any to 10.0.0.0/8 via ${if_inet} ${fwcmd} add deny all from any to 172.16.0.0/12 via ${if_inet} ${fwcmd} add deny all from any to 192.168.0.0/16 via ${if_inet} ${fwcmd} add deny all from any to 0.0.0.0/8 via ${if_inet} ${fwcmd} add deny all from any to 169.254.0.0/16 via ${if_inet} ${fwcmd} add deny all from any to 192.0.2.0/24 via ${if_inet} ${fwcmd} add deny all from any to 224.0.0.0/4 via ${if_inet} ${fwcmd} add deny all from any to 240.0.0.0/4 via ${if_inet} # NAT ${fwcmd} add divert 8668 ip from ${net} to any out via ${if_inet} ${fwcmd} add divert 8668 ip from any to ${ip_inet} in via ${if_inet} # anti spoofing #2 ${fwcmd} add deny all from 10.0.0.0/8 to any via ${if_inet} ${fwcmd} add deny all from 172.16.0.0/12 to any via ${if_inet} ${fwcmd} add deny all from 192.168.0.0/16 to any via ${if_inet} ${fwcmd} add deny all from 0.0.0.0/8 to any via ${if_inet} ${fwcmd} add deny all from 169.254.0.0/16 to any via ${if_inet} ${fwcmd} add deny all from 192.0.2.0/24 to any via ${if_inet} ${fwcmd} add deny all from 224.0.0.0/4 to any via ${if_inet} ${fwcmd} add deny all from 240.0.0.0/4 to any via ${if_inet} # все остальное разрешить (желательно только то что нужно =) ) ${fwcmd} add allow all from any to any
сразу отмечу для создания правил безопастности более индивидуально посетите хороший сайт http://ipfw.ism.kiev.ua/ посвященный настройки firewall ipfw и эти правила для aaa.aaa.aaa.aaa реального IP
Изменения вносить лучше в /etc/rc.conf и создание /etc/rc.ipfw1 до перезагрузки после установки пересобранного ядра.
Собственно настройка Squid
Устанавливаем Squid командами:
#cd /usr/ports/www/squid #make config
или так
cd /usr/ports/www/squid && make config
ставим галочки напротив
SQUID_DELAY_POOLS SQUID_ARP_ACL SQUID_RCNG
к уже установленным. Первая строка включает поддержку пулов задержки для ограничения скорости, вторая включает поддержку использования в ACL МАС адресов, третья указавает на создание загрузочного скрипта в rc.d . Нажимаем ОК. Потом делаем
#make install clean
Затем идем в /usr/local/etc/squid создаем файл squid.conf с безопасными правами
#touch squid.conf #chmod 600 squid.conf
или можно, как вариант, скопировать еще не настроенный конфигурационный файл Squid по умолчанию и его редактировать.
#cp ./squid.conf.default ./squid.conf
У меня squid.conf примерно имеет такое содержание:
http_port 3128 icp_port 3130 hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin ? no_cache deny QUERY cache_mem 32 MB maximum_object_size 2000 KB maximum_object_size_in_memory 1000 KB cache_dir ufs /usr/local/squid/cache 2000 16 256 auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours auth_param basic casesensitive off refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localnet src 192.168.0.0/24 acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Icq_port port 5190 # icq acl Irc_port port 6667 # irc acl MSN_port port 1863 # msn messager acl CONNECT method CONNECT acl erasha arp XX:XX:XX:XX:XX:XX acl user1 arp XX:XX:XX:XX:XX:XX acl user2 arp XX:XX:XX:XX:XX:XX acl user3 arp XX:XX:XX:XX:XX:XX acl stop_files url_regex -i .mp3$ .vqf$ .rpm$ .avi$ .mpeg$ .rm$ .raw$ .wav$ .mov$ .ogg$ .exe$ .com$
acl StopWWW dstdomain "/usr/local/etc/squid/stopWWW.acl" http_access allow erasha http_access deny stop_files http_access deny StopWWW http_access allow user1 http_access allow user2 http_access allow user3 http_access allow CONNECT Icq_port http_access allow localnet Icq_port http_access allow CONNECT Irc_port http_access allow localnet Irc_port http_access allow CONNECT MSN_port http_access allow localnet MSN_port http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny all http_reply_access allow all icp_access allow all visible_hostname proxy icon_directory /usr/local/etc/squid/icons error_directory /usr/local/etc/squid/errors/Russian-koi8-r delay_pools 3 delay_class 1 2 delay_parameters 1 6000/2000 3000/2000 delay_access 1 allow user1 delay_access 1 deny all delay_class 2 2 delay_parameters 2 15000/3000 15000/3000 delay_access 2 allow user2 delay_access 2 deny all delay_class 3 2 delay_parameters 3 60000/3000 60000/3000 delay_access 3 allow user3 delay_access 3 deny all coredump_dir /usr/local/squid/cache
Файл настроек Squid изнутри
http_port 3128
указываем порт для запросов клиентов, можно задать 8080.
icp_port 3130
указываем номер порта Internet Cache Protocol (ICP) для открытия возможности использования кешей соседних squid прокси.
hierarchy_stoplist cgi-bin ?
Настроенный таким образом сервер Squid не будет кешировать динамически генерируемые страницы (поисковые сервера, некоторые другие серверы и чаты), а будет напрямую перенаправлять запрос серверу.
acl QUERY urlpath_regex cgi-bin ? no_cache deny QUERY
эти две строки примерно аналогичны предыдущей, но касательно кэша... то есть если каким-либо данные странички попали в кэш (ну например работал сквид без предыдущей строчки некоторое время), то они немедленно удаляются из кеша.
cache_mem 32 MB
настраиваем, сколько оперативной памяти сервер Squid может забрать под свои нужды. По умолчанию стоит 8 мегабайт, что хватит лишь при очень слабой загрузке.
maximum_object_size 2000 KB
максимальный размер объектов, которые будут сохранены на диск. По умолчанию стоит 4096 килобайт.
maximum_object_size_in_memory 1000 KB
максимальный размер объектов, которые будут сохранены в кэше. По умолчанию стоит 4096 килобайт.
cache_dir ufs /usr/local/squid/cache 2000 16 256
указывает сквиду, где сохранять кешируемые файлы. Указывает отдать под кеш 2000 мегабайт и создать 16 и 256 соответственно каталогов 1го и 2го уровня. Про каталоги сами все поймете, когда загляните в место, где у сквида кэш.
auth_param basic children 5
количество процессов авторизации запросов.
auth_param basic realm Squid proxy-caching web server
указываем надпись, которая будет выводиться с запросом авторизации.
auth_param basic credentialsttl 2 hours
указываем время хранения авторизации, в данном случае 2 часа.
auth_param basic casesensitive off
указываем, что регистр введенных данных роли не играет.
refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320
в этих трех строках мы указываем сколько времени в минутах объект в кеше считается свежим и какой процент объектов оставлять с последнего обновления.
acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localnet src 192.168.0.0/24 acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Icq_port port 5190 # icq acl Irc_port port 6667 # irc acl MSN_port port 1863 # msn messager acl CONNECT method CONNECT
Здесь с помощью acl мы задаем localhost, локальную сеть, порты на которые мы разрешим выходить программам через наш прокси. Также указываем manager протокол cache_object, используемого для управления и мониторинга кеша.
acl CONNECT method CONNECT
включает поддержку проброски соединения с помощью команды протокола CONNECT.
acl erasha arp XX:XX:XX:XX:XX:XX acl user1 arp XX:XX:XX:XX:XX:XX acl user2 arp XX:XX:XX:XX:XX:XX acl user3 arp XX:XX:XX:XX:XX:XX
с помощью acl...arp указываем МАС адреса сетевых карт пользователей, которым мы в дальнейшем разрешать/запрещать доступ к интернету. вместо XX:XX:XX:XX:XX:XX указываем МАС адрес сетевой карты компьютера пользователя. Скрипт для получения МАС адреса будет приведен в приложении.
acl stop_files url_regex -i .mp3$ .vqf$ .rpm$ .avi$ .mpeg$ .wav$ .mov$ .ogg$ .exe$ .com$
здесь мы указываем расширения файлов которые мы запретим для закачки.
acl StopWWW dstdomain "/usr/local/etc/squid/stopWWW.acl"
здесь указываем файл в котором указываем адреса сайтов на которые нельзя ходить юзерам. файл имеет такой вид
.zaycev.net .rmp.ru .berkova.net .sexmovies.ru .mp3real.ru .erovideo.ru .muzudar.ru
это как бы подборка сайтов sex содержания и с mp3, т.к. в stop_files мы не закрыли архивы, а на некоторых сайтах лежат mp3 с расширением например rar, и пользователи могут закачивать музыку потом меняя расширение у файлов, поэтому я решил запрещать сами сайты.
http_access allow erasha http_access deny stop_files http_access allow user1 http_access allow user2 http_access allow user3
Здесь мы разрешаем с помошь http_access allow доступ до интернета, а используя http_access deny запрещаем выкачивать stop_files с расширениями указанными выше. Обратите внимание что разрешение доступа до интернета для пользователя erasha стоит выше запрета на закачку stop_files. Это сделано для того чтобы на пользователя erasha не действовал запрет не закачку stop_files, а на остальных пользователей которым разрешен доступ до интернета указанным после запрета на stop_files этот запрет действует.
http_access allow CONNECT Icq_port http_access allow localnet Icq_port http_access allow CONNECT Irc_port http_access allow localnet Irc_port http_access allow CONNECT MSN_port http_access allow localnet MSN_port http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny all
В этих строках разрешаем использования метода CONNECT для локальной сети на Icq_port,Irc_port,MSN_port, разрешаем доступ maneger доступ до localhost. Запрещаем использование всех портов кроме Safe_ports, запрещаем метод CONNECT на все порты кроме SSL_ports, и в конце все запрещаем. Знак “!” используется как НЕ, т.е. если дословно http_access deny !Safe_ports запретить http доступ НЕ Safe_ports.
http_reply_access allow all
Разрешаем ответы на все запросы.
icp_access allow all
Разрешаем доступ до icp всем.
visible_hostname proxy
это имя будет упоминаться в сообщениях об ошибках.
icon_directory /usr/local/etc/squid/icons
Указываем католог с иконками
error_directory /usr/local/etc/squid/errors/Russian-koi8-r
Указываем католог с шаблонами страниц ошибок на нужном языке и в нужной кодировке, в нашем случае язык русский в Koi8-r кодировке
delay_pools 3 delay_class 1 2 delay_parameters 1 6000/2000 3000/2000 delay_access 1 allow user1 delay_access 1 deny all delay_class 2 2 delay_parameters 2 15000/3000 15000/3000 delay_access 2 allow user2 delay_access 2 deny all delay_class 3 2 delay_parameters 3 60000/3000 60000/3000 delay_access 3 allow user3 delay_access 3 deny all
Здесь мы создаем пулы задержки для ограничения по скорости пользоветелей. Пулы задержки делятся на три класса. Первый класс управляет одним потоком на всех кому резрешено использовать его. Используют когда достаточно задать скорость для всех без какого либо разграничения. Второй класс уже управляет общим потоком и управление потоком для каждого хоста из. Используется уже если нужно в сети распределить поток между хостами. Третий класс управляет общим потоком, потоком на всю подсеть и потоком для каждого хоста. Используется если есть необходимость распределить поток между подсетями и отдельными хостами в этих подсетях.
delay_pools 3
указываем сколько у нас будет всего пулов задержки, в нашем случае три.
delay_class 1 2
здесь указываем номер пула и его класс, т.е. пул номер один второго класса.
delay_parameters 1 6000/2000 3000/2000
здесь задаем параметры пула. Указаываем номер пула которому устанавливаем параметры, у нас №1, далее идет указание ограничения по скорости этого пула. 6000/2000 указывает что после закачки более 2000 байт установить скорость не выше 6000 байт/с, до 2000 байт закачка происходит без какого либо ограничения по скорости. исходя из того что у нас пул второго класса такое ограничение мы установили на общий поток, далее 3000/2000 указываем что каждому хосту после закачки более 2000 байт установить скорость 3000 байт.
вот как бы шаблон по которому думаю более нагладно разобраться
delay_parameters 3 total_rest/total_max - 1 класс delay_parameters 3 total_rest/total_max ind_rest/ind_max - 2 класс delay_parameters 3 total_rest/total_max net_rest/net_max ind_rest/ind_max - 3 класс
где total - на всех net - на подсеть ind - на отдельный адрес rest - скорость (в байт/сек) max - размер трафика при превышении которого устанавливается ограничение по скорости (в байтах)
еще если указать так
delay_parameters А -1/-1
то -1/-1 это указывает на отсутствие каких либо ограничений для пула А.
delay_access 1 allow user1
Разрешаем user1 успользовать пул номер 1.
delay_access 1 deny all
Запрещаем все остальным использовать пул номер 1.
Следующие пулы аналогичны первому по структуре.
coredump_dir /usr/local/squid/cache
Указываем куда сбрасывать core.
И на последок создадим swap директорию для squid
# /usr/local/sbin/squid -z
Добавим SQUID в автозагрузку (в /etc/rc.conf)
squid_enable="YES"
Запустим squid
# /usr/local/sbin/squid -D
Так вроде все с squid разобрались.
Теперь приступим к установке анализатора логов squid-a sarg -2.2
#cd /usr/ports/www/sarg #make install clean
или так
cd /usr/ports/www/sarg && make install clean
Затем идем в /usr/local/etc/sarg создаем файл sarg.conf с безопастными правилами
#touch sarg.conf #chmod 600 sarg.conf
или можно как вариант скопировать конфигурационный файл squid по умолчанию и его редактировать
#cp ./sarg.conf.default ./sarg.conf
у меня sarg.conf примерно имеет такое содержание
language Russian_koi8 access_log /usr/local/squid/logs/access.log graphs yes graph_days_bytes_bar_color orange title "МОЯ ОГРАНИЗАЦИЯ" font_face Tahoma,Verdana,Arial header_color darkblue header_bgcolor blanchedalmond font_size 10px header_font_size 10px title_font_size 11px background_color white text_color #000000 text_bgcolor blanchedalmond title_color green logo_image none logo_text_color #000000 background_image none output_dir /usr/local/sarg/squid-reports resolve_ip yes #lastlog 0 index yes overwrite_report no #output_email erasha@domain.ru max_elapsed 28800000 charset Koi8-r show_successful_message yes show_read_statistics yes topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE #show_sarg_info yes #show_sarg_logo yes
разберем опции.
language Russian_koi8
Указываем язык который будет использоваться в отчётах
access_log /usr/local/squid/logs/access.log
Указываем где будет находиться лог squid который sarg будет анализировать
graphs yes graph_days_bytes_bar_color orange
Разрешаем формирование графиков
title "МОЯ ОГРАНИЗАЦИЯ"
Указываем загологок отчетов sarg
font_face Tahoma,Verdana,Arial header_color darkblue header_bgcolor blanchedalmond font_size 10px header_font_size 10px title_font_size 11px background_color white text_color #000000 text_bgcolor blanchedalmond title_color green logo_image none logo_text_color #000000 background_image none
Выше указываются размер,
output_dir /usr/local/sarg/squid-reports
Указываем где будут храниться отчёты
resolve_ip yes
разрешаем чтобы вместо ip компов sarg резолвил имена компов
#lastlog 0
параметр задает количество отчетов хранимых в каталоге, если он указан
index yes
создавать index-ный файл отчетов
overwrite_report no
Перезаписывать отчеты, здесь не перезаписываются а делаются еще один
#output_email erasha@domain.ru
можно при желании указать куда отправлять отчет, я это пока не использую
max_elapsed 28800000 charset Koi8-r
Кодировка надписей графика
show_successful_message yes
Показывать сообщение о удачном завершении анализа
show_read_statistics yes
Показывать статистику чтения
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
Здесь указываются поля для статистики
#show_sarg_info yes #show_sarg_logo yes
Показать инфо по sarg и его лого, я пока отключил.
Так с настройкой анализатора логоф squid закончили.
Настройка веб-сервера для просмотра отчетов
Ставим www сервер для удобного просмотра отчетов sarg. Я выбрал Apache 1.3
#cd /usr/ports/www/apache13 #make install clean
или так
cd /usr/ports/www/apache13 && make install clean
потом делаем символьный линк
# ln - s /usr/local/sarg/squid-reports /usr/local/www
Единственное, в каталоге /usr/local/sarg/squid-reports пока не было сделано ни одного отчета. Я, используя Squid, открыл одну любую страницу, чтобы был хоть какой-то лог, потом запустил Sarg, он, анализируя лог, создавал отчет вместе с каталогами, а потом делал символьный линк и запускал Apache. Можно, конечно, каталоги сделать руками вот так:
#mkdir /usr/local/sarg/squid-reports #chmod 755 /usr/local/sarg/squid-reports
и надо создать пустой index.html для Apacha
#touch /usr/local/sarg/squid-reports/index.html #chmod 644 /usr/local/sarg/squid-reports/index.html
Далее идем в /usr/local/etc/apache
открываем на редактирование httpd.conf, идем на 330 строку правим
ServerAdmin you@your.address
например на
ServerAdmin erasha@domain.ru
т.е. указываем адрес куда apache будет отправлять письма со своими проблемами
далее на 355 строке указываем где лежат наши отчеты
DocumentRoot "/usr/local/www/squid-reports"
Для запуска при загрузки системы добавляем в /etc/rc.conf
apache_enable="YES"
и запускаем
/usr/local/etc/rc.d/apache.sh start
Так теперь можно проверить работают squid и apache у нас
#sockstat
смотрим на предмет наличия строк
www httpd XXX 16 tcp4 *:80 *:* squid squid XXX 12 tcp4 *:3128 *:*
Первая показывает что запущен apache, вторая что squid работает.
я пользуюсь маленьким скприптиком для получения mac адреса компа вот с таким содержанием
#!/bin/sh name=$1 ip=`ping -c1 $name | grep PING | awk '{print $3}' | sed 's/..$//' | sed 's/^(//'` ot=`arp -an|grep "($ip)"|awk '{print $4}'` echo $ot
я скриптик назвал mac.sh и пользую так
%mac.sh СетовоеИмяМашины_Или_IP ХХ:ХХ:ХХ:ХХ:ХХ:ХХ <-полученный МАС
если кто может предложить другой скрипт, поделитесь со мной, положу его в эту статью.
используя Cron собираю статистику с нарастающим итогом ежедневно и обнуляю итоги в начале каждого месяца
для этого добивил в /etc/crontab следующие строки
0 0 * * * erasha /usr/local/bin/sudo /usr/local/bin/sarg 15 0 1 * * root /usr/local/sbin/squid -k rotate
первая запускает sarg каждый день каждого месяца в 00:00 для подбивки итогов за период с первого числа месяца по текущий вторая делает ротацию логов squid, т.е. очищает текущий лог с переносом логов в архив. первую строку также можно сделать в таком виде
0 0 * * * root /usr/local/bin/sarg
Ну вроде все. Выражаю благодарность s1lv3r за внесенные исправления и подсказки . Также Grayich за указание на мои недочеты и ошибки.
.
Да, еще, natd поднимаю для того что бы из вне нельзя было поднимать соединения с внутренней сеткой. Пробуйте, тестируйте, критикуйте и пишите мне на мыло erasha@bsdportal.ru или стучитесь в аську 144897928.
Автор: erasha@bsdportal.ru
Настройка VPN-сервера FreeBSD с ведением статистики, шейпингом и фильтрацией
Обновлено: 13.09.2025
Для начала: данная статья не претендует на роль полноценного руководства или панацеи на все случаи жизни, посему все вопросы и пожелания по исправлению и дополнению статьи шлем на <shulik at ua.fm>.
Итак - приступим. В работе нам понадобится: FreeBSD 6.0-RELEASE (можно и другую :) ), mpd, freeradius, netams, mysql, поддержка в ядре или в виде модулей IPFW, IPDIVERT, PF, NETGRAPH. Рекомендуется включить поддержку этих компонентов в ядро. Поэтому открываем конфигурационный файл вашего ядра и добавляем, если не хватает, туда следующее:
options NETGRAPH # собственно поддержка netgraph options NETGRAPH_PPP # поддержка PPP в netgraph options NETGRAPH_PPTPGRE # поддержка gre-туннелирования options IPFIREWALL # включаем поддержку ipfw options IPFIREWALL_DEFAULT_TO_ACCEPT # политика по умолчанию - ACCEPT options IPDIVERT # включаем divert-сокеты (понадобится для статистики)
Что касается pf - то я оставил его в виде модуля. Если хотите включить в ядро - /sys/conf/NOTES вам поможет.
Теперь установим такие пакеты, как freeradius, mpd, mysql и netams. Коротко:
cd /usr/ports/net-mgmt/netams make clean make make install make clean
При сборке freeradius обязательно указываем поддержку mysql.
cd /usr/ports/databases/mysql50-server make clean make make install make clean cd /usr/ports/net/freeradius make clean make make install make clean cd /usr/ports/net/mpd make clean make make install make clean
Теперь необходимо отконфигурировать установленный софт. MySQL конфигурим по вкусу - задавая пароли рута и прослушку портов или ее отсутствие. Затем нужно настроить freeradius. Для начала идем в /usr/local/etc/raddb/ и переименовываем все файлики из ‘*.samples’ в ‘*’. Открываем radiusd.conf. В нем правим следующие настройки:
log_stripped_names=yes # Логируем атрибут User-Name если он найден в запросе log_auth=yes # Логируем запросы аутентификации log_auth_badpass=yes # Если пароль неверен - пишем его в Лог log_auth_goodpass=no # верные пароли незачем писать в лог
Проверяем чтобы была раскоментарена строчка:
$INCLUDE ${confdir}/sql.conf
В секции authorize комментарим
files
и удаляем комментарий с
sql
В секции accounting также снимаем комментарий с
sql
Далее смотрим в sql.conf и правим:
driver="rlm_sql_mysql" server="localhost" login="login_k_mysql" password="pass_k_mysql"
Осталось поправить clients.conf, задав для клиента 127.0.0.1 secret:
secret=MyOwnSecret
Кроме того нужно создать в mysql базу radius’a следующего содержания: таблица со словарями:
CREATE TABLE `dictionary` ( `id` int(10) NOT NULL AUTO_INCREMENT, `Type` varchar(30) DEFAULT NULL, `Attribute` varchar(64) DEFAULT NULL, `Value` varchar(64) DEFAULT NULL, `Format` varchar(20) DEFAULT NULL, `Vendor` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
таблица с клиентами самого радиуса (вместо нее пользуем файлы)
CREATE TABLE `nas` ( `id` int(10) NOT NULL AUTO_INCREMENT, `nasname` varchar(128) DEFAULT NULL, `shortname` varchar(32) DEFAULT NULL, `ipaddr` varchar(15) DEFAULT NULL, `type` varchar(30) DEFAULT NULL, `ports` int(5) DEFAULT NULL, `secret` varchar(60) DEFAULT NULL, `community` varchar(50) DEFAULT NULL, `snmp` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
таблица для клиентских сессий:
CREATE TABLE `radacct` ( `RadAcctId` bigint(21) NOT NULL AUTO_INCREMENT, `AcctSessionId` varchar(32) NOT NULL DEFAULT '', `AcctUniqueId` varchar(32) NOT NULL DEFAULT '', `UserName` varchar(64) NOT NULL DEFAULT '', `Realm` varchar(64) DEFAULT '', `NASIPAddress` varchar(15) NOT NULL DEFAULT '', `NASPortId` int(12) DEFAULT NULL, `NASPortType` varchar(32) DEFAULT NULL, `AcctStartTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `AcctStopTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `AcctSessionTime` int(12) DEFAULT NULL, `AcctAuthentic` varchar(32) DEFAULT NULL, `ConnectInfo_start` varchar(32) DEFAULT NULL, `ConnectInfo_stop` varchar(32) DEFAULT NULL, `AcctInputOctets` int(12) DEFAULT NULL, `AcctOutputOctets` int(12) DEFAULT NULL, `CalledStationId` varchar(10) NOT NULL DEFAULT '', `CallingStationId` varchar(10) NOT NULL DEFAULT '', `AcctTerminateCause` varchar(32) NOT NULL DEFAULT '', `ServiceType` varchar(32) DEFAULT NULL, `FramedProtocol` varchar(32) DEFAULT NULL, `FramedIPAddress` varchar(15) NOT NULL DEFAULT '', `AcctStartDelay` int(12) DEFAULT NULL, `AcctStopDelay` int(12) DEFAULT NULL, PRIMARY KEY (`RadAcctId`), KEY `UserName` (`UserName`), KEY `FramedIPAddress` (`FramedIPAddress`), KEY `AcctSessionId` (`AcctSessionId`), KEY `AcctUniqueId` (`AcctUniqueId`), KEY `AcctStartTime` (`AcctStartTime`), KEY `AcctStopTime` (`AcctStopTime`), KEY `NASIPAddress` (`NASIPAddress`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
таблица для проверяемых параметров:
CREATE TABLE `radcheck` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `UserName` varchar(64) NOT NULL DEFAULT '', `Attribute` varchar(32) NOT NULL DEFAULT '', `op` char(2) NOT NULL DEFAULT '', `Value` varchar(253) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
таблица для проверяемых параметров групп:
CREATE TABLE `radgroupcheck` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `GroupName` varchar(64) NOT NULL DEFAULT '', `Attribute` varchar(32) NOT NULL DEFAULT '', `op` char(2) NOT NULL DEFAULT '', `Value` varchar(253) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `GroupName` (`GroupName`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
таблица для возвращаемых параметров групп:
CREATE TABLE `radgroupreply` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `GroupName` varchar(64) NOT NULL DEFAULT '', `Attribute` varchar(32) NOT NULL DEFAULT '', `op` char(2) NOT NULL DEFAULT '', `Value` varchar(253) NOT NULL DEFAULT '', `prio` int(10) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `GroupName` (`GroupName`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
таблица для возвращаемых параметров:
CREATE TABLE `radreply` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `UserName` varchar(64) NOT NULL DEFAULT '', `Attribute` varchar(32) NOT NULL DEFAULT '', `op` char(2) NOT NULL DEFAULT '', `Value` varchar(253) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
таблица соответствия пользователей и групп:
CREATE TABLE `usergroup` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `UserName` varchar(64) NOT NULL DEFAULT '', `GroupName` varchar(64) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
И сразу же заведем тестового пользователя:
INSERT INTO `radcheck` VALUES (1,'user_test','Password','==','qwerty'); INSERT INTO `radreply` VALUES (1,'user_test','Framed-IP-Address',':=','192.168.1.3'); INSERT INTO `radreply` VALUES (1,'user_test','Framed-IP-Netmask',':=','255.255.255.255'); INSERT INTO `radreply` VALUES (1,'user_test','Framed-Protocol',':=','PPP');
По сути ААА готова к использованию. Добавляем в /etc/rc.conf строки:
radiusd_enable="YES" mysql_enable="YES"
и стартуем скриптами из /usr/local/etc/rc.d/
Проверим радиус на работоспособность:
radtest user_test qwerty 127.0.0.1 0 MyOwnSecret
В результате должны получить что-то вида:
Sending Access-Request of id 189 to 127.0.0.1:1812 User-Name = "user_test" User-Password = "qwerty" NAS-IP-Address = localhost NAS-Port = 0 rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=189, length=38 Framed-IP-Address = 192.168.1.3 Framed-IP-Netmask = 255.255.255.255 Framed-Protocol = PPP
Это говорит о том, что радиус работает верно. Если нет - смотрим что он кричит в /var/log/radiusd.log
Пришло время настроить mpd. Смело идем в /usr/local/etc/mpd/ и убираем из имен конфигов samples. Открываем mpd.conf и пишем туда:
default: load pptp0 pptp0: new -i ng0 pptp0 pptp0 load pptp_all pptp_all: set ipcp ranges 192.168.1.1/32 10.0.0.0/24 set iface disable on-demand set bundle disable multilink set link yes acfcomp protocomp set link no pap chap set link enable chap set link keep-alive 60 180 set ipcp yes vjcomp set ipcp dns 192.168.1.1 # или любой другой доступный DNS # set bundle enable compression # обязательно проверяем, чтобы это было выключено. # иначе будем долго искать, почему пинги идут, но ничего не грузится set pptp enable incoming set pptp disable originate # если нужно - задаем ip для открытия 1723 порта. по умолчанию - все # set pptp self 172.16.101.2 set radius timeout 10 set radius config /usr/local/etc/mpd/radius.conf set radius retries 3 set bundle enable radius-acct set bundle enable radius-auth set ipcp yes radius-ip
Нужно заметить, что для примера создан всего лишь один pptp линк. В реале их нужно создать столько, сколько вам необходимо одновременных pptp-туннелей. Создаем mpd.links:
pptp0: set link type pptp
И radius.conf:
acct 127.0.0.1 MyOwnSecret auth 127.0.0.1 MyOwnSecret
Добавляем в rc.conf строку:
mpd_enable="YES"
и запускаем mpd.
Теперь нужно его проверить. Чтобы проще было вести отладку - добавим в /etc/syslog.conf:
!mpd *.* /var/log/mpd.log
И передергиваем syslog. Идем за клиентскую машинку и проверяем подключение по впн.
Если все прошло удачно - идем дальше, иначе ищем ошибку.
Далее нужно клиентов из внутренней сети с внутренними ip-адресами выпустить в инет. Для этого у нас есть несколько путей: воспользоваться связками ipfw+natd или ipfw+ng_nat, но мы пойдем по пути использования pf.
В /etc/rc.conf добавляем:
pf_enable="YES" pf_rules="/etc/pf.rules" pf_flags="" pflog_enable="YES" pflog_logfile="/var/log/pflog" pflog_flags=""
Файлик pf.rules:
ext_ip="19х.1хх.хх.хх" # внешний ip-адрес сервера int_if="rl1" # интерфейс смотрящий в локалку int_net_vpn="xx.yy.zz.ff" # внутренняя VPN-сеть local_net="..." # внутрення локалка int_ip="..." # внутренний ип в локалке nat on rl0 from $int_net_vpn to any -> $ext_ip # собсно NAT pass quick on lo0 all # разрешаем все на lo0 pass quick from $ext_ip to any # Разрешаем траф pass quick from any to $ext_ip # на внешнем ip pass quick from $int_net_vpn to any # разрешаем любой траф pass quick from any to $int_net_vpn # по впн-сети # блокируем платные сервисы из локалки block in quick on $int_if proto { tcp udp } from $local_net to $int_ip port { 25 110 143 3128 3306 } pass in quick on $int_if from $local_net to $int_ip block in all # все осальное блокируем по умолчанию
Все. Теперь трафик должен ходить в инет. Осталось организовать логирование трафика через netams. Приведу лишь коротки отрывки конфигов - так как на сайте netams.com есть хорошая документация на русском языке с примерами настройки netams. В rc.conf привычно добавляем:
firewall_enable="YES" firewall_script="/etc/ipfw.sh"
ipfw.sh:
#!/bin/sh fwcmd="/sbin/ipfw" ${fwcmd} -f flush ${fwcmd} -f flush pipe ${fwcmd} -f flush queue ${fwcmd} pipe 1 config bw 512Kbit/s queue 50 # для обжимки трафа пользуемся pipe'ами ${fwcmd} pipe 2 config bw 512Kbit/s queue 50 ${fwcmd} add pipe 1 ip from <vpn_net> to any in # вгоняем траф в пайпы ${fwcmd} add pipe 2 ip from any to <vpn_net> out ${fwcmd} add tee 100 ip from <vpn_net> to any in # копируем траф в divert-socket для netams. ${fwcmd} add tee 100 ip from any to <vpn_net> out
В netams для нас важны разделы:
service data-source 1 type ip-traffic source tee 100 service storage 1 type mysql user mysql_login # с правами создания БД, хотя бы на момент первого запуска password mysql_pass host localhost service monitor 1 monitor to storage 1 monitor unit VPN unit net name VPN ip <vpn-net> acct-policy ip
Теперь видимо все. Жду отзывы и пожелания на указанное выше мыло.
Copyright by Alexander Shulikov <shulik at ua.fm>
Хакеры: Приёмы взлома.
Обновлено: 13.09.2025Согласно недавнему опросу, проведённому в США, обычные граждане боятся хакеров больше, чем обычных преступников. Интересно, что высокие технологии входят в нашу жизнь очень быстро и становятся её неотъемлемой частью. Каждый день наполнен множеством взломов, которые, как правило, не бывают зарегистрированы. Атакуют всех - от обычных пользователей до крупных правительственных организаций. Цели бывают разные, машины обычных пользователей, как правило, становятся «зомби», с которых проводятся атаки или рассылается спам, а у организаций похищается информация.
Введение в Основные моменты взлома и защиты сервера.
Обновлено: 13.09.2025Человек, при любых обстоятельствах помни, что попытки (даже безуспешные) взлома чужих серверов - дело уголовно наказуемое. Даже если ты считаешь, что действуешь с благими намерениями (например, убедить кого-то, что ему следует обновиться). Все нижеизложенное приведено в целях ознакомления с тем, как могут действовать атакующие и от чего и как следует защищать инфраструктуру.
Источники бесперебойного питания. Общие понятия и термины
Обновлено: 13.09.2025Система бесперебойного питания (СБП)
Автоматическое устройство, обеспечивающее нормальное питание нагрузки при полном обесточивании внешней электросети в результате аварии или недопустимо высоком отклонении параметров сетевого напряжения от номинальных значений (см. "Неполадки в сети"). Различают два основных типа СБП: источники бесперебойного питания и генераторные установки.

Принимаю заказы на настройку серверов, mikrotik и других роутеров, точек доступа, nginx и т.п. В пределах Санкт-Петербурга возможен выезд к заказчику. См. контакты.
Последние комментарии
Популярно:
Разделы статей:
Подскажите. подключение с ПК все работает все ок. Делал по вашей мурзилке.
Но при подключе...