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  2011-12-04 17:44:23

  czeri - Użytkownik

czeri
Użytkownik
Zarejestrowany: 2011-07-08

Zapobieganie zmiany adresu ip przez użytkownika

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



Kod:

#!/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

 

#2  2011-12-04 21:40:10

  urbinek - Użytkownik

urbinek
Użytkownik
Skąd: Sosnowiec
Zarejestrowany: 2009-10-01
Serwis

Re: Zapobieganie zmiany adresu ip przez użytkownika

Kod:

#!/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

?


A w wolnym czasie, robię noże :)
[img]http://nginx.urbinek.eu/_photos/signature.png[/img]

Offline

 

#3  2011-12-04 22:51:07

  czeri - Użytkownik

czeri
Użytkownik
Zarejestrowany: 2011-07-08

Re: Zapobieganie zmiany adresu ip przez użytkownika

Teraz dostaje coś takiego :

Syntax error: word unexpected (expecting ")")

Offline

 

#4  2011-12-05 01:09:13

  Jacekalex - Podobno człowiek...;)

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

Re: Zapobieganie zmiany adresu ip przez użytkownika

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

 

#5  2011-12-05 09:50:48

  czeri - Użytkownik

czeri
Użytkownik
Zarejestrowany: 2011-07-08

Re: Zapobieganie zmiany adresu ip przez użytkownika

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

 

#6  2011-12-05 14:08:28

  Jacekalex - Podobno człowiek...;)

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

Re: Zapobieganie zmiany adresu ip przez użytkownika

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)


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

Offline

 

#7  2011-12-07 12:51:16

  czeri - Użytkownik

czeri
Użytkownik
Zarejestrowany: 2011-07-08

Re: Zapobieganie zmiany adresu ip przez użytkownika

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

 

#8  2011-12-07 18:56:44

  Jacekalex - Podobno człowiek...;)

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

Re: Zapobieganie zmiany adresu ip przez użytkownika

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)


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

Offline

 

#9  2011-12-07 19:21:36

  czeri - Użytkownik

czeri
Użytkownik
Zarejestrowany: 2011-07-08

Re: Zapobieganie zmiany adresu ip przez użytkownika

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

 

#10  2011-12-07 20:18:43

  Jacekalex - Podobno człowiek...;)

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

Re: Zapobieganie zmiany adresu ip przez użytkownika

Z iphona i Androida zrobiłbym VPN typu OpenVPN, Ipsec czy SSH, i będą mogli się łaczyć nawet z Bangkoku.


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

Offline

 

Stopka forum

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

[ Generated in 0.008 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00097 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.116.85.204' WHERE u.id=1
0.00084 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.116.85.204', 1732227336)
0.00049 SELECT * FROM punbb_online WHERE logged<1732227036
0.00055 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.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00200 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.00081 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=20172
Total query time: 0.00585 s