Урок 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. Это автоматический подбор пароля. Что делать:
- Запретить вход под
rootи вход по паролю — только по ключам. - Ограничить вход на порт 22 адресом офиса, как в уроке 3.
- Проверить, не было ли среди попыток успешного входа (
Accepted password).
В больших компаниях журналы со всех серверов собирают в одну систему и анализируют автоматически — об этом в уроке 6.
Обновления
Большинство взломов используют уже известные уязвимости, для которых давно вышли исправления. Обновление системы — одна из самых дешёвых и действенных мер:
sudo apt update && sudo apt upgrade
Безопасник следит, чтобы обновления ставили регулярно, а серверы со старыми, неподдерживаемыми версиями систем не оставались в работе.
Попробуйте сами. Вы проверяете сервер «Чайной лавки» и нашли: сайт работает от root; файл с резервной копией базы backup.sql имеет права -rw-rw-rw-; у бывшего курьера осталась учётная запись; система не обновлялась год. Расставьте находки по опасности и предложите исправление для каждой.
Пример ответа
- Резервная копия с правами
-rw-rw-rw-— любой пользователь прочитает и изменит всю базу клиентов. Исправить:chmod 600, а лучше хранить копии вне сервера. - Сайт от
root— взлом сайта даст полный контроль над сервером. Исправить: отдельный пользователь с минимальными правами. - Нет обновлений год — почти наверняка есть известные уязвимости. Исправить: обновить и настроить регулярные обновления.
- Учётная запись бывшего курьера — лишняя дверь, которую никто не охраняет. Исправить: удалить или заблокировать, завести правило закрывать доступ в день увольнения.
Мини-тест · 4 вопроса
Проверьте себя
Выберите вариант, который кажется вам правильным. В конце вы увидите свой результат и объяснение к каждому вопросу.
-
Что означает принцип минимальных привилегий?
Если учётную запись с минимальными правами взломают, ущерб будет небольшим. Администратор с полными правами — лакомая цель.
-
У файла с паролями от базы права -rw-r--r--. В чём проблема?
Последняя тройка r-- означает «остальные могут читать». Секреты должны быть доступны только владельцу: права -rw-------.
-
В журнале входа 300 строк «Failed password for root» с одного адреса за 10 минут. Что это скорее всего?
Сотни неудачных попыток с одного адреса — типичный признак автоматического подбора. Этот адрес стоит заблокировать, а вход под root по паролю — запретить.
-
Почему важно вовремя устанавливать обновления?
После публикации уязвимости атаки на неё начинаются быстро. Необновлённая система становится лёгкой мишенью.