- База знаний wiki
- Содержание
- проверка linux-системы на наличие следов взлома
- Задача:
- Решение:
- Инструменты
- Сиганатуры
- Подписи
- Переустановка пакетов
- Целостность
- Системный журнал
- Резервирование
- Нет – взломам серверов! Советы по проверке и защите
- Проверка
- ▍Данные последнего входа в систему
- ▍История команд
- ▍Журнал auth.log
- ▍IP-адреса
- ▍Журналы Apache
- ▍Поиск подозрительных процессов
- ▍Список заданий cron
- Защита
- ▍Запрет входа root-пользователей по SSH
- ▍Автоматические обновления
- ▍Настройка блокировок
- Как быстро проверить Linux сервер на предмет взлома
- Проверяем свой Linux на предмет взлома: быстрый способ
База знаний wiki
Продукты
Статьи
Содержание
проверка linux-системы на наличие следов взлома
Слова для поиска: взломали, крякнули, хакнули, защита, безопасность
Задача:
У вас есть подозрение, что злоумышленники проникли на ваш сервер. Что делать?
Решение:
Одним из очевидных способов гарантировать чистоту системы от активности злоумышленников является переустановка системы с нуля. Но прежде чем прибегнуть к переустановке, следует убедиться, что система действительно поражена. Чтобы обеспечить выявление скрывающих свое присутствие руткитов проверку желательно выполнять загрузившись с LiveCD.
Инструменты
Установить и использовать специализированные инструменты для выявления руткитов, например, chkrootkit, ossec-rootcheck и rkhunter.
Сиганатуры
Проверить корректность сигнатур для всех установленных в системе пакетов. Для дистрибутивов на базе RPM:
Для дистрибутивов с dpkg следует использовать скрипт:
Утилиту debsums следует установить отдельно:
Вывод измененных файлов:
Вывод измененных файлов конфигурации:
Посмотреть пакеты без контрольных сумм:
Другой вариант контрольных сумм для файлов в Debian:
Подписи
Убедиться, что установленные пакеты действительно подписаны действующими цифровыми подписями дистрибутива.
Для систем на базе пакетного менеджера RPM:
Переустановка пакетов
При выявлении подозрительных пакетов их желательно удалить и установить заново.
Например, для переустановки ssh в дистрибутивах на базе RPM следует выполнить:
Рекомендуется проделать эти операции, загрузившись с LiveCD и используя опцию ‘rpm –root’.
Целостность
Проверка целостности системных скриптов в /etc/rc*.d и выявление подозрительного содержимого в /usr/share. Эффективность выполнения проверок можно гарантировать только при загрузке с LiveCD.
Для выявления директорий в /usr/share, которые не принадлежат каким-либо пакетам в дистрибутивах на базе RPM можно использовать следующий скрипт:
В Debian для определения какому пакету принадлежит файл следует использовать «dpkg-query -S»:
Аудит suid root программ:
Системный журнал
Проверить логи на предмет наличия нетипичных сообщений:
текстовой информацией в поле версии, которые могут свидетельствовать о попытках взлома.
отправка email или попытки соединения по ssh во время вашего отсутствия.
Резервирование
Если в процессе проверки обнаружен факт проникновения злоумышленника следует сделать копию дисковых разделов на отдельный носитель при помощи команды «dd» с целью более подробного анализа методов проникновения. Только после этого можно полностью переустановить всю систему с нуля. Одновременно нужно поменять все пароли и ключи доступа, уведомив об инциденте администраторов серверов, на которых осуществлялась удаленная работа.
Источник
Нет – взломам серверов! Советы по проверке и защите
Подозреваете, что Linux-сервер взломан? Уверены, что всё в порядке, но на всякий случай хотите повысить уровень безопасности? Если так – вот несколько простых советов, которые помогут проверить систему на предмет взлома и лучше её защитить.
Проверка
Для того, чтобы узнать, не взломали ли ваш сервер, скажем, работающий под управлением Ubuntu, стоит кое-что проверить.
▍Данные последнего входа в систему
Выясните данные последнего входа в систему. Делается это с помощью команды lastlog.
▍История команд
Взгляните на историю команд, узнайте, когда именно их вводили:
Если список команд выводится без даты – настройте соответствующие параметры утилиты history.
▍Журнал auth.log
Следующий способ проверки – просмотр файла /var/log/auth.log. Например, с помощью такой команды:
Здесь можно найти список всех, кто пытался подключиться к серверу по SSH.
▍IP-адреса
Для того, чтобы выяснить IP-адреса, с которых подключались к серверу, воспользуйтесь такой командой:
▍Журналы Apache
Проверьте журналы Apache:
▍Поиск подозрительных процессов
Если вы уверены в том, что сервер взломан, разыщите процесс злоумышленника. Например, список всех процессов можно получить такой командой:
▍Список заданий cron
Анализируя сервер на предмет взлома, полезно будет проверить список заданий cron, в который злоумышленник вполне мог добавить что-то своё.
Независимо от того, выявила ли проверка попытки взлома, безопасности много не бывает. Поэтому вот – несколько советов по защите сервера.
Защита
Рекомендации по защите сервера, в основном, касаются отслеживания и блокирования подозрительной активности, а также регулярного обновления программного обеспечения.
▍Запрет входа root-пользователей по SSH
Для повышения уровня безопасности сервера стоит запретить вход root-пользователей по SSH.
▍Автоматические обновления
Включите автоматические обновления безопасности с использованием пакета unattended-upgrades. Сначала его надо установить:
Следующий шаг – настройка:
Пакет можно вызвать и самостоятельно:
▍Настройка блокировок
Установите пакет fail2ban. Для того, чтобы блокировать с его помощью подозрительных SSH-пользователей, воспользуйтесь этим руководством, поле чего настройте систему отчётов.
Для того, чтобы узнать, сколько раз fail2ban заблокировал некий IP-адрес, воспользуйтесь такой командой:
Для того, чтобы просмотреть весь файл журнала fail2ban, введите следующее:
Для поиска проблемных подсетей подойдёт такая команда:
Если анализ файлов журнала показывает, что атаки из некоторой подсети происходят регулярно, её можно заблокировать на постоянной основе. Перед этим, однако, стоит проверить, к какой стране принадлежит подсеть.
Например, вот как заблокировать подключения к sshd-порту из подсети 221.229.*.*:
Для того, чтобы узнать о том, что именно было заблокировано правилами iptables, можно воспользоваться такой командой:
Для того, чтобы правила iptables сохранялись после перезагрузки сервера, установите в Ubuntu пакет iptables-persistent.
Если вы отредактировали правила iptables, используйте такую команду:
Файл с правилами не рекомендуется править вручную, так как его формат важен для того, чтобы всё работало как надо.
Источник
Как быстро проверить Linux сервер на предмет взлома
Примерно два года назад я арендовал у одного немецкого хостера не очень мощный сервер на базе Centos 5.2. На нём живут несколько вебпроектов, приносящих некоторую прибыль, и поэтому, я стараюсь присматривать за ним по мере возможности.
На Centos есть стандартный анализатор логов Logwatch, который запускается ежедневно по крону, анализирует содержимое /var/log, делает сводный отчет и присылает его по электропочте. В один прекрасный день я обнаружил в этом отчете запись:
В тот момент меня она очень смутила, так как в предыдущий день на сервер я не логинился и тем более ничего не устанавливал. Первое, что пришло в голову — сервер был скомпроментирован. Себя я считал уверенным пользователем Linux, однако я растерялся. Благо в тот момент в icq был мой бывший коллега, лучший системный администратор, которого я знаю, и просто очень хороший человек.
Он помог быстро проверить систему. В результате у меня сформировалось краткое HowTo о том, как быстро проверить свой сервер на предмет взлома. Уверен, что многим Храброчитателям оно будет полезно. Предполагается, что пользователь знаком с консолью Linux/Unix.
Итак, первым делом меняем рутовый пароль:
Далее сканируем хост на предмет подозрительных открытых портов. Сделать это можно, например, с другой юниксовой машины с помощью утилиты nmap:
В этом списке подозрительно выглядели 111 и 620 порты, поэтому далее смотрим, кто их слушает:
Тут оказалось всё в порядке, так как это были компоненты nfs. Далее проверяем UDP соединения:
Тут тоже всё оказалось в порядке. Попасть на сервер, скорее всего могли не через консоль, так как при логине на сервер Centos писал, что последний логин был с моего IP. Поэтому следующим пунктом нужно проверить фолдер /root/.ssh, туда могли положить ключ для ssh-клиента каким-либо образом.
Здесь оказался только файл с ключами, который я переименовал сразу после передачи хоста провайдером. Далее нужно проверить файл /etc/passwd. В нём не должно быть пользователей с uid=0, кроме root:
И тут тоже было всё окей. Финальным аккордом являлась проверка хоста на установленные руткиты. Для этого можно использовать бесплатную утилиту rkhunter. Скачиваем архив с последней версией, распаковываем его и запускаем инсталлер. Далее делаем его обновление и запускаем проверку:
Rkhunter в начале проверят важные системные файлы, затем ищет руткиты. После происходит проверка на различные vulnerabilities. В конце программа проверяет версии популярных продуктов, таких как Apache, OpenSSH и т.п. на предмет последних версий.
Результаты своей работы rkhunter выдает в консоль, а также формирует консолидированный лог /var/log/rkhunter.log. Можно запускать данный антируткит каждый день по крону и получать отчет о сканировании по электронной почте.
К счастью, rkhunter не обнаружил на моём сервере никаких зловредов, это позволило успокоиться и подумать, что же за странные инсталлы произошли на сервере. И тут я вспомнил, что сразу после получения сервера, я установил и сконфигурировал на этом сервере VPN сервер. Видимо, произошла какая-то ошибка в Logwatch и он добавил в отчёт данные двухлетней давности.
Разумеется, если злоумышленники всё сделают грамотно, то Logwatch никаких следов не обнаружит и хозяин сервера долго ни о чём не будет подозревать. Однако, шаги, описанные в данном HowTo, если проводить их регулярно, помогут уберечь ваши сервера от компроментации.
Источник
Проверяем свой Linux на предмет взлома: быстрый способ
В качестве примера будет рассмотрен случай с арендуемым сервером средней мощности, построенным на Centos 5.1, в рамках которого были размещены некоторые коммерческие проекты, требовавшие периодического мониторинга.
Сама Centos имеет в своем составе Logwatch – утилиту, представляющую собой логовый анализирующий инструмент, который по Cron производится в ежедневно, анализируя /vаr/lоg – содержимое, составляя сводки и отчетность по ним, которые, в конечном счете, пересылается по конкретному адресу электронной почты.
И вот, когда пришло время очередной поверки, автор нарыл в отчетах запись следующего содержания:
Pаckages Instаlled:
lzо2 — 2.02-3.еl5.rf.i386
dnstrаcer — 1.8-1.2.еl5.rf.i386
оpenvpn — 2.0.9-1.еl5.rf.i386
Данная запись показалась как минимум сомнительной, поскольку ранее на сервере автор не совершал логин, а уж ни о какой установке чего-либо речи вообще не могло идти. Естественно, первое о чем подумалось – сервер скомпроментировали.
Пришлось покопаться, чтобы разобраться с данным вопросом немало, в результате чего был выработан способ, который поможет достаточно быстро проверить, не взломан ли ваш сервер. материал, изложены ниже, рассчитан на тех пользователей, которые хорошо знакомы с работой в рамках консоли Unix/Linux.
Последовательный алгоритм действий
Первое, что нам необходимо будет сделать, это сменить пароль для root. Делается это из консоли следующим образом:
[rооt@myhоst еtc]# pаsswd
Chаnging passwоrd fоr usеr rооt.
Nеw UNIХ pаsswоrd:
.
После этого необходимо будет просканировать хост, чтобы убедиться в отсутствии/наличии в его рамках открытых портов. Рекомендуем делать это, используя другой компьютер с системой Unix на борту, воспользовавшись утилитой nmap. Для этого делаем следующее:
]# nmаp -P0 123.123.123.123
Stаrting Nmар 4.11 ( www.insеcure.оrg/nmаp ) аt 2011-01-23 11:47 MSK
Intеresting pоrts оn mуhоst.mуprоvidеr.nеt (123.123.123.123):
Nоt shоwn: 1679 filtеred pоrts
PОRT STАTE SЕRVICE
21/tср ореn ftр
22/tср ореn ssh
25/tср ореn smtр
53/tср ореn dоmain
80/tср ореn httр
106/tср ореn pоp3pw
110/tср ореn pоp3
111/tср ореn rpсbind
135/tср filtеred msrрс
136/tср filtеred profilе
137/tср filtеred netbiоs-ns
138/tср filtеred netbiоs-dgm
139/tср filtеred netbiоs-ssn
143/tср ореn imaр
443/tср ореn httрs
445/tср filtеred micrоsoft-ds
465/tср ореn smtрs
620/tср ореn unknоwn
993/tср ореn imaрs
995/tср ореn poр3s
3306/tср ореn mуsql
8443/tср ореn httрs-аlt
В данном листе нам показались выглядящими достаточно подозрительно порты 620, а также 111. На основании этих подозрений логично просмотреть, кто может их послушать:
]# netstаt -аnp | grеp LISTЕN | grеp 111
tср 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1685/pоrtmap
[rооt@myhоst
]# netsаt -аnp | grеp LISTЕN | grер 620
tср 0 0 0.0.0.0:620 0.0.0.0:* LISTЕN 1710/rpc.stаtd
Здесь мы убедились в том, что все в порядке, поскольку, как оказалось, это были nfs-составляющие. После этого нужно будет проверить соединения UPD:
]# netstаt –аnp | grеp udр
udр 0 0 0.0.0.0:32773 0.0.0.0:* 2345/nаmed
udр 0 0 127.0.0.1:32780 127.0.0.1:32780 ЕSTABLISHED 2539/postmаster
udр 0 0 0.0.0.0:32783 0.0.0.0:* 2790/аvahi-dаеmоn:
udр 0 0 123.123.123.123:53 0.0.0.0:* 2345/ nаmеd
udр 0 0 123.123.123.123:53 0.0.0.0:* 2345/ nаmеd
udр 0 0 127.0.0.1:53 0.0.0.0:* 2345/nаmеd
udр 0 0 0.0.0.0:614 0.0.0.0:* 1710/rрс.stаtd
udр 0 0 0.0.0.0:5353 0.0.0.0:* 2790/avаhi-dаemon:
udр 0 0 0.0.0.0:617 0.0.0.0:* 1710/rpc.stаtd
udр 0 0 0.0.0.0:111 0.0.0.0:* 1685/pоrtmap
udр 0 0 0.0.0.0:631 0.0.0.0:* 2069/cuрsd
udр 0 0 . 32774 . * 2345/nаmed
udр 0 0 . 32784 . * 2790/аvahi-dаemon:
udр 0 0 . 5353 . * 2790/аvahi-dаemon:
Здесь, как можно заметить, тоже все в норме. Делаем вывод, что доступ к server могли получить не посредством консоли, поскольку Centos при логе на сервере выдавал нам запись о том, что последняя удачная попытка залогиниться осуществлялася именно с нашего IP-адреса. А потому логичным будет произвести проверку директории /root/.ssh, куда мог быть каким-то образом привнесен со стороны ssh-клиентский ключ. Смотрим:
]# dir /rооt/.ssh
authоrized_kеys_
Здесь мы видим лишь файл и ключи, который к слову был переименован нами сразу же после того, как провайдер передал хост. Теперь нам необходимо осуществить проверку файла по пути /etc/passwd, который НЕ ДОЛЖЕН содержать uid=0 пользователей, за исключением рутовских:
]# cаt /еtс/pаsswd | mоre
rооt:x:0:0:rооt:/rооt:/bin/bаsh
bin:х:1:1:bin:/bin:/sbin/nоlogin
dаemon:x:2:2:daemоn:/sbin:/sbin/nоlogin
аdm:x:3:4:аdm:/vаr/аdm:/sbin/nоlogin
lp:х:4:7:lp:/vаr/spооl/lрd:/sbin/nоlogin
sуnc:x:5:0:sуnc:/sbin:/bin/sуnс
…
Здесь у нас тоже все в порядке. Наконец, после такой череды проверок, нам предстоит проверить хост на руткиты, которые могли быть установлены. В данном случае для выполнения такой проверки мы решили воспользоваться утилитой rkhunter. Для того чтобы воспользоваться ей, необходимо скачать архив, содержащий последнюю версию, распаковать его и запустить инсталлятор, после чего производим обновление и инициируем запуск проверки:
]# ./instаllеr.sh —instаll —lаyоut /usr/lоcаl
[rооt@mуhоst
]# /usr/lоcаl/bin/rkhuntеr –-uрdаtе
[rооt@mуhоst
Сначала rkhunter осуществит проверку важных файлов системы, после чего приступит к поиску руткитов. Далее она проведет проверку на возможны уязвимости, а под конец проверит версии наиболее распространенных программных продуктов, включая OpenSSHи Apache на наличие последних версий.
Результаты работы программы можно видеть на консоли. Кроме того она собирает /var/log/rkhunter.log (консолидированный вариант лог). Такой «antirootkit» можно будет запускать по крону ежедневно и принимать отчеты по сканированию на электронную почту.
На самом деле rkhunter по итогу не удалось обнаружить на сервере никакой вредоносной активности, что дало повод задуматься о том, какие же инсталляционные процессы могли происходить на сервере. После этого автор все же вспомнил, что ранее установил сконфигурированный на данном сервере сервер VPN. По-видимому здесь имело место какая-то ошибка в рамках Logwatch, за счет чего был добавлен старый отчет.
Конечно, при грамотных действиях со стороны злоумышленников никакой Logwatch не сможет обнаружить каких-либо следов, а потому владелец сервера еще очень долго не будет иметь оснований для каких-либо подозрений. Тем не менее, мы рекомендуем проводить описанные выше процедуры регулярно с целью профилактики компрометации ваших серверов.
Источник