LXF132:DrBrown2
|
|
|
Частный детектив в Интернете
- IP-сыщик Д-р Браун идет по следам киберпреступника.
Загляните в файлы журналов любого компьютера, открытого для доступа извне, и вы найдете множество неудачных попыток входа в систему, вызванных автоматизированными атаками скриптов. Если порт 22 открыт, большинство атак будут попытками входа через SSH. Ежедневно просматривая журналы безопасности web-сервера, я видел преимуществен но два типа неудачных входов в систему:
Mar 22 15:09:53 ns sshd[9446]: Failed password for invalid user ns from 174.121 .23.114 port 50963 ssh2
Здесь атакующий ищет подлинные имена пользователей. В тот день журнал зафиксировал 13647 таких атак с 959 различными именами пользователей. Второй тип выглядел так:
Mar 22 08:40:45 ns sshd[23270]: Failed password for root from 222.122.163.82 port 56501 ssh2
Это неудачная попытка входа в систему от имени суперпользователя-root, и таких попыток за 10 минут было 258. Заметьте: оба сообщения содержат IP-адрес компьютера, с которого проводились атаки. Собственно говоря, 57 % из 99647 строк журнала содержали IP-адрес 222.122.163.82. Посмотрим, что мы сможем о нем узнать. Пока вы радостно предвкушаете, как мы раскроем имя и адрес плохого парня, немного охладим ваш пыл. Во-первых, найденный IP-адрес может быть адресом шлюза NAT, во-вторых, многие атаки проводятся со взломанных компьютеров.
За кулисами IP-адреса
Попробуем сделать по IP-адресу обратный DNS-запрос. Результат выполнения команды немного сокращен.
$ dig -x 222.122.63.82 ;; QUESTION SECTION: ;82.163.122.222.in-addr.arpa. IN PTR ;; AUTHORITY SECTION: 163.122.222.in-addr.arpa. 600 IN SOA ns1.ne.kr.admin.100dedi.com.
PTR-записи не найдено, но мы узнали, что сервер имен для этого блока адресов находится в Корее. Можно также заглянуть в базу данных RIPE на http://www.db.ripe.net с помощью whois:
$ whois 222.122.163.82 KRNIC is not an ISP but a National Internet Registry similar to APNIC. The following is organization information that is using the IPv4 address. IPv4 Address : 222.122.163.0-222 .122.163.255 Network Name: KORNET-INFRA000001 Connect ISP Name : KORNET Registration Date : 20100126 Publishes : N [ Organization Information ] Organization ID : ORG1600 Org Name : Korea Telecom Address : Jungja-dong, Bundang-gu, Sungnam-ci Zip Code : 463-711
Теперь мы знаем, что провайдер атакующего – Korea Telecom. Программа geoiplookup сообщит его географическое положение:
$ geoiplookup 222.122.163.82 GeoIP Country Edition: KR, Korea, Republic of
За обновления базы данных GeoIP нужно платить; платить также можно за запросы через Интернет – см. http://www.maxmind.com. Полезные подробности иногда можно получить с помощью traceroute. Посмотрите на временные интервалы прохождения запроса, сравните их с временными интервалами прохождения запроса туда-обратно, предоставленными командой ping, и, может быть, вам удастся определить положение маршрутизатора рядом с атакующим компьютером.
Несколько полезных утилит для розысков в Интернете есть на сайте http://www.robtex.com. Можно узнать, какие сайты находятся на заданном IP-адресе, кто владеет блоком IP-адресов, добавлен ли сайт в черный список и многое другое. (Следует подчеркнуть, что нет причин подозревать владельцев сайтов, размещенных на этом компьютере. Они почти наверняка лишь невинные свидетели).
Наконец, можно попробовать просканировать компьютер командой nmap:
# nmap -O 222.122.163.82 Interesting ports on 222.122.163.82: Not shown: 985 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 53/tcp open domain 80/tcp open http .. . вывод опущен ... OS details: Linux 2.6.9 - 2.6.15, Linux 2.6.9 - 2.6.15 (x86), Linux 2.6.9 - 2.6.20
Открытые порты говорят нам, что это типичный web-сервер с Linux. Итак… преступник, вероятно, живет в Сеуле, пользуется Linux, прихрамывает и курит «Кэмел». Элементарно, Ватсон!
Задраиваем люки
Возможный ущерб от атак на SSH можно снизить, запретив прямой вход в систему от имени root – просто убедитесь, что в sshd_config есть следующая строка:
PermitRootLogin no
Другая технология, особенно эффективная против атак прямым перебором – анализ сообщений, которые активно пишет в журнал сервер SSHD, и запрет доступа с IP-адресов, откуда производятся неудачные попытки входа в систему.
Это делает скрипт DenyHosts – он блокирует адреса, помещая их в /etc/hosts.deny. Fail2ban также запускается по анализу записей из журналов, но действует через обновление правил брандмауэра в Iptables.