SSH: управление ограничениями доступа к серверу по SSH.

Автор: | 11/12/2011

Приведенные примеры подходят для всех серверов с SSH.

Первый вариант – ограничить доступ к серверу с помощью фаервола, например –  IPFW. Для этого, в файле конфигурации, заданном в файле /etc/rc.conf в виде строки:

ipfw_script=”/etc/ipfw.rules”

добавляем запись такого вида:

$cmd 00280 allow tcp from ALLOWED_IP to me 22 in via $pif

где ALLOWED_IP – это IP сервера, с которого надо хотел разрешить доступ к серверу.

Однако, есть и другие способы, позволяющие настроить более гибкие правила. Заключаются они в установках ограничений через файл настройки самого демона ssh/etc/ssh/sshd_config.

Вот некоторые из наиболее полезных параметров этого файла.

Можно указать IP-адреса сетевых карт, которые будут принимать SSH-соединение, к примеру – имеется 2 карты, eth1 – в локальной сети, eth0 – в мир: eth0 IP 99.999.99.99 и eth1 IP 10.0.0.1.

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

ListenAddress 10.0.0.1

Не самый лучший вариант разрешить удалённый доступ под пользователем root, закроем его (во FreeBSD он и так закрыт):

PermitRootLogin no

Можно разрешить доступ только определённым пользователям:

AllowUsers setevoy tester otheruser

Или разрешить доступ только определённой группе:

AllowGroups wheel ssh

создадим определённую группу, которой будет доступ к ssh:
#pw groupadd ssh
# pw groupshow ssh
ssh:*:1003:

 

и добавим в неё пользователей tester и setevoy:
#pw groupmod ssh -m tester setevoy
# pw groupshow ssh
ssh:*:1003:tester,setevoy

 

заодно проверим все группы пользователя:
# id setevoy
uid=1001(setevoy) gid=1001(setevoy) groups=1001(setevoy),0(wheel),1003(ssh)

А можно запретить доступ определённым пользователям:

DenyUsers setevoy tester otheruser

Или запретить доступ целой группе:

DenyGroups ssh

Ещё вариант – изменить стандартный порт SSH, это уменьшит активность некоторых ботов, можно указать несколько портов:

Port 2222
Port 2525

Полезно подредактировать параметр времени ожидания ввода пароля, по умолчанию целых 2 минуты:

LoginGraceTime 30s

Разорвем соединение, если нет активности более 20 минут:

ClientAliveInterval 1200
ClientAliveCountMax 0

Ещё полезный параметр, который указывает сколько неавторизованных сессий может висеть одновременно :

MaxStartups 5

Так же, его можно задать и в виде:

MaxStartups 5:50:10

Т.е., первоначально максимальное число сессий 5, если это число превышается, то половина соединений будет отброшено (50%) и с ростом числа сессий все большее число соединений будет отбрасываться, и, наконец, если число сессий превысит 10, то все дальнейшие соединения к sshd будут отсечены. Будьте осторожны с этим параметром.

После любых изменений в /etc/sshd_config перезагрузите демон:

# /etc/rc.d/sshd onerestart
Stopping sshd.
Starting sshd.