Защита Linux-сервера. Что сделать в первую очередь

H

Hackers Academy

Original poster
images


В наше время поднять сервер на хостинге — дело пары минут и нескольких щелчков мыши. Но сразу после запуска он попадает во враждебную среду, потому что открыт для всего интернета как невинная девушка на рокерской дискотеке. Его быстро нащупают сканеры и обнаружат тысячи автоматически скриптовых ботов, которые рыскают по сети в поисках уязвимостей и неправильных конфигураций. Есть несколько вещей, которые следует сделать сразу после запуска, чтобы обеспечить базовую защиту.

Содержание
Нерутовый юзер
Первым делом нужно завести для себя нерутового юзера. Дело в том, что у пользователя root абсолютные привилегии в системе, а если разрешить ему удалённое администрирование, то вы сделаете половину работы для хакера, оставив для него валидный username.

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

Новый пользователь заводится командой useradd:

useradd [options] <username>

Затем для него добавляется пароль командой passwd:

passwd <username>

Наконец, этого пользователя нужно добавить в группу, которая имеет право выполнять команды с повышением привилегий sudo. В зависимости от дитрибутива Linux, это могут быть разные группы. Например, в CentOS и Red Hat юзера добавляют в группу wheel:

usermod -aG wheel <username>

В Ubuntu он добавляется в группу sudo:

usermod -aG sudo <username>

Ключи вместо паролей SSH
Брутфорс или утечка паролей — стандартный вектор атаки, так что аутентификацию по паролям в SSH (Secure Shell) лучше отключить, а вместо неё использовать аутентификацию по ключам.

Есть разные программы для реализации протокола SSH, такие как lshи Dropbear, но самой популярной является OpenSSH. Установка клиента OpenSSH на Ubuntu:

sudo apt install openssh-client

Установка на сервере:

sudo apt install openssh-server

Запуск демона SSH (sshd) на сервере под Ubuntu:

sudo systemctl start sshd

Автоматический запуск демона при каждой загрузке:

sudo systemctl enable sshd

Нужно заметить, что серверная часть OpenSSH включает в себя клиентскую. То есть через openssh-server можно подключаться к другим серверам. Более того, со своей клиентской машины вы можете запустить SSH-туннель с удалённого сервера на сторонний хост, и тогда сторонний хост будет считать удалённый сервер источником запросов. Очень удобная функция для маскировки своей системы. Подробнее см. статью «

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

».

На клиентской машине обычно нет смысла ставить полноценный сервер, чтобы не допускать возможность удалённого подключения к компьютеру (в целях безопасности).

Итак, для своего нового юзера сначала нужно сгенерировать ключи SSH на компьютере, с которого вы будете заходить на сервер:

ssh-keygen -t rsa

Публичный ключ хранится в файле .pub и выглядит как строка случайных символов, которые начинаются с ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname



Затем из-под рута создать на сервере директорию SSH в домашнем каталоге пользователя и добавить публичный ключ SSH в файл authorized_keys, используя текстовый редактор вроде Vim:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys
vim /home/user_name/.ssh/authorized_keys

Наконец, установить корректные разрешения для файла:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

и изменить владение на этого юзера:

chown -R username:username /home/username/.ssh

На стороне клиента нужно указать местоположение секретного ключа для аутентификации:

ssh-add DIR_PATH/keylocation

Теперь можно залогиниться на сервер под именем юзера по этому ключу:

ssh [username]@hostname

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

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

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

На CentOS/Red Hat находим строку PermitRootLogin yes в конфигурационном файле /etc/ssh/sshd_config и изменяем её:

PermitRootLogin no

На Ubuntu добавляем строку PermitRootLogin no в конфигурационный файл 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

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

На CentOS/Red Hat находим строку PasswordAuthentication yes в конфигурационном файле /etc/ssh/sshd_config и изменяем её следующим образом:

PasswordAuthentication no

На Ubuntu добавляем строку PasswordAuthentication no в файл 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Инструкцию по подключению двухфакторной аутентификации по SSH см.

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

.

Файрвол
Файрвол гарантирует, что на сервер пойдёт только тот трафик по тем портам, которые вы напрямую разрешили. Это защищает от эксплуатации портов, которые случайно включились с другими сервисами, то есть сильно уменьшает поверхность атаки.

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

С дистрибутивом Ubuntu идёт Uncomplicated Firewall (ufw), а с CentOS/Red Hat — firewalld.

Разрешение SSH в файрволе на Ubuntu:

sudo ufw allow ssh

На CentOS/Red Hat используем команду firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

После этой процедуры можно запустить файрвол. На CentOS/Red Hat запускаем сервис systemd для firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

На Ubuntu используем такую команду:

sudo ufw enable

Fail2Ban
Сервис Fail2Ban анализирует логи на сервере и подсчитывает количество попыток доступа с каждого IP-адреса. В настройках указаны правила, сколько попыток доступа разрешено за определённый интервал — после чего данный IP-адрес блокируется на заданный отрезок времени. Например, разрешаем 5 неудачных попыток аутентификации по SSH в промежуток 2 часа, после чего блокируем данный IP-адрес на 12 часов.

Установка Fail2Ban на CentOS и Red Hat:

sudo yum install fail2ban

Установка на Ubuntu и Debian:

sudo apt install fail2ban

Запуск:

systemctl start fail2ban
systemctl enable fail2ban

В программе два конфигурационных файла: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf.

Ограничения для бана указываются во втором файле. Джейл для SSH включён по умолчанию с дефолтными настройками (5 попыток, интервал 10 минут, бан на 10 минут).

[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5

Кроме SSH, Fail2Ban может защищать и другие сервисы на веб-сервере nginx или Apache.

Автоматические обновления безопасности
Как известно, во всех программах постоянно находят новые уязвимости. После публикации информации эксплоиты добавляются в популярные эксплоит-паки, которые массово используются хакерами и подростками при сканировании всех серверов подряд. Поэтому очень важно устанавливать обновления безопасности как только они появляются.

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

На CentOS/Red Hat нужно установить приложение dnf-automaticи включить таймер:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Проверка таймера:

sudo systemctl status dnf-automatic.timer

Смена портов по умолчанию
SSH был разработан в 1995 году для замены telnet (порт 23) и ftp (порт 21), поэтому автор программы Тату Илтонен выбрал порт 22 по умолчанию, и его утвердили в IANA.

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

Смена стандартных портов — обфускация — в несколько раз сокращает объём мусорного трафика, размер логов и нагрузку на сервер, а также сокращает поверхность атаки. Хотя некоторые критикуют такой метод «защиты через неясность» (security through obscurity). Причина в том, что эта техника противопоставляется фундаментальной архитектурной защите. Поэтому, например, Национальный институт стандартов и технологий США в

«Руководстве по безопасности сервера» указывает необходимость открытой серверной архитектуры: «Безопасность системы не должна полагаться на скрытность реализации её компонентов», — сказано в документе.

Теоретически, смена портов по умолчанию противоречит практике открытой архитектуры. Но на практике объём вредоносного трафика действительно сокращается, так что это простая и эффективная мера.

Номер порта можно настроить, изменив директиву Port 22 в файле конфигурации /etc/ssh/sshd_config. Он также указывается параметром -p <port> в sshd . Клиент SSH и программы sftpтоже поддерживают параметр -p <port>.

Параметр -p <port> можно использовать для указания номера порта при подключении с помощью команды ssh в Linux. В sftpи scpиспользуется параметр -P <port> (заглавная P). Указание из командной строки переопределяет любое значение в файлах конфигурации.

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

С вами был ФСБ! Надеюсь тебе понравилась моя статья. Подписывайся на мой профиль UfoLabs и на мой телеграм канал

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

 
Название темы
Автор Заголовок Раздел Ответы Дата
Emilio_Gaviriya Статья Защита паролей от кейлоггеров Анонимность и приватность 0
Emilio_Gaviriya Статья Защита и надёжность: Важность патчей для Microsoft Active Directory. Вирусология 0
Emilio_Gaviriya Статья Защита конфиденциальности: Как сбросить данные на Android в экстренных ситуациях. Полезные статьи 0
Emilio_Gaviriya Статья Защита от пробивал: как создать фейковые данные о себе в «Глазе Бога». Анонимность и приватность 3
C IonCube PHP Encoder 10.2 [Защита кода PHP][Cracked by Coder-V 2022] Продажа софта 0
JohnWoo Password Protect Video Master v8.0 (Защита видео от копирования) Продажа софта 0
Y RDP. Защита Полезные статьи 2
Denik Интересно Защита MacOS от А до Я Уязвимости и взлом 0
A Защита от DDoS атак Anti-DDoS PRO Ищу работу. Предлагаю свои услуги. 0
N Защита от спама (смс) ? Полезные статьи 1
K Защита от удаленного администрирования Вопросы и интересы 4
K [Специалист] Защита веб-сайтов от взлома Другое 0
V Защита от манипуляций Полезные статьи 0
P McAfee LiveSafe на 1 год бесплатно. Защита до 30 устройств Другое 1
opnot Защита от Meterpreter Полезные статьи 0
Emilio_Gaviriya Статья Уязвимости в ядре Linux и привилегии через nf_tables и ksmbd. Анонимность и приватность 0
El_IRBIS Интересно Вредоносный код в дистрибутивах Linux: Понимание угрозы и меры безопасности. Вирусология 0
Support81 10 из 10: В Linux обнаружен встроенный бэкдор (CVE-2024-3094) Новости в сети 0
DOMINUS Проверено Защищенные криптованные смартфоны, ноутбуки, флеш-карты и SSD-диски на базе ОС Linux: обеспечение анонимности и безопасности в интернете Все что не подошло по разделу 2
semsvm Интересно Пассивный заработок от 2$+ в сутки - на своем ПК, Android, Linux! Корзина 1
R Kali linux какие бывают Свободное общение и флейм 1
R Установка языковый пакет на kali linux persistence Свободное общение и флейм 0
H Не могу установить драйвер Nvidia Kali Linux Все что не подошло по разделу 1
H Kali Linux картинка сыпится в крошки Все что не подошло по разделу 0
Denik Интересно Малварь для Linux, CronRAT, скрывается в cron job с неверными датами Новости в сети 0
B Услуги Linux администратора, настройка vps, серверов Ищу работу. Предлагаю свои услуги. 0
Ёшкин_кот Интересно Kali Linux Revealed (на русском) Полезные статьи 0
H Prey: Отслеживаем Linux компьютер Корзина 0
H PowerShell для пентестов в Kali Linux Корзина 0
H Новый Linux-модуль платформы TrickBot тайно атакует Windows-ПК Подробнее: https://www.securitylab.ru/news/510661.php Корзина 0
H Шифрование сообщений в GPG на Linux. Корзина 0
H Основы Linux для начинающего "Хакера" - Использование скриптов запуска Корзина 0
H Основы Linux для начинающего "Хакера" - Сети Корзина 0
1 Языки программирования на Linux Mint. Вопросы и интересы 3
Denik Интересно Проверяем вирусы на серверах Linux Полезные статьи 0
CMDfromBAT Интересно Взлом почты при помощи Hydra в Kali Linux Уязвимости и взлом 2
Д Аренда VPS/VDS сервера. Аренда VPS от 260 руб. Windows/Linux Server. Сайты/Хостинг/Сервера 3
V Kali Linux netsed Kali Linux 0
Denik Интересно Трояны для слежки под Windows, macOS, Linux, Android, iOS Анонимность и приватность 0
CMDfromBAT Интересно Ninjutsu-OS: "Kali Linux" в среде Windows Полезные статьи 48
T Проблема с иконками на kali linux kde Вопросы и интересы 1
Eteriass Интересно Мини VPN для Kali Linux/Nipe/ СИ/Фишинг/Мошенничество 1
Eteriass Фишинг на Kali linux/Shellphish/ СИ/Фишинг/Мошенничество 17
E Интересно Доступ к веб-камере при помощи Kali linux и CИ Уязвимости и взлом 5
E Интересно Повышаем привилегии в Linux: TOP утилит Уязвимости и взлом 2
E Чистим Linux Полезные статьи 0
T установка Kali linux 2020.1b Вопросы и интересы 1
CMDfromBAT Интересно RECREATOR-PHISHING - ЛУЧШИЙ ФИШИНГ ДЛЯ ЛЮБОЙ СТРАНИЦЫ! KALI LINUX СИ/Фишинг/Мошенничество 29
S Продам vps windows linux 2.50 $ месяц, вы также можете арендовать на час за 0.03 $ Сайты/Хостинг/Сервера 2
X /HumenError/Фишинг instagram/Kali linux/ СИ/Фишинг/Мошенничество 10

Название темы