CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
24.05.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки

Приложения :: Безопасность

Защита от троянов и руткитов

Unix.ginras.ru

Трояны, руткиты (rootkits) и агенты DDoS - вот печальная действительность наших дней.

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

Более продвинутые пользователи наверняка улыбнутся, и самодовольно подумают - "Именно поэтому я выбрал Unix-систему".

Истина же в том, что подобные неприятности в системах, где есть Unix, несомненно меньше, но всё же они случаются. Чем больше пользователей Unix, тем больше будет эксплоитов и тем чаще они будут использованы против системы. К счастью у вас, как у пользователя FreeBSD, есть много полезных и доступных утилит, а также можно приобрести несколько хороших привычек. Далее разговор пойдёт об этих утилитах и привычках.

Начнём сначала

Первая привычка, о которой я говорила много раз, состоит в том, чтобы находиться за брандмауэром (firewall, иногда межсетевой экран или межсетевая защита). Не имеет значения, какая именно программа будет использована для защиты, для начала выберите то, что вам удобнее настроить. Если вас пугает изучение синтаксиса if или iw, то вложите деньги в недорогой аппаратный firewall, c предварительными настройками. Если вы уже настроили брандмауэр на вашей системе Windows, то вам стоит разместить вашу FreeBSD за ней, до тех пор, пока вы не будете готовы занятся конфигурацией защиты в Unix.

Почему такое большое внимание к firewall? Rootkits - это автоматизированные комплекты, которые просматривают узлы интернета на предмет наличия открытых портов. Как только руткит обнаруживает порт, на который можно напасть, он пробует войти в эту систему. Должным образом сконфигурированная домашняя межсетевая защита не будет показывать никаких открытых портов, так что руткит пройдёт мимо вас и примется искать новую жертву.

Но что, если вы не были за firewall? Как вам узнать - содержит ли ваша система нежелательное программное обеспечение?

В большинстве случаев, без большой исследовательской работы очень трудно узнать об этом. Лучший совет - сделайте копии ваших файлов данных, переустановите их, и установите firewall, до повторного соединения с интернетом.

От переводчика: Имеется ввиду предварительное создание архива данных, до выхода в сеть.

Предположим, что вы за firewall. вам нужно убедиться в этом, чтобы узнать, действительно ли скрыты все ваши порты. Начнём с машин, находящихся за firewall, порты которых открыты. Применительно к каждой машине, независимо от операционной системы, запустим в командной строке команду:

% netstat -an%

Мы видим, что для каждой строки, начинающейся с tc или ud, записывается номер или название порта, которое можно найти в секции Локальный адрес. Если вы запускаете эту команду на FreeBSD, проигнорируйте некорректно выглядящие строки после 'Active UNIX domain sockets ' (Активные сокеты домена Unix ), поскольку они не имеют никакого отношения к номерам портов.

Система FreeBSD поставляется c командой sockstat, которая показывает открытые порты. Я предпочитаю её выводные данные таковым же в команде netstat.

От переводчика: Сокет - это идентификатор конкретной службы на конкретном узле сети. Сокет состоит из адреса узла и номера порта, используемого службой.

С тех пор как во FreeBSD по умолчанию появились как Iv4, так и IPv6, я не заинтересована только в сокетах домена Unix, поэтому обычно я запускаю эту команду так:

% sockstat -46%

Записывайте результаты выполнения команды sockstat или netstat для каждой машины в вашей домашней сети, и периодически повторяйте команду. Таким образом, вы будете знать, какие порты должны быть открыты и узнаете, не появился ли внезапно дополнительный открытый порт в вашей системе. Вероятно, идеальным решением будет полностью закрыть порты, если вы не нуждаетесь в разных портах открытых в вашей домашней системе.

Инструкция, как закрывать порты на вашей FreeBSD% лежит здесь - http://www.onlamp.com/pub/a/bsd/2002/08/08/FreeBSD_Basics.html.

Когда вы записали все открытые порты на ваших компьютерах, вам нужно посмотреть - не показывает ли ваш firewall какой-либо из них интернету. Лучше всего использовать для этих целей nma. Если вы никогда не пользовались nma, то пролистайте вот это: http://www.onlamp.com/pub/a/bsd/2001/04/18/FreeBSD_Basics.html

