# матрица доступа linux iptables
Линекс:
В линекс для каждого iptables будет свое правило для каждого интерфейса. И для iptables есть определенная методика прописывания правил: сначала правила для iptables мы должны написать в блокнотике или ворде. (по аналогии с матрицей доступа) – посмотреть как эти правила для iptables могут отрабатывать и только после этого переносить их в iptables строго в том порядке, в котором мы прописали.
делаем какую-нибудь линуксовую тачку и на ней настраиваем наш виллан-роутинг
Настраиваем:
 - адрес статический
Поднимаем дальше ens4 – тоже статика и саб-интерфейсы –

сохраняем, перезапускаем Теперь настаиваем IP-адресацию. Логинимся на линекс-FW. смотрим ip a:

Проверяем пингом: устройства должны пинговаться


Теперь с кали – 10.0.10.1 (с ICMP)
 нет пинга – с 50-вилана нет доступа на 10 вилан а с линекс-FW – есть –

На ICMP – нет никаких правил: все разрешено

Т.е. сейчас мы может пинговать с линекс-FW – все вилланы, а вот между самими вилланами (с 50 до 10) нет связи. Свич на уровне L2 коммутирует трафик, всё разрешено
На линекс-FW все маршруты есть. Связи нет, потому что не включен роутинг. Включаем роутинг: nano /etc/sysctl.conf
Раскомментируем строчку:

Проверяем теперь связь:
 пингуется
Смотрим от: icmp-dns-client
 - есть пинг
Из Линекс-FW – мы настроили обычный роутинг
У нас есть матрица-доступа. Добавляем к ней – сети (какая сеть представляет вилан10, 20,30,40,50) – это будет Network – чтобы мы понимали какая это сеть

Прописываем правила для iptables:
Есть хорошая инструкция на сайте – https://1cloud.ru/help/linux/nastrojka_linus-firewall_iptables
У iptables есть такие штучки как – полиси –
 - в этом режиме работает роутер/ Роутер – всё разрешает, запрещает только то, что мы запретили. Дефолтные политики FW работают при дефолтных политиках drop -
 - в этом режиме работает FW – всё запрещает и разрешает только то, что мы разрешили.
Мы будем работать с iptables как с FW т.е. он должен все запрещать, а дальше мы будем какие-то вещи ему разрешать.
Нам нужно открыть текстовый редактор: у нас есть синтаксис для iptables – там нужно будет указать политики – для того чтобы они все дропнулись. – пишем в блокнот:
 - т.е. все политики у нас запрещаются. Далее мы разрешаем какие-то части – некоторые соединения и как они делаются…
Есть инпут, аутпут и форвард.
Как работает FW в линексе:
У нас есть коробочка – внутри есть некая штука называется iptables (позволяет управлять трафиком), у нее есть один интерфейс и фактически – второй интерфейс (ens 3 и ens4), у каждого интерфейса может быть следующий трафик:
- есть трафик входящий и в один, и во второй интерфейс – input
- есть трафик исходящий из обоих интерфейсов – output
- и есть трафик, передающий данные между интерфейсами – forward
Помимо форварда, есть еще некая штучка – роутинг – когда трафик перенаправляется работает роутинг. Это взаимо-замещающие вещи: форвард – это разрешающе-запрещающие правила.
И есть еще в iptables часть – prerouting и postrouting – это действия, которые могут происходить ДО того как что-то сроутится внутри или ПОСЛЕ того как что-то сроутится. И какие действия там могут выполняться (prerouting и postrouting) – это действие либо NAT, либо Mangle. NAT – это замена IP-шников и т.п., а Mangle- это добавление определенных меточек для трафика

Представим, что ens3 – выход в интернет и смотрим – куда у нас, что уходит.
Надо прописать для виллана 10

Если мы пропишем, что разрешен интернет = будет разрешено и всё остальное, поэтому:
сначала надо прописать запрет на виллан 20, 30, 40, 50 и разрешено для всех.
Теперь синтаксис для iptables:
с виллана 10 мы должны запретить форвардинг на 20-й, 30, 40 и 50-й. Нужно помнить, что есть еще и инпут – нам надо разрешить инпут с сети 10.0.10.0/24, дальше запретить форвардинг до нужных сетей и разрешить какой-то аутпут либо в ens3, либо в ens4 – чтобы дистинейшн –адресс был определенный, либо политику аутпута сделать – accept (обычно всегда делается политика аутпута – accept)
Итак: для вилан10 – запретить вилан20 (п.6) «А» = добавление правила в обычном режиме «d» - дистинейшн, до куда «S» - с какой сети
 - трафик (форвард) с сети 10.0.20.0/24 до сети 10.0.10.0/24 (и обратный) – запретить
Для других сетей делается аналогично… Получаем:

Чтобы из сети виллана 10 разрешить:

Как правило сначала всегда идет инпут, потом форвард и последний аутпут. Мы запретили другие вилланы и теперь надо разрешить интернет: на все сети – (-d 0.0.0.0/0 т.е. куда угодно можем не писать – он итак это предполагает)
Пробуем сделать – внести в систему, ip a:

Вписываем команды из блокнотика:

И проверяем: iptables -L

видим что акцепт куда угодно.
Уточним: iptables -L -v чтобы полностью всё вывел

Вот он сказал: 
Разрешаю что угодно откуда угодно с адреса 10.0.10.0/24
Далее указываем форварды запрещающие:

И разрешить все остальные сети (интернет) – 
Проверяем правила для iptables: как они получились – iptables -L -v
 
Проверим, что интернет работает:  нет выхода: У нас:

У нас iptables дропает всё. И iptables – он «глупый», ему нужно всё говорить. Для того, чтобы он принимал соединения, запущенные от него же и от кого то еще, нам нужно сказать «iptables, а давай-ка ты будешь принимать соединения эстэблиш на релэйтит», т.е. со статусами «установлено» либо же «реализовано»- политика input она, конечно запрещающая, но эстэблиш на релэйтит соединения у тебя должны быть. Поэтому добавляем:
Правило на самый верх ( -i1 )

Теперь пинг есть: 
Заменим nano /etc/resolv.conf так чтобы у нас было доменное имя (чтобы установить пакет) nameserver 8.8.8.8
далее apt update после apt install iptables-persistent позволяет сохранять правила для iptables автоматически – самый быстрый способ. Затем reboot.
Правила все сохранились:

Попробуем теперь с вилан10(в нашем случае winserv2012)
законнектиться до интернета:

Он должен был пропинговать 8.8.8.8, а вот гетвей пингуется: 
идем проверять...
nano /etc/sysctl.conf Форвардинг (роутинг) включен:

У нас не хватает еще одного правила для NAT. Пропишем: для всех сетей абсолютно

Не работает пинг:

Вот маскарадинг – откуда угодно – куда угодно можно –

Применим форвард политику:

И пинг заработал:

Между интерфейсами ens3 –ens4 гулять трафик не хотел
Теперь так: мы разрешаем ходить в одну сторону… а нужно форвардить еще и обратно

Меняем полиси на дроп и добавляем в самый-самый верх новую политику(это на линукс где iptables):

Получаем:

и сохраняем правила:

Перезапустим машинку – будет ли работать?

Видим, что все правила сохранились и пинг работает:

вот те команды что мы прописывали в iptables в линуксе, НО это правила только для одного вилана10:

остальные виланы(20, 30, 40, 50) надо дописывать как правила с учетом их разрешений и запретов... Не забывать проверять каждое изменение!