Назад | Перейти на главную страницу

Почему я должен использовать хорошо известный номер порта? (например, 22, 80 и т. д.…)

Я только что впервые настроил удаленный ssh ​​с помощью openssh.

Мне удалось подключиться к серверу по ssh с помощью putty, используя следующие три параметра:

  1. /etc/init.d/ssh перезапуск

    # What ports, IPs and protocols we listen for
    Port 1234
    
  2. dd-wrt панель управления сетью (192.168.1.1 в url-адрес браузера)

    Приложение ---- Порт от ---- Протокол ---- IP-адрес ---- Порт от ---- Включить

    myssh ---------- 1234 ---------- TCP --------- 192.168.1.x --- 1234 ------- да

  3. замазка

    Имя хоста (или IP-адрес) ---- Порт

    w.x.y.z ----------------------------- 1234

Есть ли причина, по которой я должен использовать порт 22 вместо 1234?

Во-первых, хорошо известные номера портов являются «хорошо известными». Они устраняют некоторые догадки относительно того, какой порт прослушивает данная служба.

Во-вторых, порты 1024 и ниже могут быть открыты только root. Это дает дополнительный уровень «доверия» к этим сервисам. Т.е. служба, к которой я подключаюсь через порт 22, должна быть запущена (или была запущена) от имени пользователя root. Если служба работает на 1234, это может быть любой пользователь, имеющий доступ к ящику, который открыл и запустил программу «программа, которая действует как SSHD, но перехватывает пароли». (Это предполагает, что нет NAT или других перенаправлений - см. Ответ mmi.)

Также согласен с замечанием, сделанным mmi - я не стал бы без необходимости запускать программу от имени пользователя root только для получения желаемого номера порта. Если программа, работающая с правами root, будет скомпрометирована, то скомпрометирована вся система. Однако, если программа уже запущена с правами root для других нужд, можно также использовать правильный номер порта.

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

Это в основном зависит от того, насколько вы хотите скрыть эту услугу.

Люди (и боты, сканирующие уязвимости) предполагают, что SSH работает на порту 22, HTTP работает на порту 80 и так далее. Если служба работает на нестандартном порте, ее будет труднее обнаружить, но труднее будет использовать легитимные пользователи.

  • HTTP работает на порту 80:
    • Вы можете добраться до него, используя http://servername
    • Он будет легко доступен любому, кто указал на него в веб-браузере.
  • HTTP работает на порту 8042:
    • Вам нужно будет ввести http://servername:8042 достичь этого
    • Его нелегко определить как веб-сервер.

  • SSH работает на порту 22:
    • Вы можете связаться с ним, указав Putty (или любую аналогичную программу) подключиться к имени хоста или IP-адресу вашего сервера.
    • Он будет легко доступен любому, кто указал на него SSH-клиент.
  • SSH работает на порту 2242:
    • Вам нужно будет указать своему SSH-клиенту использовать этот настраиваемый порт.
    • Его нелегко обнаружить как SSH-сервер.

И так далее...

Вы можете использовать любой порт, который вам нравится. Использование порта 22 для ssh является обычным, и вы найдете множество брандмауэров, клиентов ssh и демонов по умолчанию для удобства.

Лучше задать вопрос: «Почему бы мне не использовать порт 22?». Это дает некоторые спорные преимущества в плане безопасности, но лично меня они не убедили.

В какой-то момент я не согласен с ziesemer: эти программы НЕ обязательно должны запускаться с правами root. И НЕ рекомендуется запускать какие-либо сетевые службы с правами root, если вам это не нужно. Когда кто-то сможет использовать ваш сервис, он получит root-права.

Кроме того, NAT может транслировать порт 80 извне на любой порт в локальной сети. Поэтому вы можете запускать службу без полномочий root.

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

Есть ли причина, по которой я должен использовать порт 22 вместо 1234?

Потому что это то, что слушают остальные 99% SSH-сервисов, и люди ожидают этого. Соглашение не является жестким и быстрым правилом, но вы обнаружите, что большинство администраторов ожидают увидеть SSH на порту 22, HTTP на порту 80 и так далее. Если у вас нет очень веская причина отклониться от установленного соглашения - я предлагаю вам этого не делать.

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

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

Есть веская причина использовать 22 для ssh, избегать необходимости изучать, как настраивать или дополнительные параметры для использования в нескольких клиентах, ssh, scp, git, rsync и т. Д. А также избегать изменения готовых сценариев, написанных для использования порта по умолчанию.

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