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-03-22 12:44:04

  Luc3k - Użytkownik

Luc3k
Użytkownik
Zarejestrowany: 2009-10-09
Serwis

Prawidłowe polecenie w Cronie

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?

Kod:

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

 

#2  2013-03-22 20:01:22

  milyges - inż.

milyges
inż.
Skąd: Gorlice/Kraków
Zarejestrowany: 2006-04-09
Serwis

Re: Prawidłowe polecenie w Cronie

Kasowania starych reguł brakuje na pewno, po jakimś czasie będziesz miał niezłą litanie :)


[url=http://mhroczny.net][b]strona domowa[/b][/url] || [url=http://dug.net.pl][b]polski portal debiana[/b][/url]

Offline

 

#3  2013-03-24 08:26:11

  Luc3k - Użytkownik

Luc3k
Użytkownik
Zarejestrowany: 2009-10-09
Serwis

Re: Prawidłowe polecenie w Cronie

W jaki zatem sposób udoskonalić to rozwiązanie?

Offline

 

#4  2013-03-24 19:05:28

  andreq - Członek DUG

andreq
Członek DUG
Skąd: Nisko
Zarejestrowany: 2005-01-11

Re: Prawidłowe polecenie w Cronie

Napisz skrypt z potrzebnymi regułkami iptables (kasowanie starych reguł, ustawianie nowych, itp.) i go wywołuj z crona...

Offline

 

#5  2013-03-24 20:01:27

  svL - Użytkownik

svL
Użytkownik
Zarejestrowany: 2007-06-17

Re: Prawidłowe polecenie w Cronie

zerknij na moduł time w iptables
https://pl.wikibooks.org/wiki/Sieci_w_Linuksie/Netfilter/iptables/dopasowania#-m_time
http://www.cyberciti.biz/tips/iptables-for-restricting-access-by-time-of-day.html


"God, root, what is difference?"

Offline

 

#6  2013-03-26 12:10:57

  Luc3k - Użytkownik

Luc3k
Użytkownik
Zarejestrowany: 2009-10-09
Serwis

Re: Prawidłowe polecenie w Cronie

[quote=andreq]Napisz skrypt z potrzebnymi regułkami iptables (kasowanie starych reguł, ustawianie nowych, itp.) i go wywołuj z crona...[/quote]
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):

Kod:

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

 

#7  2013-03-26 13:52:10

  yossarian - Szczawiożerca

yossarian
Szczawiożerca
Skąd: Shangri-La
Zarejestrowany: 2011-04-25

Re: Prawidłowe polecenie w Cronie

Może wystarczy skorzystać ze standardowego [tt]iptables-restore[/tt], 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

 

#8  2013-03-27 08:15:09

  Luc3k - Użytkownik

Luc3k
Użytkownik
Zarejestrowany: 2009-10-09
Serwis

Re: Prawidłowe polecenie w Cronie

Wymyśliłem jeszcze coś prostszego lecz z sugestią usuwania wpisów:

Kod:

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

 

#9  2013-03-27 08:26:36

  Jacekalex - Podobno człowiek...;)

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

Re: Prawidłowe polecenie w Cronie

Alleeee lama, aleeeee lama, lama, lama, alleeee lama. ;)

Zamiast rzeźbić w Cronie, przestań się lepiej ośmieszać, i zajrzyj do mana iptables.

RTFM:

Kod:

man iptables
iptables -m time --help

[url]http://pl.wikibooks.org/wiki/Sieci:Linux/Netfilter/iptables/dopasowania[/url]

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)


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

Offline

 

#10  2013-03-27 08:32:51

  BiExi - matka przelozona

BiExi
matka przelozona
Skąd: Gorlice
Zarejestrowany: 2004-04-16
Serwis

Re: Prawidłowe polecenie w Cronie

Jacekalex - proszę Cię o nieobrażanie innych, każdy kiedyś zaczynał.


[url=http://dug.net.pl][b]DUG[/b][/url]

Offline

 

#11  2013-03-27 08:37:25

  Jacekalex - Podobno człowiek...;)

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

