Как в Mac OS X защитить трафик с помощью Secure Shell



Вы заботитесь о конфиденциальности ваших данных? В этом рецепте будет рассказано о том, как защитить ваши данные от перехвата любопытствующими за счет использования сетевого протокола SSH, встроенного в каждую копию Mac OS X.

Secure Shell или SSH — это сетевой протокол, который обеспечивает защищенный обмен данными между двумя компьютерами. Данные, передающиеся с компьютера на компьютер, шифруются, за счет чего обеспечивается конфиденциальность и целостность. Если SSH используется правильно, то перехват данных и манипуляции с ними невозможны, если только вас не атакует бессмертный злоумышленник с супермощными компьютерами. SSH доступен во многих формах — в виде патентованной реализации, в виде открытого исходного кода, а также в виде бесплатного ПО, от множества различных поставщиков. Наиболее популярной реализацией является OpenSSH, и именно эта реализация входит в состав Mac OS X.

Как правило, SSH используется для безопасной регистрации на удаленных компьютерах с целью выполнения команд. Кроме того, вы можете использовать это безопасное соединение для передачи файлов, запуска программ с графическим пользовательским интерфейсом под X Windows, а также для перенаправления портов. Именно эта последняя функция и дает возможность создавать защищенные туннели между компьютерами.

Туннели: Что это и зачем они нужны?

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

Предположим, защита вашей, по большей части безобидной переписки, возможно, и покажется кому-то излишеством. Но SSH находит гораздо более широкий диапазон областей применения, чем защита вашего почтового ящика. Многие работают с приложениями или сайтами, доступ к которым блокируется или наблюдается (например, работодателем, а иногда даже и по постановлению правительства страны пребывания). Настройка защищенного туннеля SSH к внешнему компьютеру, находящемуся за пределами офиса (страны), позволит вам поддерживать защищенные коммуникации и пользоваться приложениями, которые в противном случае были бы заблокированы (например, программы для ведения чатов).


Установка туннеля SSH требует наличия двух компьютеров — один из них является клиентом SSH (компьютер A), а второй — сервером SSH (компьютер B). Клиентский компьютер либо находится в среде, где на его деятельность наложены ограничения, либо в незащищенной среде, в то время как компьютер B имеет полный доступ к Интернету и (предпочтительно) находится под вашим контролем. В примере с компьютером, подключенным к потенциально небезопасной беспроводной сети, компьютер A — это ваш ноутбук, а Компьютер B — это настольный компьютер с выходом в Интернет. В рассматриваемом примере, клиентский компьютер — это ваш ноутбук, а компьютер B — ваш настольный iMac (рис. 6.39).

Рис. 6.39. Типичная конфигурация «последней мили» SSH
Рис. 6.39. Типичная конфигурация «последней мили» SSH

Конфигурирование туннеля

Туннели SSH работают по принципу перенаправления порта. Например, по умолчанию вы получаете доступ к Web-серверу через порт 80. Скажем, доступ к сайту http://www.google.com вы получаете через порт 80 сервера Google. Для всех стандартных интернет-сервисов имеются стандартные (назначаемые по умолчанию) номера портов: почта — порт 25, защищенный HTTP — порт 443 и т. д. Если ваша сеть не защищена или порт 80 заблокирован, вы можете перенаправить порт 5580 на вашем локальном компьютере на порт 80 сервера Google.com. Локально, вы соединяетесь с портом 5580 на вашем компьютере, но SSH преобразует это соединение в соединение с портом 80 на удаленном компьютере (сервере SSH).

Например, как только все настройки будут произведены, любое соединение через ваш браузер с http://localhost:5580 преобразуется в соединение с http://www.google.com:80 через туннель SSH. Запросы, которые вы отправляете на localhost:5580, передаются на компьютер B через туннель SSH, а этот компьютер отправляет запрос на Google. Любой, кто осуществляет мониторинг вашей локальной сети, увидит лишь зашифрованное соединение SSH с портом 22 на компьютере B, и, таким образом, как сами ваши данные, так и пункт назначения вашего запроса останутся скрытыми.

Чтобы создать и сконфигурировать туннель SSH, вам потребуются:

  • Два компьютера, на которых установлен SSH. На Mac OS X, как, впрочем, и на большинстве вариантов UNIX и Linux, SSH устанавливается по умолчанию.
  • По крайней мере на одном из этих компьютеров (на том, который будет вашим сервером SSH) должна быть активизирована возможность удаленного входа в систему (Remote Login). Если этот компьютер — не Mac, то на нем необходимо сконфигурировать сервер SSH.
  • Для сервера SSH должен быть установлен уникальный IP-адрес, соответствующий требованиям Интернета. Большинство широкополосных соединений предоставляют для вашего дома уникальный IP-адрес, хотя этот адрес может часто изменяться.

