Когда речь заходит об обеспечении безопасности вашего присутствия в сети, вы, возможно, слышали о VPN, верно? VPN выступает в роли посредника между вашим компьютером и интернетом. Весь трафик проходит через VPN-сервер, эффективно маскируя ваш IP-адрес и местоположение.
Однако VPN — это не единственная форма прокси-сервера. SOCKS (Socket Secure) — это аналогичный сетевой протокол, который позволяет взаимодействовать с серверами через брандмауэр, маршрутизируя сетевой трафик от имени клиента. По сравнению с VPN, SOCKS предлагает большую гибкость и контроль над конфигурацией сети. Это полезно, когда вы не можете установить VPN-клиент или не доверяете VPN-провайдеру.
Это руководство покажет, как настроить прокси-туннель SSH SOCKS 5 и направить через него ваш веб-трафик.
Предварительные требования
Для демонстрации мы использовали локальную машину под управлением Ubuntu desktop и удаленную машину под управлением Ubuntu server. У вас должен быть настроен SSH для обеспечения бесперебойной работы. Поскольку мы используем прокси SOCKS, для проверки соединения нам понадобится приложение, которое может его использовать. Firefox — отличный пример. Это современный веб-браузер, поддерживающий прокси-туннель SOCKS 5.
Если вы работаете в Windows, вы можете использовать либо WSL (Windows Subsystem for Linux) для настройки локальной среды Linux, либо PuTTY, приложение с открытым исходным кодом, которое может реализовывать различные сетевые протоколы, такие как Telnet, rlogin и т. д.
Настройка туннеля SOCKS
-
Настройка туннеля SOCKS (macOS/Linux)
На локальном компьютере нам необходимо настроить SSH-ключ для обеспечения безопасного соединения. SSH-ключ также должен быть зарегистрирован на удаленной системе. В этом руководстве по настройке аутентификации на основе SSH-ключей этот процесс описан подробно.
Следующая команда SSH установит SOCKS-туннель к удаленному серверу:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> |

Давайте разберем эту команду:
-
-i: указывает SSH, какой SSH-ключ использовать для подключения.
-
-D: указывает SSH, что мы хотим установить SOCKS-туннель. Что касается порта, мы используем порт 1024. Это не фиксированное значение. Вы можете выбрать любой порт между 1024 и 65536.
-
-f: процесс SSH будет запущен в фоновом режиме.
-
-C: SSH будет сжимать данные перед отправкой на удаленный сервер. Это может как снизить потребление трафика, так и увеличить эффективную пропускную способность.
-
-q: запуск инструмента в тихом режиме.
-
-N: указывает SSH, что после установления туннеля никакие команды отправляться не будут.
После запуска мы можем проверить, правильно ли запустился процесс. Следующая команда выведет информацию обо всех запущенных процессах SSH:
|
1 |
ps aux | grep ssh |

Теперь вы можете спокойно закрыть окно терминала. Процесс SSH будет работать в фоновом режиме, как и планировалось.
-
Настройка туннеля SOCKS (Windows)
Для пользователей Windows более простым решением будет использование PuTTY. Сначала вам нужно скачать PuTTY:

После установки запустите PuTTY:

На левой панели во вкладке Session введите Host Name (or IP address) вашего сервера. В качестве Connection type выберите SSH. Далее перейдите в Connection >> SSH >> Tunnels. Здесь, в поле Destination, выберите параметры, показанные на скриншоте:

Затем нажмите Open. Откроется окно терминала для подключения к удаленному серверу по SSH. Войдите на удаленный сервер:

Использование туннеля SOCKS
Туннель настроен. Любое приложение, поддерживающее SOCKS, может использовать этот туннель. Для демонстрации отлично подойдет Firefox.
Сначала откройте Firefox. В правом верхнем углу нажмите на иконку меню. Перейдите в Настройки:

Затем найдите проксиНажмите Настройки в разделе Настройка параметров подключения Firefox к интернету:

После этого выберите Ручная настройка прокси. В качестве SOCKS Host, укажите localhost или 127.0.0.1. Затем в поле порта введите порт, который мы выделили для SOCKS-туннеля. Не забудьте выбрать SOCKS_v5:

Наконец, отметьте пункт Отправлять DNS-запросы через прокси при использовании SOCKS v5. Нажмите OK, чтобы продолжить.
Затем откройте новую вкладку и попробуйте зайти на любую веб-страницу. Например, вы можете проверить свой IP-адрес на CheckMyIP.
Отмена настроек прокси
Когда вам больше не нужно прокси-соединение с SSH-туннелем, вы можете безопасно отключить его в настройках прокси Firefox:

В открывшемся окне выберите Использовать системные настройки прокси и нажмите OK.
Закрытие SOCKS-туннеля
-
Закрытие туннеля на macOS/Linux
Чтобы закрыть туннель, нам нужно вручную завершить процесс SSH. Нам понадобится PID (идентификатор процесса) процесса SSH. Следующая команда покажет PID всех запущенных процессов SSH:
|
1 |
ps aux | grep ssh |
Найдите процесс SSH, запущенный с командой создания туннеля. Завершите этот процесс:
|
1 |
kill <tunnel_ssh_pid> |
Если опция не определена, команда kill отправит стандартный сигнал SIGTERM целевому процессу. Вы можете узнать больше об управлении процессами в Linux из этого руководства.
-
Закрытие туннеля в Windows
Закрытие окна PuTTY должно закрыть туннельное соединение.
Устранение неполадок
Вот некоторые распространенные проблемы, с которыми вы можете столкнуться при попытке использовать SOCKS для маршрутизации трафика.
-
Брандмауэр
Если вы не можете установить соединение из-за ограничений брандмауэра, то, скорее всего, брандмауэр настроен на блокировку подключения к порту 22. Это порт по умолчанию, который SSH использует для подключения к удаленным системам. Некоторые порты остаются открытыми по умолчанию, например, порт 80 (обычный веб-трафик) и порт 443 (TLS, безопасный веб-трафик).
Если SSH-сервер не обслуживает веб-контент, мы можем использовать один из портов по умолчанию ( 80 или 443 ) вместо порта 22. Рекомендуется использовать порт 443 так как по умолчанию он ожидает зашифрованный трафик. Он также будет шифровать исходящий трафик. Чтобы внести изменения, нам нужно отредактировать конфигурационный файл SSH. Откройте файл в текстовом редакторе:
|
1 |
sudo nano /etc/ssh/sshd_config |
SSH может использовать несколько портов для своих целей. Прокрутите конфигурационный файл вниз и найдите раздел портов:

После внесения изменений сохраните файл и закройте редактор. Перезапустите службу SSH, чтобы применить изменения:
|
1 |
sudo service ssh restart |
Чтобы проверить, работает ли новый порт, попробуйте подключиться к удаленному серверу, используя новый порт:
|
1 |
ssh <remote_username>@<remote_server> -p 443 |
Если подключение прошло успешно, мы можем безопасно использовать порт 443 для SSH-туннелирования. Вот измененная команда для создания SOCKS-туннеля:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> -p 443 |
Здесь флаг -p указывает SSH использовать порт 443.
Заключение
В наши дни конфиденциальность и безопасность являются одними из главных приоритетов. Существует множество способов безопасного веб-серфинга при нахождении в небезопасной сети. В большинстве случаев использование VPN обеспечивает достаточную безопасность вашего сетевого трафика. С другой стороны, SOCKS-туннель обеспечит необходимую безопасность, если вы не можете или не хотите доверять VPN. Наличие SOCKS-туннеля также дает вам полный контроль над настройкой.
Приятной работы!
Комментарии
Комментариев пока нет. Будьте первым.