Как использовать SSH туннель, чтобы избежать атак MITM?

Скажем, у меня есть компьютер внутри обычного домашнего маршрутизатора (но, скажем, брандмауэр / перенаправление портов, доступ к маршрутизатору недоступен). Это внутренний IP может быть 192.168.1.81. В этой локальной сети есть компьютер атакующего с IP 192.168.1.85, который хочет выполнить типичную ARP-спуфинговую MITM-атаку на 192.168.1.81 (скажем, он хочет запустить что-то вроде urlsnarf, чтобы прослушивать посещаемые сайты). Машина 192.168.1.81 хочет предотвратить любую форму атаки MITM и оставаться в безопасности при работе в Интернете в Chrome. У него есть сервер с SSH-доступом, который он хочет использовать для шифрования своего просмотра веб-страниц, чтобы злоумышленник не мог прослушать его с помощью атаки MITM. Как я могу (пользователь, который хочет использовать SSH-туннелирование для обеспечения безопасности) использовать SSH-туннелирование на моем сервере (с общедоступным IP-адресом 162.xx.xxx.xx), чтобы предотвратить потенциальную атаку MITM? Это для проекта научной ярмарки. Какие (если они есть) настройки мне нужно будет установить на моем сервере (у меня есть полный root-доступ)? Мой SSH-порт отличается от нормального, поэтому, пожалуйста, укажите SSH-порт 25512 для справки. Я также открыл порт 4567 на брандмауэре для сервера, поэтому, пожалуйста, используйте этот порт для справки. Пожалуйста, используйте 72.xxx.xx.xxx в качестве публичного IP для домашней сети. Пожалуйста, включите любые необходимые команды. Дайте мне знать, если мне нужно быть более ясным. Большое спасибо всем, кто может помочь!

1 ответ

Решение

Самый простой способ - запустить прокси (например, squid) на удаленном сервере и заставить его слушать только локальный интерфейс. 127.0.0.1 (потому что вы не хотите открывать прокси в интернете).

Затем вы подключаетесь по ssh к удаленному серверу и создаете пересылку tcp на локальный интерфейс прокси на удаленном сервере.

Например, допустим, ваш прокси на удаленном сервере 162.xx.xx.xx слушает по TCP 127.0.0.1:3128, Теперь вы можете подключиться к нему с помощью ssh с помощью этой команды:

ssh -p 25512 -L 3128:127.0.0.1:3128 -C 162.xx.xx.xx

Это открывает туннель от вашего клиента 127.0.0.1:3128 на удаленные хосты 127.0.0.1:3128, Затем вы можете просто настроить свой браузер на клиенте для использования прокси 127.0.0.1:3128 который затем через туннель ssh направляется на удаленный хост и передается туда через прокси.

-C Параметр включает сжатие и, как мы надеемся, должен сделать ваш просмотр немного быстрее, потому что нужно передавать меньше данных.

Это соответствующие части man 1 ssh:

 -L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host is to be forwarded to 
         the given host and port on the remote side.  This works by allocating a socket 
         to listen to port on the local side, optionally bound to the specified 
         bind_address.  Whenever a connection is made to this port, the connection is 
         forwarded over the secure channel, and a connection is made to host port 
         hostport from the remote machine.  Port forwardings can also be specified in 
         the configuration file.  IPv6 addresses can be specified by enclosing the 
         address in square brackets.  Only the superuser can forward privileged ports. 
         By default, the local port is bound in accordance with the GatewayPorts 
         setting.  However, an explicit bind_address may be used to bind the connection 
         to a specific address.  The bind_address of “localhost” indicates that the 
         listening port be bound for local use only, while an empty address or ‘*’ 
         indicates that the port should be available from all interfaces.

 -C      Requests compression of all data (including stdin, stdout, stderr, and data for
         forwarded X11 and TCP connections).  The compression algorithm is the same used
         by gzip(1), and the “level” can be controlled by the CompressionLevel option 
         for protocol version 1.  Compression is desirable on modem lines and other slow 
         connections, but will only slow down things on fast networks.  The default 
         value can be set on a host-by-host basis in the configuration files; see the 
         Compression option.

 -p port
         Port to connect to on the remote host.  This can be specified on a per-host 
         basis in the configuration file.
Другие вопросы по тегам