Tomsk Sysadmins Forum

Unix => Администрирование => Topic started by: fredina on April 13, 2008, 21:18:28

Title: ipfw - блокируется трафик
Post by: fredina on April 13, 2008, 21:18:28
Цель - для компьютера в локальной сети, на шлюзе запретить внешний трафик, оставить только томский.
А также запретить любой интернет (и внешний и томский) при смене пользователем IP-адреса.
Сеть построена на неуправляемых коммутаторах. MAC-адрес пользователь не может подменить (он не знает как это делается), а вот IP-адрес может (знает как).
После рестарта шлюза, некоторое время такая конструкция работает, но потом весь траффик блокируется (и томский и внешний).
Почему это происходит?

rl0 - внешний интерфейс шлюза
vr0 - внутренний
table 1 - список томских сетей

ipfw show
Code: [Select]
00050  divert 8668 ip4 from any to any via rl0
00100  allow ip from any to any via lo0
00200  deny ip from any to 127.0.0.0/8
00300  deny ip from 127.0.0.0/8 to any

00400  deny ip from not table(1) to 192.168.0.141 via vr0 MAC 00:11:22:33:44:55 any
00500  deny ip from 192.168.0.141 to not table(1) via vr0 MAC any 00:11:22:33:44:55
00600  deny ip from any to not 192.168.0.141 via vr0 MAC 00:11:22:33:44:55 any

65000  allow ip from any to any
65535  allow ip from any to any

00400 - запрет трафика не от томских сетей (от внешних) к компьютеру с IP=192.168.0.141 и MAC=00:11:22:33:44:55
00500 - запрет трафика от компьютера к нетомским сетям (к внешним)
00600 - запрет трафика к компьютеру с MAC=00:11:22:33:44:55 если на нем левый IP-адрес (не 192.168.0.141)

ipfw table 1 list
Code: [Select]
62.68.128.0/19 0
...
217.106.147.0/28 0
Title: ipfw - блокируется трафик
Post by: never hood on April 13, 2008, 21:40:53
Quote from: fredina
Сеть построена на неуправляемых коммутаторах. MAC-адрес пользователь не сможет подменить, а вот IP-адрес может.
Вряд ли неуправляемость коммутаторов помешает пользователю поменять МАС!
Это делается за пять секунд не отходя от компьютера!
Имхо, лучшее решение - это аутентификация на шлюзе (точнее на прокси, на нем стоящем), а не нагромождение правил фильтра пакетов!
Title: ipfw - блокируется трафик
Post by: fredina on April 13, 2008, 22:04:27
Quote from: never hood
Вряд ли неуправляемость коммутаторов помешает пользователю поменять МАС!
я имел ввиду что пользователь просто не знает как это делается))

P.S. Первое сообщение подправил, чтобы было понятнее.

P.P.S. Я не понимаю почему трафик блокируется, может быть это связано с divert'ом?
Title: ipfw - блокируется трафик
Post by: never hood on April 13, 2008, 22:19:43
Quote from: fredina
я имел ввиду что пользователь просто не знает как это делается))
вы занимаетесь...  
мягко говоря, мартышкиным трудом!
Title: ipfw - блокируется трафик
Post by: nuclight on April 14, 2008, 12:45:34
По прекращению трафика - она, скорее всего, действительно связана с natd/divert.

А что касается запрещения смены MAC-адреса - правила построены совершенно некорректно. Во-первых, неясно, включена ли вообще обработка пакетов на L2, без нее матчить не будет. Во-вторых, с ней включенной пакет будет проходить через ipfw не 2, а 4 раза, и правила обработки здесь лучше разделить, а не совмещать.
В-третьих, текущие правила говорят о запрещении не-томского трафика с некорректным маком - в Томск пользователя выпустит с любым (либо с невключенным L2 они не проверятся и для внешки).

