Автор Тема: Филтриране на портове само за даден потребител  (Прочетена 1504 пъти)

JaG_

  • Напреднали
  • *****
  • Публикации: 38
    • Профил
    • WWW
Здравейте,

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

Поздрави JaG '<img'>
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
От описанието ти не става съвсем ясно какво точно искаш, затова ще предположа, че трябва когато въпросният потребител се опита да зареди например някой сайт (т.е., да подаде заявка към порт 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 занапред. Пък и защо да умаловажаваме труда на пишещите ръководтсва? За въпроси, свързани с това как се борави с нещо, хубаво е да се обърне внимание първо на ръководтсвата. А ако имаш някакъв проблем или не успяваш да си изясниш нещо от ръководството, питай. Ще ти се отговори  '<img'>
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Какво всъщност означава "потребителят да влезе от друго място"? Че ходи с лаптоп и където намери входна точка към мрежата се включва ли? В този случай най-вероятно филтрирането ти трябва да не е по IP, а по MAC адрес. Ако имаш предвид да влезе от друг ("чужд") компютър в мрежата, би трябвало да имаш някаква процедура за пренасочване на база потребителско име-парола, защото ако е по метода, предложен от Neter, ще бъде пренасочван и "оригиналния" потребител на компа. Всъщност възможностите са много, така уточни малко по-подробно какво точно искаш.



Активен

JaG_

  • Напреднали
  • *****
  • Публикации: 38
    • Профил
    • WWW
Здравейте пак! Под потребител имах предвид user на машината. На този юзър искам примерно да му задам порт 80 да му отваря само определен адрес, при желанието му да отвори друг адрес отново да го препраща към зададения от мен. Благодаря ви и на двамави за отделеното време и се надявам да можете да помогнете с това '<img'>
Активен

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Това, което ти предлага Neter, би трябвало да свърши работа, като напишеш отделни правила за всеки порт, който искаш да филтрираш (80, 443, 21 и т.н.)
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Принципно няма да помогне. Обаче тия хаховци, които разработват 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 разни, които позволяват разни благинки на простосмъртни '<img'>

Но в общият случай предполагам точно това ще ти свърши работа '<img'>
Активен

"Knowledge is power" - France is Bacon

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Аха, сега вече ми се изясни картинката. Значи, gat3way правилно те е насочил към "-m owner --uid-owner ХХХ". За целта обаче, трябва да прекомпилираш ядрото, за да добавиш тази поддръжка, след това да заредиш модула ipt_owner и след това да го добавиш в правилото, което ти дадох. Зачети се тук и по-специално в точка "The Tool" за подробности  '<img'>
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти