---
# System prepended metadata

title: матрица доступа linux iptables

---

# матрица доступа 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) надо дописывать как правила с учетом их разрешений и запретов... Не забывать проверять каждое изменение!