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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Chciałbym wykonać w Cronie takie zadanie: codziennie od poniedziałku do piątku o godz. 19.01 ma być wyłączany dostęp do internetu określonej puli adresów.
Kolejne zadanie to: codziennie od poniedziałku do piątku o godz. 8.01 włączanie dostępu do internetu określonej puli adresów.
Sytuacja podobna w sobotę: dostęp do internetu miałby być włączony w godzinach 9.01 - 15.01 (w niedzielę niedostępny)
Podsumowywując chcę, aby użytkownicy mieli dostęp do internetu od poniedziałku do piątku w godzinach od 8.01 do 19.01, w sobotę w godzinach od 8.01 do 15.01, w niedzielę niedostępny.
Wymyśliłem takie zapisy w cronie, czy moglibyście je sprawdzić pod kątem poprawności?
1 19 * * 1-5 iptables -I FORWARD -s 10.0.1.0/24 -j DROP 1 8 * * 1-5 iptables -I FORWARD -s 10.0.1.0/24 -j ACCEPT 1 8 * * 6 iptables -I FORWARD -s 10.0.1.0/24 -j ACCEPT 1 15 * * 6 iptables -I FORWARD -s 10.0.1.0/24 -j DROP
Ostatnio edytowany przez Luc3k (2013-03-22 12:45:52)
Offline
Kasowania starych reguł brakuje na pewno, po jakimś czasie będziesz miał niezłą litanie :)
Offline
Napisz skrypt z potrzebnymi regułkami iptables (kasowanie starych reguł, ustawianie nowych, itp.) i go wywołuj z crona...
Offline
zerknij na moduł time w iptables
https://pl.wikibooks.org/wiki/Sieci_w_Linuksie/Netf … wania#-m_time
http://www.cyberciti.biz/tips/iptables-for-restrict … e-of-day.html
Offline
andreq napisał(-a):
Napisz skrypt z potrzebnymi regułkami iptables (kasowanie starych reguł, ustawianie nowych, itp.) i go wywołuj z crona...
Idee takiego skryptu mam w głowie, tylko jak przedstawić go w formie skryptu? Możesz coś podpowiedzieć?
A gdyby podczas uruchamiania systemu uruchomić takie regulki (pomijając tym samym uruchamianie ich w Cronie):
iptables -I FORWARD -s 10.0.1.0/24 -j DROP iptables -I FORWARD -s 10.0.1.0/24 -m time --timestart 08:00 --timestop 19:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT iptables -I FORWARD -s 10.0.1.0/24 -m time --timestart 08:00 --timestop 15:00 --days Sat -j ACCEPT
I tylko w tych godzinach jest dostęp do Internetu. Pytanie tylko czy tak skonstruowane reguły odetną dostęp po godzinie 19ej i po godzinie 15ej?
Ostatnio edytowany przez Luc3k (2013-03-26 12:48:08)
Offline
Może wystarczy skorzystać ze standardowego iptables-restore, który by ustawiał firewall przez /etc/network/if-pre-up.d/ wraz z podnoszeniem interfejsu + to co napisał svL
Ostatnio edytowany przez yossarian (2013-03-26 13:53:02)
Offline
Wymyśliłem jeszcze coś prostszego lecz z sugestią usuwania wpisów:
1 19 * * 1-5 iptables -I FORWARD -s 10.0.1.0/24 -j DROP 1 8 * * 1-6 iptables -D FORWARD -s 10.0.1.0/24 -j DROP 1 15 * * 6 iptables -I FORWARD -s 10.0.1.0/24 -j DROP
Offline
Alleeee lama, aleeeee lama, lama, lama, alleeee lama. ;)
Zamiast rzeźbić w Cronie, przestań się lepiej ośmieszać, i zajrzyj do mana iptables.
RTFM:
man iptables iptables -m time --help
http://pl.wikibooks.org/wiki/Sieci:Linux/Netfilter/ … s/dopasowania
Moduł time firewalla jest dokładnie do tego, co próbujesz wyrzeźbić w Cronie.
I 5 razy latwiej go ustawić, niż przez Crona.
Tutaj dobrze zacząłeś:
http://forum.dug.net.pl/viewtopic.php?pid=228749#p228749
i po prostu to popraw i dokończ.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2013-03-27 08:31:38)
Offline
Nie zmierzam nikogo obrażać, ale sklonić do myślenia.
Być może trochę zbyt dosadnie, to możliwe, przepraszam.
Poza tym nuciłem jedną z ulubionych melodii. :D
Ostatnio edytowany przez Jacekalex (2013-03-27 08:42:14)
Offline
Ktoś mnie wołał? :-D
Offline
Po co czekać? Możesz Wheezy'ego teraz zainstalować.
Offline
Już ostatnie szlify. Są dystrybucje, które przyklejają napis „stabilny” do zdecydowanie niedopracowanych wydań i nikt z tego powodu afery nie robi.
Na tym etapie wydawania Wheezy'ego można już go spokojnie instalować.
IMHO nie opłaca się teraz instalować Squeeze by za chwilę i tak aktualizować
Offline
Luc3k napisał(-a):
Hmm... Jak to? Przecież jeszcze nie ma oficjalnej wersji stabilnej (?)
No, normalnie… Z instalatora testinga.
Offline
Serwer przywrócony więc mogę wrócić do tematu.
Niestety nadal nie mogę uzyskać pożądanego efektu. Póki co wszystkie kombinacje testuję na jednym komputerze o adresie 10.0.1.104.
Konfiguracja firewalla dla tego komputera wygląda następująco:
iptables -t nat -A POSTROUTING -s 10.0.1.104/32 -j MASQUERADE iptables -A FORWARD -s 10.0.1.104/32 -j ACCEPT
Po uruchomieniu serwera, tablica dla tego komputera wygląda tak:
root@Alpha:/etc/init.d# iptables -nvL | grep 10.0.1.104 1 60 ACCEPT all -- * * 10.0.1.104 0.0.0.0/0
Wykonywałem różne kombinacje:
1.
iptables -A FORWARD -s 10.0.1.104 -m time --timestart 10:00 --timestop 10:15 --weekdays Mon,Tue,Wed,Thu,Fri -j DROP
root@Alpha:/etc/init.d# iptables -nvL | grep 10.0.1.104 1 60 ACCEPT all -- * * 10.0.1.104 0.0.0.0/0 0 0 DROP all -- * * 10.0.1.104 0.0.0.0/0 TIME from 10:00:00 to 10:15:00 on Mon,Tue,Wed,Thu,Fri
2.
iptables -A FORWARD -s 10.0.1.104 -j DROP
iptables -A FORWARD -s 10.0.1.104 -m time --timestart 10:00 --timestop 10:15 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT
niestety bez efektu, na podanym komputerze cały czas był dostęp do internetu. Gdzie popełniam błąd?
Ostatnio edytowany przez Luc3k (2013-04-22 10:42:13)
Offline
Wklej cały skrypt, chyba nie wpisujesz poleceń "z palca"?!
Offline
Z palca nie wpisuję reguł firewalla. Te zawarte są w /etc/init.d/firewall
Po uruchomieniu serwera stan iptables wygląda następująco: http://79.189.44.186/~kzgrzeblak/ip
Dopiero później - testując te i inne rozwiązania
iptables -A/I FORWARD -s 10.0.1.104 -j DROP iptables -A/I FORWARD -s 10.0.1.104 -m time --timestart 10:00 --timestop 10:15 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT
klepię różne kombinacje reguł z konsoli i obserwuję na docelowym komputerze efekty.
Tak wygląda /etc/init.d/firewall: http://79.189.44.186/~kzgrzeblak/firewall
Ostatnio edytowany przez Luc3k (2013-04-23 19:01:38)
Offline
Jak napisał Jacekalex dobrze zacząłeś ale potem się pogubiłeś...
Na początku czyścisz reguły, potem ustawiasz domyślną politykę INPUT i FORWARD na DROP, a OUTPUT na ACCEPT, potem puszczasz interfejs loopback i zezwalasz na połączenia nawiązane w łańcuchu INPUT, a dopiero potem zezwalaj na połączenia przy pomocy modułu time i puść maskaradę.
Poczytaj http://zsk.wsti.pl/publikacje/iptables_przystepnie.htm#c4_2 i http://www.gentoo.org/doc/pl/articles/linux-24-stateful-fw-design.xml Zwróć uwagę na to w jakiej kolejności wykonywane są reguły i gdzie trafiają poszczególne pakiety.
Offline
Rewelacyjne są te artykuły, zapoznając się z nimi można udoskonalić swoją zaporę.
Mam jeszcze tylko jedno pytanie dotyczące dokumentu z artykułu pierwszego ("iptables - przystepnie"):
Konkretnie chodzi o samą maskaradę/nat, za pomocą której mogę udostępnić innym komputerom w sieci dostęp do internetu.
Do tej pory wykonywałem to w następujący sposób:
iptables -t nat -A POSTROUTING -s 10.0.0.2/32 -j MASQUERADE iptables -A FORWARD -s 10.0.0.2/32 -j ACCEPT . . . iptables -t nat -A POSTROUTING -s 10.0.0.100/32 -j MASQUERADE iptables -A FORWARD -s 10.0.0.100/32 -j ACCEPT
Czyli dla każdego z komputerów znajdujących się w sieci są utworzone takie wpisy, aby dostęp do internetu miały tylko komputery o konkretnych adresach ip.
W tym artykule można wyczytać, że jeżeli router ma stałe, niezmieniające się ip (a w moim przypadku tak właśnie jest, ponieważ mam DSL-a) to zamiast MASQUERADE należy użyć SNAT
przykład:
iptables -t nat -A POSTROUTING -s 10.0.0.2 -d 0.0.0.0/0 -j SNAT --to-source nasz_stały_adres_ip //adres 0.0.0.0/0 podany jako przeznaczenie pakietu oznacza w praktyce jakikolwiek adres IP
Jak należy rozumieć "-s 10.0.0.2" "-d 0.0.0.0/0" "--to-source nasz_stały_adres_ip"
Czy adres 10.0.0.2 to jest docelowy adres komputera w sieci, któremu udostępniamy internet i ten zapis należy powtórzyć dla każdego z komputerów w sieci?
Nie za bardzo rozumiem tego -d 0.0.0.0/0 jaką ten wpis spełnia funkcję w tej regule?
Czy "--to-source nasz_stały_adres_ip" to stały adres serwera w sieci lokalnej eth1_10.0.0.1 czy jest to może stały adres serwera eth0_79.189.44.186?
Jeżeli przebrnę przez ten etap to już powinienem sobie poradzić z modułem time.
Ostatnio edytowany przez Luc3k (2013-04-25 08:39:00)
Offline
Luc3k napisał(-a):
Nie za bardzo rozumiem tego -d 0.0.0.0/0 jaką ten wpis spełnia funkcję w tej regule?
Możesz to rozumieć jako "do wszystkich sieci". Czyli z komputera o adresie 10.0.0.2 ( -s jest od source czyli źródła) pakiety będą kierowane do wszystkich sieci ( -d od destination czyli cel).
Stały adres rozum jako adres publiczny, widziany na zewnątrz. Musisz rozróżniać jakie adresy są adresami prywatnymi , a jakie publicznymi.
Ostatnio edytowany przez ba10 (2013-04-25 09:25:35)
Offline
Czyli jak testowo wykonam:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 0.0.0.0/0 -j SNAT --to-source 79.189.44.186
to dostęp do internetu będzie dla całej sieci (10.0.0.0 oraz 10.0.1.0)? Czy może powinienem zastosować maskę /16?
Ostatnio edytowany przez Luc3k (2013-04-25 09:35:23)
Offline
Ciężkie pytanie bo byś musiał przebrnąć przez wykład o adresowaniu, daj maskę /8 taka jest domyślna dla 10.0.0.0 tylko ile masz tych komputerów, że chcesz używać zakresu adresowego 10.0.0.0, czy 192.168.0.0/24 nie wystarczy ( 256 adresów) ?
Offline