Первый раз, когда SSH-сервер подключается к интернету, что проверить

9

Я управлял несколькими серверами в течение относительно долгого времени, но я всегда только арендовал их, поэтому у меня нет большого опыта в защите реального сервера (в отличие от приложения, на котором я работаю).

Теперь я чувствую, что открываю свой маленький домашний SSH-сервер для интернета.

Я буду единственным, кто его использует, мои пароли достаточно сложны, я изменил SSH-порт по умолчанию примерно на 4000, единственный доступный порт - это SSH-порт через переадресацию портов на моем маршрутизаторе / брандмауэре, и он обновляется автоматически каждую ночь (запускается Arch Linux, дистрибутив с постоянным выпуском).

Что, если таковые имеются, другие вещи, которые я должен сделать, чтобы держать это в безопасности?

Спасибо!

houbysoft
источник

Ответы:

22

Убедитесь, что root-логины отключены PermitRootLogin no. Я также хотел бы рассмотреть возможность полного отключения паролей PasswordAuthentication noи использования открытых ключей PubkeyAuthentication yes.

СНХ
источник
+1 бей меня к этому ...
gravyface
1
Если вы собираетесь использовать пароли, вы можете попробовать изучить систему двухфакторной аутентификации. Если нет, я рекомендую не вводить свой пароль в случайной системе интернет-кафе / библиотеки.
Марк Вагнер
4
Если вы разрешите аутентификацию по паролю, рассмотрите возможность установки fail2ban для предотвращения атак методом подбора и использования надежных паролей для любой учетной записи, которой разрешено входить через ssh
uSlackr
@embobo - почему это? Пароли, отправленные по сети , зашифрованы в ssh. Да, ключевая аутентификация намного лучше во многих отношениях, но пока пароли достаточно надежны и вы убедились, что никто не занимается серфингом, это не так уж и сложно.
EEAA
3
@Erika Я думаю, что Embobo намекает на общее недоверие к любой иностранной системе. Несмотря на то, что SSH зашифрован, на чужой машине все равно можно записывать нажатия клавиш. Таким образом, пароль = взломан.
rthomson
9

Убедитесь, что разрешен только SSH-2 (поскольку SSH-1 в прошлом вызывал некоторые проблемы с безопасностью ):

Protocol 2

Укажите, какие единственные пользователи могут входить через SSH:

AllowUsers bob, john

Для повышения безопасности запретите аутентификацию по паролю и используйте аутентификацию с открытым ключом:

PasswordAuthentication no
PubkeyAuthentication yes

Примечание. Это руководство содержит инструкции по созданию ключей и настройке аутентификации с открытым ключом.

Бам бам
источник
5

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

В качестве примера: мне пришлось исправить одну сеть, где предыдущий администратор установил nagios на все свои системы из исходного кода и создал пользователя nagios без пароля или с паролем nagios, а затем приступил к получению трех разных компьютеров. скомпрометированы.

Дэниел Лоусон
источник
4

Возможно, вы захотите взглянуть на какой-нибудь инструмент для внесения в черный список IP-адресов, например http://denyhosts.sourceforge.net/ . Он блокирует любые IP-адреса, которые пытаются войти в систему слишком много раз, и легко настраивается.

Линден Шилдс
источник
Вероятно, пустая трата времени, если у вас отключен вход в систему. По моему опыту (два года работы SSH-сервера в интернете), только пара когда-либо даже правильно поняла мое (очевидное) имя пользователя. Боты просто проверяют очевидные пароли для общих имен пользователей (99% неудачных входов на моем сервере для root, что, конечно, отключено).
Брендан Лонг
4
Определенно не пустая трата времени - но взгляните на fail2ban
symcbean
+1 за сбой2бан.
Джеймс Барнетт
1
root - не единственная очевидная учетная запись, которую проверяют боты, смотрите nagios, как упоминалось выше. Существуют также учетные записи базы данных, такие как mysql и postgres. Плюс любые другие учетные записи приложений.
Джеймс Барнетт
Да, на самом деле мой сетевой SSH-компьютер перехватил бот, угадывающий пароль не-root, так что определенно не трата времени. Кроме того, с тех пор, как получить черный список, подобный этому, просматривая журналы, очень небольшой процент попыток на самом деле для root.
Линден Шилдс
3

Я предлагаю вам установить Fail2ban! http://www.fail2ban.org

Он блокирует IP после x неудачных попыток в течение y минут, помогая держать скриптkiddies под контролем;)

Tie-истребитель
источник
0

Повторяющиеся проверки журналов по соответствующим частям / компонентам ваших систем (в зависимости от их фактической / конкретной конфигурации) ...

user48838
источник