Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-01-02 03:12:22

  hurlmann - Użytkownik

hurlmann
Użytkownik
Zarejestrowany: 2012-07-18

rtorrent vs iptables

zakładając że w .rtorrent.rc mamy m.in.

Kod:

port_range = 10001-10001
dht_port = 20001

i iptables z polityką blokowania

Kod:

iptables -P INPUT   DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  DROP

jakie reguły dodać do iptables żeby rtorrent działał bez przeszkód?

Ostatnio edytowany przez hurlmann (2013-01-02 03:14:30)

Offline

 

#2  2013-01-02 19:22:36

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: rtorrent vs iptables

Sznurek:
http://pl.wikibooks.org/wiki/Sieci_w_Linuksie/Netfilter/iptables#Dopasowania

PS,
Na tym forum było o tym XXX razy.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2013-01-02 23:55:44

  hurlmann - Użytkownik

hurlmann
Użytkownik
Zarejestrowany: 2012-07-18

Re: rtorrent vs iptables

Chyba nieprecyzyjnie się wyraziłem. Orientuję się o tyle o ile w konfiguracji iptables. Problem w tym że, nie ogarniam przepuszczenia rtorrenta (czy wogóle jakiegokolwiek kliena torrent) przez firewall.
W moim przykładzie rtorrent używa jednego tylko portu (10001) plus drugi dla dht (20001). Jak rozumiem odbokowany musi być ruch w obydwie strony czyli:

Kod:

iptables -A OUTPUT -p tcp --dport 10001 -j ACCEPT
iptables -A OUTPUT -p udp --dport 20001 -j ACCEPT

iptables -A INPUT -p tcp --dport 10001 -j ACCEPT
iptables -A INPUT -p udp --dport 20001 -j ACCEPT

do tego

Kod:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

niestety to niewystarcza więc gdzieś jest błąd albo czegoś brakuje i tu moje pytanie.

Offline

 

#4  2013-01-03 00:35:18

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: rtorrent vs iptables

Zobacz to:
http://ubuntu.pl/forum/viewtopic.php?f=150&t=103825#p613705

Z tym zastrzeżeniem, że zamiast:

Kod:

iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

teraz używa się:

Kod:

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Moduł state wyleciał z nowszych wersji kernela i  iptables, zamiast niego używa się modułu conntrack.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2013-01-03 01:57:43

  hurlmann - Użytkownik

hurlmann
Użytkownik
Zarejestrowany: 2012-07-18

Re: rtorrent vs iptables

Nic już z tego nie rozumiem. Już samo przepuszczenie wychodzących + powiązanych przychodzących, powoduje że rtorrent działa (przynajmniej download, upload nie sprawdzałem):

Kod:

iptables -P OUTPUT ACCEPT 
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

wcale nie potrzeba:

Kod:

iptables -A INPUT -s 0/0 -p tcp --dport 10001 -j ACCEPT
iptables -A INPUT -s 0/0 -p udp --dport 10001 -j ACCEPT
iptables -A INPUT -s 0/0 -p udp --dport 20001 -j ACCEPT

Problem w tym że, na codzień trzymam OUTPUT zamknięty i przepuszczam tylko to co trzeba:

Kod:

(...)
iptables -P OUTPUT DROP 
(...)
iptables -A OUTPUT -p udp --dport 53 -d 208.67.222.222 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -d 208.67.220.220 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
itd itp

Myślałem, że przepuszczenie torrentów sprowadza się po prostu do otwarcia kolejnego portu dla przychodzących i wychodzących, tak jak napisałem w poprzednio, ale to nie działa. Czy koniecznie cały OUTPUT musi być odblokowany?

Offline

 

#6  2013-01-03 02:24:47

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: rtorrent vs iptables

Spróbuj na otwartym OUTPUCIE, czy działa.
Generalnie masz firewalla z kontrolą stanu pakietu, jeśli blokujesz INPUT, a wpuszczasz tylko nawiązane z kompa połączenia śledzone przez conntrack, to firewall masz prawidłowo skonfigurowany,
Żeby używać filtrowania OUTPUT, trzeba dużo więcej doświadczenia, bo całlkiem sporo programów komunikuje się na różnych portach, a P2P zazwyczaj działa praktycznie na każdym porcie, na jaki się wbije.
Dodatkowo różni pacjenci ustawiają torrenty na rożnych portach (u siebie), nie ma na to reguł.
Listę protokolów sieciowych i domyślnych portów masz w pliku /etc/services.

Także rtorrenta wypuść na cały zakres powyżej portu 1023 (do 1023 są usługi sieciowe, jak http czy poczta, które można atakować atakiem ddos przy pomocy torrent, a sztuczką hakerską, w czym twój rtorrent mógłby uczestniczyć, gdybyś go puścił na port np 80 lub 993, czy podobny port powszechnie używanej usługi sieciowej).