Очень важно, чтобы вы дважды, а то и трижды проверили адрес вашего сетевого устройства, до начала просмотра. Если вы хотите посмотреть адрес, не относящийся к вашим устройствам, будьте осторожны и обьясните это вашему провайдеру, чтобы он не запретил вам дальнейший доступ в интернет.

Полный просмотр всех TCP и UDP портов будет продолжаться очень долго.

Эта команда запустит такой просмотр:

% nmap -v -P0 -sU - 1-65535 IP_ADDRESS%

где IP_ADDRESS - адрес вашего сетевого устройства защиты. Снова проверьте правильность адреса, прежде чем нажмёте Enter и запустите просмотр. Если всё идёт хорошо, то просмотр не должен найти никаких открытых портов.

Контрольные суммы

Открытые порты - не единственное место проникновения нежелательного программного обеспечения. Всякий раз, когда вы загружаете программное обеспечение, вы уверены, что оно делает только то, что ему положено, и что файл, загружаемый вами с ftp - не заражённая трояном оригинальная версия.

К счастью, большинство ftp-серверов, которые обеспечивают программное обеспечение для Unix, защищают каждый загружаемый файл контрольной суммой MD5. вы, наверное, помните из Терминологии криптографии (http://www.onlamp.com/pub/a/bsd/2002/10/31/FreeBSD_Basics.html), что MD5 используется, чтобы проверить целостность файла, гарантируя, что ни один из битов в файле не заменён. Если нападающий заменит оригинальный файл на сайте ftp на файл с трояном, то контрольная сумма MD5 зараженного файла не будет соответствовать оригинальной.

Как пример, просмотрим сайт ftp://ftp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386/5.4 (приведено в соответствие с номерами текущей версии - А.Ф.).

Вместе с возможными файлами *.iso, там имеется файл с именем CHECKSUM.MD5, в котором хранится контрольная сумма MD5 для каждого файла. Если я загружаю образ 5.4-RELEASE-i386-disc1.iso, я должна использовать команду m5, чтобы проверить контрольную сумму перед тем, как записать образ ISO на CD-диск:

% md5 4.7-mini.iso%
3dbb37485535e129354bc099e24aed99

Число, возвращаемое командой, должно быть идентично числу в файле CHECKSUM.MD5 на ftp-сайте.

Хорошо сделать привычкой всегда проверять контрольную сумму MD5 любого загружаемого из интернет файла, отклоняя файлы, в которых отсутствуют контрольные суммы. Если вы используете коллекцию портов FreeBSD, то команда make сделает это для вас автомагически. Это - наиболее простой и безопасный путь устанавливать программное обеспечение в вашу FreeBSD систему.

Если во время построения порта оно прерывается ошибкой, и причиной называется несовпадение контрольной суммы MD5, не пугайтесь и продолжайте строить. Просто вы попали в одну ситуацию из двух, и вам нужно кое-что предпринять. Первая возможная причина - устарело ваше дерево портов. Если это так, то "накатите" свежую версию дерева портов через cvsup.

От переводчика: см. здесь.

Вторая возможная причина - файл на сервере ftp изменился с тех пор, как была вычислена контрольная сумма. Если это так, то найдите адрес электронной почты создателя порта, который сможет вам гарантировать, что файл не содержит троянов. Например, если бы я строила порт doom, то могла бы выполнить следующую команду в каталоге /usr/orts/games/doom (обратите внимание на регистр букв):

% more Makefile |gre MAINTAINER%
MAINTAINER = jmz@FreeBSD.org%

Если вы - создатель порта, помните, что нужно включить вывод uname -a, чтобы можно было узнать версию FreeBSD, которую вы использовали.

Утилиты проверки целостности файла

Контрольные суммы MD5 также можно использовать, чтобы гарантировать, что файлы в вашей системе не фальсифицированы. Одно из первых действий, предпринимаемых троянской программой - изменение одного из ваших бинарников, так чтобы вы не заметили, как в вашей системе появилось кое-что ненужное. Например, ваш файл команды ps мог быть заменен другим файлом ps, который не покажет процессы, использованные трояном.

Команда ls может быть изменена, чтобы скрыть каталоги, созданные трояном. К счастью, есть несколько утилит проверки целостности файла, которые автоматизируют процесс создания базы данных контрольных сумм важных файлов на вашей FreeBSD системе.

Наиболее простая и известная из этих утилит - tripwire.

Tripwire доступен как свободная версия с открытыми исходниками и как коммерческая версия, работающая 30 дней без её покупки.

В завершение этой статьи, я построю из порта открытую версию tripwire на системе FreeBSD. Сначала начнем строить порт:

% cd /usr/ports/security/tripwire%
% make install clean%

Это будет длиться в течение нескольких минут, так что можете сходить за алкоголем (прим. пер. - интересно только, за каким:)) и ждите до прекращения установки, после чего на экране появится примерно вот это:

Installer program for:
Tripwire(R) 2.3 Open Source for LINUX%
Coyright (C) 1998-2000 Tripwire (R) Security Systems, Inc.
Triwire (R) is a registered trademark 
of the Purdue Research Foundation%
and is licensed exclusively 
to Triwire (R) Security Systems, Inc.
LICENSE AGREEMENT for Triwire(R) 2.3 Open Source for LINUX%
Please read the following license agreement.
You must accept the agreement to continue installing Triwire.
Press ENTER to view the License Agreement.

После этого вам будет представлено много информации по лицензии GNU GPL.

Используйте пробел, чтобы пролистать информацию, пока не доберётесь до этой строки:

Please type "accept" to indicate your acceptance of this%
license agreement. [do not accept] accept%

Удостоверьтесь что правильно набрали слово accept, иначе инсталляция прервётся. Если вы неосторожно нажмёте Enter, то установка прервётся.

В этом случае просто повторите make install clean и будьте внимательны, чтобы в следующий раз набрать accept правильно. Строительство продолжится с этого места.

Using configuration file install.cfg%
Checking for programs specified in install configuration file...
/usr/sbin/sendmail exists.  Continuing installation.
/usr/bin/vi%
exists.  Continuing installation.

----------------------------------------------
Verifying existence of binaries...
./bin/i386-unknown-freebsd_r/siggen found%
./bin/i386-unknown-freebsd_r/tripwire found%
./bin/i386-unknown-freebsd_r/twprint found%
./bin/i386-unknown-freebsd_r/twadmin found%
This program will coy Triwire files to the%
following directories:
	TWBIN: /usr/local/sbin%
	TWMAN: /usr/local/man%
	TWPOLICY: /usr/local/etc/triwire%
	TWREPORT: /var/db/triwire/reort%
	TWDB: /var/db/triwire%
	TWSITEKEYDIR: /usr/local/etc/triwire%
	TWLOCALKEYDIR: /usr/local/etc/triwire%
CLOBBER is false.
Continue with installation? [y/n] y%
----------------------------------------------

Затем установщик создаст несколько каталогов и скопирует в него файлы. Обратите внимание, что некоторые документы созданы для вас в /usr/locals/share/doc/tripwire. Также он создаст manpages в 5 и 8 секциях руководства. Далее будет запрос о создании фразы для входа (от пер.: типа пароля). Если вы читали серию о шифровании, то помните, что эти фразы используются всегда, когда генерируются ключи. Запомните эту фразу для входа или вы не сможете обратиться к базе данных tripwire.

У вас они будут запрошены несколько раз, поскольку tripwire создаёт и записывает файл конфигурации, файл политик, и базу данных.

Далее инсталляция может остановиться - ( от пер.: вывод сообщений я позволил себе пропустить). На этом этапе, вы можете получить несколько больше ошибок, жалующихся, что Kerberos отсутствует в вашей системе. Не беспокойтесь, установка продолжится.

От переводчика: Далее автор говорит о том что, подробности про работу с базой данных tripwire, использование руткитов и прочее по каждому пункту следует искать в других её cтатьях на http://www.onlamp.com.

Dru Lavigne is an instructor at Marketbridge Technologies in Ottawa and the maintainer of the Open Protocol Resource.





Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds