Tomsk Sysadmins Forum
Unix => Администрирование => Topic started by: fredina on April 13, 2008, 21:18:28
-
Цель - для компьютера в локальной сети, на шлюзе запретить внешний трафик, оставить только томский.
А также запретить любой интернет (и внешний и томский) при смене пользователем IP-адреса.
Сеть построена на неуправляемых коммутаторах. MAC-адрес пользователь не может подменить (он не знает как это делается), а вот IP-адрес может (знает как).
После рестарта шлюза, некоторое время такая конструкция работает, но потом весь траффик блокируется (и томский и внешний).
Почему это происходит?
rl0 - внешний интерфейс шлюза
vr0 - внутренний
table 1 - список томских сетей
ipfw show
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
62.68.128.0/19 0
...
217.106.147.0/28 0
-
Сеть построена на неуправляемых коммутаторах. MAC-адрес пользователь не сможет подменить, а вот IP-адрес может.
Вряд ли неуправляемость коммутаторов помешает пользователю поменять МАС!
Это делается за пять секунд не отходя от компьютера!
Имхо, лучшее решение - это аутентификация на шлюзе (точнее на прокси, на нем стоящем), а не нагромождение правил фильтра пакетов!
-
Вряд ли неуправляемость коммутаторов помешает пользователю поменять МАС!
я имел ввиду что пользователь просто не знает как это делается))
P.S. Первое сообщение подправил, чтобы было понятнее.
P.P.S. Я не понимаю почему трафик блокируется, может быть это связано с divert'ом?
-
я имел ввиду что пользователь просто не знает как это делается))
вы занимаетесь...
мягко говоря, мартышкиным трудом!
-
По прекращению трафика - она, скорее всего, действительно связана с natd/divert.
А что касается запрещения смены MAC-адреса - правила построены совершенно некорректно. Во-первых, неясно, включена ли вообще обработка пакетов на L2, без нее матчить не будет. Во-вторых, с ней включенной пакет будет проходить через ipfw не 2, а 4 раза, и правила обработки здесь лучше разделить, а не совмещать.
В-третьих, текущие правила говорят о запрещении не-томского трафика с некорректным маком - в Томск пользователя выпустит с любым (либо с невключенным L2 они не проверятся и для внешки).
В-четвертых, если уж ограничивать пары IP/MAC без жесткой привязки пользователя на управляемом свитче или VPN/Proxy, то корректно делать это не в файрволе, а вбить пары по arp -s при загрузке (опционально staticarp на интерфейс), поднять arpwatch и следить за тем, кто когда пытаем менять адреса.
-
При такой записи, я получил то, что хотел. (ip в правиле 00600 заменено на tcp)
ipfw show
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)
А что касается запрещения смены MAC-адреса - правила построены совершенно некорректно. Во-первых, неясно, включена ли вообще обработка пакетов на L2, без нее матчить не будет. Во-вторых, с ней включенной пакет будет проходить через ipfw не 2, а 4 раза, и правила обработки здесь лучше разделить, а не совмещать.
net.link.ether.ipfw = 1
Что вы подразумеваете под "разделить правила обработки"?
-
Что вы подразумеваете под "разделить правила обработки"?
Ну я так понимаю, что имелось ввиду написать правила для внутреннего и внехнего интерфейса поодтдельности (используя via интерфейс), так как для них in и out свои и то что при прохождении через файрвол пакеты проходят 4 этапа, по 2 два на каждом интерфейсе...
-
При такой записи, я получил то, что хотел. (ip в правиле 00600 заменено на tcp)
ipfw show
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.
Что вы подразумеваете под "разделить правила обработки"?
То, что в man ipfw в разделе PACKET FLOW показано в примере насчет layer2.