Перейти к основному содержимому

Полное руководство по безопасной настройке сервера

Основано на реальном опыте настройки сервера (AlmaLinux 9.7) Дата: 12 февраля 2026 Автор: OWIX AI Division


Оглавление

  1. Введение
  2. Первичный доступ
  3. Создание пользователя admin
  4. Настройка SSH-ключей
  5. Защита SSH
  6. Настройка файрвола
  7. SSL-сертификаты
  8. Дополнительные меры безопасности
  9. Удобное подключение: SSH config и tmux
  10. Чек-лист
  11. Troubleshooting
  12. Быстрые команды
  13. Итог

1. Введение

Почему это важно

По статистике, более 30 000 серверов подвергаются brute-force атакам ежедневно. Без правильной настройки ваш сервер будет взломан в течение первых 24 часов.

Что мы настроили

Мера безопасностиРезультат
Смена порта SSH22 → 22022
Пользователь adminВместо root
SSH-ключиПароли отключены
CSF/LFD FirewallБлокировка атак
Cloudflare IP whitelistПрокси не блокируется
Let's EncryptSSL/TLS шифрование

2. Первичный доступ

2.1 Что делать после установки сервера

При получении нового сервера (AlmaLinux, CentOS, RockyLinux):

# 1. Подключиться как root
ssh root@IP_СЕРВЕРА

# 2. Обновить систему
dnf update -y

# 3. Установить базовые утилиты
dnf install -y curl wget vim git iptables-services tmux chrony

# 4. Настроить часовой пояс
timedatectl set-timezone Europe/Kiev

# 5. Включить синхронизацию времени
systemctl enable --now chronyd

# 6. Проверить время
date

2.2 Создание SSH-ключа на локальном компьютере

Важно: Делайте это на своём компьютере, НЕ на сервере!

# Linux/Mac
ssh-keygen -t ed25519 -C "ваш[email protected]"

# Без пароля на ключ (для удобства)
# Просто нажмите Enter на все вопросы

# Проверить ключ
ls -la ~/.ssh/
# Должно быть:
# id_ed25519 (приватный ключ - НЕ ПОКАЗЫВАТЬ!)
# id_ed25519.pub (публичный ключ - можно копировать)

2.3 Сохраните приватный ключ

# ПУБЛИЧНЫЙ ключ (можно показывать):
cat ~/.ssh/id_ed25519.pub
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5... ваш[email protected]

# ПРИВАТНЫЙ ключ (НИКОМУ НЕ ПОКАЗЫВАТЬ!):
cat ~/.ssh/id_ed25519
# -----BEGIN OPENSSH PRIVATE KEY-----
# ...очень много символов...
# -----END OPENSSH PRIVATE KEY-----

ВАЖНО:

  • Приватный ключ — это ваш «паспорт». Не публикуйте его!
  • Если кто-то получит приватный ключ — получит доступ к серверу!

3. Создание пользователя admin

3.1 Создание пользователя

# Подключаемся к серверу (пока root ещё разрешён!)
ssh root@IP_СЕРВЕРА

# Создаём пользователя admin
useradd -m -s /bin/bash admin

# Добавляем в группу wheel (sudo на AlmaLinux)
usermod -aG wheel admin

3.2 Настройка sudo без пароля

# Создаём файл настроек sudo
echo 'admin ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/admin
chmod 440 /etc/sudoers.d/admin

# Проверить
cat /etc/sudoers.d/admin
# Должно вывести: admin ALL=(ALL) NOPASSWD: ALL

Почему без пароля?

  • Удобство при работе с агентами/скриптами
  • SSH-ключ — уже достаточная защита
  • sudo без пароля + ключ = безопасность + удобство

4. Настройка SSH-ключей

4.1 Добавление ключа на сервер

# На сервере (как root)

# Переключаемся на нового пользователя
su - admin

# Создаём директорию для ключей
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# Создаём файл для ключей
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# Добавляем ваш публичный ключ
nano ~/.ssh/authorized_keys

# Вставьте содержимое ~/.ssh/id_ed25519.pub с вашего компьютера
# Пример:
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEeXAE6hfj+0uuSp0/ezI1m5LoAMnzmAOBkGJiIEX+j2 [email protected]

# Установить владельца
chown -R admin:admin /home/admin/.ssh

4.2 Проверка доступа под новым пользователем

# На вашем компьютере (НОВАЯ вкладка терминала!)

# Попробуйте подключиться
ssh admin@IP_СЕРВЕРА

# Проверьте права sudo
sudo whoami
# Должно вывести: root

ВНИМАНИЕ: НЕ закрывайте сессию root, пока не проверите admin!


5. Защита SSH

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

# На сервере (как root)

# Добавляем нестандартный порт
echo "Port 22022" >> /etc/ssh/sshd_config.d/custom.conf

# Перезапускаем SSH
systemctl restart sshd

# Проверить
ss -tlnp | grep sshd
# Должно показать порт 22022

5.2 Отключение входа root

# На сервере (как root)