Ваш глобальный IP-адрес можно найти на панели Network окна System Preferences, если вы подключены напрямую кабелем или через модем DSL. Если вы подключены через беспроводной роутер, то IP-адрес следует искать на административном интерфейсе соответствующего устройства. IP-адрес — это уникальный адрес, по которому ваш компьютер можно найти через Интернет. Он имеет следующий формат: w.x.y.z (где w, x, y и z представляют собой числа от 0 до 255 (некоторые комбинации, например, 255.255.255.255, зарезервированы для специальных применений).

Перед тем как активизировать SSH на вашем Macintosh, убедитесь в том, что ваш пароль достаточно надежен. Если SSH оставить в стандартной конфигурации, назначаемой по умолчанию, то ваш пароль будет единственной линией защиты от вторжений. Чтобы активизировать SSH на вашем Mac, перейдите на панель Sharing в окне System Preferences и активизируйте опцию Remote Login. Как только вы нажмете кнопку Start, сервер SSH начнет принимать запросы на входящие соединения. Сконфигурировать SSH можно через файлы, расположенные в папке .ssh/config вашего домашнего каталога и в папке /etc/ssh_config, но в большинстве ситуаций этого и не потребуется.

Чтобы получить дополнительную информацию об этих файлах, запустите приложение Terminal и дайте из командной строки команду man ssh_config. Если вы пользуетесь проводным или беспроводным роутером, вам может потребоваться перенаправить SSH (порт 22) на ваш сервер (Компьютер B) с помощью административного интерфейса вашего роутера. В дополнение к IP-адресу вашего сервера (компьютер B), вам потребуется следующая информация:

  • Сайт или IP-адрес компьютера, предоставляющего сервис, доступ к которому вам требуется получить (например, pop.gmail.com).
  • Номер порта на сервере, для предоставляемого сервиса (например, 80 для HTTP).
  • Свободный порт на вашем клиентском компьютере (компьютер A).

Туннель устанавливается следующей командой, которую нужно дать из командной строки Terminal: $ ssh -L localport:remoteserver:remoteport -l serverUserName -N serverIPorHost. Здесь serverUserName — ваше пользовательское имя на сервере SSH (компьютер B), а serverIPorHost — IP-адрес или имя хоста для сервера SSH (компьютер B).

Например, если вы хотите защитить все свои поиски, выполняемые в Google, то для этого нужно дать следующую команду: $ ssh -L 1300:google.com:80 -l serverUserName -N serverIPorHost. Перенаправление портов с номерами, меньшими, чем 1024, требует привилегий root. Любое перенаправление портов SSH на эти порты требует применения команды sudo, которая запрашивает у вас пароль администратора, например: $ sudo ssh -L 995:pop.gmail.com:995 -l serverUserName -N serverIPorHost.

Эта команда перенаправляет localhost:995 на почтовый сервис POP для Gmail. Чтобы получать вашу почту Gmail с помощью почтовых приложений, например, таких, как встроенный почтовый клиент Apple Mail, вам необходимо установить ваш почтовый сервер POP на localhost. Gmail использует порт 995, который является портом по умолчанию для почты POP поверх SSL. Как правило (без SSL), доступ к почте POP осуществляется через порт 110. Таким образом, чтобы загружать вашу почту POP через защищенный туннель с другого почтового сервиса, вам следует перенаправить локальный порт на порт 110 вашего почтового сервера: $ ssh -L 30110:pop.mailserver.com:110 -l serverUserName -N serverIPorHost.

Здесь pop.mailserver.com — имя вашего почтового сервера POP. Теперь, чтобы получить свою почту через приложение Mail, по аналогии с настройкой для Gmail, перейдите на вкладку Advanced, установите почтовый сервер POP на localhost и задайте для порта номер 30110. Как только эти настройки будут сконфигурированы, почта будет загружаться на ваш компьютер без возможности ее мониторинга через локальную сеть.

Аналогичным образом, вы можете обезопасить свою исходящую почту, отправляемую по протоколу SMTP, за счет перенаправления порта 25: ssh -L 3025:pop.mailserver.com:25 -l serverUserName -N serverIPOrHostName.

Конечно, важно помнить, что этот прием защищает прохождение вашей почты только между вашим клиентским компьютером (компьютер A) и вашим сервером SSH (компьютер B), но не между вашим сервером SSH и Интернетом. Как только вы овладеете всеми тонкостями и теоретическими основами установки туннелей SSH, вы можете протестировать графическое приложение SSH Tunnel Manager (http://projects.tynsoe.org/en/stm/), которое дает возможность устанавливать и конфигурировать несколько туннелей одновременно. Данное приложение существенно упрощает работу с большим количеством туннелей.

Наконец, необходимо сделать завершающее предупреждение: не стоит считать, что вы добились полной конфиденциальности и защищенности, если вы не достигли глубокого понимания смысла выполняемых действий. Например, если вы туннелируете Web-трафик через SSH, вполне возможно, что вы продолжаете отправлять незашифрованные запросы DNS. Это означает, что даже если ваш Web-трафик и защищен, остается возможность выяснить, какие Web-сайты вы посещаете, путем анализа запросов DNS.