Урок 4 из 8 · 25 мин · обновлено

Linux для безопасника: права, логи, процессы

Что специалисту по безопасности нужно знать о Linux: пользователи и права доступа, принцип минимальных привилегий, журналы входа и поиск подозрительной активности, обновления.

Почему именно Linux

Сайт «Чайной лавки», как и большинство серверов в интернете, работает на Linux. Специалисту по безопасности нужно уметь на таком сервере проверить права, найти подозрительные входы и понять, какие программы запущены. Основы командной строки подробно разобраны в курсе «Командная строка и Linux» — здесь только то, что важно для защиты.

Права доступа

У каждого файла в Linux есть владелец, группа и права для трёх категорий: владельца, группы и всех остальных. Посмотрим на файл с настройками сайта, где хранится пароль от базы:

Терминал
ls -l /var/www/shop/config.php
Результат
-rw-r--r-- 1 www-data www-data 812 окт 20 14:02 /var/www/shop/config.php

Права читают тройками: rw- — владелец может читать и менять, r-- — группа может читать, r-- — все остальные тоже могут читать. Значит, любой пользователь сервера увидит пароль от базы. Исправляем:

Терминал
sudo chmod 600 /var/www/shop/config.php
ls -l /var/www/shop/config.php
Результат
-rw------- 1 www-data www-data 812 окт 20 14:02 /var/www/shop/config.php

Теперь файл читает только владелец — программа сайта.

Минимальные привилегии

Главный принцип защиты: у каждого пользователя и программы — только те права, которые нужны для работы.

  • Сайт работает от отдельного пользователя www-data, а не от администратора root.
  • Сотрудники заходят на сервер под своими учётными записями и получают права администратора через sudo только на нужные действия.
  • Бывшим сотрудникам доступ закрывают в день увольнения.

Если взломают сайт, работающий с минимальными правами, злоумышленник не получит доступ ко всему серверу. Если сайт работает от root — получит всё.

Журналы: что происходило в системе

Linux записывает важные события в журналы (логи). Попытки входа на многих системах хранятся в файле /var/log/auth.log. Посмотрим неудачные входы:

Терминал
grep "Failed password" /var/log/auth.log | tail -n 3
Результат
окт 27 03:14:07 shop sshd[2211]: Failed password for root from 198.51.100.7 port 51022 ssh2
окт 27 03:14:09 shop sshd[2213]: Failed password for root from 198.51.100.7 port 51040 ssh2
окт 27 03:14:11 shop sshd[2215]: Failed password for admin from 198.51.100.7 port 51066 ssh2

Попытки каждые две секунды, с одного адреса, ночью, к учётным записям root и admin. Это автоматический подбор пароля. Что делать:

  1. Запретить вход под root и вход по паролю — только по ключам.
  2. Ограничить вход на порт 22 адресом офиса, как в уроке 3.
  3. Проверить, не было ли среди попыток успешного входа (Accepted password).

В больших компаниях журналы со всех серверов собирают в одну систему и анализируют автоматически — об этом в уроке 6.

Обновления

Большинство взломов используют уже известные уязвимости, для которых давно вышли исправления. Обновление системы — одна из самых дешёвых и действенных мер:

Терминал
sudo apt update && sudo apt upgrade

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

Попробуйте сами. Вы проверяете сервер «Чайной лавки» и нашли: сайт работает от root; файл с резервной копией базы backup.sql имеет права -rw-rw-rw-; у бывшего курьера осталась учётная запись; система не обновлялась год. Расставьте находки по опасности и предложите исправление для каждой.

Пример ответа
  1. Резервная копия с правами -rw-rw-rw- — любой пользователь прочитает и изменит всю базу клиентов. Исправить: chmod 600, а лучше хранить копии вне сервера.
  2. Сайт от root — взлом сайта даст полный контроль над сервером. Исправить: отдельный пользователь с минимальными правами.
  3. Нет обновлений год — почти наверняка есть известные уязвимости. Исправить: обновить и настроить регулярные обновления.
  4. Учётная запись бывшего курьера — лишняя дверь, которую никто не охраняет. Исправить: удалить или заблокировать, завести правило закрывать доступ в день увольнения.

Мини-тест · 4 вопроса

Проверьте себя

Выберите вариант, который кажется вам правильным. В конце вы увидите свой результат и объяснение к каждому вопросу.

  1. Что означает принцип минимальных привилегий?

  2. У файла с паролями от базы права -rw-r--r--. В чём проблема?

  3. В журнале входа 300 строк «Failed password for root» с одного адреса за 10 минут. Что это скорее всего?

  4. Почему важно вовремя устанавливать обновления?