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

Удаленный доступ к машине Linux за брандмауэром

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

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

Я бы не стал так беспокоиться о том, чтобы оставить порт 22 доступным для Интернета, но я бы предпринял некоторые шаги для его защиты.

Во-первых, отключите интерактивную аутентификацию с клавиатуры и перейдите к клавишам ssh.

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

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

В качестве альтернативы, если ваш брандмауэр не может прервать соединение vpn, вы, вероятно, можете перенаправить пакеты GRE или IPSEC на свой Linux-компьютер и завершить его там.

Это не столько связано с тем, что порт открыт, сколько с нежеланием проходить пользователя через процесс открытия порта. К сожалению, у меня вообще нет доступа к этому роутеру.

Если о смене маршрутизатора не может быть и речи, вам может потребоваться решение P2P или VPN, например Хамачи. Если вы настроили систему на автоматическое установление VPN-соединения при запуске, вы сможете подключиться к ней в любое время. Hamachi сделает за вас все переговоры с брандмауэром. Единственным недостатком является то, что вам нужно полагаться на то, что серверы Hamachi работают и работают, когда вам нужно подключиться.

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


Ниже мой первоначальный ответ, я предполагал, что обновление роутера возможно.

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

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

Похоже, вы ищете стук

Вы можете установить это на самом сервере Linux с помощью iptables так что это похоже на брандмауэр 2-го уровня. Даже если порт 22 открыт на внешнем брандмауэре, он не будет открыт на сервере, поэтому при сканировании портов не будут обнаружены открытые порты. Затем, когда вы отправляете "секретный стук", у вас внезапно появляется открытый путь к порту 22.

Имеет ли это смысл?

Подводя итог всем ответам:

используйте ssh, но сделайте его более непонятным и безопасным.

Для безопасности:

  • Убедитесь, что вход в систему root не разрешен (PermitRootLogin нет).
  • Ограничьте пользователей, которые могут войти в систему с помощью параметра конфигурации AllowUsers или AllowGroups.
  • Убедитесь, что он использует только 2 версии протокола ssh (протокол 2).
  • Желательно использовать только ключи аутентификации, но пароль удобнее, когда может возникнуть необходимость подключиться к серверу из отпуска, когда у вас нет доступа к ключам аутентификации.

Для безвестности:

  • Измените порт ssh на какой-нибудь случайный порт с высоким уровнем, который вы помните, например, 20486. Это избавит от большинства автоматических брутфорсеров, но не скроет его от всех сканирований портов на сервере.
  • Скрыть возможность подключения к порту. Один из способов - это отключение порта, упомянутое в других ответах, но вам нужно специальное программное обеспечение, которое не может быть доступно везде. Другой простой вариант - использовать брандмауэр iptables с последним модулем для создания правила, которое позволит подключиться только со второй или третьей попытки. Итак, вы знаете, что вам нужно попробовать несколько раз для успешного подключения, но простое сканирование всех портов не обнаружит порт ssh. Правила будут похожи на следующие:


iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW  -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP

Запланированное задание сценария для вашего обратного туннеля ssh или откройте порт брандмауэра.

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

Смотреть в портить чтобы открыть свой SSH-туннель.

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

Оба пакета доступны в стандартных репозиториях Ubuntu, Fedora и RHEL.

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

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

Однако, если вы по-прежнему не хотите (или не можете) открывать порт, простой сценарий оболочки может отслеживать некоторые доступные в Интернете ресурсы, которыми вы управляете, и прослушивать команду для запуска обратного туннеля. Учетные записи электронной почты, каналы IRC и веб-страницы сразу приходят на ум как триггерные устройства.

Конечно, это намного более хрупко и менее безопасно, чем просто открыть порт. Но я уверен, что у вас есть свои причины.