Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: JaG_ в Jun 16, 2007, 13:11



Титла: Филтриране на портове само за даден потребител
Публикувано от: JaG_ в Jun 16, 2007, 13:11
Здравейте,

искам да филтрирам даден порт на определен потребител в машината да се кънектва само към определено IP и дори потребителя да се опита да влезе на друго място пак да го препраща към зададеното IP от мен. Предполагам ще стане с FORWARD на iptables, но не знам точно. Благодаря предварително на отзовалите се!

Поздрави JaG :)


Титла: Филтриране на портове само за даден потребител
Публикувано от: neter в Jun 16, 2007, 17:35
От описанието ти не става съвсем ясно какво точно искаш, затова ще предположа, че трябва когато въпросният потребител се опита да зареди например някой сайт (т.е., да подаде заявка към порт 80), рутера да го препраща към зададено от теб IP на същия порт (т.е., да го пренасочи към друг сайт). Тогава, правилото в iptables трябва да изглежда така
Примерен код
/sbin/iptables -t nat -A PREROUTING -p tcp -s 111.222.333.444 --dport 80 -j DNAT --to 555.666.777.888:80

където 111.222.333.444 е IP-то на потребителя, а 555.666.777.888 е IP-то към което ще бъде пренасочен. Естествено, взетия в примера ми порт 80 е само за примера, правилото действа с всеки порт (дори портовете в --dport и --to могат да са различни). Но силно ти препоръчвам да прочетеш някое ръководство за iptables. След прочитането му ще си наясно не само как ще изглежда правилото, за което питаш в случая, но и ще разбереш логиката, а тя е много важна, ако ще имаш занимания с iptables занапред. Пък и защо да умаловажаваме труда на пишещите ръководтсва? За въпроси, свързани с това как се борави с нещо, хубаво е да се обърне внимание първо на ръководтсвата. А ако имаш някакъв проблем или не успяваш да си изясниш нещо от ръководството, питай. Ще ти се отговори  ;)


Титла: Филтриране на портове само за даден потребител
Публикувано от: angie_bg в Jun 16, 2007, 20:04
Какво всъщност означава "потребителят да влезе от друго място"? Че ходи с лаптоп и където намери входна точка към мрежата се включва ли? В този случай най-вероятно филтрирането ти трябва да не е по IP, а по MAC адрес. Ако имаш предвид да влезе от друг ("чужд") компютър в мрежата, би трябвало да имаш някаква процедура за пренасочване на база потребителско име-парола, защото ако е по метода, предложен от Neter, ще бъде пренасочван и "оригиналния" потребител на компа. Всъщност възможностите са много, така уточни малко по-подробно какво точно искаш.





Титла: Филтриране на портове само за даден потребител
Публикувано от: JaG_ в Jun 17, 2007, 12:24
Здравейте пак! Под потребител имах предвид user на машината. На този юзър искам примерно да му задам порт 80 да му отваря само определен адрес, при желанието му да отвори друг адрес отново да го препраща към зададения от мен. Благодаря ви и на двамави за отделеното време и се надявам да можете да помогнете с това :)


Титла: Филтриране на портове само за даден потребител
Публикувано от: angie_bg в Jun 17, 2007, 20:12
Това, което ти предлага Neter, би трябвало да свърши работа, като напишеш отделни правила за всеки порт, който искаш да филтрираш (80, 443, 21 и т.н.)


Титла: Филтриране на портове само за даден потребител
Публикувано от: gat3way в Jun 18, 2007, 00:13
Принципно няма да помогне. Обаче тия хаховци, които разработват netfilter са си написали един "owner" match (-m owner) който би трябвало да хваща пакети принадлежащи на сокет, отворен от определен потребител. Така че примерно ако искаш да забраниш изходящи заявки на порт 80 например за потребителя pesho с uid 1001 правиш следното:

iptables -A OUTPUT -p tcp --dport 80 -m owner --uid-owner 1001 -j DROP

Еквивалентно можеш предполагам да си го DNAT-ваш където си решиш.

Мене това честно казано като идея не ми допада много - първо не се знае кой потребител като какъв може да се switch-ва (ОК де, въпрос на администриране). От друга страна потребител с възможност да прави RAW сокети не знам дали ще се хване като хората от такова правило, нищо че по принцип само root-а може да ги прави, има си схеми с SELinux разни, които позволяват разни благинки на простосмъртни :)

Но в общият случай предполагам точно това ще ти свърши работа :)


Титла: Филтриране на портове само за даден потребител
Публикувано от: neter в Jun 18, 2007, 01:39
Аха, сега вече ми се изясни картинката. Значи, gat3way правилно те е насочил към "-m owner --uid-owner ХХХ". За целта обаче, трябва да прекомпилираш ядрото, за да добавиш тази поддръжка, след това да заредиш модула ipt_owner и след това да го добавиш в правилото, което ти дадох. Зачети се тук и по-специално в точка "The Tool" за подробности  ;)