Защитить файл known_host от записи - хорошая или плохая идея?
Я хочу защитить файл known_host от записи. Поэтому я хочу выполнить следующие шаги на моем сервере Red-Hat Linux.
Cp /dev/null /root/.ssh/known_hosts
chattr +i /root/.ssh/known_hosts
Я хочу, чтобы, потому что я хочу предотвратить неудачный вход в систему на любой целевой машине, и потому, что иногда мы получаем предупреждение - Ошибка идентификации удаленного хоста и ошибка входа в систему
Но я не уверен, что мое решение (защита от записи на known_host) является хорошей идеей и что негативно влияет на систему Linux?
Или, может быть, это решение является хорошим решением для сохранения файла known_host пустым?
Что думают здесь участники?
1 ответ
ИМХО Это не очень хорошая идея (см. Ниже).
Следующая команда удалит нарушающий ключ вашего хоста из known_hosts
ssh-keygen -R <host>
например ssh-keygen -R my_old_client
Почему это не очень хорошая идея, можно утверждать из man ssh
(в поисках вниз вы можете прочитать):
Кроме того, сервер должен иметь возможность проверять ключ хоста клиента (см. Описание /etc/ssh/ssh_known_hosts и ~/.ssh/known_hosts ниже), чтобы разрешить вход в систему. Этот метод аутентификации закрывает дыры в безопасности из-за спуфинга IP, спуфинга DNS и спуфинга маршрутизации. [Примечание для администратора: /etc/hosts.equiv, ~/.rhosts и протокол rlogin/rsh в целом небезопасны и должны быть отключены, если требуется безопасность.]
Еще несколько слов: если ssh
вам сообщают, что ключ компьютера меняется, обычно это происходит из-за того, что вы переустановили ssh на этом компьютере, или, возможно, вы принудительно пересобрали ключи. Однако это больше не ключ ssh, который использовался в прошлый раз... это может быть другой компьютер, который пытается получить эту идентичность. Если вы уверены, что это тот же компьютер, вы можете удалить / обновить поврежденный ключ и продолжить.
Всегда из man ssh
о том, как это работает:
ssh автоматически поддерживает и проверяет базу данных, содержащую идентификацию для всех хостов, с которыми она когда-либо использовалась.
Ключи хоста хранятся в ~/.ssh/known_hosts в домашнем каталоге пользователя. Кроме того, файл/etc/ssh/ssh_known_hosts
автоматически проверяется на известные хосты. Любые новые хосты автоматически добавляются в файл пользователя. Если идентификация хоста когда-либо изменяется, ssh предупреждает об этом и отключает аутентификацию по паролю, чтобы предотвратить подделку сервера или атаки "человек посередине", которые в противном случае могли бы использоваться для обхода шифрования.Параметр StrictHostKeyChecking можно использовать для управления входами в систему на компьютерах, ключ хоста которых неизвестен или изменился.