znaczacy > comp.os.* > comp.os.linux.sieci

p0cztWYTNIJTO (03.09.2004, 14:17)
Witam,
mam nastepujace 2 problemy, bylbym wdzieczny za pomoc w ich rozwiazaniu:

1 problem:

jeden z ludzi w mojej sieci sciaga non stop z p2p pliki (z emule). mam
zrobiony podzial lacza, jednak chcialbym dodatkowo ograniczyc go tak, by
nie wlaczal sciagania dziesiatek plikow naraz.

emule z tego co posniffowalem, nawiazuje polaczenia na roznorakich portach
zarowno tcp jak i udp (4000 - 6000) ale pewnie mozna se ustawic inne w
programie.

probowalem cos mniej wiecej takiego:

iptables -A FORWARD -s IP_LOKALNE_TEGO_USERA -p tcp --dport 4661 -m
connlimit --connlimit-above 2 -j DROP

ale to troche pisania tak dla kilkuset portow.... i zreszta nie dziala
(a dla udp - gdy w takiej samej regulce dam -p udp iptables od razu wywala
blad invalid parameter czy cos w tym stylu)

probowalem tez tak:
iptables -A FORWARD -p tcp -m connlimit --connlimit-above 5 -m ipp2p
--ipp2p -j DROP

i tak samo dla --ipp2p-data

ale takze nie dziala
moze dlatego ze z tego co widzialem gdy to wlacze emule zaczyna nawiazywac
polaczenia przez udp

Jak to zablokowac?
napisze od razu, ze nie interesuje mnie calkowita blokada p2p, jedynie
ograniczenie jej do kilku polaczen z jednego ip (a nie dziesiatek). W
sumie probowalem nawet calkowicie zablokowac w ten sposob:
iptables -A FORWARD -p tcp -m ipp2p --ipp2p -j DROP i to samo dla
--ipp2p-data i nie dziala. Koles dalej se sciaga.

2 problem:
na jednym z kont na serwerze mam wrzucone rozne programy. Nazwijmy je
kontem ~programy. Chcialbym, zeby logujac sie na ftp (proftpd) z innego
konta - np ~heniek, mozna bylo miec dostep do katalogu z programami na
koncie ~programy (sciagac z niego). Probowalem robic najpierw symboliczne
dowiazania, odpowiednia ustawilem prawa w /home/users/programy/Katalog
(dalem prawo do czytania i uruchamiania dla grupy users w ktorej tez jest
~heniek). Po zalogowaniu sie przez ~henka na swoje konto widac to
dowiazanie, ale nie mozna w nie wejsc. W logach wywala blad 550. To jest
zdaje sie dostep zabroniony. Pomyslalem se wiec, ze trzeba to ustawic w
serwerze ftp. Zrobilem wiec cos takiego:

<Directory /home/users/programy/Katalog>
<Limit WRITE>
DenyAll
</Limit>
<Limit READ>
AllowAll
</Limit>

I owszem, dziala, ale nie dla ~henka. ~programy w efekcie tego nie moze
nic zapisac do Katalog, a ~henka dowiazanie symboliczne tak samo wciaz nei
dziala.
Jak to rozwiazac?
PW (03.09.2004, 14:30)
> probowalem tez tak:
> iptables -A FORWARD -p tcp -m connlimit --connlimit-above 5 -m ipp2p
> --ipp2p -j DROP
> i tak samo dla --ipp2p-data
> ale takze nie dziala
> moze dlatego ze z tego co widzialem gdy to wlacze emule zaczyna nawiazywac
> polaczenia przez udp


A jak zmienisz na -I zamiast -A ?
p0czt (03.09.2004, 14:43)
> A jak zmienisz na -I zamiast -A ?

Tez nic. Dodam jeszcze, ze daje to w skrypcie zaraz po regulkach czyszczacych
tablice.
raku (03.09.2004, 15:04)
W swoim artykule p0cztWYTNIJTO napisał(a):

> probowalem cos mniej wiecej takiego:


> iptables -A FORWARD -s IP_LOKALNE_TEGO_USERA -p tcp --dport 4661 -m
> connlimit --connlimit-above 2 -j DROP


> ale to troche pisania tak dla kilkuset portow....


to może -m mport --dports 4661:6000?

dla connlimit-above 2, emule i tak nie będzie działał (za mało połączeń),
więc równie dobrze możesz po prostu wycinać wszystkie pakiety. sensowna
liczba to ok. 50-100 połączeń - chodzi to w miarę dobrze, i emule też
jako tako ściąga
zamiast -j DROP polecam -j REJECT --reject-with tcp-reset - będzie to
zamykało połączenia (jesli je DROPujesz, druga strona pomyśli, że są
jakieś błędy transmisji i będzie ponawiała nadawanie)

> i zreszta nie dziala


jak zauważył mój przedmówca, zapewne chodzi tu o błąd z -A zamiast -I

> (a dla udp - gdy w takiej samej regulce dam -p udp iptables od razu wywala
> blad invalid parameter czy cos w tym stylu)


bo nie można limitować liczby połączeń w transmisji bezpołączeniowej ;-)

> probowalem tez tak:
> iptables -A FORWARD -p tcp -m connlimit --connlimit-above 5 -m ipp2p
> --ipp2p -j DROP


> i tak samo dla --ipp2p-data


> ale takze nie dziala
> moze dlatego ze z tego co widzialem gdy to wlacze emule zaczyna nawiazywac
> polaczenia przez udp


przez udp prowadzona jest wymiana źródeł, zapytania o źródła,
wyszukiwanie itp. Ściąganie plików to już ruch tcp

> Jak to zablokowac?
> napisze od razu, ze nie interesuje mnie calkowita blokada p2p, jedynie
> ograniczenie jej do kilku polaczen z jednego ip (a nie dziesiatek).


do kilku nie ma sensu - emule potrzebuje kilkudziesięciu połączeń żeby
działać - jeśli ograniczysz liczbę połączeń do kilku, program
praktycznie nic nie będzie potrafił ściągnąć (ruch związany z obsługą
sieci, wymianą źródeł itp będzie blokował próby ściągania plików)

> sumie probowalem nawet calkowicie zablokowac w ten sposob:
> iptables -A FORWARD -p tcp -m ipp2p --ipp2p -j DROP i to samo dla
> --ipp2p-data i nie dziala. Koles dalej se sciaga.


-I powinno pomóc
vnull (03.09.2004, 15:22)
PW wrote:
PW (03.09.2004, 16:06)
Użytkownik <p0czt> napisał w wiadomości
news:66e8
> > A jak zmienisz na -I zamiast -A ?

> Tez nic. Dodam jeszcze, ze daje to w skrypcie zaraz po regulkach czyszczacych
> tablice.


A jakie masz następne reguły operujące na tym łańcuchu ? Może masz tam dalej
jakieś -I które akceptuje takie połączenia ?

Możesz jeszcze spróbować dać to do -t mangle. U mnie to tak działa:

/usr/local/sbin/iptables -t mangle -I FORWARD -p tcp -m ipp2p --ipp2p -j
DROP
/usr/local/sbin/iptables -t mangle -I FORWARD -p tcp -m
ipp2p --ipp2p-data -j DROP
/usr/local/sbin/iptables -t mangle -I FORWARD -p tcp -m ipp2p --bit -j DROP
q (04.09.2004, 09:18)
> probowalem cos mniej wiecej takiego:
> iptables -A FORWARD -s IP_LOKALNE_TEGO_USERA -p tcp --dport 4661 -m
> connlimit --connlimit-above 2 -j DROP


Daj mu tak:
iptables -I FORWARD -i eth1 -p tcp -s IP_LOKALNE_TEGO_USERA -m
connlimit --connlimit-above 30 -j REJECT

dostanie łącznie 30 sesji czy ile tam chcesz. Przestaną mu się otwierać www
i zadzwoni z mordą.
Każ mu wtedy ograniczć liczbę w emule i niech się odczepi.

Q.
Zibi K. (04.09.2004, 16:17)
Dnia Sat, 4 Sep 2004 09:18:38 +0200, q <q> napisal:

> Daj mu tak:
> iptables -I FORWARD -i eth1 -p tcp -s IP_LOKALNE_TEGO_USERA -m
> connlimit --connlimit-above 30 -j REJECT
> dostanie ³¹cznie 30 sesji czy ile tam chcesz. Przestan¹ mu siê otwieraÌ
> www
> i zadzwoni z mordÂą.
> KaÂż mu wtedy ograniczĂŚ liczbĂŞ w emule i niech siĂŞ odczepi.
> Q.


Mam takiego klienta ( emulak), którego niedawno uswiadomilem w powyzszy
sposób ..tylko grzecznie.
I jak widze pojal w czym rzecz
Podobne wątki