вторник, 11 января 2011 г.

настройка ssh в ubuntu

Установка OpenSSH-Server:
Код:
sudo apt-get install openssh-server

Настройка безопасности:
Открываем файл /etc/ssh/sshd_config:
Код:
sudo nano /etc/ssh/sshd_config

Смена стандартного порта
Номер порта было бы лучше установить в другое значение. Пробивают обычно именно 22-й. Конечно, и другие сканируют, но лишняя защита не помешает.
Код:
Port 2222

Отключение прослушивания IPv6 адресов
По умолчанию sshd слушает как на IPv4 так и на IPv6 адресах. Для того что бы отключить возможность работы по IPv6, необходимо изменить/добавить параметр AddressFamily:
Код:
AddressFamily inet

Протокол сервера
Сервер поддерживает все версии протоколов, но рекомендуется использовать только 2-ю, т.к. она самая надежная и не подвержена видам атак, как то man-in-the-midle, TCPHijacking, DNSSpoofing. Да и все нынешние клиенты поддерживают 2-ю версию протокола, а значит поддерживать сервером ранние версии не имеет смысла.
Код:
Protocol 2


Адрес и порт прослушивания
По умолчанию sshd принимает подключения на всех интерфейсах, в чем не всегда есть необходимость. Если не требуется заходить на сервер «из вне», следует ограничить его работу определенным адресом с помощью параметра ListenAddress:
Код:
# ListenAddress 0.0.0.0
ListenAddress 192.166.18.5

Ограничение доступа суперпользователя
В большинстве дистрибутивов в целях безопасности доступ суперпользователю по SSH закрыт (PermitRootLogin no), и при попытке зарегистрироваться под root получаем сообщение об ошибке. Для выполнения задач, требующих привилегий администратора, приходится заходить под обычным пользователем и использовать su(1) или sudo(. Красиво выйти из ситуации поможет директива Match. В качестве аргумента ей передается критерий отбора (User, Group, Host, Address), его значение и параметр, который нужно применить. Для примера разрешим подключение под root только с localhost и из доверенной подсети 192.166.18.0/24:
Код:
PermitRootLogin no
Match Host 192.166.18.*,127.0.0.1
PermitRootLogin yes

Контроль неудачных подключений
Следующие две директивы позволяют контролировать неудачные подключения к серверу:
Код:
LoginGraceTime 60
MaxStartups 2:50:10
Параметр LoginGraceTime определяет, по истечению какого времени простаивающее подключение будет разорвано (в секундах). Значение по умолчанию 120 явно завышено. Количество параллельных неаутентифицированных подключений к серверу контролируется при помощи MaxStartups. Запись параметра имеет форму «start:rate:full». В нашем случае она означает отключение с вероятностью 50% при наличии двух неаутентифицированных связей, с линейным ростом вероятности до 100% при достижении 10.

Вход для определенных пользователей
Код:
AllowUsers agent
Этого параметра нет в конфиге, допишите немедленно. agent - имя вашего юзера. Этот параметр устанавливает разрешение логинится только и только с этим именем. ssh пробивают не только на предмет пароля, но и на предмет системных или стандартных имен. К примеру apache, www, которые по каким-то причинам могут оказаться беcпарольными, или andy, bobby, anna и тп. Последние любят ставить одноименные пароли, или 123456, qwerty... чтоб быстрее было.
К имени agent можно добавить ip-адрес - agent@192.166.18.215 - если вы уверены, что на клиентской машине всегда именно этот не меняющийся адрес. Такой параметр разрешит логинится только пользователю agent и только при условии, что его хост совпадает с заданным.
Если у Вас таких пользователей много, то можно присвоить им какую либо общую группу (для примера sshlogin) и разрешить вход этой группе:
Код:
AllowGroups sshlogin

Запрет пустых паролей
Код:
PermitEmptyPasswords no

Комментариев нет: