Невинные SSH'алости в сетях
Andrushock
Xakep, номер #057, стр. 057-078-3
# groupadd -v -g 22 sshd
# useradd -v -u 22 -g sshd -s /dev/null -d /var/empty -c "sshd privsep" sshd
<Элегантное конфигурирование>
К настройке sshd следует подходить очень осторожно, так как любая незначительная ошибка может впоследствии стать причиной серьезных проблем. Конфигурационный файл демона sshd на первый взгляд выглядит немного странно: все опции закомментированы (таким образом разработчики указали дефолтные значения параметров). Для того чтобы внеси изменения, нужно удалить решетку и изменить значение директивы. Перечислю наиболее важные и заслуживающие особого внимания опции:
# vi /etc/ssh/sshd_config
TCP-порт для ожидания подключений, по умолчанию равен 22; чтобы немного сбить с толку сканирующего, можно выставить 1022:
Port 22
Используемые протоколы; записи "1,2" и "2,1" идентичны:
Protocol 2,1
Следующая запись означает, что производится ожидание подключений по всем доступным сетевым интерфейсам:
ListenAddress 0.0.0.0
Интервал регенерации ключа сервера для протокола SSH1:
KeyRegenerationInterval 3600
Длина ключа сервера в битах для протокола SSH1:
ServerKeyBits 768
Параметр, определяющий, по истечении какого времени простаивающее подключение будет разорвано (в секундах):
LoginGraceTime 120
Запрещаем регистрацию суперпользователя:
PermitRootLogin no
Перед регистрацией пользователя проверяем права доступа к его домашнему каталогу:
StrictModes yes
Запрещаем беспарольную аутентификацию:
PasswordAuthentication yes
PermitEmptyPasswords no
Периодически будем отправлять клиенту запросы для проверки функционирования сеанса работы:
KeepAlive yes
А следующую фичу следует отключать только в случае крайнего дефицита свободных системных ресурсов, либо на постоянно перегруженном ftp-сервере, так как может произойти отказ в обслуживании из-за того, что для каждого соединения потребуется создавать в два раза больше процессов:
UsePrivilegeSeparation yes
Сжимаем передаваемые данные; высшую степень компрессии стоит применять при дорогостоящем трафике, по умолчанию используется значение 6:
Compression yes
CompressionLevel 9
Определяем, какие пользователи с каких хостов могут регистрироваться в системе:
AllowUsers andrushock shocker@1.2.3.4
После сохранения конфигурационного файла важно проверить, правильно ли заданы права доступа к конфигам и ключам ssh: каталог /etc/ssh должен принадлежать суперпользователю и иметь биты (в восьмеричном значении) 755, файловые разрешения ssh_config и sshd_config должны быть 644, приватные и публичные ключи 600 и 644 соответственно.
<PAM - деликатный контроль>