Безопасность сервера Linux

Безопасность сервера Linux

Шифропанк

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

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

Есть много вещей, которые вы можете сделать, чтобы защитить сервер Linux, и это руководство лишь малая часть, но не менее важная.

Обновление системы

В программном обеспечении постоянно находят и исправляют различные уязвимости. Своевременные обновления дистрибутива является ключевым моментом для обеспечения безопасности вашего VPS.

Для обновления надо выполнить 2 простые команды:

sudo apt update

и

sudo apt upgrade

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

Изменение пароля пользователя root

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

Войдите в свой VPS от имени root и измените пароль командой:

passwd

Создание пользователя с ограниченными правами

Как правило, задачи, не требующие прав root, должны выполняться через обычного пользователя. Создать нового пользователя можно с помощью следующей команды:

adduser Имя_нового_пользователя

Новому пользователю будет разрешен вход в систему через SSH . При установлении соединения используйте имя нового пользователя.

Для выполнения операций, требующих повышенных прав всегда можно переключиться на root командой:

su

Отключение доступа к серверу через root

Не рекомендуется и даже опасно оставлять VPS доступным через root.

Поэтому сразу после создания нового пользователя, нужно отключить прямой доступ через пользователя root по протоколу SSH. Для этого необходимо изменить файл конфигурации SSH следующим образом.

Открываем файл конфигурации:

nano /etc/ssh/sshd_config

Ищем следующий раздел:

# Authentication: 
LoginGraceTime 120
PermitRootLogin yes 
StrictModes yes

Заменяем yes на no в строке PermitRootLogin и сохраняем.

Чтобы эта модификация была принята, необходимо перезапустить службу SSH :

sudo service sshd restart

После этого подключение к серверу через пользователя root будет отключено.

Изменение SSH-порта

По умолчанию SSH использует 22 порт и большинство атак идут именно на этот порт. Изменение порта SSH должно добавить дополнительный уровень безопасности. Для этого в том же файле /etc/ssh/sshd_config нужно найти строку:

#Port 22

и заменить порт на любой другой, также убрав # в самом начале. Обязательно проверьте, не используется ли выбранный порт другими службами. Например:

Port 2345

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

ssh [username]@[ip-server] -p 2345

Вход по SSH с использованием ключей

SSH поддерживает возможность аутентификации по ключу, что обеспечивает максимальный уровень безопасности.

Чтобы сгенерировать Ed25519 ключи, на своем ПК используйте команду:

ssh-keygen -t ed25519

При запросе, вводим ключевую фразу (пароль) для ключа, таким образом ваш приватный ключ будет бесполезен для того, кто этой фразы не знает.

Далее закинем на сервер публичный ключ командой:

ssh-copy-id -i ~/.ssh/id_ed25519.pub [username]@[ip-server]

Вводим пароль от сервера. Готово.

Теперь присвоим ПК приватный ключ командой:

ssh-add ~/.ssh/id_ed25519

Далее, чтобы включить аутентификацию по ключу нам нужно отредактировать файл /etc/ssh/sshd_config на сервере:

nano /etc/ssh/sshd_config

Раскомментируем строчку, т.е убираем #

#AuthorizedKeysFile %h/.ssh/authorized_keys

В этом же файле нужно отключить возможность авторизовываться на сервере по паролю, для этого ищем строку:

#PasswordAuthentication yes

и меняем на

PasswordAuthentication no

Сохраняем и перезагружаем ssh-сервер

sudo service sshd restart

Теперь сервер принимает только ssh-ключ.

Сделаем файл authorized_keys неизменяемым.

chattr +i /home/[username]/.ssh/authorized_keys

Брандмауэр

Настройка брандмауэра имеет решающее значение в обеспечении безопасности вашего сервера. В Linux наиболее распространенным брандмауэром является iptables, который многим может показаться довольно сложным в настройке. Чтобы не мучиться с настройкой iptables, предлагаю другой вариант - UFW (Uncomplicated Firewall). UFW - это интерфейс для iptables упрощающий процесс управления правилами iptables, которые сообщают ядру Linux, что делать с сетевым трафиком.

Устанавливается ufw командой:

sudo apt install ufw

Один из вариантов использования, запретить весь исходящий и входящий трафик и открыть только те порты, которые вы будите использовать.

Запретить весь исходящий трафик:

sudo ufw default deny outgoing

Запретить весь входящий трафик:

sudo ufw default deny incoming

Сразу откроем ssh порт, который мы перенесли на порт 2345, используя команду:

sudo ufw limit in 2345/tcp

Несколько примеров открытия портов, которые вам могут понадобиться (для удобства в каждую команду добавлен комментарий) :

#  разрешить выход трафика на порт 53 -- DNS 
sudo ufw allow out 53 comment 'allow DNS calls out'

#  разрешить выход трафика на порт 123 -- NTP 
sudo ufw allow out 123 comment 'allow NTP out'

#  разрешить выход трафика для HTTP, HTTPS, FTP 
#  apt может нуждаться в них 
sudo ufw allow out http comment 'allow HTTP traffic out'
sudo ufw allow out https comment 'allow HTTPS traffic out'
sudo ufw allow out ftp comment 'allow FTP traffic out'

#  разрешить whois 
sudo ufw allow out whois comment 'allow whois'

#  разрешить трафик на порту 68 -- DHCP-клиент 
#  это нужно только в том случае, если вы используете DHCP 
sudo ufw allow out 67 comment 'allow the DHCP client to update'
sudo ufw allow out 68 comment 'allow the DHCP client to update'

Запустить ufw:

sudo ufw enable

Чтобы посмотреть список разрешений используйте команду:

sudo ufw status verbose

Установка Fail2ban

Fail2ban — сканирует log–файлы запущенных сервисов, и блокирует IP-адреса активность которых является подозрительной (большое количество попыток войти с неправильно введенным паролем, выполнение опасных или бессмысленных действий и т.д.).

Установка:

sudo apt install fail2ban

Все необходимые настройки Fail2Ban производятся в файле /etc/fail2ban/jail.conf . Но прежде чем вносить свои изменения в этот файл, Fail2Ban советует сделать копию с помощью локального файла. Это необходимо потому, что файлы conf по умолчанию могут быть перезаписаны при обновлениях, и вы потеряете все свои настройки.

Поэтому копируем файл jail.conf в файл jail.local. и будем производить все настройки в jail.local, они будут сохраняться при обновлениях. Оба файла автоматически считываются Fail2ban.

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Файл jail.conf поделён на секции, так называемые «тюрьмы», каждая секция отвечает за определённый сервис.

Запустить fail2ban:

sudo fail2ban-client start

Антивирус ClamAV

ClamAV — это антивирус с открытым исходным кодом для обнаружения троянов, вирусов, вредоносных программ и других вредоносных угроз.

Нам понадобятся 3 пакета:

  • clamav - сам сканер
  • clamav-freshclam - сервис обновления вирусной базы данных
  • clamav-daemon - демон сканера

Установка:

sudo apt install clamav clamav-freshclam clamav-daemon

По умолчанию все уже достаточно хорошо настроено, так что можно за это не волноваться.

Запустим clamav-freshclam:

sudo service clamav-freshclam start

Проверим:

sudo service clamav-freshclam status

Сканирование файлов/папок

  • Для ручного сканирования файлов/папок используется clamscan.
  • clamscan запускается от имени пользователя, поэтому ему нужны разрешения на чтение файлов/папок, которые он сканирует.
  • Использование clamscan от имени root опасно, потому что если файл на самом деле является вирусом, существует риск того, что он может использовать привилегии root.
  • Для сканирования файла: clamscan /path/to/file
  • Для сканирования каталога: clamscan -r /path/to/folder

Сканер руткитов

Одной из самых опасных вредоносных программ является руткит.

Он существует на уровне операционной системы и может скрытно открыть доступ к серверу. Можно использовать Chrootkit или Rkhunter, инструменты с открытым исходным кодом, чтобы узнать, заражен ли ваш сервер.

Установка Chrootkit:

sudo apt install chkrootkit

Сканирование производится командой:

sudo chkrootkit

Установка Rkhunter:

sudo apt install rkhunter

Обновление rkhunter и его баз данных:

sudo rkhunter --versioncheck
sudo rkhunter --update
sudo rkhunter --propupd

Сканирование системы:

sudo rkhunter --check

Руткиты не всегда легко удалить, проще переустановить ОС.

Помимо всего вышеперечисленного могу добавить, что не стоит захламлять систему ненужными пакетами и программами. Каждая такая программа это потенциальная точка входа, которой могут воспользоваться незваные гости. Так что устанавливайте только то ПО, без которого вы не можете обойтись.

Всегда используйте надежные пароли и делайте резервные копии своей системы.


P.S. Автоматическая настройка

Обратите внимание на Bash скрипт, который автоматизирует некоторые задачи, чтобы обеспечить базовую безопасность VPS сервера. О том что делает этот скрипт и как им пользоваться можно прочитать на странице скрипта.




Поддержать канал

Bitcoin: bc1qx07rnee8n78k3tac0ra690309ujyjg7hnkeu0v

Ethereum: 0xf9FCac64C6510A7DB29706f903d38FB532dfbDc0

Litecoin: LPdVENDq5ataHCqRrQnEEemVqFQmJ7aUqJ

DASH: XeLtyRNnMET2nF1gRApzBWzFoN15C2tWgj

Zcash: t1acDtEboR4oPPmAPKADNQ3tyoU11KdpqEZ

Monero: 487g4zkuCVE5n4a9pDeHLSdNCwp3nCMhp4Ki1T5UkBpWG1mVcB9ghmoUmjGXisSNaKiLhpVqZSNhvGsv3trszHhnSpW6nR5



Report Page