# Jak zablokować net dla usera

## karaluch

Witam, temat byl juz poniekad poruszany w dzaiale offtopic odnosnie ustawien iptables ale problem nie zostal rozwiazany. 

Chcialbym calkowicie wyciac ruch po za localhosta dla grupy userow ban. Macie pomysly jak do tego podejsc czy zajac sie tablicami czy tez jest jakas inna droga.

----------

## CyriC

Moze hosts.deny ?

----------

## timor

Ja u siebie mam zrobione to tak, że jak ktoś dostaje bana to na jego IP leci DROP z wyjątkiem www na moim serwerze. W ciągu 5-minut skrypcik z Cron'a tworzy mi całą konfigurację przerzucając zbanowanych do nowej podsieci - podsieć ta ma domyślnie dostęp tylko do www z info, że mają bana i co mogą zrobić aby zmienić ten stan (instrukcja w wiki).

Sprawdza się świetnie bo userzy już nie dzwonią do mnie, że sieci nie mają - tylko przychodzą jak rozwiążą problem (na ogół wirusy/spam).

Ustawienie tego to skrypcik do generowania konfigów, troche iptables i dhcp. Dużo nie potrzeba.

----------

## karaluch

Najgorsze jest to ze wszyscy userzy siedza na jednej maszynie (na tym samym ip) i musze ograniczyc tylko czesci z nich dostep do netu, natomist wszyscy musza miec mozliwosc przegladania zasobow serwera...

Wlasnie szukam na necie ale moze ktos wczesniej cos napisze, czy mozna robic lokalne host.deny, tzn tylko dlaokreslonego usera, a nie dla calego systemu. Tak aby dwaj uzytkownicy w tym samym czasie mieli inne tablice hosts.deny

----------

## timor

Taka zabawa...

A coś z tego (tutaj akurat w zastosowaniu dla squida):

```
# iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner squid -j ACCEPT

# iptables -t nat -A OUTPUT -p tcp --dport 3128 -m owner --uid-owner squid -j ACCEPT
```

----------

## karaluch

Kurde, co jest nie tak:

```
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner 1000 -j ACCEPT
```

```
id pafeu

uid=1000(pafeu) gid=100(users) grupy=100(users)

Serwer etc # ./iptables-script.sh

iptables: No chain/target/match by that name
```

----------

## timor

```
id pafeu

uid=1000(pafeu) gid=100(users) grupy=100(users)

Serwer etc # ./iptables-script.sh

iptables: No chain/target/match by that name
```

Musisz dokompilować sobie odpowiedni moduł w jajcu: Networking  ---> Networking options  ---> Network packet filtering framework (Netfilter)  ---> Core Netfilter Configuration  ---> <M>   "owner" match support

(ścieżka u mnie na 2.6.25-gentoo-r3 - ale nie powinieneś mieć problemów ze znalezieniem).

----------

## karaluch

Fakt pomoglo :-))

Jeszcze jedno pytanko, zrobilem grupe net_ban, user pafeu jest w tej grupie i wpis:

```
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner pafeu -j DROP
```

blokuje www dla tego users, natomist gdy uid zmienie na gid to juz nie dziala tak jak powinno!

```
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --gid-owner net_ban -j DROP
```

----------

## timor

Nie wiem czemu, z tego akurat nie korzystałem.

----------

