К основному контенту

👩🦽 Настройка bridge на Debian , выполняющий роль межсетевого экрана

# Задача: хотим внедрить в своей сети мост (bridge) на Debian,# выполняющий также задачи межсетевого экрана,# т.е. получить возможность фильтрации трафика, не сильно меняя топологию# и совсем не меняя адресацию в сети и шлюз по умолчанию.# Желательно, чтобы мост-МЭ при этом вообще не имел IP-адресов# на интерфейсах (обращенном наружу и смотрящему в защищаемую сеть)# Администрировать его и смотреть на нем логи предлагается локально# или путем подключения к выделенной сети администрирования# Ставим его в сети так, чтобы одним интерфейсом моста он был# подключен к провайдеру или другому уже имеющемуся шлюзу по умолчанию,# а другой «смотрел» в защищаемую ЛВС, например в порт коммутатора# Таким образом, приходящий извне трафик прежде чем попасть в защищаемую сеть# будет всегда проходить через мост на котором мы его будем фильтровать# с помощью iptablesСхема тестового стенда

👩🦽 Настройка bridge на Debian , выполняющий роль межсетевого экрана

# Задача: хотим внедрить в своей сети мост (bridge) на Debian,

# выполняющий также задачи межсетевого экрана,

# т.е. получить возможность фильтрации трафика, не сильно меняя топологию

# и совсем не меняя адресацию в сети и шлюз по умолчанию.

# Желательно, чтобы мост-МЭ при этом вообще не имел IP-адресов

# на интерфейсах (обращенном наружу и смотрящему в защищаемую сеть)

# Администрировать его и смотреть на нем логи предлагается локально

# или путем подключения к выделенной сети администрирования

# Ставим его в сети так, чтобы одним интерфейсом моста он был

# подключен к провайдеру или другому уже имеющемуся шлюзу по умолчанию,

# а другой «смотрел» в защищаемую ЛВС, например в порт коммутатора

# Таким образом, приходящий извне трафик прежде чем попасть в защищаемую сеть

# будет всегда проходить через мост на котором мы его будем фильтровать

# с помощью iptables

Схема тестового стенда



# сначала приведем вариант,как НЕ надо,зато попробуем использовать

# командный интерфейс для Network Manager (nmcli) и посмотрим,

# почему всё-таки другой вариант предпочтительнее

# Смотрим, какие есть вообще на МЭ сетевые устройства

 nmcli dev show 

# Если есть проводные соединения для интерфейсов, например eth1 и eth3

# которые мы будем привязывать к мосту, то удаляем их

sudo nmcli con del "Wired connection 2" sudo nmcli con del "Wired connection 4"

# Добавляем соединение типа bridge
# с именем интерфейса bridge0
# и именем соединения тоже bridge0:

sudo nmcli con add ifname bridge0 type bridge con-name bridge0

# Добавляем подчиненные (slave) соединения для интерфейсов, включаемых в мост

sudo nmcli con add type bridge-slave ifname eth1 master bridge0 sudo nmcli con add type bridge-slave ifname eth3 master bridge0

# Отключаем для моста поддержку spanning tree protocol

sudo nmcli con modify bridge0 bridge.stp no

# Смотрим, как выглядят поля свойств соединения bridge0, связанные с bridge

nmcli -f bridge con show bridge0

# Для проверки результата ещё раз смотрим все соединения

nmcli con show

# Получим что-то типа
# NAME UUID TYPE DEVICE
# bridge0 b38659f3-2863-43ea-a899-ea9c2b393827 bridge bridge0
# bridge-slave-eth1 01ff1133-67a0-497b-a909-56df91c3db1d ethernet eth1
# bridge-slave-eth3 741c03f6-7c73-442a-9c05-60c9372e06cf ethernet eth3
# Wired connection 6 7008b0d6-2589-30a4-99de-420c0879724d ethernet –

# Теперь загружаем модуль ядра br_netfilter

sudo modprobe br_netfilter

# Разрешаем ему фильтровать пакеты

sudo sysctl -w net.bridge.bridge-nf-call-iptables=1

# Стартуем соединение

sudo nmcli con up bridge0

# и тут нас ждёт засада — у моста появляется IP-адрес,
# так как по умолчанию для соединения, создаваемого через nmcli
# метод присвоения адреса ipv4.method – auto, т.е. мост получает адрес по DHCP,
# а нам нужен «невидимый» bridge-firewall
# Если задать для ipv4.method значение manual и не задать значение адреса,
# то nmcli ругается, что адрес не может быть пустым

# Поэтому если для вас факт наличия адреса не страшен,
# то можно оставить адрес, полученный по DHCP

# если хотите задать этот адрес и шлюз по умолчанию статически, то делаем так:

sudo nmcli con mod bridge0 ipv4.method manual sudo nmcli con mod bridge0 ip4 192.168.2.5/24 gw4 192.168.2.6

