14

Я хотел бы иметь возможность SSH к моему офисному ПК Ubuntu 10.04 снаружи. Таким образом, я думаю запустить демон SSH на ПК. Какие проблемы с безопасностью, возможные сбои, конкретные параметры конфигурации и т.д. Я должен знать?

В случае, если это имеет значение: это по сути только для моего собственного использования, я не думаю, что другие люди будут его использовать; это Ubuntu 10.04 ПК в среде Windows 7/Vista/XP.

4 ответа4

20

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

Есть несколько мер безопасности, которые вы можете предпринять, ниже приведены некоторые из тех, которые я всегда предпринимаю при настройке SSH-сервера, и некоторые дополнительные.

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

  2. Тюрьма пользователей в их домашнем каталоге. Пользователи, находящиеся в тюрьме, не смогут получить доступ / редактировать файлы, которые находятся за пределами их домашнего каталога. Таким образом, ваш пользователь не сможет получить доступ / редактировать ключевые системные файлы. В Интернете можно найти множество учебников о том, как посадить в тюрьму пользователя. Большинство из них используют JailKit. Пример такого урока можно найти здесь. Кроме того, вы также можете использовать собственную директиву ChrootDirectory сервера OpenSSH . Пример учебника по этому вопросу можно найти здесь.

  3. Установите Fail2Ban. Fail2Ban - это программа, которая проверяет журналы аутентификации на наличие неправильных записей. Когда достигается определенный лимит, он добавляет блок брандмауэра для этого определенного IP-адреса в течение заданного промежутка времени. В Интернете также есть несколько обучающих программ о том, как настроить Fail2Ban с SSH, например, этот. На домашней странице Fail2Ban также есть несколько хороших и полных HOWTO.

  4. Отключить root-вход через SSH. Это пользователь, который имеет доступ практически ко всем файлам в вашей системе, поэтому рекомендуется отключить его вход в оболочку. В последних версиях Ubuntu пользователь root автоматически отключается, но в любом случае не мешает отключить его доступ по SSH. Это делается путем редактирования файла /etc/ssh/sshd_config . Найдите следующую строку и убедитесь, что перед ней нет #.

    #PermitRootLogin no
    
  5. Используйте нестандартный порт (например, не 22). Это можно сделать либо с помощью переадресации портов в маршрутизаторе (например, 16121 -> 22 вместо 22 -> 22), либо с помощью демона SSH, который прослушивает другой порт. Это сделает вашу службу SSH менее легко обнаруживаемой для злоумышленников. Это делается путем редактирования файла /etc/ssh/sshd_config . Найдите следующую строку и измените 22 на любой порт, который вы хотите. Не забудьте перенаправить правильный порт в маршрутизаторе впоследствии.

    Port 22
    
  6. Не используйте пароли для входа. Помимо паролей, SSH также позволяет войти в систему с помощью закрытых ключей. Это означает, что ключ хранится на вашем компьютере, на котором вы получаете доступ к SSH машины SSH. При попытке подключения клиент SSH использует ключ для входа на сервер, а не с помощью аутентификации по паролю. Ключи аутентификации намного надежнее криптографически, чем пароли, и поэтому их не так легко взломать. В Интернете также есть несколько обучающих программ о том, как настроить аутентификацию на основе ключей с помощью SSH, например, этот пример. (Если вы пользуетесь SSH из Windows с помощью PuTTY, проверьте эту ссылку , чтобы узнать, как это сделать.) После настройки аутентификации на основе ключей вы можете отключить аутентификацию по паролю, отредактировав файл /etc/ssh/sshd_config . Найдите следующую строку и убедитесь, что перед ней нет #.

    #PasswordAuthentication no
    
  7. При желании, как @ Linker3000 упомянул в своем комментарии, вы можете настроить VPN-туннель для ПК, к которому вы хотите получить доступ через SSH, а затем запретить доступ к локальной сети на SSH-сервере. Таким образом, ни одно внешнее устройство без VPN-подключения не сможет получить доступ к вашему SSH-серверу. Это можно сделать, запретив ВСЕ хосты и затем разрешив входить только IP-адресам локальной сети. Это делается путем редактирования /etc/hosts.deny и добавления следующего:

    sshd: ALL
    

    и /etc/hosts.allow добавить следующее:

    sshd: 192.168.1.*
    

    где IP совпадает с номером вашей локальной сети. * подстановочный знак, поэтому все IP-адреса начинаются с 192.168.1. будут приняты. Если это не работает, ваш дистрибутив может использовать ssh вместо sshd . В этом случае вы должны попробовать ssh: 192.168.1.* И ssh: ALL .

  8. Вы можете разрешить только определенные хосты, сделайте то же самое с /etc/hosts.allow и /etc/hosts.deny как описано в 6, но в /etc/hosts.allow добавьте следующую строку и каждый хост разрешите разделить пробелами :

    sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
    
  9. Разрешить только определенным пользователям доступ к вашему SSH-серверу. Это делается путем редактирования файла /etc/ssh/sshd_config . Найдите следующую строку и убедитесь, что перед ней нет #. Если его не существует, создайте его. Например, если вы хотите разрешить только Джон, Том и Мэри, добавьте / отредактируйте эту строку:

    AllowUsers john tom mary
    

    Вы также можете запретить определенных пользователей, например, если вы хотите запретить доступ к Джону, Тому и Мэри, добавьте / отредактируйте эту строку:

    DenyUsers john tom mary
    
  10. Разрешить протокол SSH2 только для входящих соединений. Существует две версии протокола SSH. SSH1 подвержен проблемам безопасности, поэтому рекомендуется использовать SSH 2. Это можно принудительно отредактировать в файле /etc/ssh/sshd_config . Найдите следующую строку и убедитесь, что перед ней нет #. Если его не существует, создайте его.

    Protocol 2,1
    

    удалить, 1, так что линия будет

    Protocol 2
    
  11. Не разрешайте пользователям входить в систему без пароля. Это можно принудительно отредактировать в файле /etc/ssh/sshd_config . Найдите следующую строку и убедитесь, что перед ней нет #. Если его не существует, создайте его.

    PermitEmptyPasswords no
    
  12. И хотя это просто и, возможно, само собой разумеется, но доказало свою решимость во многих случаях, обновляйте свое программное обеспечение. Регулярно обновляйте установленные пакеты / программное обеспечение.


= после редактирования файла конфигурации SSH не забудьте перезапустить демон, чтобы применить изменения. Перезапустите демон, выполнив:

sudo /etc/init.d/ssh restart

или же

sudo /etc/init.d/sshd restart

в зависимости от того, какой дистрибутив Linux вы используете.

7

Несколько советов:

  1. Используйте аутентификацию на основе ключей, которая намного безопаснее, чем пароли
  2. Только SSH 2
  3. Отключить рутинные логины
  4. Для параноика измените порт из стандартного порта 22
  5. Для удобства используйте инструмент для сопоставления вашего IP-адреса с DNS-именем, таким как Dyndns или тому подобное. Вы можете долго ездить с одним и тем же IP-адресом, но однажды, путешествуя и нуждаясь в нем, вы обнаружите, что получили новый.
  6. Конечно, разрешите только порт, необходимый для SSH (порт 22 или нестандартный, если вы выберете) через брандмауэр.
2

Три вещи пришли мне на ум:

  1. Если вы откроете порт 22 по умолчанию, то довольно скоро он будет обнаружен, и ваш компьютер будет забит атаками грубой силы. Я предлагаю вам настроить sshd для прослушивания какого-либо другого порта или сопоставления портов на вашем брандмауэре. Хотя это не волшебная пуля, она, по крайней мере, сохранит вам те же циклы ЦП.

    Порт 12345

  2. Явно отключите аутентификацию по паролю и используйте только ключи. Любой ключ будет лучше, чем самый сложный пароль, который вы можете запомнить.

    ПарольАутентификация нет

  3. Даже если в Ubuntu по умолчанию отключен пользователь root, явно отключите вход в систему root

    PermitRootLogin нет

2

Основной риск - забыть, что вы используете ssh-сервер, и поставить слабый пароль на учетную запись. Есть злоумышленники, которые систематически пытаются использовать общие имена учетных записей (например, webmaster и bob) и слабые пароли. Вы можете устранить этот риск, запретив вход в систему с паролями ( включите PasswordAuthentication no в sshd_config и либо UsePAM No либо отключите аутентификацию по паролю в настройках PAM для ssh). Промежуточной мерой является ограничение входа ssh в белый список пользователей с AllowUsers или AllowGroups в sshd_config .

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

Минимальное требование для использования ssh-клиента на компьютере - это уверенность в том, что не будет активного перехвата ssh-связи (атака «человек посередине» возможна, если она выполняется на клиентском компьютере - вы думаете, вы набираете команды в нетронутом ssh-клиенте, но на самом деле клиент точно передает ваши данные аутентификации, а затем вставляет в сообщение троянский конь). Это более слабое требование, чем полагать, что не будет отслеживания паролей (обычно это выполняется с помощью кейлоггера, но есть и другие, менее автоматизированные методы, такие как серфинг через плечо). Если у вас есть минимальное доверие, но вы все еще боитесь перехватчиков, вы можете использовать одноразовые пароли (OpenSSH поддерживает их через поддержку PAM).

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .