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/.
Strony: 1
Witam czy mógłby mi ktos pomóc w sprawie skryptu, znalazłem na sieci skrypt zapobiegający zmiany adresu ip przez użytkownika, ale cos nie chce zadziałać.
Dostaje taki zwrot przy odpalaniu:
[: 24: closing paren expected
[: 36: =: unexpected operator
#!/bin/sh # skrypt posiada trzy parametry: # 1) add (nowa dzierżawa DHCP) | # del (wygasająca dzierżawa) | # old (odnowiona dzierżawa – # np. w wypadku restartu dnsmasq w czasie trwania dzierżawy) # 2) adres MAC klienta # 3) adres IP klienta otrzymany z DHCP IPTABLES='/sbin/iptables' EXT_INTERFACE=eth1 INT_INTERFACE=eth0 # jeśli dzierżawa jest nowa ($1 = add) lub odnowiona ($1 = old) # i nie ma jeszcze takiej reguły w łańcuchu FORWARD # to pozwalamy na przekazywanie pakietów w obie strony. iptables -P FORWARD ACCEPT if [ \( $1 = 'add' -o $1 = 'old' \) -a \ ` iptables -L FORWARD | grep -i -c "$3"` -eq0 ] then iptables -A FORWARD -i $INT_INTERFACE -o $EXT_INTERFACE \ -m mac --mac-source $2 -s $3 -j ACCEPT iptables -A FORWARD -o $INT_INTERFACE -i $EXT_INTERFACE \ -d $3 -j ACCEPT fi # jeśli dzierżawa wygasa ($1 = del) # i istnieją reguły w łańcuchu FORWARD # pozwalające na przekazywanie pakietów w obie strony # to je usuwamy. if [ $1 = 'del' -a \ ` iptables -L FORWARD | grep -i -c " $3 " ` -ne 0 ] then iptables -D FORWARD -i $INT_INTERFACE -o $EXT_INTERFACE \ -m mac --mac-source $2 -s $3 -j ACCEPT iptables -D FORWARD -o $INT_INTERFACE -i $EXT_INTERFACE \ -d $3 -j ACCEPT fi
Offline
#!/bin/sh # skrypt posiada trzy parametry: # 1) add (nowa dzierżawa DHCP) | # del (wygasająca dzierżawa) | # old (odnowiona dzierżawa – # np. w wypadku restartu dnsmasq w czasie trwania dzierżawy) # 2) adres MAC klienta # 3) adres IP klienta otrzymany z DHCP IPTABLES='/sbin/iptables' EXT_INTERFACE=eth1 INT_INTERFACE=eth0 # jeśli dzierżawa jest nowa ($1 = add) lub odnowiona ($1 = old) # i nie ma jeszcze takiej reguły w łańcuchu FORWARD # to pozwalamy na przekazywanie pakietów w obie strony. iptables -P FORWARD ACCEPT if [ ( $1 = 'add' -o $1 = 'old' ) -a `iptables -L FORWARD | grep -i -c "$3"` -eq0 ] then iptables -A FORWARD -i $INT_INTERFACE -o $EXT_INTERFACE -m mac --mac-source $2 -s $3 -j ACCEPT iptables -A FORWARD -o $INT_INTERFACE -i $EXT_INTERFACE -d $3 -j ACCEPT fi # jeśli dzierżawa wygasa ($1 = del) # i istnieją reguły w łańcuchu FORWARD # pozwalające na przekazywanie pakietów w obie strony # to je usuwamy. if [ $1 = 'del' -a `iptables -L FORWARD | grep -i -c " $3 " ` -ne 0 ] then iptables -D FORWARD -i $INT_INTERFACE -o $EXT_INTERFACE -m mac --mac-source $2 -s $3 -j ACCEPT iptables -D FORWARD -o $INT_INTERFACE -i $EXT_INTERFACE -d $3 -j ACCEPT fi
?
Offline
Teraz dostaje coś takiego :
Syntax error: word unexpected (expecting ")")
Offline
Witam czy mógłby mi ktos pomóc w sprawie skryptu, znalazłem na sieci skrypt zapobiegający zmiany adresu ip przez użytkownika, ale cos nie chce zadziałać.[/quote]
Zrób sobie mapę mac:ip w ipset, potem ipset do firewalla, i po sprawie.
Zmiana Ip - brak neta.
Do tego switche zarządzalne - które pamiętają, nas jakim porcie pojawia sie taki czy inny mac, wifi na pppoe z autentyfikacją po eap-tls, (np ms-chap) (może być konieczny radius, choć sam pppoe też obrabia autoryzację).
I potem żadne kombinacje ze zmianami IP czy mac czy mac+ip nie będa miały sensu, poza odpoczynkiem pacjenta od netu.
Krótko pisząc, nie warto otwierać kopniakiem otwartych drzwi.
Sznurki:
http://ipset.netfilter.org/ipset.man.html
http://ipset.netfilter.org/tips.html
http://dug.net.pl/tekst/73/konfiguracja_prostego_serwera_pppoe/
Pozdrawiam
;-)Ostatnio edytowany przez Jacekalex (2011-12-05 01:12:38)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
A czy ipset jest w stanie zrobić dynamiczną mapę mac-ip? Statyczne odzwierciedlenie ip-mac adres mnie nie urządza. Mam radiusa który udziela mi dostępu per użytkownik per hasło, chiciałem teraz zrobić uprawnienia dla użytkowników, a że użytkownik może zalogować się na różnych komputerach to nie bardzo mnie urządza konfiguracja statyczna.
Mam już w miare działające rozwiązanie, tylko właśnie pojawia sie problem jeżeli użytkownik, który nie ma uprawnień podejrzy adres ip użytkownika z większymi uprawnieniami i zmieni sobie starycznie ten adres, to niestety dostaje te uprawnienia. A może znacie jakis inny sposób jak temu zaradzić?
Offline
Dynamiczną tablicę mac:ip?
A nie prosciej zajrzeć do pliku /var/lib/dhcp/leases i zrobić w konfigu dhcp lub ppoe stałego adresu IP dla każdego użytkownika?
Przecież losowe adresy IP zawsze zrobią Ci gruntowy bajzel w regułach.
Chcesz zablokować zmiany IP, to musisz na stale powiązać IP z mac, w konfigu DHCP sprawa jest banalna.
Natomiast w przypadku PPPOE - pacjent dostaje adres Ip po prawidłowym uwierzytelnieniu, natomiast każde rozłączenie powoduje potrzebę ponownego uwierzytelnienia.
[b]W dodatku dostaje adres, a nie ustala własny.[/b]
Przy WPA też możesz stosować uwierzytelnienie w dostępnie do sieci, choć osobiście radzilbym jednak PPPOE.
Więc wydaje mi się, ze od złej strony spojrzałeś na problem.
To jest sieć wifi, czy kablowa na switchach?
Bo w zależności od rodzaju, sa rózne rozwiazania, ale w każdym przypadku masz dostępne działające rozwiazanie, ktore nie wymaga żadnych skryptów.
Poza tym, przy wifi, jeśli masz PPPOE, i szyfrowane uwierzytelnienie w Radiusie , to nie musisz koniecznie takich pacjentów filtrować po mac, bo są dokładnie filtrowani przez Radiusa.
A jeśli PPPOE przydziela stałe adresy IP, to mozesz je na stałe powiązać z mac, zatrudniając np arpwatcha na kilka godzin, lub kombinując choćby z nmapem.
CHoć ja po skonfigurowaniu Radiusa nie bawiłbym się w mac-adresy, bo mac adres i tak mozna zmienić razem z IP, a uwierzytelnienie poprzez Ms-chap i np EAP-TLS, to drobiazg, którego żaden skrypciarz nie ominie, choćby się bardzo starał.
Z resztą tu masz całą kartę dań do RADIUSA:
http://en.wikipedia.org/wiki/Extensible_Authentication_Protocol
Natomiast powiązanie mac:IP warto zrobić w sieci kablowej, jak się ma jakichś "hakierów" i dowcipnisiów, choc tam też można bez większych problemów odpalić PPPOE z Radiusem, jeśli jest taka konieczność.
Jeśli natomiast to jest jakiś hotspot, gdzie można sie wpiąć, i używać np przez godzinkę za free, to jest jedyny przypadek, gdzie w tej chwili nie zastosujesz powyższych opcji,do tego jest, o ile się nie mylę [url=http://en.gentoo-wiki.com/wiki/Chillispot_with_FreeRadius_and_MySQL]chilispot[/url], ale nigdy osobiście go nie testowałem.
Także generalnie dostęp do takich czy innych zasobów typu samba, radziłbym ożenić z radiusem, a nie adresem IP. (np pam_radius)
A adres IP przypisać na stałe do użytkownika, który się uwierzytelnia, o ile mi wiadmomo, jak najbardziej wykonalne, bez żadnych dodatkowych skryptów.
Tu masz napisane, jak to zrobić:
[b][url]http://wiki.freeradius.org/SQL-HOWTO[/url][/b]
Czyli: zmiania IP=rozłączenie sieci, ponowne połączenie, Radius przydziela ten sam adres co poprzednio, który ma w bazie.
http://pl.wikipedia.org/wiki/Point-to-Point_Protocol_over_Ethernet
Dodaktowo w pppoe masz identyfikator sesji powiązany z adresem mac.
[quote="Wiki"]PPP jest protokołem warstwy łącza danych[/quote]
Czyli warstwy drugiej modelu ISO-OSI - działa na mac-adresach, a nie adresach IP.
http://pl.wikipedia.org/wiki/Model_OSI
Więc przy PPPOE żadna zmiana Ip nic nie poradzi, jeśli przydziela je PPPOE samodzielnie, lub z Radiusa.
http://zibik.jogger.pl/2007/03/18/serwer-pppoe-na-gentoo/
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2011-12-05 15:07:13)
Offline
Czyli w PPPOE adres ip jest przydzielany do loginu użytkownika a, nie do mac adresu, tak? Tak by było najlepiej bo użytkownik może mieć więcej aniżeli jedno urządzenie przystosowane do obsługi bezprzewodowego internetu. Druga kwestia to czy PPPOE jest obsługiwany przez urządzenia typu smartphone?
Po trzecie to co bym musiał zmienić w mojej konfiguracji by używać uwierzytelniania PPPOE. (Mam działającą konfigurację Radiusa opartą o certyfikaty, użytkownicy login hasło są pobierani z bazy sql i teraz niewiem jak się za to zabrać by przetobić to na PPPOE). Ktoś pomoże?
Offline
Ja pytałbym Biexi i ZłegoZwierza, mają chyba największe doświadczenie z PPPOE i Radiusem.
Ja mam XXX razy mniejsze, ale nigdy nie widziałem, żeby ktoś potrzebował extra skryptu do blokowania zmiany IP.
Poza tym pozwalanie pacjentom, żeby logowali się równocześnie z kilku urządzeń naraz, to strzał w stopę i potencjalnie niebezpieczna sprawa.
Wystarczy, że ktoś zostawi aktywną sesję z odpowiednimi uprawnieniami, i ktoś inny się dosiądzie na chwilkę, i....
A żaden człowiek nie ma 5 par oczu, żeby równocześnie działać na 5 urządzeniach, i kontrolować, co się na nich wszystkich dzieje.
Także pacjentów też czasami trzeba wychować. :D
Ostatnio edytowany przez Jacekalex (2011-12-07 18:57:02)
Offline
Nie chodzi o logowanie równoczesne, tylko o to, że czasem pacjent może się zalogować ze swojego kompa, a przykładowo nie mając dostępu do niego zaloguje się do sieci z iphona czy innego urządzonka tak hipotetycznie. :)
Ale dziękuje za uwagi.
Offline
Z iphona i Androida zrobiłbym VPN typu OpenVPN, Ipsec czy SSH, i będą mogli się łaczyć nawet z Bangkoku.
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00005 | SET NAMES latin2 |
0.00123 | 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='18.227.209.101' WHERE u.id=1 |
0.00075 | UPDATE punbb_online SET logged=1732501536 WHERE ident='18.227.209.101' |
0.00052 | SELECT * FROM punbb_online WHERE logged<1732501236 |
0.00057 | DELETE FROM punbb_online WHERE ident='3.136.23.132' |
0.00064 | DELETE FROM punbb_online WHERE ident='3.141.21.199' |
0.00068 | DELETE FROM punbb_online WHERE ident='3.142.212.153' |
0.00067 | DELETE FROM punbb_online WHERE ident='3.143.237.140' |
0.00086 | SELECT topic_id FROM punbb_posts WHERE id=187168 |
0.00141 | SELECT id FROM punbb_posts WHERE topic_id=20172 ORDER BY posted |
0.00079 | 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=20172 AND t.moved_to IS NULL |
0.00016 | SELECT search_for, replace_with FROM punbb_censoring |
0.00122 | 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=20172 ORDER BY p.id LIMIT 0,25 |
0.00090 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=20172 |
Total query time: 0.01055 s |