[Linux] Jak zmodyfikować pakiety przed wysłaniem

0

Witam!

Za pomocą bibliotek libcap, libnet mam dostęp do 2 warstwy. Teraz potrzebuje "przełączyć" cały ruch z mojego komputera do mojego programu. po prostu chcę dać program między komputerem a siecią lan, aby "zaszyfrować" pakiety wysyłane i "odszyfrować" pakiety odebrane. Nie chcę modyfikować jądra systemu. Najlepiej byłoby gdybym za pomocą libcap widział pakiety tworzone przez system, lecz były wysyłane dopiero przez mój program(libnet).
Może jakiś wpis w iptables wystarczy czy co?

0

z wykładów pamiętam tyle, że jest taka możliwość, ponieważ mieliśmy podawany przykład jakiegoś programu, który robił za firewall czy cos w tym stylu - od sprawdzania uprawnień i jakoś się to przekierowywało. nie mam teraz dostępu do notatek, aby to sprawdzić, a pamieć nie pozwala nic ort! w google :)

Być może rozwiązaniem jest napisanie przez ciebie serwera proxy, wtedy z przekierowaniem problemów mieć nie będziesz.

ort! się wrażeniami, gdy skończysz, bo jest to ciekawy temat.

0

nigdy nie pisalem takiego programu, ale fakt, bardzo ciekawa sprawa....
mi sie wydaje ze bez napisania modulu do jadra nie uda ci sie tego zrobic, w module trzeba bedzie zalozyc jakis handler na pakiety, przechwytywac je z jadra, robic z nimi co sie chce i potem wkladac do jadra
jesli mialby to byc firewall to do tego robisz jeszcze program dzialajacy w przestrzeni uzytkownika, ktory bedzie pozwalal ukladac regulki i bedzie komunikowal sie z jadrem np. przez /proc
niestety zadnych konkretow nie moge ci podac
jezeli okaze sie ze bedziesz musial napisac modul do jadra to tutaj masz maly tutorial:
http://tldp.org/LDP/lkmpg/2.6/html/index.html

0
Naukowiec napisał(a)

Może jakiś wpis w iptables wystarczy czy co?

niby wystarczy, bo mozna przeciez caly ruch skierowac na swoj znany ip:port a pod nim moze siedziec nasza aplikacja, ktora go pozniej obrobi i.. wlasnie, po takim przekierowaniu przez iptables w jaki sposob przekierujesz je pozniej z powrotem na wlasciwy tor? zgubisz informacje o tym gdzie on pierwotnie lecial.

co do pisania modulow - raczej skupilbym sie na tym, czy do samego iptables/packetfiltera nie mozna przypadkiem napisac modulow. wlasciwie to jestem pewien ze mozna, tylko nie wiem jak, nie bawilem sie tym

0

dokładnie. pisanie modułów to paskudna robota. Brałbym to pod uwagę jako ostateczność.

0
quetzalcoatl napisał(a)

co do pisania modulow - raczej skupilbym sie na tym, czy do samego iptables/packetfiltera nie mozna przypadkiem napisac modulow. wlasciwie to jestem pewien ze mozna, tylko nie wiem jak, nie bawilem sie tym

Pisac moduly do iptables na pewno mozna, ale zastanawia mnie jedno, czy taki nasz modul i tak nie bedzie dzialal na poziomie kernela? iptables sklada sie z dwoch czesci: iptables z przestrzeni uzytkownika i iptables z przestrzeni kernela. Poleceni iptables sluzy chyba tylko do zapisywania informacji do modulow, natomiast juz samo przetwarzanie pakietow nastepuje tylko na poziomie kernela - wiec i tak czy tak jezeli chcesz napisac cos do iptables mozesz napisac modul do firewalla ale i tak bedzie to przestrzen kernela. Jezeli chcielibysmy uniknac przestrzeni kernela wtedy iptables musialoby byc inaczej zaprojektowane - jeden maly modul na poziomie kernela i daemon w przestrzeni uzytkownika ktory bedzie przetwarzal pakiety.

Na iptables nie znam sie za dobrze, to co napisalem wynika tylko z obserwacji ;-)

UPDATE:
korzystajac z chwili wolnego czasu poszukalem troche inforamcji, na stronie netfilter.org w netfilter hacking jest taki rozdzial:
"Packet Handling in Userspace"
niestety za duzo tam nie napisali, mozna wyciagnac tylko to ze uda sie zarzadzac pakietami piszac normalne programy, sluzy do tego libipq, pisza rowniez ze jesli masz doczynienia z duzymi przepustowosciami to moze to nie dzialac dosc wydajnie:
http://www.netfilter.org/documentation/HOWTO//netfilter-hacking-HOWTO-4.html#ss4.7

0

miałem na myśli moduły jądra :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1