Настройка SSHd
2012-10-12 01:35 pmПочему-то все мануалы по настройке OpenSSH-сервера повторяют как заклинание, что надо непременно устанавливать опцию PermitRootLogin no.
Рекомендация даётся как универсальная, не зависящая от других опций; и ни один из авторов не потрудился объяснить, чем же так опасна PermitRootLogin yes при отключённой аутентификации по паролю и включённой аутентификации по RSA-ключу. То есть при таких настройках:
Основные доводы защитников PermitRootLogin no таковы:
1) Удалённый злоумышленник подберёт пароль root'а. — Очевидно, при отключении входа по паролю и включении входа по RSA-ключу этого не произойдёт.
2) На сервере ведутся логи, кто и когда делал sudo команды, и сами команды там тоже есть. — Да, в этих логах будет предсказуемая команда sudo sh, что дальше? Если вы позволили неавторизованному пользователю-sudoer'у войти — всё, финита ля комедия, занавес. Он и логи может почистить, и пароль рута поменять, и sshd перенастроить.
Идея переноса sshd на другой TCP-порт (для урезания количества автосканирований на N%) вполне нормальна, равно как и идея задать на файерволле ограничение на одновременное количество подключений на этот TCP-порт с одного IP-адреса (например, 5). И это вовсе не меры безопасности, а меры защиты от примитивных DOS-атак.
Я решительно не понимаю придурков, которые парсят логи sshd и банят брутфорсеров по IP (например на час), редактируя скриптом таблицы локального файерволла. Таким образом эти таблицы можно только переполнить и быстрее свалить ядро. Зачем открывать такой лёгкий вектор DOS-атаки наружу?
Весь этот карго-культизм системного администрирования UNIX происходит от непонимания понятия энтропии. Видите ли, даже если весь интернет (232) подключится к вашему серверу и c раундтрипом 10ms начнёт перебирать ключи (5∙100∙60∙60∙24∙365 ключей в год) и сервер это выдержит (вряд-ли), то для подбора 2048-битного RSA-ключа, состоящего из двух примерно 1024-битных простых сомножителей, и имеющего таким образом 2∙(1024/ln(1024))=295.4 бит энтропии, понадобится в среднем
0.5 ∙ 2295.4 / (232 ∙ (5∙100∙60∙60∙24∙365)) = 6.201 ∙ 1068 лет.
Для сравнения, возраст Вселенной оценивается в 13.75 ∙ 109 лет.
И ещё. Слабых RSA-ключей, в отличии от слабых паролей, не бывает.
Говорят, когда-то давно, когда наша Земля была ещё тёпленькой и по ней бегали мамонты, а также не было ssh, в дикой природе встречались снифферы telnet-трафика, которые вели логи в виде набора строк "пароль рута — IP адрес". Таким образом, вход в аккаунт обычного юзера с последующим вводом команды su мог снизить риск попадания под именно этот сниффер. Карго-культисты от администрирования UNIX продолжают практиковать это извращение в XXI веке. Видать, традиции предков.
Рекомендация даётся как универсальная, не зависящая от других опций; и ни один из авторов не потрудился объяснить, чем же так опасна PermitRootLogin yes при отключённой аутентификации по паролю и включённой аутентификации по RSA-ключу. То есть при таких настройках:
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no PermitEmptyPasswords no ChallengeResponseAuthentication no KerberosAuthentication no GSSAPIAuthentication no UsePAM no
Основные доводы защитников PermitRootLogin no таковы:
1) Удалённый злоумышленник подберёт пароль root'а. — Очевидно, при отключении входа по паролю и включении входа по RSA-ключу этого не произойдёт.
2) На сервере ведутся логи, кто и когда делал sudo команды, и сами команды там тоже есть. — Да, в этих логах будет предсказуемая команда sudo sh, что дальше? Если вы позволили неавторизованному пользователю-sudoer'у войти — всё, финита ля комедия, занавес. Он и логи может почистить, и пароль рута поменять, и sshd перенастроить.
Идея переноса sshd на другой TCP-порт (для урезания количества автосканирований на N%) вполне нормальна, равно как и идея задать на файерволле ограничение на одновременное количество подключений на этот TCP-порт с одного IP-адреса (например, 5). И это вовсе не меры безопасности, а меры защиты от примитивных DOS-атак.
Я решительно не понимаю придурков, которые парсят логи sshd и банят брутфорсеров по IP (например на час), редактируя скриптом таблицы локального файерволла. Таким образом эти таблицы можно только переполнить и быстрее свалить ядро. Зачем открывать такой лёгкий вектор DOS-атаки наружу?
Весь этот карго-культизм системного администрирования UNIX происходит от непонимания понятия энтропии. Видите ли, даже если весь интернет (232) подключится к вашему серверу и c раундтрипом 10ms начнёт перебирать ключи (5∙100∙60∙60∙24∙365 ключей в год) и сервер это выдержит (вряд-ли), то для подбора 2048-битного RSA-ключа, состоящего из двух примерно 1024-битных простых сомножителей, и имеющего таким образом 2∙(1024/ln(1024))=295.4 бит энтропии, понадобится в среднем
0.5 ∙ 2295.4 / (232 ∙ (5∙100∙60∙60∙24∙365)) = 6.201 ∙ 1068 лет.
Для сравнения, возраст Вселенной оценивается в 13.75 ∙ 109 лет.
И ещё. Слабых RSA-ключей, в отличии от слабых паролей, не бывает.
Говорят, когда-то давно, когда наша Земля была ещё тёпленькой и по ней бегали мамонты, а также не было ssh, в дикой природе встречались снифферы telnet-трафика, которые вели логи в виде набора строк "пароль рута — IP адрес". Таким образом, вход в аккаунт обычного юзера с последующим вводом команды su мог снизить риск попадания под именно этот сниффер. Карго-культисты от администрирования UNIX продолжают практиковать это извращение в XXI веке. Видать, традиции предков.