Советы по проверке и защите серверов

Подозреваете, что Linux-сервер взломан? Уверены, что всё в порядке, но на всякий случай хотите повысить уровень безопасности? Если так – вот несколько простых советов, которые помогут проверить систему на предмет взлома и лучше её защитить.

Проверка

Для того, чтобы узнать, не взломали ли ваш сервер, скажем, работающий под управлением Ubuntu, стоит кое-что проверить.

▍Данные последнего входа в систему

Выясните данные последнего входа в систему. Делается это с помощью команды lastlog.

$>lastlog

▍История команд

Взгляните на историю команд, узнайте, когда именно их вводили:

$><span class="hljs-keyword">history</span>

Если список команд выводится без даты – настройте соответствующие параметры утилиты history.

▍Журнал auth.log

Следующий способ проверки – просмотр файла /var/log/auth.log. Например, с помощью такой команды:

$>sudo <span class="hljs-keyword">vi</span> /var/<span class="hljs-built_in">log</span>/auth.<span class="hljs-built_in">log</span>

Здесь можно найти список всех, кто пытался подключиться к серверу по SSH.

▍IP-адреса

Для того, чтобы выяснить IP-адреса, с которых подключались к серверу, воспользуйтесь такой командой:

$>zgrep sshd /var/<span class="hljs-keyword">log</span>/auth.<span class="hljs-keyword">log</span>* | <span class="hljs-keyword">grep</span> rhost | sed -re <span class="hljs-string">'s/.*rhost=([^ ]+).*/\1/'</span> | <span class="hljs-keyword">sort</span> –u

▍Журналы Apache

Проверьте журналы Apache:

$>sudo vi /var/<span class="hljs-keyword">log</span>/apache2/access.<span class="hljs-keyword">log</span>
$>sudo vi /var/<span class="hljs-keyword">log</span>/apache2/<span class="hljs-keyword">error</span>.<span class="hljs-keyword">log</span>

▍Поиск подозрительных процессов

Если вы уверены в том, что сервер взломан, разыщите процесс злоумышленника. Например, список всех процессов можно получить такой командой:

$><span class="hljs-keyword">ps</span> aux | less

▍Список заданий cron

Анализируя сервер на предмет взлома, полезно будет проверить список заданий cron, в который злоумышленник вполне мог добавить что-то своё.

$>crontab -l | <span class="hljs-keyword">grep</span> -v ‘^<span class="hljs-comment">#’</span>

Независимо от того, выявила ли проверка попытки взлома, безопасности много не бывает. Поэтому вот – несколько советов по защите сервера.

Защита

Рекомендации по защите сервера, в основном, касаются отслеживания и блокирования подозрительной активности, а также регулярного обновления программного обеспечения.

▍Запрет входа root-пользователей по SSH

Для повышения уровня безопасности сервера стоит запретить вход root-пользователей по SSH.

$>sudo <span class="hljs-keyword">vi</span> /etc/ssh/sshd_config
PermitRootLogin <span class="hljs-keyword">no</span>

▍Автоматические обновления

Включите автоматические обновления безопасности с использованием пакета unattended-upgrades. Сначала его надо установить:

$>sudo apt-<span class="hljs-keyword">get</span> install unattended-upgrades

Следующий шаг – настройка:

$>sudo dpkg-reconfigure -plow unattended-upgrades

Пакет можно вызвать и самостоятельно:

$>sudo unattended-upgrade

▍Настройка блокировок

Установите пакет fail2ban. Для того, чтобы блокировать с его помощью подозрительных SSH-пользователей, воспользуйтесь этим руководством, поле чего настройте систему отчётов.
Для того, чтобы узнать, сколько раз fail2ban заблокировал некий IP-адрес, воспользуйтесь такой командой:

$>sudo awk '($(NF-1) = /Ban/){<span class="hljs-keyword">print</span> <span class="hljs-variable">$NF}</span>' /<span class="hljs-keyword">var</span>/<span class="hljs-keyword">log</span>/fail2ban.<span class="hljs-keyword">log</span> | <span class="hljs-keyword">sort</span> | uniq -c | <span class="hljs-keyword">sort</span> –<span class="hljs-keyword">n</span>

Для того, чтобы просмотреть весь файл журнала fail2ban, введите следующее:

$>sudo zgrep -<span class="hljs-keyword">h</span> <span class="hljs-string">"Ban "</span>/<span class="hljs-keyword">var</span>/<span class="hljs-keyword">log</span>/fail2ban.<span class="hljs-keyword">log</span>* | awk '{<span class="hljs-keyword">print</span> <span class="hljs-variable">$NF}</span>' | <span class="hljs-keyword">sort</span> | uniq –c

Для поиска проблемных подсетей подойдёт такая команда:

$>sudo zgrep -<span class="hljs-keyword">h</span> <span class="hljs-string">"Ban "</span> /<span class="hljs-keyword">var</span>/<span class="hljs-keyword">log</span>/fail2ban.<span class="hljs-keyword">log</span>* | awk '{<span class="hljs-keyword">print</span> <span class="hljs-variable">$NF}</span>' | awk -F\. '{<span class="hljs-keyword">print</span> <span class="hljs-variable">$1</span><span class="hljs-string">"."</span><span class="hljs-variable">$2</span><span class="hljs-string">"."</span>}' | <span class="hljs-keyword">sort</span> | uniq -c | <span class="hljs-keyword">sort</span> -<span class="hljs-keyword">n</span> | tail

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

Например, вот как заблокировать подключения к sshd-порту из подсети 221.229.*.*:

$>sudo iptables -I INPUT -<span class="hljs-selector-tag">p</span> tcp -s <span class="hljs-number">221.229</span>.<span class="hljs-number">0.0</span>/<span class="hljs-number">255.255</span>.<span class="hljs-number">0.0</span> --dport ssh -j REJECT --reject-with tcp-reset

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

$>sudo iptables -vnL <span class="hljs-keyword">INPUT</span> --<span class="hljs-keyword">line</span>-numbers

Для того, чтобы правила iptables сохранялись после перезагрузки сервера, установите в Ubuntu пакет iptables-persistent.

$>sudo apt-<span class="hljs-built_in">get</span> install iptables-persistent
$><span class="hljs-keyword">cat</span> /etc/iptables/rules.v4

Если вы отредактировали правила iptables, используйте такую команду:

$>sudo bash -<span class="hljs-built_in">c</span> <span class="hljs-string">"iptables-save  > /etc/iptables/rules.v4"</span>

Файл с правилами не рекомендуется править вручную, так как его формат важен для того, чтобы всё работало как надо.

Поділіться своєю любов'ю

Залишити відповідь

0 комментариев
Новіші
Старіші Найпопулярніші
Вбудовані Відгуки
Переглянути всі коментарі
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x