Приведенные примеры подходят для всех серверов с 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.