26 апреля, 2024

Основы Linux. Часть 29 ( Работа с загрузочными скриптами )

Содержание:

В Linux есть много процессов, которые должны работать постоянно, в фоновом режиме, и запускаться при старте системы. Это те процессы, которые нам нужно запустить при загрузке, чтобы они всегда были доступны.

Если мы используем дистрибутив Linux с графическим интерфейсом, например, Kali или Ubuntu, то нам нужно, чтобы процесс X11 постоянно работал. Если мы используем Linux в качестве веб-сервера, то, скорее всего, нам нужно чтобы Apache и MySQL запускались при загрузке и работали.

В этой статье мы рассмотрим, как Linux запускает процессы при загрузке, и настроим Snort — самую широко используемую в мире IDS (intusion detection system — систему обнаружения вторжений), чтобы она автоматически запускалась при загрузке системы. Таким образом она всегда будет на страже сети без лишних телодвижений со стороны пользователя.

Процесс загрузки Linux

Для начала нам нужно изучить процесс загрузки Linux. Он начинается с BIOS (базовая система ввода/вывода), затем MBR (главная загрузочная запись) выполняет GRUB (главный унифицированный загрузчик), затем ядро ​​выполняет скрипт init (инициализацию или первый процесс) и, наконец, программа уровня выполнения (runlevel) исполняется из /etc/rc.d.

Как вы, вероятно, уже знаете, Linux можно запустить с несколькими следующими уровнями выполнения (runlevel):

  • 0 — остановка системы
  • 1 — однопользовательский режим (минимум сервисов)
  • 2 — многопользовательские режимы
  • 3 — многопользовательский режим
  • 4 — многопользовательский режим
  • 5 — многопользовательский режим
  • 6 — перезагрузка системы

Наша Kali, являющаяся дистрибутивом Linux на основе Debian, обычно загружается в runlevel 2.

Процесс Init.d

Init — это самый первый процесс. Он является предком всех процессов Linux и всегда имеет идентификатор процесса (PID) равный 1. Как видно на скриншоте ниже, init имеет значение PID 1.

kali> ps aux | grep init

Затем этот инициализирующий процесс передает процедуру загрузки демону rc.d.

Читать также:  Основы Linux. Часть 25 (супер-демон Inetd)

Здесь важно отметить, что разные дистрибутивы Linux обрабатывают процесс запуска демона по-разному. В целом, все они используют процесс init как первый процесс, но то, как они передают процесс загрузки загрузочным скриптам, немного отличается. В этом случае мы будем рассматривать процесс загрузки в Kali Linux, который использует ту же процедуру, что и другие Linux-системы на базе Debian.

Шаг 1. Откройте директорию init.d

Теперь, когда у нас есть базовое понимание процесса загрузки в Linux, давайте посмотрим, можем ли мы добавить Snort к общему процессу загрузки нашей Kali.

Для начала перейдем в директорию /etc/init.d, это директория инициализирующего демона (не путать с inetd). В этой директории находятся все скрипты, запускающие различные процессы во время загрузки системы.

kali> cd /etc/init.d
 kali> ls -l

Как видно на скриншоте, эти файлы могут быть выполнены процессом init при загрузке системы. Посмотрите, например, на процесс apache2. Если мы спустимся чуть ниже по странице, то мы увидим rc.local.

Шаг 2. Откройте rc.local с помощью текстового редактора

Теперь откроем rc.local в любом текстовом редакторе, rc.local содержит скрипт для запуска необходимых процессов в фоновом режиме при загрузке системы. Здесь мы будем использовать Leafpad.

kali> leafpad /etc/init.d/rc.local

Шаг 3. Установите Snort

Теперь посмотрим, сможем ли мы использовать то, что узнали об автозагрузке, чтобы заставить Snort IDS запускаться при загрузке системы. Если Snort у вас пока не установлен, то сделайте это прямо сейчас, введя в консоли следующую команду:

kali> apt-get install snort

Пакет Snort скачается и установится. В процессе своей установки Snort разместит скрипт своего запуска в каталоге /etc/init.d. Заглянем туда и удостоверимся в этом.

kali> ls -l

Как видите, Snort действительно разместил свой скрипт запуска в каталоге /etc/init.d. Теперь все, что нам осталось сделать — это выполнять этот скрипт каждый раз при запуске системы.

Читать также:  Взлом Bluetooth. Часть 3 (разведка)

Если вы скомпилировали Snort из исходников, то у вас может и не быть этого скрипта. В этом случае просто создайте файл с именем «snort» и сохраните его в каталоге /etc/init.d. В этом файле поместите команду для запуска Snort, например:

/usr/sbin/snort -D -c /etc/snort/snort.conf -l /var/log/snor

Убедитесь, что у этого скрипта установлены права на его выполнение (755).

Шаг 4. Запуск Snort из rc.local

Существует множество способов запустить какой-нибудь скрипт при запуске системы, но самым простым способом является использование файла rc.local. Как мы уже видели раньше, файл rc.local содержит скрипт для запуска различных сервисов при загрузке системы. Теперь все, что нам осталось сделать — это добавить в этот файл команды для запуска Snort.

Откроем этот файл с помощью Leafpad и добавим две строки в конце файла для того чтобы: 1) убедиться, что в беспорядочном режиме работы сетевой платы выбран правильный интерфейс (ifconfig eth0 up -arp), и 2) выполнить скрипт, который пакет Snort поместил в директории init.d (/etc/init.d/snort start).

Теперь, когда ваша система включается, Snort всегда будет запускаться в фоновом режиме. Давайте убедимся в этом. Перезагрузите систему Kali и посмотрите, запустится ли Snort автоматически.

Теперь, когда наша система перезагрузилась, проверим, работает ли Snort. Для этого наберите в консоли:

kali> ps aux | grep snort

Отлично! Теперь наша сеть постоянно защищается пакетом Snort с момента загрузки нашей системы!

Обязательно возвращайтесь, поскольку мы будем продолжать изучать внутреннюю работу Linux, чтобы дать вам те навыки, которые необходимы профессиональным хакерам!

Предыдущие статьи ( 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 23 , 25 , 26 , 27 , 28).

Читать также:  7 преимуществ Linux перед Mac

Добавить комментарий