Re: Prawidłowe polecenie w Cronie

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 [url=https://www.youtube.com/watch?v=AIgMYiKEyUg]melodii[/url]. :D

Ostatnio edytowany przez Jacekalex (2013-03-27 08:42:14)


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

Offline

 

#12  2013-03-27 10:38:25

  lama - Użytkownik

lama
Użytkownik
Zarejestrowany: 2012-08-28

Re: Prawidłowe polecenie w Cronie

Ktoś mnie wołał? :-D

Offline

 

#13  2013-04-04 11:04:20

  Luc3k - Użytkownik

Luc3k
Użytkownik
Zarejestrowany: 2009-10-09
Serwis

Re: Prawidłowe polecenie w Cronie

Do tematu wrócę jak tylko postawię serwer - niespodziewana awaria.
Pytanie: czekać na nową wersję Debiana czy instalować wersję 6.0.7? Jestem trochę w kropce.

Offline

 

#14  2013-04-04 11:53:08

  ArnVaker - Kapelusznik

ArnVaker
Kapelusznik
Skąd: Midgard
Zarejestrowany: 2009-05-06

Re: Prawidłowe polecenie w Cronie

Po co czekać? Możesz Wheezy'ego teraz zainstalować.


[img]http://svn.debianart.org/themes/generic/spinner/spinner48px-moreblue.png[/img]

Offline

 

#15  2013-04-04 12:30:10

  Luc3k - Użytkownik

Luc3k
Użytkownik
Zarejestrowany: 2009-10-09
Serwis

Re: Prawidłowe polecenie w Cronie

Hmm... Jak to? Przecież jeszcze nie ma oficjalnej wersji stabilnej (?)

Offline

 

#16  2013-04-04 12:46:03

  yossarian - Szczawiożerca

yossarian
Szczawiożerca
Skąd: Shangri-La
Zarejestrowany: 2011-04-25

Re: Prawidłowe polecenie w Cronie

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

 

#17  2013-04-04 13:47:14

  ArnVaker - Kapelusznik

ArnVaker
Kapelusznik
Skąd: Midgard
Zarejestrowany: 2009-05-06

Re: Prawidłowe polecenie w Cronie

[quote=Luc3k]Hmm... Jak to? Przecież jeszcze nie ma oficjalnej wersji stabilnej (?)[/quote]
No, normalnie… Z instalatora testinga.


[img]http://svn.debianart.org/themes/generic/spinner/spinner48px-moreblue.png[/img]

Offline

 

#18  2013-04-22 10:40:16

  Luc3k - Użytkownik

Luc3k
Użytkownik
Zarejestrowany: 2009-10-09
Serwis

Re: Prawidłowe polecenie w Cronie

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:

Kod:

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:

Kod:

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

Kod:

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

 

#19  2013-04-23 17:16:35

  andreq - Członek DUG

andreq
Członek DUG
Skąd: Nisko
Zarejestrowany: 2005-01-11

Re: Prawidłowe polecenie w Cronie

Wklej cały skrypt, chyba nie wpisujesz poleceń "z palca"?!

Offline

 

#20  2013-04-23 18:59:19

  Luc3k - Użytkownik

Luc3k
Użytkownik
Zarejestrowany: 2009-10-09
Serwis

Re: Prawidłowe polecenie w Cronie

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

Kod:

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

 

#21  2013-04-24 09:43:41

  andreq - Członek DUG

andreq
Członek DUG
Skąd: Nisko
Zarejestrowany: 2005-01-11

Re: Prawidłowe polecenie w Cronie

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

 

#22  2013-04-25 08:37:05

  Luc3k - Użytkownik

Luc3k
Użytkownik
Zarejestrowany: 2009-10-09
Serwis

Re: Prawidłowe polecenie w Cronie

[quote=andreq]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[/quote]
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:

Kod:

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:

Kod:

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

 

#23  2013-04-25 09:16:44

  ba10 - Członek DUG

ba10
Członek DUG
Skąd: jesteś ?
Zarejestrowany: 2006-03-07
Serwis

Re: Prawidłowe polecenie w Cronie

[quote=Luc3k]Nie za bardzo rozumiem tego -d 0.0.0.0/0 jaką ten wpis spełnia funkcję w tej regule?[/quote]
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ą [url=http://pl.wikipedia.org/wiki/Adres_prywatny]adresami prywatnymi[/url] , a jakie publicznymi.

Ostatnio edytowany przez ba10 (2013-04-25 09:25:35)


"Jeżeli chcesz się nauczyć Linuksa, to pierwsze co musisz zrobić to odrzucić wszelkie przyzwyczajenia wyniesione z poprzedniego systemu. Twoja wiedza jest o tyle zgubna, że daje Ci poczucie że coś jednak wiesz — jednak w kontekście Linuksa prawdopodobnie nie wiesz jeszcze nic." Minio
Mój [url=jarekw.eu]Blog[/url], a później [url=tanczymy.com]Tańczymy[/url] ;)

Offline

 

#24  2013-04-25 09:31:50

  Luc3k - Użytkownik

Luc3k
Użytkownik
Zarejestrowany: 2009-10-09
Serwis

Re: Prawidłowe polecenie w Cronie

Czyli jak testowo wykonam:

Kod:

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

 

#25  2013-04-25 09:45:46

  ba10 - Członek DUG

ba10
Członek DUG
Skąd: jesteś ?
Zarejestrowany: 2006-03-07
Serwis

Re: Prawidłowe polecenie w Cronie

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) ?


"Jeżeli chcesz się nauczyć Linuksa, to pierwsze co musisz zrobić to odrzucić wszelkie przyzwyczajenia wyniesione z poprzedniego systemu. Twoja wiedza jest o tyle zgubna, że daje Ci poczucie że coś jednak wiesz — jednak w kontekście Linuksa prawdopodobnie nie wiesz jeszcze nic." Minio
Mój [url=jarekw.eu]Blog[/url], a później [url=tanczymy.com]Tańczymy[/url] ;)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.010 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00099 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.135.193.234' WHERE u.id=1
0.00196 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.135.193.234', 1733972059)
0.00062 SELECT * FROM punbb_online WHERE logged<1733971759
0.00020 SELECT topic_id FROM punbb_posts WHERE id=228576
0.00033 SELECT id FROM punbb_posts WHERE topic_id=23195 ORDER BY posted
0.00030 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=23195 AND t.moved_to IS NULL
0.00026 SELECT search_for, replace_with FROM punbb_censoring
0.00092 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=23195 ORDER BY p.id LIMIT 0,25
0.00103 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=23195
Total query time: 0.00675 s