В-четвертых, если уж ограничивать пары IP/MAC без жесткой привязки пользователя на управляемом свитче или VPN/Proxy, то корректно делать это не в файрволе, а вбить пары по arp -s при загрузке (опционально staticarp на интерфейс), поднять arpwatch и следить за тем, кто когда пытаем менять адреса.
Title: ipfw - блокируется трафик
Post by: fredina on April 17, 2008, 11:51:49
При такой записи, я получил то, что хотел. (ip в правиле 00600 заменено на tcp)

ipfw show
Code: [Select]
00050  divert 8668 ip4 from any to any via rl0
00100  allow ip from any to any via lo0
00200  deny ip from any to 127.0.0.0/8
00300  deny ip from 127.0.0.0/8 to any

00400  deny ip from not table(1) to 192.168.0.141 via vr0 MAC 00:11:22:33:44:55 any
00500  deny ip from 192.168.0.141 to not table(1) via vr0 MAC any 00:11:22:33:44:55
00600  deny tcp from any to not 192.168.0.141 via vr0 MAC 00:11:22:33:44:55 any

65000  allow ip from any to any
65535  allow ip from any to any

00400 - запрет трафика не от томских сетей (от внешних) к компьютеру с IP=192.168.0.141 и MAC=00:11:22:33:44:55
00500 - запрет трафика от компьютера к нетомским сетям (к внешним)
00600 - запрет любого (from any) трафика к компьютеру с MAC=00:11:22:33:44:55 если на нем левый IP-адрес (не 192.168.0.141)

Quote from: nuclight
А что касается запрещения смены MAC-адреса - правила построены совершенно некорректно. Во-первых, неясно, включена ли вообще обработка пакетов на L2, без нее матчить не будет. Во-вторых, с ней включенной пакет будет проходить через ipfw не 2, а 4 раза, и правила обработки здесь лучше разделить, а не совмещать.
net.link.ether.ipfw = 1
Что вы подразумеваете под "разделить правила обработки"?
Title: ipfw - блокируется трафик
Post by: stranger on April 17, 2008, 17:44:06
Quote from: fredina
Что вы подразумеваете под "разделить правила обработки"?
Ну я так понимаю, что имелось ввиду написать правила для внутреннего и внехнего интерфейса поодтдельности (используя via интерфейс), так как для них in и out свои и то что при прохождении через файрвол пакеты проходят 4 этапа, по 2 два на каждом интерфейсе...
Title: ipfw - блокируется трафик
Post by: nuclight on April 18, 2008, 01:01:42
Quote from: fredina
При такой записи, я получил то, что хотел. (ip в правиле 00600 заменено на tcp)

ipfw show
Code: [Select]
00050  divert 8668 ip4 from any to any via rl0
00100  allow ip from any to any via lo0
00200  deny ip from any to 127.0.0.0/8
00300  deny ip from 127.0.0.0/8 to any

00400  deny ip from not table(1) to 192.168.0.141 via vr0 MAC 00:11:22:33:44:55 any
00500  deny ip from 192.168.0.141 to not table(1) via vr0 MAC any 00:11:22:33:44:55
00600  deny tcp from any to not 192.168.0.141 via vr0 MAC 00:11:22:33:44:55 any

65000  allow ip from any to any
65535  allow ip from any to any

00400 - запрет трафика не от томских сетей (от внешних) к компьютеру с IP=192.168.0.141 и MAC=00:11:22:33:44:55
00500 - запрет трафика от компьютера к нетомским сетям (к внешним)
00600 - запрет любого (from any) трафика к компьютеру с MAC=00:11:22:33:44:55 если на нем левый IP-адрес (не 192.168.0.141)

Еще раз повторюсь. Это не задача контроля мак-адреса пользователя - поскольку решена не полностью. В томск будет выпускать с любым. Мешаете в кучу проверки адресов назначения и маков тут же. Вообще, в файрволе максимум что должно быть - это проверка входящего мак-адреса от пользователя, т.е. ТОЛЬКО его ip-адрес/мак и всё, и это на layer2, остальное в deny. А на исходящие к пользователю - делать в arp.

Quote
Что вы подразумеваете под "разделить правила обработки"?

То, что в man ipfw в разделе PACKET FLOW показано в примере насчет layer2.