# матрица доступа linux iptables Линекс: В линекс для каждого iptables будет свое правило для каждого интерфейса. И для iptables есть определенная методика прописывания правил: сначала правила для iptables мы должны написать в блокнотике или ворде. (по аналогии с матрицей доступа) – посмотреть как эти правила для iptables могут отрабатывать и только после этого переносить их в iptables строго в том порядке, в котором мы прописали. делаем какую-нибудь линуксовую тачку и на ней настраиваем наш виллан-роутинг Настраиваем: ![](https://i.imgur.com/n34oOgw.png) - адрес статический Поднимаем дальше ens4 – тоже статика и саб-интерфейсы – ![](https://i.imgur.com/zamyrMh.png) сохраняем, перезапускаем Теперь настаиваем IP-адресацию. Логинимся на линекс-FW. смотрим ip a: ![](https://i.imgur.com/RWA8vO8.png) Проверяем пингом: устройства должны пинговаться ![](https://i.imgur.com/rz6h0Jw.png) ![](https://i.imgur.com/7g0fgs2.png) Теперь с кали – 10.0.10.1 (с ICMP) ![](https://i.imgur.com/APJOfWe.png) нет пинга – с 50-вилана нет доступа на 10 вилан а с линекс-FW – есть – ![](https://i.imgur.com/fT4WIl7.png) На ICMP – нет никаких правил: все разрешено ![](https://i.imgur.com/14Ji9Hv.png) Т.е. сейчас мы может пинговать с линекс-FW – все вилланы, а вот между самими вилланами (с 50 до 10) нет связи. Свич на уровне L2 коммутирует трафик, всё разрешено На линекс-FW все маршруты есть. Связи нет, потому что не включен роутинг. Включаем роутинг: nano /etc/sysctl.conf Раскомментируем строчку: ![](https://i.imgur.com/GqU76Z5.png) Проверяем теперь связь: ![](https://i.imgur.com/ULJUn6f.png) пингуется Смотрим от: icmp-dns-client ![](https://i.imgur.com/SEHEm5B.png) - есть пинг Из Линекс-FW – мы настроили обычный роутинг У нас есть матрица-доступа. Добавляем к ней – сети (какая сеть представляет вилан10, 20,30,40,50) – это будет Network – чтобы мы понимали какая это сеть ![](https://i.imgur.com/ltnP9aa.png) Прописываем правила для iptables: Есть хорошая инструкция на сайте – https://1cloud.ru/help/linux/nastrojka_linus-firewall_iptables У iptables есть такие штучки как – полиси – ![](https://i.imgur.com/NMVV91h.png) - в этом режиме работает роутер/ Роутер – всё разрешает, запрещает только то, что мы запретили. Дефолтные политики FW работают при дефолтных политиках drop - ![](https://i.imgur.com/94J2YEi.png) - в этом режиме работает FW – всё запрещает и разрешает только то, что мы разрешили. Мы будем работать с iptables как с FW т.е. он должен все запрещать, а дальше мы будем какие-то вещи ему разрешать. Нам нужно открыть текстовый редактор: у нас есть синтаксис для iptables – там нужно будет указать политики – для того чтобы они все дропнулись. – пишем в блокнот: ![](https://i.imgur.com/4gE8GjE.png) - т.е. все политики у нас запрещаются. Далее мы разрешаем какие-то части – некоторые соединения и как они делаются… Есть инпут, аутпут и форвард. Как работает FW в линексе: У нас есть коробочка – внутри есть некая штука называется iptables (позволяет управлять трафиком), у нее есть один интерфейс и фактически – второй интерфейс (ens 3 и ens4), у каждого интерфейса может быть следующий трафик: - есть трафик входящий и в один, и во второй интерфейс – input - есть трафик исходящий из обоих интерфейсов – output - и есть трафик, передающий данные между интерфейсами – forward Помимо форварда, есть еще некая штучка – роутинг – когда трафик перенаправляется работает роутинг. Это взаимо-замещающие вещи: форвард – это разрешающе-запрещающие правила. И есть еще в iptables часть – prerouting и postrouting – это действия, которые могут происходить ДО того как что-то сроутится внутри или ПОСЛЕ того как что-то сроутится. И какие действия там могут выполняться (prerouting и postrouting) – это действие либо NAT, либо Mangle. NAT – это замена IP-шников и т.п., а Mangle- это добавление определенных меточек для трафика ![](https://i.imgur.com/3YXmPiY.png) Представим, что ens3 – выход в интернет и смотрим – куда у нас, что уходит. Надо прописать для виллана 10 ![](https://i.imgur.com/1QLIDmJ.png) Если мы пропишем, что разрешен интернет = будет разрешено и всё остальное, поэтому: сначала надо прописать запрет на виллан 20, 30, 40, 50 и разрешено для всех. Теперь синтаксис для iptables: с виллана 10 мы должны запретить форвардинг на 20-й, 30, 40 и 50-й. Нужно помнить, что есть еще и инпут – нам надо разрешить инпут с сети 10.0.10.0/24, дальше запретить форвардинг до нужных сетей и разрешить какой-то аутпут либо в ens3, либо в ens4 – чтобы дистинейшн –адресс был определенный, либо политику аутпута сделать – accept (обычно всегда делается политика аутпута – accept) Итак: для вилан10 – запретить вилан20 (п.6) «А» = добавление правила в обычном режиме «d» - дистинейшн, до куда «S» - с какой сети ![](https://i.imgur.com/q6W8NTQ.png) - трафик (форвард) с сети 10.0.20.0/24 до сети 10.0.10.0/24 (и обратный) – запретить Для других сетей делается аналогично… Получаем: ![](https://i.imgur.com/Rlhj7IX.png) Чтобы из сети виллана 10 разрешить: ![](https://i.imgur.com/o7WUiv6.png) Как правило сначала всегда идет инпут, потом форвард и последний аутпут. Мы запретили другие вилланы и теперь надо разрешить интернет: на все сети –![](https://i.imgur.com/I0PSANV.png) (-d 0.0.0.0/0 т.е. куда угодно можем не писать – он итак это предполагает) Пробуем сделать – внести в систему, ip a: ![](https://i.imgur.com/RqSdGhI.png) Вписываем команды из блокнотика: ![](https://i.imgur.com/4kTs3D6.png) И проверяем: iptables -L ![](https://i.imgur.com/53XURBt.png) видим что акцепт куда угодно. Уточним: iptables -L -v чтобы полностью всё вывел ![](https://i.imgur.com/z8IkmU4.png) Вот он сказал: ![](https://i.imgur.com/mfnRyus.png) Разрешаю что угодно откуда угодно с адреса 10.0.10.0/24 Далее указываем форварды запрещающие: ![](https://i.imgur.com/OGkLa6Q.png) И разрешить все остальные сети (интернет) – ![](https://i.imgur.com/TPTiUQB.png) Проверяем правила для iptables: как они получились – iptables -L -v ![](https://i.imgur.com/Xzuw24w.png) ![](https://i.imgur.com/XhziPp5.png) Проверим, что интернет работает: ![](https://i.imgur.com/0radIzg.png) нет выхода: У нас: ![](https://i.imgur.com/zAF5JsG.png) У нас iptables дропает всё. И iptables – он «глупый», ему нужно всё говорить. Для того, чтобы он принимал соединения, запущенные от него же и от кого то еще, нам нужно сказать «iptables, а давай-ка ты будешь принимать соединения эстэблиш на релэйтит», т.е. со статусами «установлено» либо же «реализовано»- политика input она, конечно запрещающая, но эстэблиш на релэйтит соединения у тебя должны быть. Поэтому добавляем: Правило на самый верх ( -i1 ) ![](https://i.imgur.com/A8BEEXu.png) Теперь пинг есть: ![](https://i.imgur.com/rRVE2U4.png) Заменим nano /etc/resolv.conf так чтобы у нас было доменное имя (чтобы установить пакет) nameserver 8.8.8.8 далее apt update после apt install iptables-persistent позволяет сохранять правила для iptables автоматически – самый быстрый способ. Затем reboot. Правила все сохранились: ![](https://i.imgur.com/kuI3CRb.png) Попробуем теперь с вилан10(в нашем случае winserv2012) законнектиться до интернета: ![](https://i.imgur.com/KkNKuKO.png) Он должен был пропинговать 8.8.8.8, а вот гетвей пингуется: ![](https://i.imgur.com/rfqU2L4.png) идем проверять... nano /etc/sysctl.conf Форвардинг (роутинг) включен: ![](https://i.imgur.com/Y3t6Az9.png) У нас не хватает еще одного правила для NAT. Пропишем: для всех сетей абсолютно ![](https://i.imgur.com/EVYrA4e.png) Не работает пинг: ![](https://i.imgur.com/gdQHqLm.png) Вот маскарадинг – откуда угодно – куда угодно можно – ![](https://i.imgur.com/blcjGQn.png) Применим форвард политику: ![](https://i.imgur.com/jQ6YItz.png) И пинг заработал: ![](https://i.imgur.com/B51AgkE.png) Между интерфейсами ens3 –ens4 гулять трафик не хотел Теперь так: мы разрешаем ходить в одну сторону… а нужно форвардить еще и обратно ![](https://i.imgur.com/DeBShmy.png) Меняем полиси на дроп и добавляем в самый-самый верх новую политику(это на линукс где iptables): ![](https://i.imgur.com/lRomBSC.png) Получаем: ![](https://i.imgur.com/NgS5PxT.png) и сохраняем правила: ![](https://i.imgur.com/0YsYL1Z.png) Перезапустим машинку – будет ли работать? ![](https://i.imgur.com/H105bkK.png) Видим, что все правила сохранились и пинг работает: ![](https://i.imgur.com/QaO3sNl.png) вот те команды что мы прописывали в iptables в линуксе, НО это правила только для одного вилана10: ![](https://i.imgur.com/E9ewEmr.png) остальные виланы(20, 30, 40, 50) надо дописывать как правила с учетом их разрешений и запретов... Не забывать проверять каждое изменение!