Изображение от Aviad Raviv & bfick.
Предисловие
Если вы использовали встроенные функции DD-WRT для VPN или у вас есть другой VPN-сервер в вашей сети, вы можете оценить возможность защиты от атак с использованием грубой силы, спрятав их за последовательность детонации. Делая это, вы отфильтровываете сценаристов, которые пытаются получить доступ к вашей сети. С учетом сказанного, как указано в предыдущей статье, детонация порта не является заменой хорошего пароля и / или политики безопасности. Помните, что с достаточным терпением злоумышленник может обнаружить последовательность и выполнить повторную атаку. Также имейте в виду, что недостатком реализации этого является то, что когда любой клиент / ы VPN-клиента хотят подключиться, им придется запускать последовательность детонациизаранее и что, если они не могут выполнить последовательность по какой-либо причине, они вообще не смогут подключаться к VPN.
обзор
Чтобы защитить * службу VPN, мы сначала отключим всю возможную связь с ней, заблокировав порт создания 1723. Для достижения этой цели мы будем использовать iptables. Это связано с тем, что общение фильтруется в большинстве современных дистрибутивов Linux / GNU в целом и DD-WRT в частности. Если вы хотите получить дополнительную информацию об ипподроме в своей вики-записи и взгляните на нашу предыдущую статью по этому вопросу. После того, как служба будет защищена, мы создадим последовательность детонации, которая временно откроет порт для создания виртуальной частной сети VPN, а также автоматически закроет его по истечении заданного времени, при этом поддерживая уже установленный сеанс VPN.
Примечание. В этом руководстве мы используем службу PPTP VPN в качестве примера. С учетом сказанного, тот же метод может использоваться для других типов VPN, вам просто нужно будет изменить заблокированный порт и / или тип связи.
Предпосылки, предположения и рекомендации
- Предполагается / требуется, чтобы у вас был маршрутизатор DD-WRT с поддержкой Opkg.
- Предполагается / требуется, чтобы вы уже выполнили действия, описанные в руководстве «How To Knock into your Network (DD-WRT)».
- Предполагаются некоторые сетевые знания.
Позволяет растрескиваться.
По умолчанию «Заблокировать новые VPN» на DD-WRT
Хотя приведенный ниже фрагмент «кода», вероятно, будет работать на всех, уважающих себя, iptables, используя дистрибутив Linux / GNU, потому что существует так много вариантов, мы покажем только, как использовать его в DD-WRT. Ничто не мешает вам, если хотите, реализовать его непосредственно в окне VPN. Однако, как это сделать, выходит за рамки настоящего руководства.
Поскольку мы хотим увеличить брандмауэр маршрутизатора, логично, что мы добавим скрипт «Брандмауэр». Это приведет к тому, что команда iptables будет выполняться каждый раз, когда брандмауэр обновится и, таким образом, сохранит наше дополнение для хранения.
С веб-графического интерфейса DD-WRT:
-
Перейдите в «Администрирование» -> «Команды».
-
Введите ниже «код» в текстовое поле:
inline='$( iptables -L INPUT -n | grep -n 'state RELATED,ESTABLISHED' | awk -F: {'print $1'} )'; inline=$(($inline-2+1)); iptables -I INPUT '$inline' -p tcp --dport 1723 -j DROP
- Нажмите «Сохранить брандмауэр».
- Готово.
Что это за команда «Voodoo»?
Вышеупомянутая команда «voodoo magic» делает следующее:
- Находит, где iptable линия, которая позволяет уже установленную связь пройти. Мы делаем это, потому что A. На маршрутизаторах DD-WRT, если услуга VPN включена, она будет расположена чуть ниже этой строки и B. Важно, чтобы наша цель продолжать разрешать уже установленные сеансы VPN, чтобы жить после стучать.
- Вычитает два (2) из вывода команды листинга для учета смещения, вызванного заголовками информационных столбцов. Как только это будет сделано, добавится один (1) к указанному выше числу, так что правило, которое мы вставляем, произойдет сразу после правила, которое позволяет уже установить связь. Я оставил эту очень простую «математическую проблему» здесь, просто для того, чтобы сделать логику «почему нужно уменьшить ее из места правила, а не добавлять к ней».
Конфигурация KnockD
Нам нужно создать новую последовательность запуска, которая позволит создавать новые VPN-соединения. Чтобы сделать это, отредактируйте файл knockd.conf, отправив в терминал:
vi /opt/etc/knockd.conf
Приложите к существующей конфигурации:
[enable-VPN] sequence = 02,02,02,01,01,01,2010,2010,2010 seq_timeout = 60 start_command = iptables -I INPUT 1 -s %IP% -p tcp --dport 1723 -j ACCEPT cmd_timeout = 20 stop_command = iptables -D INPUT -s %IP% -p tcp --dport 1723 -j ACCEPT
Эта конфигурация будет:
- Установите окно возможности для завершения последовательности, до 60 секунд. (Рекомендуется держать это как можно короче)
- Прослушайте последовательность из трех ударов по портам 2, 1 и 2010 (этот заказ преднамерен, чтобы сбросить сканеры портов с дорожки).
- Как только последовательность будет обнаружена, выполните команду «start_command». Эта команда «iptables» поместит «прием трафика, предназначенного для порта 1723, откуда произошли удары» в верхней части правил брандмауэра. (Директива% IP% обрабатывается специально KnockD и заменяется IP-адресом начального разряда).
- Подождите 20 секунд, прежде чем выпустить команду «stop_command».
- Выполните команду «stop_command». Если эта команда «iptables» выполняет обратную ссылку выше и удаляет правило, которое позволяет обмениваться данными.
Вот и все, ваш VPN-сервис теперь должен быть подключен только после успешного «стука».
автор Советы
В то время как вы все должны быть настроены, есть несколько моментов, которые мне кажутся нужными.
- Поиск проблемы. Помните, что если у вас возникли проблемы, сегмент «устранения неполадок» в конце первой статьи должен быть вашей первой остановкой.
- Если вы хотите, вы можете иметь директивы «start / stop», выполняющие несколько команд, разделяя их полу-colen (;) или даже скриптом. Это позволит вам сделать некоторые отличные вещи. Например, у меня есть knockd, присылайте мне * Email, рассказывающий мне, что последовательность была инициирована и откуда.
- Не забывайте, что «для этого есть приложение», и хотя он не упоминается в этой статье, вам предлагается захватить программу Knocker для Android от StavFX.
- Хотя на тему Android, не забывайте, что клиент PPTP VPN обычно встроен в ОС от производителя.
- Метод, блокирующий что-то изначально, а затем продолжающий разрешать уже установленную связь, может использоваться практически на любой основе на основе TCP. Фактически, в фильмах Knockd on DD-WRT 1 ~ 6, я сделал это еще раз, когда использовал протокол удаленного рабочего стола (RDP), который использует порт 3389 в качестве примера.
Примечание. Для этого вам нужно будет получить функции электронной почты на вашем маршрутизаторе, который в настоящее время действительно не работает, потому что снимок SVN пакетов opkg OpenWRT находится в беспорядке. Поэтому я предлагаю использовать knockd непосредственно в окне VPN, что позволяет использовать все варианты отправки электронной почты, доступные в Linux / GNU, например SSMTP и sendEmail, чтобы упомянуть некоторые из них.
Кто беспокоит мою дремоту?