FAQ / Спрашивали? Отвечаем!
Докучаев Дмитрий aka Forb (forb@real.xakep.ru)
Q: Как определить, пересылаются ли логи на другие машины в сети или нет?
A: Функцию пересылки логов поддерживает демон syslogd. Во-первых, обрати внимание на процесс сервиса. Если он запущен с параметром –ss, можешь не волноваться – пересылки логов нет. Если параметры опущены, загляни в /etc/syslog.conf и поищи подстроку «@адрес_системы». Если таковая имеется, можно сделать вывод, что логи пересылаются на сторонний сервер в автоматическом режиме.
Q: Что может светить за нелегальное сканирование портов?
A: Сканирование портов – нарушение порядка в сети. Ты можешь возмутиться, мол, я же ничего не сделал – просто посмотрел состояние портов. В лучшем случае админ удаленного сервера ничего не заметит, но, если на сервере стоит утилита, отслеживающая скан, сисадм может пресечь твою деятельность, отписав провайдеру. Часто у провайдера имеется так называемый регламент, в котором есть пункт, оговаривающий сканирование. Так что, учитывая серьезность ситуации, тебя могут отключить от сети. Впрочем, физическое отключение – довольно редкое явление, но все же я рекомендую сканировать порты с удаленного шелла консольной программой (например, nmap’ом).
Q: Существуют ли специальные услуги по проверке серверов на прочность?
A: Да, такие услуги оказываются. Например, компания Positive Technologies (www.ptsecurity.ru) предлагает взломать сервер всего за $1000. Сотрудники компании пытаются хакнуть заказчика, получить там шелл и стащить конфиденциальную информацию, которая бы являлась доказательством того, что взлом удался. Эта услуга была названа «penetration testing». Естественно, проверить свой сервер на дырки – удовольствие дорогое. Клиентами займутся сотрудники PT и SecurityLab. Они гарантируют абсолютную конфиденциальность и полноту тестирования. На рынке присутствуют и другие компании: Digital Security (www.dsec.ru), НПО «Информзащита» (www.infosec.ru). Впрочем, можно пойти другим путем – пригласить знакомого хакера, если таковой имеется.
Q: Я залил руткит на сервер, а новые бинарники перестали запускаться. Что мне теперь делать?
A: Искать бэкапы. Руткиты, выполненные в виде прекомпиленных бинарных файлов, ненадежны. То есть вполне возможно, что кит не переварится новыми глибсами. Бывает, что бинарник объявит об отсутствии какой-либо библиотеки, а иногда может вообще не запуститься. В этом случае ищи бэкап системы на другом носителе либо вручную переустанавливай испорченные файлы. А затем воспользуйся другим руткитом, на основе LKM, например.
Q: Что такое LKM-руткит?
A: Это очень полезная штука! LKM – Linux Kernel Module, руткит, построенный на нем, представляет собой набор ядерных модулей, которые после загрузки перехватывают системные вызовы, стирают себя из списка модулей и т.д. Преимущество налицо: руткит не заменяет никаких файлов, поэтому даже после переустановки бинарников хакерские модули будут работать. Только вот незадача: существует софт, который позволяет увидеть установленный в системе LKM-руткит.
Q: Наша сеть строится на хабах. Как можно фаерволом заблокировать нелегальную попытку смены IP-адреса?
A: В этом случае нужно оформлять статическую прописку ARP-таблицы. Но, раз уж ты заговорил о фаерволе, поделюсь правилом, которое привяжет нужный IP-адрес к MAC. Это достигается при помощи модуля mac.so. Рулес будет выглядеть следующим образом:
iptables –A INPUT –s 192.168.0.1 –m mac –mac-source 00:C0:DF:10:19:FB –j ACCEPT.
При желании ты можешь указать параметр -mac-desitination, чтобы разрешить соединение с узлом, имеющим определенный MAC.
Q: Хочу, чтобы мой *nix-сервер жил только на CD. Порекомендуй хороший живой дистрибутив.
A: Из «компактных» пингвинов я сталкивался только с SuSE и Knoppix. Второй порадовал меня больше: система полностью русифицирована, грузится сразу в Иксы, имеет возможность сохранять настройки на жестком диске, снабжена всеми необходимыми сервисами. Словом, то, что доктор прописал :).
Q: Я нашел бажный скрипт, но добился выполнения только команды в одно слово. Со вторым параметром запрос просто игнорируется. Что можешь посоветовать в этом случае?
A: В списке переменных окружения присутствует так называемая пустая строка $IFS. Ее и следует использовать в запросе. То есть, если бажный скрипт file.cgi имеет параметр file, принимающий лишь одно слово, реквест будет выглядеть следующим образом: http://host.com/cgi-bin/file.cgi?file=|uname$ifs-a|.
Q: Можно ли «выключить» установленный на сервере фаервол?
A: Еще как! Для этого хакеру нужны минимальные права, а также дырка в сервере :). Допустим, на машине крутится бажное ядро, а взломщик имеет доступ к Web-шеллу. Чтобы деактивировать фаервол, он заливает на сервер ptrace-эксплоит (либо какой-нибудь другой) со слегка измененным кодом. Вместо запуска /bin/sh будет стартоваться сценарий, который обращается к /etc/init.d/iptables с параметром stop. Как правило, запуск внешней команды не выносится в shell-код, так что исправить сишник сможет даже темный человек :). После компиляции и запуска сплоита фаервол должен выключиться.
Q: Я взломал сервер одной крутой компании. Уверен, что админы защитили машину на все 100%. На какие секурные процессы мне следует обратить особое внимание?
A: На машине могут стоять утилиты, тестирующие систему на безопасность. Обращай внимания на запущенные программы tripwire, portcentry, различные IDS, а также на программу chkrootkit, которая может и не светиться в процесс-листе.
Q: В моей системе стали спонтанно пропадать файлы. Вернее, файл существует, но /bin/ls его не показывает! С чем это связано?
A: На ум сразу приходит: тебя взломали. Тестируй сервер на наличие руткитов и выявляй злоумышленника. Хакер, видимо, прописал в конфиг руткита маску, под которую попал системный файл. В результате этого файл исчез из поля зрения ls. Впрочем, такая аномалия может возникнуть, если на винте имеются бэды. На всякий случай запусти fsck и удостоверься, что файловая система в норме.
Q: Когда я просматривал таблицы MySQL на взломанном сервере, то напоролся на какие-то учетные записи. Только вот пароли там зашифрованы, и я не могу их взломать.
A: Ты наткнулся на MD5-хэши. MD5 является необратимым алгоритмом, поэтому единственный способ расшифровать пароль – воспользоваться программой-брутфорсером. Таких программ много, могу порекомендовать md5crack и md5Inside. Вторая софтина имеет графический интерфейс и поддерживает потоки, так что расшифровка займет не очень много времени.
Q: В каталоге /tmp я обнаружил странноватый файл .bugtraq. Все бы ничего, но его владелец – юзер nobody. Меня взломали?
A: Да, к сожалению, тебя взломали. Файл, который ты обнаружил, является частью системы для проведения DDoS. Иными словами, твою машину попросту зомбировали через баг в httpd. Немедленно удали этот файл и переустанови Apache на более свежий релиз. Кроме этого, проверь систему на наличие руткита – возможно, взломщик до сих пор использует ресурсы твоего сервера.
Q: Хочу для грамотной защиты организовать в сети машинку только для логов. Как заставить syslogd удаленно пересылать на нее данные?
A: Для пересылки логов syslogd открывает 514 udp-порт, который служит для приема данных. Установи сервис с открытым портом на машине для хранения журналов (запускай демон с параметром –r). Затем занеси в /etc/syslog.conf (на серверах, с отсылаемыми логами) строку вида *.* @адрес_системы, и все журналы будут передаваться на удаленный сервер.
Q: Как закачать файл на сервер через бажный WWW-скрипт, если на машине отсутствует wget?
A: Существует несколько способов заливки файлов через уязвимые скрипты. Даже если на сервере отсутствует wget, проверь наличие fetch или get. Можно использовать FTP-сценарий и вытянуть нужный файл через /usr/bin/ftp. При этом используй опцию –n, чтобы передать логин и пароль в одной строке. Сам сценарий запиши построчно в файл с помощью команды /bin/echo.