# Редактируем конфиг
nano /etc/ssh/sshd_config

# Найдите и измените:
# PermitRootLogin yes → PermitRootLogin no

# Или добавьте в конец файла:
PermitRootLogin no

5.3 Отключение входа по паролю

# На сервере (как root)

# Редактируем конфиг
nano /etc/ssh/sshd_config

# Найдите и измените:
# PasswordAuthentication yes → PasswordAuthentication no

5.4 Полный конфиг SSH

# /etc/ssh/sshd_config

Port 22022
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitEmptyPasswords no
ChallengeResponseAuthentication no
GSSAPIAuthentication no
X11Forwarding no
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
ClientAliveInterval 120
ClientAliveCountMax 3

5.5 Перезапуск и проверка

# Перезапуск SSH
systemctl restart sshd

# Проверить конфиг
sshd -t
# Должно быть пусто (без ошибок)

# В НОВОЙ вкладке терминала проверить:
ssh admin@IP_СЕРВЕРА

# Проверить, что root не может войти:
ssh root@IP_СЕРВЕРА
# Должно: Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

6. Настройка файрвола

6.1 Проверка установленного файрвола

# Проверить CSF/LFD (BrainyCP)
csf -v

# Или iptables
iptables -L -n

6.2 Настройка CSF/LFD (если установлен)

# Добавить SSH-порт в белый список
csf -p 22022

# Добавить Cloudflare IP в белый список
curl -s https://www.cloudflare.com/ips-v4 >> /etc/csf/csf.allow
echo '2a06:98c0::/29' >> /etc/csf/csf.allow

# Перезагрузить CSF/LFD
csf -r
systemctl restart lfd

6.3 Настройка iptables (если CSF не установлен)

# Проверить текущие правила
iptables -L INPUT --line-numbers

# Открыть SSH-порт (22022)
iptables -I INPUT 6 -p tcp --dport 22022 -j ACCEPT

# Открыть HTTP/HTTPS
iptables -I INPUT 7 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 8 -p tcp --dport 443 -j ACCEPT

# Сохранить правила
iptables-save > /etc/sysconfig/iptables

# Проверить
iptables -L INPUT --line-numbers

6.4 Включение iptables при загрузке

# Включить сервис
systemctl enable iptables

# Проверить
systemctl status iptables

7. SSL-сертификаты

7.1 Установка certbot

# AlmaLinux/RHEL
dnf install -y epel-release
dnf install -y certbot python3-certbot-nginx

7.2 Получение сертификата

# Для одного домена
certbot --nginx -d owix.net -d www.owix.net

# Для нескольких доменов
certbot --nginx -d owix.net -d www.owix.net -d blog.owix.net

7.3 Пример конфига Nginx

# /etc/nginx/conf.d/owix.net.conf

server {
listen 80;
server_name owix.net www.owix.net;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
server_name owix.net www.owix.net;

ssl_certificate /etc/letsencrypt/live/owix.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/owix.net/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;

# SSL настройки
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;

# Основные настройки
root /var/www/owix-net/build;
index index.html;

location / {
try_files $uri $uri/ =404;
}
}

7.4 Автообновление сертификатов

# Проверить автозапуск
systemctl list-timers | grep certbot

# Тестовый запуск (не создаёт сертификаты)
certbot renew --dry-run

# Добавить в cron
crontab -e
# Добавить:
# 0 0,12 * * * certbot renew --quiet

8. Дополнительные меры безопасности

8.1 Защита от DDoS (Cloudflare)

Используйте Cloudflare как прокси:

  1. Настройте DNS в Cloudflare:

    • A-запись → IP сервера (оранжевый облачок = прокси)
  2. Настройте SSL в Cloudflare:

    • SSL/TLS → Overview → Full (strict)
  3. DDoS-Protection:

    • Security → DDoS → ON

8.2 Настройка fail2ban (опционально)

# Установка
dnf install -y fail2ban

# Создать конфиг
cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = 22022
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = 80,443
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 3600
EOF

# Запустить
systemctl enable --now fail2ban

8.3 Защита от сканирования портов

# Установить portsentry
dnf install -y portsentry

# Настроить
cat >> /etc/portsentry/portsentry.conf << 'EOF'
BLOCK_UDP="1"
BLOCK_TCP="1"
EOF

# Запустить
systemctl enable --now portsentry

8.4 Настройка sysctl

# Защита от IP-spoofing
cat >> /etc/sysctl.conf << 'EOF'
# Защита от spoofing
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Игнорировать ICMP redirect
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# Защита от SYN-flood
net.ipv4.tcp_syncookies = 1

# Не отвечать на широковещательные ping
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Запретить маршрутизацию источника
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
EOF

# Применить
sysctl -p

9. Удобное подключение: SSH config и tmux

9.1 Настройка SSH config (чтобы не вводить порт каждый раз)

Создайте файл ~/.ssh/config на вашем компьютере:

nano ~/.ssh/config

Добавьте:

# Сервер 1
Host owix
HostName IP_СЕРВЕРА
User admin
Port 22022
IdentityFile ~/.ssh/id_ed25519

# Сервер 2 (если есть ещё)
Host other-server
HostName IP_ДРУГОГО_СЕРВЕРА
User admin
Port 22022
IdentityFile ~/.ssh/id_ed25519

Теперь подключайтесь просто:

# Вместо:
ssh -p 22022 admin@IP_СЕРВЕРА

# Просто:
ssh owix

# Без пароля - ключ используется автоматически!

9.2 Настройка tmux для пользователя admin

tmux — это терминальный мультиплексор. Позволяет запускать несколько сессий в одном окне.

На сервере (под admin):

# Добавить автозапуск tmux в ~/.bashrc
cat >> ~/.bashrc << 'EOF'

# Автоматическое подключение к tmux при входе
if [ -z "$TMUX" ]; then
if tmux has-session -t work 2>/dev/null; then
tmux attach -t work
else
tmux new -s work
fi
fi
EOF

# Создать сессию work (если её нет)
tmux new -s work -d

Теперь при входе:

ssh owix

自动чески откроется tmux с сессией work.

Полезные tmux команды:

# Новая сессия
tmux new -s session_name

# Отключиться (сессия остаётся работать)
Ctrl+b, d

# Подключиться к существующей сессии
tmux attach -t work

# Переключение между окнами
Ctrl+b, 0-9

# Вертикальное разделение
Ctrl+b, "

# Горизонтальное разделение
Ctrl+b, %

# Список сессий
tmux ls

# Убить сессию
tmux kill-session -t work

10. Чек-лист

После настройки сервера проверьте:

SSH и доступ

  • Пользователь admin создан
  • SSH-ключ добавлен в ~/.ssh/authorized_keys
  • PermitRootLogin установлен в no
  • PasswordAuthentication установлен в no
  • Порт изменён на 22022
  • SSH перезапущен
  • Проверено: ssh admin@IP работает
  • Проверено: ssh root@IP отклонён
  • SSH config настроен (~/.ssh/config)
  • SSH ключ добавлен в config (автоматически без пароля)
  • VNC/консоль работает как резервный вход

Удобство

  • tmux установлен
  • tmux автозапуск настроен в ~/.bashrc
  • Сессия work создана

Файрвол

  • CSF/LFD или iptables установлен
  • Порт 22022 открыт
  • Порты 80/443 открыты
  • Cloudflare IP добавлены в whitelist

SSL

  • Certbot установлен
  • SSL-сертификаты получены
  • HTTPS работает
  • Автообновление настроено

Мониторинг

  • fail2ban установлен (опционально)
  • logs ротируются
  • Есть резервные копии

11. Troubleshooting

Потерян доступ к серверу

  1. Через панель VPS (если есть VNC/Console)
  2. Восстановите доступ через консоль хостинга
  3. Проверьте конфиг:
    sshd -t
  4. Проверьте логи:
    tail -f /var/log/secure

SSH отказывает после изменений

# Проверить конфиг
sshd -t

# Проверить права на ключи
ls -la ~/.ssh/

# Проверить логи
journalctl -u sshd -n 50

# Перезапустить
systemctl restart sshd

Не работает sudo

# Проверить файл sudoers
visudo -c

# Проверить группу пользователя
groups admin
# Должна быть группа wheel

# Добавить в группу wheel
usermod -aG wheel admin

Cloudflare блокирует доступ

# Добавить Cloudflare IP в whitelist
curl -s https://www.cloudflare.com/ips-v4 >> /etc/csf/csf.allow
csf -r

12. Быстрые команды

# Подключение к серверу (если настроен SSH config)
ssh owix

# Или напрямую:
ssh -p 22022 admin@IP_СЕРВЕРА

# Выполнить команду от root
ssh owix "sudo команда"

# Скопировать файл на сервер
scp -P 22022 файл admin@IP_СЕРВЕРА:~/

# Проверить запущенные сервисы
systemctl list-units --type=service --state=running

# Проверить порты
ss -tlnp

# Проверить логи SSH
tail -f /var/log/secure

# Обновить систему
sudo dnf update -y

# Перезапустить nginx
sudo systemctl restart nginx

13. Итог

После выполнения всех шагов ваш сервер будет защищён:

Уровень защитыМера
СетьCSF/LFD + iptables + Cloudflare
SSHPort 22022 + ключи + no root
ШифрованиеLet's Encrypt + TLS 1.3
Мониторингfail2ban + логи

🛡️

AI-безопасность для вашего бизнеса

Защитите свой сервер с помощью профессионалов OWIX AI Division. Мы предлагаем полный цикл защиты: от настройки до круглосуточного мониторинга.

🔧
Настройка под ключ
От установки до защиты
👁️
Мониторинг 24/7
Следим за безопасностью
💾
Резервное копирование
Данные всегда в безопасности

Заказать настройку сервера →


Дата: 12 февраля 2026 Теги: security, ssh, firewall, ssl, alma-linux, server