Брандмауэр из Raspberry PI

raspberry icon

Вы, наверное, помните эту новость. В декабре 2016 г. ВВС сообщила, что печально известный червь Mirai заразил немало маршрутизаторов, используемых клиентами британского интернет-провайдера TalkTalk, воруя их пароли Wi-Fi. Червь использовал пароли администратора по умолчанию, жестко привязанные к нескольким машинам, и хотя целью был захват устройств для их употребления в атаках DOS (отказ в обслуживании), последствия ошеломляют. Даже те немногие пользователи, которые утруждаются изменением у себя паролей по умолчанию, редко заботятся о том же для межсетевых экранов.

Еще по теме: Как поднять мост Tor Bridge Relay на Raspberry Pi

Попросту говоря, это означает, что настройки вашего маршрутизатора и теоретически устройства в вашей домашней беспроводной сети могут быть взломаны злоумышленниками. К счастью, на помощь опять приходит Raspberry Pi. Мы покажем вам, как.

Наш проект можно разделить на две части. Во-первых, настройте свой Pi как беспроводную точку доступа. Другими словами, Pi сам создаст беспроводную сеть для подключения. Затем Pi можно подключить к вашему маршрутизатору, и любой подключенный к его беспроводной сети может получить доступ к Интернету.

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

Необходимый минимум

Используемое беспроводное устройство должно быть совместимо с hostapd (немного об этом). Наш проект технически совместим со всеми моделями Pi, хотя Pi должен быть с поддержкой беспроводной сети и иметь порт Ethernet для подключения к маршрутизатору. Raspberry Pi 3 хорошо себя в этом зарекомендовал.

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

