TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #5245 8.57K
В комментариях к заметкам на тему доступа к серверу по SSH регулярно возникают споры о безопасности парольной аутентификации, смены стандартного порта, доступа root, о настройке fail2ban и т.д.

Иногда я специально пишу, что оставляю доступ root по паролю. Просто интересно почитать, что будут писать по этому поводу. Всегда находятся те, кто пишут, что это нубство, небезопасно, так делать нельзя, меня надо уволить и т.д. На что я всегда спрашиваю, а в чём конкретно тут проблема. Ответа не получаю, только общие слова, что так не принято, что пароль можно подобрать и т.д.

В общем случае никаких проблем с безопасностью службы SSH не будет, если вы оставите возможность подключаться root и использовать для этого сложный несловарный пароль. Менять стандартный порт 22 или ставить Fail2Ban тоже не обязательно. Достаточно поменять несколько настроек и про какой-либо перебор паролей можно забыть.

MaxAuthTries 3
MaxSessions 2
MaxStartups 10:30:60

◽️MaxAuthTries - максимальное количество попыток аутентификации для одного соединения.
◽️MaxSessions - ограничение на количество активных сеансов на одно соединение. Можно сделать больше, если в реальности вам это нужно.
◽️MaxStartups - до 10-ти одновременных соединений все принимаются, при количестве соединений от 10 до 60 новые соединения отбрасываются с вероятностью 30%, при 60+ активных соединениях новые не открываются.

При таких настройках массовый перебор паролей становится нереален из-за ограничения в количестве попыток.

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

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

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

Запускаем одновременно две службы на разных портах. На стандартном 22 для всех и на 22555 для себя с ограничениями по IP. На 22 ставим параметры, как я показал выше. А для 22555 указываем ограничения по своим спискам IP адресов. Показываю, как это примерно выглядит.

# cp /etc/ssh/sshd_config /etc/ssh/sshd_root.conf

# cat sshd_config

Port 22
...
MaxAuthTries 3
MaxSessions 2
MaxStartups 10:30:60
...

Остальные настройки по желанию. Конфигурация приватной службы:

# cat sshd_root.conf

Port 22555
AllowUsers root@192.168.137.0/24 root@1.2.3.4 root@5.6.7.8
...

Создаём для приватной службы юнит systemd:

# cd /etc/systemd/system
# cp sshd.service sshd-root.service

Меняем в конфигурации sshd-root.service один параметр:

ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd_root.conf

Запускаем приватную службу:

# systemctl daemon-reload
# systemctl enable --now sshd-root

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

# iptables -A INPUT -p tcp --dport 22555 -s 192.168.137.0/24,1.2.3.4,5.6.7.8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22555 -j DROP

Много написал, что на практике не особо нужно. Я бы всё закрывал через Iptables с любыми настройками. Но даже если SSH открыт для всех, для root и по паролю, то в реальности никаких проблем это не доставит, если всё настроить аккуратно и не сливать пароль. Ключ, как и пароль, тоже может утечь. Это не абсолютная защита и не панацея, в отличии от файрвола, если его случайно не выключат (а так бывает).

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

———
ServerAdmin: 📱 Telegram | 🌐 Сайт | 📲 MAX

#ssh
  • 👍 228
  • 👎 6
More from @srv_admin
  1. Oct 2, 2026Мне Селектел прислали прикольный светильник, которым я сейчас стал постоянно пользоваться.…
  2. Oct 2, 202620 октября в 12:00 (мск) пройдёт бесплатный вебинар «Мониторинг событий безопасности в MWS…
  3. Oct 2, 2026На днях задачка небольшая была по сохранению команд пользователя в консоли. В ней ничего о…
  4. Oct 1, 2026Делал на днях некоторые покупки компьютерных комплектующих и периферии. От новых цен натур…
  5. Oct 1, 2026Вся правда о безопасности контейнеров 8 октября в 11:00 приходите на стрим «Лаборатории Ка…
  6. Oct 1, 2026В сентябре постоянно то тут, то там гремели новости об ужасных уязвимостях Mikrotik. CVE с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →