Czy mogę ograniczyć użytkownika (i jego aplikacje) do jednego interfejsu sieciowego?

15

Mam dwa scenariusze, aby to zastosować:

  1. Multiseat Desktop: dwa połączenia sieciowe, oba z bramami internetowymi i dwa konta wykonujące zadania wymagające dużej przepustowości na każdym z nich. Chcę je podzielić, aby jedno konto używało eth0, a drugie konto tylko eth1.

  2. Serwer: Mam dwa adresy IP na serwerze i chcę się upewnić, że użytkownik poczty wysyła wiadomości e-mail tylko z drugiego adresu IP (alias eth0: 1)

Druga może być prawdopodobnie IPTabled (po prostu nie wiem jak), aby kierować ruchem e-mail przez ten interfejs, ale pierwsza będzie zajmować się wszelkiego rodzaju ruchem, więc musi być oparta na użytkownikach. Jeśli istnieje rozwiązanie oparte na użytkownikach, mogę zastosować to w obu miejscach.

Oli
źródło

Odpowiedzi:

6

Będziesz chciał użyć modułu właściciela iptables i być może sprytnego manipulowania pakietami.

właściciel Ten moduł próbuje dopasować różne cechy kreatora pakietów dla pakietów generowanych lokalnie. Jest poprawny tylko w łańcuchu OUTPUT, a nawet wtedy niektóre pakiety (takie jak odpowiedzi ping pingów ICMP) mogą nie mieć właściciela, a zatem nigdy nie pasują.

--uid-owner ID użytkownika Dopasowuje, jeśli pakiet został utworzony przez proces o podanym efektywnym (numerycznym) identyfikatorze użytkownika.

--gid-właściciel groupid Dopasowuje, jeśli pakiet został utworzony przez proces o podanym efektywnym (numerycznym) identyfikatorze grupy.

--pid-owner processid Pasuje, jeśli pakiet został utworzony przez proces o podanym identyfikatorze procesu.

--sid-owner sessionid Dopasowuje, czy pakiet został utworzony przez proces w danej grupie sesji.

Li Lo
źródło
Możesz użyć iptables, aby ustawić znak, którego możesz następnie użyć w tabeli routingu. Zobacz cele MARK i CONNMARK. W iproute, jego wtedy „reguła ip dodaj fwmark X ...” Właściwie nie byłbym zaskoczony, gdyby sam iproute2 mógł to zrobić ...
derobert
3
Będąc kimś, kto wykonał rozległą pracę z dopasowywaniem właścicieli, mogę powiedzieć, że nie zawsze przyniesie to pożądany efekt. Tzn. Nie wszystkie pakiety mają właściciela takiego, jakiego oczekujesz. ICMP i ESP są typami, które są własnością jądra (lub roota) niezależnie od aplikacji źródłowej i nie będą do nich pasować -m owner. Jest dość niezawodny z TCP i UDP, ale inne typy nie są tak niezawodne. Tylko niezawodny sposób, aby osiągnąć ten jest w 100% z VM lub pojemnikach.
bahamat
7

Można skonfigurować dwie maszyny wirtualne na maszynie fizycznej i skonfigurować interfejs sieciowy tak, aby jedna maszyna wirtualna używa eth0, a druga maszyna wirtualna używa eth1. Zobacz sekcję dokumentacji wirtualnego modułu na temat mostkowania sieci .

Wim Coenen
źródło
1

Nie jestem pewien, czy to możliwe w pierwszym punkcie. Chcesz wykonać manipulację routingu na podstawie identyfikatora użytkownika. Ostatnim razem, gdy sprawdzam, nie widziałem tej możliwości.

Po drugie, to nie jest iptables, których chcesz użyć, ale iproute2 (http://lartc.org/howto/ i http://www.policyrouting.org/iproute2.doc.html dla pełnego dokumentu). Zastępuje on polecenia ifconfig / route, ponieważ są one uważane za przestarzałe. iproute2 pozwala ci kierować pakietami według źródła. To jest to czego chcesz

Luc Stepniewski
źródło