Zablokowany użytkownik regu

Konfiguracja serwerów, usług, itp.
Najkon
Posty: 20
Rejestracja: 29 lipca 2007, 14:43
Lokalizacja: Polska / Szczecin

Zablokowany użytkownik regułą IPTABLES, ale zezwolić na wybrane połączenia

Post autor: Najkon »

Witam,

Mam mały problem z jedną konfiguracją. Mam sobie użytkowników w sieci, którzy są rozpoznawani za pomocą MAC-ków (czyli standardowo).
Od paru dni usiłuje wywalczyć taką konfigurację regułek iptables.

Początek:

Kod: Zaznacz cały

# Jeżeli użytkownik NIE jest zablokowany. Dodawany jest za pomocą regułki
[B]nr 1.[/B] -A FORWARD -s IP -m mac --mac-source MAC -j ACCEPT
# reszte wycinamy
[B]nr 2.[/B] -A FORWARD -j DROP

Natomiast jeżeli użytkownik JEST zablokowany wówczas regułka nr 1. jest pomijana. A dodana jest za to:

Kod: Zaznacz cały

# wyświetlenie komunikatu on WWW
-t nat -A PREROUTING -s IP-p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.100.254:201
Teraz usiłuje wywalczyć, aby taki zablokowany użytkownik pomimo zablokowania czyli bez regułki nr 1. zezwolić na połączenia do wybranych usług. Konkretnie chodzi mi o:
1.) Strona Banków port: 80
2.) Gadu Gadu - (z tego co wiem, choć nie jestem w 100% pewny) nadaje na protach 80, 8074, 443

Co już próbowałem:

Kod: Zaznacz cały

[B]# PRÓBA nr 1. dla serwerów Gadu-Gadu
[/B]-t nat -A PREROUTING -s 192.168.100.10/32 -d 91.197.0.0/16 -p tcp -m tcp --dport 80 -j RETURN
-t nat -A PREROUTING -s 192.168.100.10/32 -d 91.197.0.0/16 -p tcp -m tcp --dport 443 -j RETURN
-t nat -A PREROUTING -s 192.168.100.10/32 -d 91.197.0.0/16 -p tcp -m tcp --dport 8074 -j RETURN
Nie udaje się.

Kod: Zaznacz cały

-A FORWARD -s IP -m mac --mac-source MAC -j ACCEPT
-A FORWARD -p tcp -s 192.168.5.10 -d 91.197.0.0/16 -m multiport --dports 80,443,8074 -j RETURN
-t nat -A PREROUTING -s IP-p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.200.254:201
Też nic nie daje.

Czy ktoś bieglejszy mógłby pomóc w rozwikłaniu tego że problemu? :)
Jeżeli niezbyt jasno napisałem o problemie proszę pisać. Postaram się jakoś jakoś inaczej opisać
Feasuro
Posty: 67
Rejestracja: 12 grudnia 2008, 10:18
Lokalizacja: Antarktyda

Post autor: Feasuro »

Może coś w tym stylu:

Kod: Zaznacz cały

#Najpierw udostepniasz jakies kilka uslug (dla wszystkich nie zależy od MAC-ów)
 iptables -A FORWARD -s jakis_adres -d jakis_adres -p tcp --dport jakis_port -j  ACCEPT
#Potem dodajesz uzytkownikow z "whitelist"
iptables -A FORWARD -s IP -m mac --mac-source MAC -j ACCEPT
#Dla reszty polaczenia zablokowane
iptables -A FORWARD -j DROP
Najkon
Posty: 20
Rejestracja: 29 lipca 2007, 14:43
Lokalizacja: Polska / Szczecin

Post autor: Najkon »

Niestety to nie pomaga.

Trzeba wziąć pod uwagę, że w linijce firewall-a występuje jeszcze na końcu regułka:

Kod: Zaznacz cały

-A PREROUTING -s 192.168.100.10/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.200.254:201
która to przekierowuje zapytania na WWW do IP:201 na którym nasłuchuje apache z odpowiednim komunikatem dla użytkownika
Feasuro
Posty: 67
Rejestracja: 12 grudnia 2008, 10:18
Lokalizacja: Antarktyda

Post autor: Feasuro »

Ale ta regułka dotyczy tylko połaczeń http (na port 80), zatem nie będzie kolidować z udostępnianymi usługami. Chyba że chcesz udostępniać wszystkim też połączenia http (np. z konkretnymi adresami IP). Możesz to załatwić w ten sposób:

Kod: Zaznacz cały

# domyślnie blokujemy
iptables -P FORWARD DROP
# usługa pod adresem 'serv_addr' na porcie XX dostępna dla wszystkich łączących się z 'user_addr'
iptables -A FORWARD -s user_addr -d serv_addr -p tcp --dport XX -j  ACCEPT
# uzytkownikom z whitelisty pozwalamy na połączenie
iptables -A FORWARD -s user_addr -m mac --mac-source MAC -j ACCEPT

# użytkownicy z listy nie będą przekierowani
iptables -t nat -A PREROUTING -s user_addr -m mac --mac-source MAC -j RETURN
# przekierowanie blokowanych uzytkownikow
iptables -t nat -A PREROUTING -s 192.168.100.10/32 -p tcp --dport 80 -j DNAT --to-destination 192.168.200.254:201
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2305
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

A jak podmienisz "RETURN" na "ACCEPT" w linijce z dopuszczonymi adresami?
Feasuro
Posty: 67
Rejestracja: 12 grudnia 2008, 10:18
Lokalizacja: Antarktyda

Post autor: Feasuro »

RETURN w łańcuchach podstawowych odwołuje się do domyślnej polityki łańcucha czyli zadziała jak ACCEPT. A dobrym nawykiem jest używanie ACCEPT DROP i REJECT tylko w tabeli filter.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2305
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

Dobrym nawykiem jest, mój drogi, stosowanie domyślnej polityki na DROP i dodawanie wyjątków, w odwrotnym kierunku najłatwiej coś przeoczyć.
Feasuro
Posty: 67
Rejestracja: 12 grudnia 2008, 10:18
Lokalizacja: Antarktyda

Post autor: Feasuro »

Oczywiście masz rację, ale to dotyczy tabeli filter. W tabeli nat nic nie stoi na przeszkodzie aby stosować politykę ACCEPT.
Najkon
Posty: 20
Rejestracja: 29 lipca 2007, 14:43
Lokalizacja: Polska / Szczecin

Post autor: Najkon »

Niestety nie udało się żadne z tych rozwiązań.
Zastosowałem połączenie iptables oraz Squid3 . Reszte portów drop, a 80 został przekierowany -j REDIRECT na port proxy. :)
ODPOWIEDZ