Улучшаем безопасность SSH сервера


SSH - это ссш и этим все сказано. Даже школьники знают что это - безопасный сервер терминалов (secure shell), предоставляющий удаленный доступ к системе linux. Почему безопасный? Потому что весь трафик между клиентом и сервером шифруется. Об этом и продолжу разглагольствовать.

При установке соединения сервер и клиент договариваются между собой каким образом будет происходить обмен информацией. При этом сервер предлагает клиенту, на выбор, алгоритм обмена сообщениями и сам шифр.

Алгоритм обмена сообщениями, или MAC (message authentication code) предназначен для авторизации команд/сообщений.

И сам метод шифрования, который в конфигурационном файле имеет название Cipher, определяет каким образом будут кодироваться данные между клиентом и сервером.

С недавнего времени в некоторых алгоритмах обмена сообщениями и методах шифрования были найдены слабые места, и все платные онлайн сканеры безопасности начали рапортовать MAC алгоритмы MD5 и 96­bit, как небезопасные. Также предлагают отказаться от методы шифрования CBC.

Я, конечно, слабо представляю как можно вломиться в зашифрованный канал SSH, но для спокойствия клиентов это все можно отключить и оставить только "безопасные" MAC'и и шифры.

Посмотреть с каким набором работает Ваш сервер можно вызвав справку по ssh_config и найти в ней MACs и Ciphers (нажать кнопку "/" и ввести):

man sshd_config

Мой сервер по умолчанию работает вот с таким набором MAC'ов:

hmac-md5,hmac-sha1,umac-64@openssh.com,
hmac-ripemd160,hmac-sha1-96,hmac-md5-96

И вот таким набором Cipher'ов:

aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
aes256-cbc,arcfour

Обращаем внимание на все, что имеет в названии MD5, 96­bit и CBC.

Дальше редактируем файл конфигурации /etc/ssh/ssd_config вот такими строками:

MACs hmac-md5,hmac-sha1,hmac-ripemd160
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,arcfour

Хочу обратить внимание на то, что если у Вас описаны выражения Match, тогда приведенные выше строки нужно добавлять перед этими блоками, иначе получите вот такие ошибки при перезапуске сервера ssh:

Starting sshd: /etc/ssh/sshd_config line 139: Directive 'MACs' is not allowed within a Match block
Starting sshd: /etc/ssh/sshd_config line 140: Directive 'Ciphers' is not allowed within a Match block

Перезапускаем ssh сервер. Учтите, что даже, если он не запустится - Ваша сессия останется активной.

Бывает такое, что сервер не запускается. В таком случае нужно обращать внимание, на что именно он ругается и убирать это из конфигурации

Проверить какой метод шифрования используется можно с помощью подключения в режиме развернутого вывода информации:
ssh -vv root@server.com 2>&1 |grep --color "kex:"

В моем случае это вот такой вывод:

Screenshot from 2014-02-17 14:45:18

Самый хороший методом обезопасить Ваш сервер - перевести всех на авторизацию по ключам и отключить вообще PAM авторизацию. Никто не сможет модифицировать пакет авторизации и видоизменить ssh handshake.

Почему то все считают что в целях безопасности SSH нужно перевесить на нестандартный порт (любой кроме 22). Этот порт можно легко прощупать с помощью того же Nmap'a, так что это - ни грамма не заглушка безопасности.

Хорошей прокладкой является Fail2Ban, который можно натравить на лог файл, в который ssh пишет заметки о проваленных авторизациях и резать всех злоумышлеников с помощью iptables.

Share Button
(Visited 442 times, 1 visits today)

Один комментарий на «“Улучшаем безопасность SSH сервера”»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.