Если вы предпочитаете компактный Pi Zero, убедитесь, что у вас есть USB-кабель OTG Host и USB-адаптер MicroUSB OTG (доступный у всех поставщиков аксессуаров для Pi — от Pi Hut, например, всего за £2, https://thepihut.com/products/usb-to-microusb-otg-converter-shim). Для подключения к USB-порту вам также понадобится конвертор RJ45-USB. Тогда вы сможете подключить Pi Zero к маршрутизатору. Подробнее — на схеме (стр. 89).

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

Безопасность прежде всего

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

Лучше всего начать с чистой установки последней версии Raspbian на Pi. По завершении установки откройте терминал и запустите следующие команды — для проверки, что ваша система обновлена:

Если у вас нет доступа к монитору, можно подключиться к Pi по беспроводной сети Wi-Fi через маршрутизатор и SSH. Сначала подключите Pi к маршрутизатору Ethernet-кабелем. Если у вас есть мобильное устройство, можно использовать удобное приложение Fing для простого определения IP-адреса всех устройств в вашей локальной сети. Fing доступен для бесплатной загрузки как из магазина приложений iOS, так и из Google Play.

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

Точка доступа настраивается и управляется удобной программой hostapd. Шаг 3 нашего руководства на стр. 91 описывает создание файла конфигурации, где вы укажете параметры новой беспроводной сети Pi, такие как имя, пароль и тип шифрования. К этому hostapd.conf всегда можно вернуться, чтобы изменить настройки, если захотите.

Хотя любая беспроводная карта может подключить вас к сети Wi-Fi, не все карты Wi-Fi могут создавать собственные беспроводные сети. К счастью, модуль Wi-Fi, встроенный в Raspberry Pi 3, поддерживает данную функцию, и это хорошая причина рассмотреть вопрос его применения как вашего брандмауэра.

Мы также установим дьявольски умную программу dnsmasq для работы с сетевой инфраструктурой. Она также берет настройки из небольшого файла конфигурации, который вы создадите на шаге 4.

В предлагаемых настройках dnsmasq использует Google для своего DNS-сервера (8.8.8.8). но, если хотите, вы можете это изменить на другого поставщика DNS, такого, как Open DNS (208.67.222.222).

Чтобы обеспечить максимальную производительность, можно указать более одного DNS-сервера, просто добавив новые строки для них в файл dnsmasq.conf, например, server=208.67.222.222

Несложный брандмауэр

Ufw (Uncomplicated Firewall, несложный брандмауэр) поставляется с рядом дистрибутивов Linux и оправдывает свое название — он очень прост в использовании. Это отнюдь не единственная программа брандмауэра: на самом деле в природе есть целые дистрибутивы Linux, такие как IPFire, специально предназначенные для работы шлюзом между вашим компьютером и интернетом, с красочными окнами. Зачем тогда использовать довольно-таки прозаическое приложение командной строки? Помимо того, что Ufw выдержал испытание временем, его легко установить и настроить.

После включения Ufw запустится автоматически. По умолчанию блокируются все входящие соединения и разрешаются все исходящие. Это может досадить, если вы и другие пользователи вашей сети захотите использовать приложения вроде BitTorrent или Skype; но, к счастью, настройки исключений для этих правил просты. У Ufw также есть графический напарник для тех, кому еще не совсем комфортно в командной строке.

Ufw также имеет возможность блокировать подключения к заданным IP-адресам или диапазонам, так что вы можете запретить пользователям сети посещать определенные сайты.

Хотя Ufw можно использовать для блокировки отдельных сайтов, любые загружаемые web-страницы будут показывать рекламные баннеры и всплывающие окна. На самом деле простейший способ справиться с ними для вас и других пользователей в вашей сети — установить расширения браузера, типа Ublock Origin и Ghostery: они предотвращают и рекламу, и отслеживание куки [cookie]. Мобильные пользователи также могут воспользоваться официальным Adblock Browser.

Если это неосуществимо, можно удалить DHCP (протокол динамической настройки узла) для Pi по умолчанию и настроить вместо него dnsmasq для автоматического перенаправления известных рекламных серверов на внутренний IP-адрес. По умолчанию это создаст уродливые бельма в середине ваших web-страниц, но эту проблему можно решить, установив также удобное приложение pixerv. Единственной целью его жизни является поддержка блокировки рекламы посредством замены ее на прозрачное изображение GIF размером 1 х1. Это заставляет блокировку рекламы выглядеть опрятнее.

Если вы заинтересованы в добавлении функции блокировки рекламы в Pi, посетите web-сайт Adafruit.

Блокировка домена

Ufw — это мощный межсетевой экран, он может использоваться для блокировки доступа к определенным сайтам. Правда, это также делается с помощью dnsmasq, но в форме «перехвата DNS», что является довольно дурной процедурой, обычно выполняемой мошенниками.

Преимущество использования Ufw заключается в том, что он блокирует домены по IP-адресу. Это означает, что вам нужно записать только одно правило на адрес, а не помнить различные домены и поддомены, используемые сайтами. Представьте, что вы пытаетесь заблокировать все варианты Facebook.com, например:

Разумеется, для блокирования сайтов по IP-адресу вам эта информация понадобится. Откройте терминал на своем Pi или подключитесь через SSH и используйте команду host для просмотра IP-адреса нежелательной страницы — например:

Вы получите IP-адрес запрашиваемого сайта. Затем используйте ufw deny для блокировки этого домена, например:

Можно проверить, что домен успешно заблокирован, с помощью ping:

Если вы правильно настроили Ufw, ping должен выдать вам сообщение, что домен недоступен.

Ufw также способен блокировать исходящие подключения к определенным вами портам. Например, желая уменьшить вероятность использования Pi для отправки спам-сообщений, вы можете отключить порт 25 следующим образом:

Наведение мостов

Наш проект фокусируется на соединении беспроводного интерфейса Pi и интерфейса Ethernet. Это позволяет вашей точке доступа оставаться подключенной к Интернету. Если вам надо перепроверить имена своих интерфейсов, вы всегда можете запустить команду ifconfig. По умолчанию имена этих интерфейсов должны быть wlanO и ethO соответственно.

Если вы не можете подключить Pi к маршрутизатору, теоретически можно добавить еще один беспроводной интерфейс, например, официальный модуль Wi-Fi для Raspberry Pi, и использовать его для доступа к беспроводной сети вашего маршрутизатора. Однако это менее безопасно и снизит вам скорость соединения. Если ваш маршрутизатор где-то в недоступном месте (или вообще вне зоны досягаемости), подумайте об использовании устройства типа “homeplug”, которое использует для сетевых подключений электропроводку вашего дома или офиса.

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

Если вы используете драйвер Wi-Fi, не встроенный в Pi 3, или официальный адаптер Wi-Fi для Raspberry Pi, возможно, придется изменить значение driver= в файле hostapd.conf. За информацией обратитесь к сайту http://linuxwireless.org/en/users/Documentation/hostapd.

Вы можете отключить брандмауэр Ufw навсегда и удалить все правила такой командой:

При необходимости вы также можете восстановить ранее сохраненные настройки с помощью dnsmasq, изменив исходную команду:

Если вы решите заблокировать определенные порты или службы — см. врезку «Блокировка домена» внизу стр. 89 — то имейте в виду, что ИТ-грамотные пользователи в вашей сети могут обойти это с помощью VPN. Разумеется, через Ufw можно заблокировать порты, обычно используемые VPN, например, 1154, или блокировать весь исходящий трафик, а затем включать его для определенных приложений и служб. Некоторые приложения будут использовать порты случайным образом, затрудняя блокировку определенных протоколов, таких как BitTorrent. Желая предотвратить потоковое воспроизведение большинства музыкальных и видеосайтов, вы можете предусмотреть блокировку протокола UDP.

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

По соображениям безопасности было бы разумно использовать выделенный Pi исключительно какточкудоступа и не хранить на нем какие-либо личные данные. Для дополнительной безопасности обязательно используйте длинный надежный пароль — приведенный в руководстве является только примером.

Для полной безопасности подумайте о создании скрытой сети Wi-Fi для Pi. Отредактируйте файл hostapd.conf, открыв терминал и набрав

Замените ignore_broadcast_ssid=0 на ignore_broadcast_ssid=1.

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

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

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

Настройка брандмауэра

После включения Ufw запускается при загрузке, блокируя все входящие соединения и разрешая все исходящие. Это может быть не идеально, если вы хотите подключаться к Pi через SSH или VNC. Чтобы настроить Ufw, используйте терминал своего Pi. Ufw распознает большинство служб, таких как SSH, и в большинстве случаев вы можете разрешить доступ с помощью ufw allow, например: sudo ufw allow ssh

Чтобы увидеть полный список служб, включаемых таким образом, просто выполните команду nano /etc/services

Если ваш сервис отсутствует в списке, откройте порт, который он использует. Например, ReaIVNC, который может применяться для удаленного подключения к рабочему столу Pi, использует порт 5800. Чтобы Ufw открыл его, выполните:

Чтобы разрешить подключения только с определенного IP-адреса, используйте from, например:

Для просмотра всех параметров брандмауэра в Ubuntu скомандуйте:

Еще больше упростит вам жизнь графический напарник Ufw — Gufw. Чтобы открыть его, выполните:

У Gufw есть удобный переключатель и список открытых и заблокированных портов. Нажмите кнопку +, чтобы добавить дополнительные правила. Нажмите Show extended actions, чтобы увидеть преднастроенные параметры для некоторых популярных приложений, таких как Skype.

РЕКОМЕНДУЕМ:

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *