Я хотел бы смочь к SSH в мой офис Ubuntu 10.04 ПК с внешней стороны. Я таким образом думаю для запуска демона SSH на ПК. Что является проблемами безопасности, возможными незначительными сбоями, определенными параметрами конфигурации, и т.д. Я должен знать?
В случае, если это имеет значение: это по существу для моего собственного использования только, я не думаю, что будут другие люди, использующие его; это - ПК Ubuntu 10.04 в среде главным образом Windows 7/Vista/XP.
Самое большое беспокойство было бы людьми, входящими в систему как администратор компьютера по SSH. Это может быть сделано грубой силой, если у Вас есть легкое для предположения пароля.
Существует несколько мер по обеспечению безопасности, которые можно взять, ниже некоторые из тех, я всегда беру при установке сервера SSH и некоторых дополнительных.
Используйте сильный пароль, состоять из, по крайней мере (говорит) что 10 верхних - и строчные буквы, числа и другие символы.
Пользователи тюрьмы к их корневому каталогу. Заключенные в тюрьму пользователи не смогут получать доступ/редактировать к файлам, которые являются вне их корневого каталога. Таким образом, Ваш пользователь не сможет к системным файлам доступа/клавиши редактирования. Много учебных руководств может быть найдено онлайн о том, как заключить в тюрьму пользователя. Большинство из них использует JailKit. Пример такого учебного руководства может быть найден здесь. С другой стороны, можно также использовать собственный компонент OpenSSH-сервера ChrootDirectory
директива. Пример учебного руководства на этом может быть найден здесь.
Установка Fail2Ban. Fail2Ban является программой, которая проверяет журналы аутентификации на неправильные записи. Когда определенный предел достигнут, он добавляет блок брандмауэра для того определенного IP для предварительно установленного количества времени. Существует также несколько учебных руководств онлайн, найденных онлайн о том, как настроить Fail2Ban с SSH, пример был бы этим. Домашняя страница Fail2Ban содержит некоторые хорошие и полные ПРАКТИЧЕСКИЕ РУКОВОДСТВА также.
Отключите корневой вход в систему через SSH. Это - пользователь, который имеет доступ к в значительной степени каждому файлу в Вашей системе, запрещение ее входа в систему оболочки поэтому рекомендуется. В последних версиях Ubuntu автоматически отключен пользователь root, но не повреждает отключать свой доступ SSH так или иначе. Это сделано путем редактирования файла /etc/ssh/sshd_config
. ✝ Ищут следующую строку и удостоверяются, что нет никакого # перед нею.
#PermitRootLogin no
Используйте нестандартный порт (Например, не 22) Это или сделано посредством перенаправления портов в Вашем маршрутизаторе (Например, 16121-> 22 вместо 22-> 22) или заставив демона SSH послушать на другом порте. Это сделает Ваш сервис SSH менее легко обнаруживаемым злонамеренным пользователям. Это сделано путем редактирования файла /etc/ssh/sshd_config
. ✝ Ищут следующую строку и изменяются 22 на любой порт, который Вы хотите. Не забывайте передавать правильный порт в своем маршрутизаторе впоследствии.
Port 22
Не используйте пароли для входа в систему. Помимо паролей, SSH также позволяет вход в систему при помощи закрытых ключей. Это означает, что ключ хранится на Вашем компьютере, на котором Вы получаете доступ к SSH машины SSH. Когда соединение предпринято, клиент SSH использует ключ для входа в систему в сервер вместо посредством аутентификации по паролю. Аутентификационные ключи намного более сильны криптографически, чем пароли и поэтому не настолько легки расколоться. Существует также несколько учебных руководств онлайн, найденных онлайн о том, как настроить основанную на ключе аутентификацию с SSH, пример был бы этим. (Если Вы SSH из окон с PuTTY, проверьте эту ссылку на практическое руководство PuTTY.) После установки основанной на ключе аутентификации можно отключить аутентификацию по паролю путем редактирования файла /etc/ssh/sshd_config
. ✝ Ищут следующую строку и удостоверяются, что нет никакого # перед нею.
#PasswordAuthentication no
Дополнительно, как @Linker3000 упомянутый в его комментарии, Вы могли создать туннель VPN к ПК, к которому Вы хотите получить доступ через SSH и затем запретить нелокальный доступ к сети на сервере SSH. Тем путем никакое внешнее устройство без соединения VPN не сможет получить доступ к Вашему серверу SSH. Это может быть сделано, отклонив ВСЕ хосты и затем позволив только локальной сети дюйм/с входить в систему. Это сделано путем редактирования /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
вместо этого.
Вы могли только позволить определенные хосты, сделать то же с /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.}
Позвольте только определенным пользователям получать доступ к своему серверу SSH. Это сделано путем редактирования файла /etc/ssh/sshd_config
. ✝ Ищут следующую строку и удостоверяются, что нет никакого # перед нею. Если это не существует, создайте его. Например, если Вы хотите позволить Джону, tom и Мэри только, добавляйте/редактируйте эту строку:
AllowUsers john tom mary
Вы могли также отклонить определенных пользователей, например, если Вы хотите запретить доступа Джону, tom и Мэри, добавляйте/редактируйте эту строку:
DenyUsers john tom mary
Только позвольте протокол SSH2 для входящих соединений. Существует две версии протокола SSH. SSH1 подвергается проблемам безопасности, которые рекомендуется настолько использующий SSH 2. Это может быть вызвано путем редактирования файла /etc/ssh/sshd_config
. ✝ Ищут следующую строку и удостоверяются, что нет никакого # перед нею. Если это не существует, создайте его.
Protocol 2,1
удалите, 1, таким образом, строка будет
Protocol 2
Не позволяйте пользователям входить в систему, которые не имеют никакого набора пароля. Это может быть вызвано путем редактирования файла /etc/ssh/sshd_config
. ✝ Ищут следующую строку и удостоверяются, что нет никакого # перед нею. Если это не существует, создайте его.
PermitEmptyPasswords no
И хотя простой и возможно само собой разумеется, но доказанный крайне важный для нескольких случаев, усовершенствуйте свое программное обеспечение. Регулярно обновляйте свои установленные пакеты/программное обеспечение.
✝ = отредактировав файл конфигурации SSH, не забывайте перезапускать демона для применения изменений. Перезапустите демона путем выполнения:
sudo /etc/init.d/ssh restart
или
sudo /etc/init.d/sshd restart
в зависимости от которого распределения Linux Вы используете.
Несколько подсказок:
Основной риск забывает, что Вы выполняете ssh сервер и помещаете слабый пароль в учетную запись. Существуют взломщики там, которые систематически пробуют общие имена учетной записи (как webmaster
и bob
) и слабые пароли. Можно устранить этот риск путем запрещения логинов пароля (помещенный PasswordAuthentication no
в sshd_config
, и любой также помещенный UsePAM No
или отключите аутентификацию по паролю в настройках PAM для ssh). Промежуточная мера должна ограничить логины ssh белого списка пользователей с AllowUsers
или AllowGroups
в sshd_config
.
Обратите внимание, что разрешение логинов пароля не является сам по себе проблемой безопасности. Слабые пароли и отслеженные пароли являются проблемами, и позволяющий аутентификацию по паролю в ssh сервере активатор. Для защиты от отслеживания пароля никогда не вводите пароль на машине, которую Вы не делаете полностью доверительный (но затем при доверии машине, Вы могли бы также установить закрытый ключ на нем, и затем Вам не нужна аутентификация по паролю).
Минимальное требование для использования ssh клиента на машине - то, что Вы полагаете, что не будет активного угона ssh коммуникации (атака "человек посередине" возможна, если это работает на клиентской машине — Вы думаете, что вводите команды в нетронутый ssh клиент, но клиент на самом деле передает Ваши данные аутентификации искренне, но также и вставляет троянского коня в коммуникацию впоследствии). Это - более слабое требование, чем доверие, что не будет снупера пароля (обычно выполняемый через клавиатурный перехватчик, но существуют другие менее автоматизированные методы, такие как перемещение плеча). Если Вы действительно имеете минимальное доверие, но все еще боитесь снуперов, можно использовать одноразовые пароли (OpenSSH поддерживает их через свою поддержку PAM).
Конечно, как любая другая программа, которая взаимодействует с машинами вне Вашего управления (не только сетевые серверы, но также и клиенты), необходимо не отставать от обновлений системы защиты.
Три вещи столкнулись с моим умом:
При открытии порта по умолчанию 22 затем довольно скоро, он будет обнаружен, и ПК будет коваться грубой силой нападения. Я предлагаю, чтобы Вы настроили sshd для слушания некоторого другого порта или действительно портировали отображение на брандмауэре. В то время как это не чудодейственное средство, оно будет верное сохранение Вы те же циклы ЦП, по крайней мере.
Порт 12345
Явно отключите аутентификацию по паролю и используйте ключи только. Любой ключ будет лучше, чем наиболее сложный пароль, который можно помнить.
PasswordAuthentication нет
Даже при том, что Ubuntu отключили пользователя root по умолчанию, явно отключите корневой вход в систему
PermitRootLogin нет