# впоследствии можно изменить шлюз по умолчанию или сделать его пустым:
# sudo nmcli con mod bridge0 ipv4.gateway 0.0.0.0

# статические маршруты можем прописывать через ip route

sudo ip route add 192.168.110.0/24 dev bridge0

# но тогда вам придется позаботиться о том, чтобы они заново
# прописывались после перезагрузки, или тоже через nmcli,
# как именно, предлагаю разобраться самостоятельно

# проверим, что адрес присвоен правильно и мост работает,
# пропинговав кого-нибудь во внешней сети с компьютера в защищаемой сети

ping 1.1.1.1 # 64 bytes from 1.1.1.1: icmp_seq=1 ttl=128 time=0.441 ms # 64 bytes from 1.1.1.1: icmp_seq=2 ttl=128 time=0.433 ms # ...

# Теперь мы имеем возможность фильтровать трафик с помощью модуля iptables
# physdev, работающего с физическими интерфейсами, входящими в мост.
# Возвращаемся на наш мост и пишем правила фильтрации, например:

sudo iptables -A FORWARD -m physdev --physdev-in eth3 --physdev-out eth1 \ --src 10.10.2.75 --dst 192.168.2.23 --proto tcp --dport 22 -j DROP

# где, —physdev-in eth3 это входной интерфейс eth3 моста,
# на котором у нас провайдер или шлюз по умолчанию
# —src 10.10.2.75 – IP адрес источника
# где, —physdev-out eth1 это интерфейс eth1 моста,
# на котором у нас порт коммутатора, в который в свою очередь
# включен защищаемый сервер SSH
# —dst 192.168.2.23 – IP адрес назначения,
# в данном случае защищаемого сервера SSH
# —proto tcp —dport 22 – протокол tcp, порт назначения 22
# -j DROP – действие, отбрасываем пакет без уведомления отправителя

# А теперь как надо, чтобы получить мост без IP-адреса:

# Удалим мост и slave соединения, созданные через Network Managercode

sudo nmcli con del bridge0 sudo nmcli conn del bridge-slave-eth3 sudo nmcli conn del bridge-slave-eth1

# Останавливаем Network Manager

sudo systemctl stop network-manager

# Как вариант, вообще его отключаем

sudo systemctl mask --now network-manager

# Мост создаем через bridge-utils

sudo brctl addbr br0 sudo brctl addif br0 eth1 sudo brctl addif br0 eth3

# Переводим интерфейсы в promisc mode и делаем их активными

sudo ifconfig eth1 0.0.0.0 promisc up sudo ifconfig eth3 0.0.0.0 promisc up

# Загружаем модуль ядра br_netfilter

sudo modprobe br_netfilter

# Разрешаем ему фильтровать пакеты

sudo sysctl -w net.bridge.bridge-nf-call-iptables=1

# задаем правила для фильтрации с использованием -m physdev:

sudo iptables -A FORWARD -m physdev --physdev-in eth3 --physdev-out \ eth1 --src 10.10.2.75 --dst 192.168.2.23 --proto tcp --dport 22 -j DROP

# PROFIT!!111

# Дополнение:
# Для того, чтобы каждый раз после перезагрузки системы не настраивать интерфейс
# br0, настроим /etc/network/interfaces.
# Пример файла с настройками ниже.

# The loopback network interface

auto lo iface lo inet loopback iface eth1 inet manual iface eth3 inet manual

# Bridge setup

auto br0 iface br0 inet static bridge_ports eth1 eth3 address 0.0.0.0 bridge_stp off

# Обратите внимание, что для br0 задан адрес 0.0.0.0,
# что равносильно отсутствию адреса
# Если этого не сделать,то при попытке поднять интерфейс

sudo ifup br0

# Получим сообщения об ошибке вида

ifup: missing required variable: address ifup: missing required configuration variables for interface br0/inet ifup: failed to bring up br0

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…

Установка операционной системы Raspberry pi 3

Raspberry Pi - это недорогой микрокомпьютер, который  помещается на ладони и может сделать очень многое. На основе этого микрокомпьютера можно создавать как серьезные проекты, по управлению умным домом, так и использовать в качестве медиацентра или даже легковесного домашнего компьютера с Linux. В одной из предыдущих статей мы подробно рассматривали начало работы с Raspberry Pi 3, как подключить устройство и что для этого необходимо, сейчас же остановимся более подробно на такой задаче, как установка операционной системы Raspberry Pi 3. Здесь используется процессор на архитектуре ARM, а значит вы можете установить любой поддерживаемый ARM дистрибутив, или же созданный специально для Raspberry дистрибутив Raspbian. Содержание статьи: Установка системы Raspberry с помощью NOOBS 1. Подготовка SD карты 2. Загрузка образ NOOBS 3. Запись на SD карту 4. Запуск системы Установка системы Raspberry из образа 1. Загрузка образа 2. Запись образ на карту Выводы Установка системы Raspberry …