Защита SSH (Secure Shell) от взлома — это критически важная задача, особенно если сервер доступен из интернета или используется в локальной сети с потенциальными уязвимостями. SSH предоставляет удалённый доступ к серверу, и если злоумышленник получит доступ к вашему SSH, он сможет полностью контролировать систему, что может привести к серьёзным последствиям. Давайте разберём, почему это так важно и какие риски возникают при отсутствии защиты.
SSH — это «входная дверь» в ваш сервер
SSH часто используется для управления серверами, особенно в Linux/Unix-системах. Если злоумышленник взломает SSH, он получит полный доступ к серверу, включая возможность:
Популярность атак на SSH
SSH-серверы — одна из самых частых целей для автоматизированных атак. Боты постоянно сканируют интернет в поисках открытых портов SSH (по умолчанию это порт 22) и пытаются подобрать пароли методом перебора (brute-force). Например:
Риск утечки данных
Если злоумышленник получит доступ через SSH, он сможет скачать все данные, хранящиеся на сервере. Это особенно опасно, если сервер содержит:
Компрометация всей сети
Если сервер находится в локальной сети, взлом SSH может стать точкой входа для атаки на другие устройства в сети. Злоумышленник может:
Репутационные и финансовые потери
Если ваш сервер взломают, это может привести к:
1️⃣ Отключаем root-доступ. Вход под пользователем root — это частая цель атак. Запретите его в /etc/ssh/sshd_config:
PermitRootLogin no
2️⃣ Меняем стандартный порт.
Port 10022
3️⃣ Используем SSH-ключи вместо паролей! Аутентификация по ключам гораздо безопаснее, чем по паролю. Отключите вход по паролю в /etc/ssh/sshd_config:
PasswordAuthentication no PubkeyAuthentication yes
После этого сгенерируйте пару ключей:
ssh-keygen -t rsa -b 4096
И скопируйте публичный ключ на сервер:
ssh-copy-id user@server
Всё, теперь можно «заряжать» ключ в ssh-клиент и пользоваться!
4️⃣ Ограничиваем доступ по IP. Тут можно просто ограничить вход только с доверенных IP через AllowUsers или AllowGroups:
AllowUsers [email protected]
А можно настроить соответствующее правило в фаерволе. Вот пример для ufw:
sudo ufw allow from 192.168.1.0/24 to any port 10022 sudo ufw deny 10022
5️⃣ Включаем защиту от brute-force атак. В этом нам поможет утилита fail2ban, которая блокируют IP-адреса после нескольких неудачных попыток входа. Установка fail2ban:
apt install fail2ban # Debian/Ubuntu yum install fail2ban # CentOS/RHEL
Прописываем настройки в файле: /etc/fail2ban/jail.local:
[sshd] enabled = true maxretry = 3 findtime = 10m bantime = 1h
6️⃣ Отключаем X11 Forwarding и пустые пароли
X11Forwarding no PermitEmptyPasswords no
После сохранения изменений в файле sshd_config, не забывайте перезапускать службу sshd, чтобы изменения вступили в силу.
$: sudo systemctl restart sshd
P.S.:
Защита SSH — это не просто рекомендация, а необходимость, особенно для серверов, доступных из интернета. Взлом SSH может привести к катастрофическим последствиям: от утечки данных до полной компрометации инфраструктуры. Внедрение базовых мер безопасности, таких как смена порта, использование ключей, настройка файрвола и мониторинг, значительно снижает риски. Однако важно помнить, что безопасность — это непрерывный процесс, и нужно регулярно обновлять настройки и следить за новыми угрозами.
The post Базовая защита SSH — обязательный минимум конфигурации first appeared on Как настроить?.]]>У системного администратора разные задачи бывают. Одна из такие — когда нужно поменять имя сервера Windows, но при этом обеспечить плавную миграцию клиентов, то есть без массово их отвала и жалоб на недоступность сервера. Как это сделать?! Самый оптимальный вариант — это добавить альтернативное имя. Это позволит временно сохранить старое имя до тех пор, пока все клиентские устройства плавно не перетекут на новое.
В Windows Server для этого используется консольная утилита netdom.
Вот пример её использования:
netdom computername fs01 /ADD new-server.corporate.local
Эта команда автоматически создаст CNAME (алиас) в DNS и обновит SPN в Active Directory.
Если же у Вас сервер живёт не на серверной ОС а на обычно Windows 10 или Windows 11, то там уже утилиты netdom нет. В этом случае придётся добавить новое имя вручную:
1️⃣ Создать CNAME-запись в DNS;
2️⃣ Добавить имя в реестре (AlternateComputerNames);
3️⃣ Обновить SPN для учётной записи компьютера.
Такой «финт» поможет избежать сбоев при переходе на новое имя сервера.
The post Смена имени сервера Windows без простоя first appeared on Как настроить?.]]>Firewalld — это отличная альтернатива iptables. Её используют сейчас в большинстве дистрибутивов Linux: RHEL, CentOS, Fedora. Firewalld предоставляет простой, удобный и значительно более гибкий способ управления правилами файрволла, нежели привычный многим iptables, который уже значительно устарел. Да, для простейших случаев настройка iptables — дело вроде бы несложное. Но вот если брать более сложные сети и большое количеством правил, то тут уже может серьёзно поплохеть. Иногда, чтобы изучить все настройки и понять, как это работает, нужно потратить значительно количество время. Давайте посмотрим в чем firewalld отличается iptables и как его настроить.
Плюсы firewalld
Минусы firewalld
Примеры настройки firewalld
1⃣ Открываем порт. Открываем порт 80 для HTTP:
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --reload
2⃣ Закрываем порт. Закрываем порт 22 (SSH):
sudo firewall-cmd --permanent --remove-port=22/tcp sudo firewall-cmd --reload
3⃣ Добавляем сервис. Firewalld поддерживает предопределённые сервисы. Например, открываем SSH:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
Посмотреть список доступных сервисов можно так:
firewall-cmd --get-services
4⃣ Используем зоны безопасности. Firewalld использует зоны для управления трафиком. Например, перемещаем интерфейс eth0 в зону «public»:
sudo firewall-cmd --permanent --zone=public --change-interface=eth0 sudo firewall-cmd --reload
Посмотреть текущую зону интерфейса:
firewall-cmd —get-active-zones
5⃣ Создаём кастомное правило. Блокируем весь трафик с IP 192.168.1.100:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop' sudo firewall-cmd --reload
6⃣ Временные правила. Можно временно открыть порт (например, на 5 минут):
sudo firewall-cmd --add-port=8080/tcp --timeout=300
После истечения времени правило удалится автоматически.
Конвертация iptables в firewalld. Если у вас уже настроен iptables, можно конвертировать его правила в формат firewalld:
iptables-save > rules.v4 iptables-restore < rules.v4
Затем вручную перенести правила в firewalld, используя firewall-cmd.
The post Используем firewalld вместо iptables — реальный пример настройки first appeared on Как настроить?.]]>Руткиты — rootkits — это специализированные вредоносные программы, которые маскируют своё присутствие в системе с целью выполнения в дальнейшем каких-либо скрытых действий. Они могут скрывать файлы, процессы и даже сетевые соединения, а так же подменять команды пользователя. Многие их них способны обходить антивирусные проверки. Я хочу поделиться с Вами своим опытом борьбы с руткитами. Возможно что-то из этого Вы возьмёте себе на вооружение.
1. Подмена системных вызовов (syscalls). Rootkits перехватывают вызовы типа getdents(), readdir(), ps, top и т.п., скрывая нужные процессы.
2. Изменение ядра (Kernel Mode Rootkits). В этом случае руткиты загружаются как модули ядра (.ko-файлы) и модифицируют функции ядра, скрывая свою активность.
3. Хук системы /proc. Rootkits подменяют содержимое /proc/[PID], маскируя процесс от стандартных утилит.
4. Использование LD_PRELOAD. Библиотеки динамической загрузки подменяют поведение системных команд даже без изменения ядра.
1️⃣ Проверка /proc вручную:
ls -al /proc | grep -vE "^[d-]r--r--r--"
Если процесс не виден стандартными командами типа ps aux или top, но есть его директория в /proc — это уже должно Вас насторожить.
2️⃣ Сравнение выводов разных утилит:
ps aux | wc -l && ls /proc | grep -E '^[0-9]+$' | wc -l
Числа при сравнении должны совпадать. Если в /proc будет больше процессов, чем показывает вывод команды ps, то вполне возможно, что система заражена.
3️⃣ Использование утилиты chkrootkit:
chkrootkit | grep INFECTED
Простая проверка на наиболее распространённые и известные rootkits.
4️⃣ Использование rkhunter:
rkhunter --check
Утилита проверяет системные файлы на различные несанкционированные изменения.
5️⃣ Анализ ядра и загруженных модулей:
lsmod | grep -i rootkit
Некоторые руткиты могут маскироваться, но подозрительные модули можно выявить через lsmod.
В некоторых случаях требуется установить срок действия учетной записи пользователя в ОС Linux для того, чтобы она автоматически отключалась после определенного времени действия. Это крайне необходимо для временных учетных записей или обеспечения безопасности. Сейчас я подробно расскажу как можно установить срок действия учетной записи с помощью командной консоли Линукс.
Команды useradd, usermod и chage в консоли Linux позволяют гибко настраивать учетные записи , обеспечивая необходимый уровень контроля и защиты.
При создании нового пользователя командой useradd, Вы можете сразу установить срок действия учетной записи.
1️⃣ Создание пользователя с ограниченным сроком действия:
sudo useradd -e <YYYY-MM-DD> <имя_пользователя>
Например:
sudo useradd -e 2025-02-01 tempuser
2️⃣ Когда учётка уже создана, изменить срок действия пользователя можно командой usermod:
sudo usermod -e <YYYY-MM-DD> <имя_пользователя>
Команда chage позволяет управлять сроком действия пароля и учетной записи пользователя.
1️⃣ Просмотр текущих настроек учетной записи:
Чтобы узнать текущие параметры учетной записи, используйте следующую команду:
chage -l <имя_пользователя>
Эта команда выведет информацию о дате последнего изменения пароля, сроке действия и других параметрах.
2️⃣ Установка срока действия учетной записи:
Чтобы установить дату, после которой учетная запись будет отключена, используйте команду:
sudo chage -E <YYYY-MM-DD> <имя_пользователя>
Например, чтобы отключить учетную запись пользователя testuser 1 февраля 2025 года, выполните:
sudo chage -E 2025-02-01 testuser
3️⃣ Удаление срока действия учетной записи:
Если необходимо снять ограничение по сроку действия учетной записи, используйте:
sudo chage -E -1 <имя_пользователя>
Это отключит автоматическое отключение учетной записи.
The post Как установить срок действия учетной записи в Linux first appeared on Как настроить?.]]>