Основные настройки iptables, или как настроить фаервол в Linux.

В этой статье мы рассмотрим один из вариантов перенаправления портов через SSH — перенаправление локальных портов. Поскольку понятие «перенаправление портов» выглядит несколько туманным, то в первую очередь мы хотели бы немного поговорить о самой идее перенаправления (переадресации) портов.

Как работает перенаправление ввода вывода

Все команды, которые мы выполняем, возвращают нам три вида данных:

  • Результат выполнения команды, обычно текстовые данные, которые запросил пользователь;
  • Сообщения об ошибках — информируют о процессе выполнения команды и возникших непредвиденных обстоятельствах;
  • Код возврата — число, которое позволяет оценить правильно ли отработала программа.

В Linux все субстанции считаются файлами, в том числе и потоки ввода вывода linux — файлы. В каждом дистрибутиве есть три основных файла потоков, которые могут использовать программы, они определяются оболочкой и идентифицируются по номеру дескриптора файла:

  • STDIN или 0 — этот файл связан с клавиатурой и большинство команд получают данные для работы отсюда;
  • STDOUT или 1 — это стандартный вывод, сюда программа отправляет все результаты своей работы. Он связан с экраном, или если быть точным, то с терминалом, в котором выполняется программа;
  • STDERR или 2 — все сообщения об ошибках выводятся в этот файл.

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

Читайте также:  Синтаксис и опции команды echo в Bash

Переброс удаленного порта на локальную машину (Remote TCP forwarding)

Есть еще один вариант применения SSH туннеля – remote TCP forwarding. Через SSH туннель вы можете открыть доступ удаленному серверу к локальному порту на вашем компьютере или порту на другом компьютере в вашей локальной сети. Например, вы хотите, чтобы внешний сервер () получил доступ к вашему Интранет сайту (не опубликованному в Интернете). Для создания обратного туннеля, используйте такую команду:

ssh -R 8080:internalwebsever:80 [email protected]

Теперь, чтобы на удаленном SSH сервер получить доступ к веб серверу internalwebsever достаточно в браузере набрать адрес http://localhost:8080.

Во всех версиях Windows можно создать правила перенаправления портов с помощью команды netsh interface portproxy.

С помощью SSH туннелей вы можете строить целые цепочки для форвардинга портов. Включить или отключить SSH туннелирование можно в конфигурационном файле sshd_config директивами:

AllowStreamLocalForwarding yes

AllowTcpForwarding remote

Шаг Исходное состояние

В этой ситуации у нас есть три машины — наша атакующая машина, брандмауэр и хост (машина) во внутренней сети. В реальной ситуации, как правило, во внутренней сети будет больше одной машины, но для учебных целей нам нужна только одна машина.

Наш атакующий компьютер находится в сети , представляющей сеть DMZ. Брандмауэр доступен как шлюз из DMZ в той же сети. Он также доступен как шлюз из внутренней сети, который находится в диапазоне адресов Эти адреса описаны с использованием CIDR-нотации.

Шаг Исходное состояние

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

Читайте также:  Как заработать в Твиттер: 6 способов заработка

Многие новички не знают о полном наборе функций SSH. Без поворота во внутреннюю сеть атакующий будет полностью зависеть от того набора инструментов, который имеется на скомпрометированном брандмауэре. Что, скорее всего, дает крайне ограниченные возможности. Иногда, если повезет, вы получите Nmap. Атака может быть выполнена и таким образом, но гораздо проще работать, когда у нас есть большой набор инструментов, подобно тому, который включен в дистрибутив Kali Linux. Такие инструменты, как Metasploit, действительно облегчают работу.

Чтобы смоделировать такое первоначальное положение, мы настроили виртуальную машину на скомпрометированном хосте с адаптером только для хоста. Это делает жертву недоступной для трафика в сети DMZ. Если вы хотите попробовать это дома, просто создайте в VirtualBox виртуальную машину Linux с включенным SSH и настройте сетевой адаптер только на хост. Операционная система хоста должна иметь SSH, а также вам понадобится другой компьютер для доступа к службе SSH в системе хоста.

Шаг Исходное состояние

Когда конфигурация будет завершена, у нас должна получиться система, которая выглядит так:

Что происходит, когда атакующий компьютер пытается пропинговать гостевой компьютер? Мы не можем направить трафик на машину-жертву, но можем получить доступ к главной машине через SSH, и это все, что нам нужно. На скриншоте мы видим, что атакующий хост не может перейти в сеть vboxnet0.

Шаг Исходное состояние

Работает ли переадресация портов с VPN?

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

Серфинг интернета с открытыми портами открывает ряд рисков в области безопасности. Блокировка доступа ко всем портам, за исключением тех, которые необходимы для работы VPN и доступа в интернет, является частью того, как некоторые VPN обеспечивают вашу безопасность.

Как открыть порт в iptables

Чтобы разрешить подключаться к нашей ОС по SSH, нам потребуется разрешить подключение через порт 22, прописав правило в iptables:

iptables -A INPUT -p TCP —dport 22 -j ACCEPT

Далее проверим все наши правила с помощью команды iptables -L

Debian 9: просмотр списка правил iptables

Как мы видим, появилось новое правило для ssh по стандартному порту 22. Теперь он открыт и можно подключаться, так как теперь блокируются все входящие соединения, кроме соединений по этому порту. О том, как подключаться к серверу по SSH.