Taki numer można wyciąć podrzucając odpowiednio spreparowane ziarno albo modyfikując trackera (o ile pamiętam, ale słabo pamiętam, jak to dokładnie działało).
W każdym razie torrenta się wypuszcza na porty 1024:65535.

Jak w ten sposób obciąć rtorrenta? - osobny user systemowy i moduł iptables owner:
RTFM:

Kod:

iptables -m owner --help

Ostatnio edytowany przez Jacekalex (2013-01-03 02:27:02)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2013-01-04 02:40:06

  hurlmann - Użytkownik

hurlmann
Użytkownik
Zarejestrowany: 2012-07-18

Re: rtorrent vs iptables

Ok, czyli jeszcze raz:
1) W przypadku p2p OUTPUT w zakresie 1024:65535 musi być zawsze otwarty, ponieważ różni użytkownicy ustawiają różne porty w swoich klientach (często są to domyślnie porty z zakresu 6881-6999, ale jeszcze częściej może być to cokolwiek innego).
Czyli jeżeli ja mam w iptables otwarty OUTPUT dla 6881-6999, a ktoś w swoim dajmy na to transsmisionie ustawił port na np 56789, to nie będę w stanie od niego pobierać. Czy tak?


1,5) Znalazłem informację że trackery bittorent używają domyślnie portu 6969. Czyli analogicznie jak powyżej muszę przepuścić 6969 OUTPUT bo nie będę w ogóle mógł połączyć się z trackerem, tak?
Czy ten 6969 to rzeczywiście norma dla trackerów czy w praktyce jest to robta co chceta?


2) Dawniej w iptables, -m owner oferował takie rzeczy jak:
    [i]--uid-owner {userid/username}            Matches if the packet was created by a process with the given effective username.
    --gid-owner {groupid/groupname}:       Matches if the packet was created by a process with the given effective group id.[/i]
    --pid-owner {processed}:                    Matches if the packet was created by a process with the given process id.
    --sid-owner {sessionid}:                     Matches if the packet was created by a process in the given session group.
    [b]--cmd-owner {name} :                    Matches if the packet was created by a process with the given command name.[/b]

Używając ostatniej opcji można było otworzyć OUTPUT 1024:65535 tylko i wyłącznie dla konkretnej aplikacji - np rtorrenta.
Niestety od kernela 2.6.14. z jakichś powodów -m owner  został wykastrowany i obecnie dostępne są tylko 2 pierwsze opcje z powyższej listy.

Więc jeżeli ktoś chce mimo wszystko przymknąć jako tako OUTPUT ale też jednocześnie używać torrentów, powinien:
- utworzyć w systemie specjalnego usera "MEGAMASTERTORRENTHEJ"
- dodać dodać do iptables:

Kod:

iptables -A OUTPUT -p tcp --dport 1024:65535 -m owner --uid-owner MEGAMASTERTORRENTHEJ -j ACCEPT
iptables -A OUTPUT -p udp --dport 1024:65535 -m owner --uid-owner MEGAMASTERTORRENTHEJ -j ACCEPT

W ten sposób OUTPUT 1024:65535 jest otwarty tylko dla aplikacji uruchomionych przez usera MEGAMASTERTORRENTHEJ. Dobrze to rozumiem?


2.5) Czy istnieją jakieś alternatywne sposoby ograniczenia/umożliwienia dostępu do sieci konkretnym aplikacjom ? (coś w stylu --cmd-owner {name})


3) Z tego co zauważyłem wystarczy jedynie otworzyć OUTPUT żeby móc normalnie pobierać. Nie potrzeba wcale otwierać W INPUT zakresu portów jakie ustawione są w kliencie torrent. Jak rozumiem jest to możliwe dzięki regule:

Kod:

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Domyślam się jednak, że przy takim ustawieniu upload nie będzie działał, ponieważ nowe połączenia przychodzące od ludzi chcących coś pobrać będą odrzucane. Dlatego do uploadowania trzeba jeszcze przepuścić w INPUT port(y) ustawione w kliencie torrent. Tak czy nie?


[s]4) Jak do tego wszystkiego mają się protokoły? Czy wystarczy przepuszczenie samego tcp czy trzeba również udp?[/s]
to już znalazłem - trzeba przepuścić obydwa

Ostatnio edytowany przez hurlmann (2013-01-04 16:11:02)

Offline

 

#8  2013-01-05 19:01:40

  remi - amputować akrobatów

remi
amputować akrobatów
Zarejestrowany: 2011-05-27

Re: rtorrent vs iptables

