Linux глазами хакера
Шрифт:
На экране появилось содержимое этого файла, и последней строкой был IP-адрес компьютера, с которого я производил сканирование:
Программа PortSentry среагировала достаточно быстро и эффективно, прописав в файл /etc/hosts.deny запрет использования любого сервиса с адреса 192.168.77.10. Больше я уже ничего сделать не мог. Единственный способ снова получить доступ — удаление строки из файла /etc/hosts.deny, показанной выше.
Нужно заметить, что некоторые порты могут использоваться достаточно часто, и программа будет думать,
Как видите, 113 и 139 порты по умолчанию уже исключаются из мониторинга.
12.4.3. LIDS
Пакет LIDS (Linux Intrusion Detection/Defence System, определение вторжения в Linux и система безопасности). Несмотря на то, что я не очень люблю использовать патчи ядра, этот заслуживает вашего внимания, потому что обладает большими возможностями и реально позволяет повысить безопасность системы.
Конфигурация и работа системы надежно защищены. Так. например, файлы настройки зашифрованы, и внести в них изменения достаточно сложно. Остановить работу LIDS также проблематично, потому что для этого необходимо знать пароль администратора системы.
Функция определения попыток сканирования — это самая малость, что может делать этот пакет. Кроме того, LIDS позволяет ограничить доступ к файлам на уровне программ, а не пользователей, тем самым расширяются возможности по управлению правами доступа и увеличивается общая безопасность. Например, командам
Установка LIDS не из простых, потому что требуется инсталляция патча на исходные коды и перекомпиляция ядра Linux. И вот тут на первый план выходит неудобство патча — при его обновлении нет гарантии, что он будет работать верно или не нарушит функционирование ядра. Исходные коды могут быть испорчены, и компиляция станет невозможной. При выходе новой версии ядра приходится на тестовой машине проверять его работу и устанавливать все на свой страх и риск. А если не обновлять ядро, то нет уверенности, что в дальнейшем оно будет удовлетворять новым требованиям безопасности.
Более подробную информацию по работе пакета LIDS вы можете узнать на официальном сайте www.lids.org.
12.5. Журналирование
В Linux работает одновременно сразу несколько журналов, и по содержащейся в них информации можно узнать много интересного. По ним вы сможете вычислить хакера и увидеть, когда он проник в систему, и немало всего любопытного. Так как ведение журналов — это один из инструментов обеспечения безопасности,
мы рассмотрим данный вопрос достаточно подробно. Это позволит вам лучше контролировать свои владения.12.5.1. Основные команды
Информация о текущих пользователях системы сохраняется в файле /var/run/utmp. Если попытаться посмотреть его содержимое, например, командой
Команда
Из этого списка становится ясно, что пользователь robert работает за первым терминалом (
Большинство хакеров при входе в систему выполняют эту команду, чтобы выяснить, есть ли сейчас в системе администратор. Если пользователь root присутствует, то начинающие хакеры стараются уйти, т.к. опасаются, что их знаний не хватит, чтобы остаться незамеченными.
Это еще одна причина, по которой администратор не должен входить в систему под учетной записью root. Лучше всего работать как простой пользователь, а когда не хватает прав, то переключаться на привилегированного. На такой случай я создал учетную запись, для которой установил UID, равный нулю. Она позволяет получить доступ ко всей системе, и при этом имеет имя отличное от root, и не вызовет подозрений, когда я буду работать. Так что в моем случае никогда нельзя увидеть пользователя root.
Эта команда позволяет вытащить из журнала /var/run/utmp список всех пользователей, которые сейчас зарегистрированы в системе.
В журнале /var/run/utmp информация хранится временно, только на момент присутствия пользователя. Когда он выходит из системы, соответствующая запись удаляется. После этого выяснить, кто и когда работал, можно только по журналу /var/log/wtmp. Это также бинарный файл, поэтому его содержимое можно увидеть с помощью специализированных программ.
Команда позволяет выяснить, когда и сколько времени определенный пользователь находился в системе. В качестве параметра передается интересующее имя. Например, следующая директива отображает время входа и продолжительность нахождения в системе пользователя robert:
Выполнив команду, вы увидите на экране примерно следующий список:
По этой записи можно понять, что robert находился за терминалом (