Cześć, przepraszam za podpięcie się do tematu, ale chciałbym zapytać - a właściwie otrzymać potwierdzenie - kolegi [b]Jacka[/b], czy owa zmiana [tt][color=blue]-m state[/color][/tt] na rzecz [tt][color=blue]-m conntrack[/color][/tt] dotyczy [u]absolutnie wszystkich[/u] reguł w których korzystamy, bądź zamierzamy skorzystać, właśnie z tych modułów? Tak więc, np. reguła blokująca pakiety [tt]INVALID[/tt] ma przyjąć teraz formę; [tt][color=green]iptables -A INPUT -m conntrack --ctstate INVALID -j DROP[/color][/tt]? Wcześniej, wykorzystując moduł [tt][color=blue]state[/color][/tt], w/w zapis mógł wyglądać w następujący sposób; [tt]iptables -A INPUT -p all -m state --state INVALID -j DROP[/tt].

[color=violet]edit[/color]: Mógłbyś doprecyzować, które konkretnie wersje masz na myśli, pisząc [i]"moduł state wyleciał z nowszych wersji kernela (...)"[/i]? Rozumiem, że dotyczy to oczywiście wydań oznaczonych numerkiem 3.X.

Ostatnio edytowany przez remi (2013-01-05 20:05:40)


[color=#5B5B5B][tt][b]Ł[/b][i]a[/i]m[/tt] [tt][b][i]Z[/b][/i]As[i]a[/i]d[b][/tt][tt]y[/tt][/b][b]![/b] w[i]Y[/i][b]j[/b][b]ą[/b]Tk[i][b]Ó[/b][/i][b]w[/b] [tt][i]j[/i][b]e[i]s[/i][/b]t[/tt] w[tt][b][/b]I[b][i]ę[/i][/b][/tt]c[b]e[i]j[/i][/b][/color].

Offline

 

#9  2013-01-05 22:53:51

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: rtorrent vs iptables

Kod:

iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
WARNING: The state match is obsolete. Use conntrack instead.

Kod:

iptables --version
iptables v1.4.16.3

W której wersji wyleciał dokładnie, nie wiem, w Iptables  1.4.13 jeszcze był, w 1.4.15 już nie.
Także najprawdopodobniej w *.14 lub *.15.

Ja aktualizowałem od razu z 1.4.13 na 1.4.16.

Kod:

zgrep -i match_state  /proc/config.gz 
CONFIG_NETFILTER_XT_MATCH_STATE=y

uname -r
3.7.1-gr2

W jaju moduł  state  jeszcze jest, ale cóż z tego, jeśli firewall go nie trawi i sypie ostrzeżeniami?

Ostatnio edytowany przez Jacekalex (2013-01-05 23:00:44)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#10  2013-01-06 00:07:05

  hurlmann - Użytkownik

hurlmann
Użytkownik
Zarejestrowany: 2012-07-18

Re: rtorrent vs iptables

boo hoo a mi nikt odpowiedzieć nie chce...

Offline

 

#11  2013-01-07 15:28:21

  remi - amputować akrobatów

remi
amputować akrobatów
Zarejestrowany: 2011-05-27

Re: rtorrent vs iptables

Serwus! [b]Jacku[/b], dziękuję serdecznie za wyjaśnienia.


[color=#5B5B5B][tt][b]Ł[/b][i]a[/i]m[/tt] [tt][b][i]Z[/b][/i]As[i]a[/i]d[b][/tt][tt]y[/tt][/b][b]![/b] w[i]Y[/i][b]j[/b][b]ą[/b]Tk[i][b]Ó[/b][/i][b]w[/b] [tt][i]j[/i][b]e[i]s[/i][/b]t[/tt] w[tt][b][/b]I[b][i]ę[/i][/b][/tt]c[b]e[i]j[/i][/b][/color].

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.014 seconds, 17 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00116 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.145.112.23' WHERE u.id=1
0.00103 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.145.112.23', 1732304224)
0.00041 SELECT * FROM punbb_online WHERE logged<1732303924
0.00102 DELETE FROM punbb_online WHERE ident='18.216.250.143'
0.00076 DELETE FROM punbb_online WHERE ident='18.222.166.127'
0.00066 DELETE FROM punbb_online WHERE ident='3.142.40.195'
0.00077 DELETE FROM punbb_online WHERE ident='3.142.43.244'
0.00073 DELETE FROM punbb_online WHERE ident='3.142.98.111'
0.00082 DELETE FROM punbb_online WHERE ident='52.15.170.196'
0.00051 SELECT topic_id FROM punbb_posts WHERE id=219384
0.00005 SELECT id FROM punbb_posts WHERE topic_id=22610 ORDER BY posted
0.00053 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=22610 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00148 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=22610 ORDER BY p.id LIMIT 0,25
0.00101 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=22610
Total query time: 0.01113 s