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
Ludzie jak poprawnie zapisać regułkę w iptables żeby przekierowała zablokowanego klienta za każdym razem jak kliknie w jakąś stronkę na inny adres z własną stroną www ?
Samo przekierowanie działa ale klient jest całkowicie zablokowany
Tak wygląda regułka
iptables -t nat -A PREROUTING -i wlan0 -p tcp -s 125.1.1.100 --dport 80 -j DNAT --to-destination 125.1.1.1:100
Offline
Przekierowujesz pacjenta na jego wlasny adres? nic dziwnego, że blokuje.
Co rozumiesz przez czasowe?
Bo jesli chodzi o blokady np od wtorku 16.37 do czwartku 13.53 - to iptables, moduł time da radę.
Lista opcji w wyniku
iptables -m time --help
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2012-06-22 14:54:01)
Offline
Server jest jednocześnie routerem 125.1.1.1 to brama a 125.1.1.100 to adres klienta Mam zainstalowane apache2 a na nim stronkę z informacją "Pora Zapłacić" Chciałbym żeby ta stronka w trakcie przeglądania internetu mu się pojawiała na 5 sekund i znikała na 10 minut i tak do uiszczenia opłat Szukałem i MAN mi nie pomaga :(
Próbowałem takiej regułki ale stronka cały czas wisi i klient jest zablokowany ...
iptables -t nat -A PREROUTING -p tcp --dport 80 -s 125.1.1.100 -m limit --limit 5/s --limit-burst 1 -j DNAT --to-destination 125.1.1.1:100
Ostatnio edytowany przez yomal79 (2012-06-22 15:00:46)
Offline
Trzeba było wyjaśnić w pierwszym poście, zaintereduj się modułami hashlimit i recent, te potrafią conieco w takim zastosowaniu.
Choć zazwyczaj stosuje się je do blokowania ataków bruteforce i limitowania polączeń.
Offline
Szukam szukam i nic Jakieś pomysły Czy ktoś się spotkał z czymś takim ?
Offline
Spotkał:
Stare: http://stary.dug.net.pl/texty/masq.php
Inna sprawa, ze zastanawiam się, czy tu chodzi o poradę, czy o coś w rodzaju zadania domowego, czy pieluszek dla administratora.
Reguly iptables nie działają w próżni, są częscią całego firewalla.
I można np przepuszaczać pacjentów legalnych przy pomocy ipset:
iptables -t nat -A PREROUTING -p tcp --dport 80 -m set --match-set zablokowani src -m hashlimit --hashlimit 1 --limit-burst 1 -j DNAT --to-destination 125.1.1.1:100 iptables -t nat -A PREROUTING -i eth0 -m set --match-set pacjenci src -j ACCEPT
Do tego domyślna polityka na DROP, i mamy sprawdzanie mac:ip i obcinanie niepłacących, żeby np co godzinę, czy jak tam w hashlimit ustawisz, widzieli ostrzeżenie..
Pisane na kolanie, nie sprawdzone (hashlimit pewnie trzeba poprawić), ale mniej więcej tak to powinno wyglądać.
Do listy pacjentów i zablokowanych radzę ipset, znacznie wygodniej się go używa, i ma tablice mac:ip, co się przydaje w takich sytuacjach.
A tu masz przykład użycia ipseta:
#!/bin/bash cd /var/hasiok wget -N http://www.spamhaus.org/drop/drop.lasso if [ -n "$1" ]; then DropList="$1" else DropList="/var/hasiok/drop.lasso" fi if [ ! -x /usr/sbin/ipset ]; then echo "Missing ipset command line tool, exiting." >&2 exit 1 fi if [ -s "$DropList" ]; then /usr/sbin/ipset create spamhaus hash:net 2>/dev/null /usr/sbin/ipset flush spamhaus 2>/dev/null else echo "Unable to find drop list file $DropList . Perhaps do:" >&2 echo "wget http://www.spamhaus.org/drop/drop.lasso -O $DropList" echo "exiting." >&2 exit 1 fi; cat "$DropList" \ | sed -e 's/;.*//' \ | grep -v '^ *$' \ | while read OneNetBlock ; do sleep 0.01; /usr/sbin/ipset add spamhaus "$OneNetBlock"; done; exit 0;
to akurat przyklad pakowania listy XBL Spamhausa do firewalla
Ipseta można użyć np ze skryptem, który wyciągnie z bazy sql listę pacjentów, i przerobi ją na tablicę ipseta.
To samo z listą zablokowanych.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2012-06-22 16:15:32)
Offline
Ale z tymi pieluszkami to nie musiałeś :)
...teraz się wyda że robie w ubranka :P
Tak na serio to domowe zastosowanie Mam L4 bo mnie krtań chwyciła i z braku laku sobie na serwerku dłubie
Offline
Chyba coś nie działa.
Zgodnie z tym co jest napisane w MAN dla iptables -m hashlimits --help
hashlimit match options: --hashlimit-upto <avg> max average match rate [Packets per second unless followed by /sec /minute /hour /day postfixes] --hashlimit-above <avg> min average match rate --hashlimit-mode <mode> mode is a comma-separated list of dstip,srcip,dstport,srcport (or none) --hashlimit-srcmask <length> source address grouping prefix length --hashlimit-dstmask <length> destination address grouping prefix length --hashlimit-name <name> name for /proc/net/ipt_hashlimit --hashlimit-burst <num> number to match in a burst, default 5 --hashlimit-htable-size <num> number of hashtable buckets --hashlimit-htable-max <num> number of hashtable entries --hashlimit-htable-gcinterval interval between garbage collection runs --hashlimit-htable-expire after which time are idle entries expired?
To taki łańcuch powinien pozwolić mi na wykonanie 10 pingów do serwera a jedynasty powinien doprowadzić do przekierowania adresu 125.1.1.100 na adres 125.1.1.1:100
Kurcza paka mi to nie działa
Tak mam w firewall
#! /bin/sh ### BEGIN INIT INFO # Provides: firewall # Required-Start: $syslog $network # Required-Stop: $syslog $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: firewall # Description: firewall ### END INIT INFO start_f(){ echo "Uruchomienie firewall..." echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -X iptables -t nat -X iptables -t nat -F iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED iptables -t nat -A POSTROUTING -s 100.1.1.0/24 -j MASQUERADE iptables -A FORWARD -s 100.1.1.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -s 125.1.1.0/24 -j MASQUERADE iptables -A FORWARD -s 125.1.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 8525 -j ACCEPT iptables -t nat -A PREROUTING -i wlan0 -p tcp -s 125.1.1.100 --dport 80 -m hashlimit --hashlimit-upto 5/sec --hashlimit-burst 10 --hashlimit-name block --hashlimit-mode srcip -j DNAT --to-destination 125.1.1.1:100 } stop_f() { echo "Zatrzymywanie firewall..." iptables -F iptables -F -t nat iptables -X -t nat iptables -F -t filter iptables -X -t filter iptables -Z iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT } case "$1" in start) start_f ;; stop) stop_f ;; restart) stop_f start_f ;; *) echo "Użycie firewalla: etc/init.d/firewall start|stop|restart" ;; esac exit 0
Offline
iptables -A SMTP ! -i lo -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -m hashlimit --hashlimit-upto 1/min --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-name smtp -j ACCEPT
To regułka do małego serwera poczty, pozwalająca na 10 połączeń równocześnie - moduł connlimit, ale 1 połączenia na minutę z jednego IP (to realizuje hashlimit).
Wartość hashlimit sprawdzona empirycznie, przy mniejszej wartości nie wpuszczał maili.
Możesz ją potestować i dopasować do swojej sytuacji.
Natomiast zamiast wrzucania skryptu, na przyszłość naucz się poleceń
iptables -S iptables -t nat -S iptables -t mangle -S iptables -t raw -S
w ten sposób wyświetla sie reguły w kolejności, w jakiej wykonuje je firewall, i są przez to czytelniejsze od jakiegoś skryptu.
Poza tym doś clamerski ten skrypt, znacznie lepiej moim zdaniem używać poleceń iptables-save / iptables-restore
Ostatnio edytowany przez Jacekalex (2012-06-22 18:33:16)
Offline
To znaczy że coś nie tak w skrypcie ?
Skorzystałem z tego co znalazłem w poście o MASQUARADE
Offline
Nie sprawdzałem całego skryptu, zwróciłem tylko uwagę na bezsensowność walenia reguł w skrypcie w /etc/init.d
Spróbuj tak:
iptables-save >/na/dysku/plik iptables-restore </na/dysku/plik
i zo baczysz, ze to znacznie prostrzy i skuteczniejszy sposób sterowania firewallem - w wariancie "dynamicznym" - po uruchomieniu trybu restore wczytuje wszystko, co ma zapisane w pliku reguł.
Jak ubierzesz to w skrypt, który przy wyłączaniu kompa będzie robil save, a przy uruchomieniu restore, masz calkiem sprawny firewall.
Jak natomiast chcesz skryptem, to skrypt robisz w /usr/local/sbin/skrypt - i potem możesz go odpalić bezproblemowo z powłoki roota, a do startu systemu wystarczy go podlinkować do folderu /etc/network/if-up.d albo /etc/network/if-pre-up.d, lub wywołać z pliku konfiguracyjnego /etc/network/interfaces.
W /etc/network masz stadndardowe zaczepy funkcji odpalanych przy włączeniu i wyłączeniu sieci, które znacznie lepiej nadają sie do sterowania firewallem, aniżeli skrypt startowy w /etc/init.d.
Krótko pisząc, w Debianie czytaj najpierw
man interfaces
Offline
@Jacekalex pewnie masz mnie dość
Znalazłem coś takiego http://www.archivum.info/pl.comp.os.linux/2008-07/0 … iptables.html
Dostaje taki komunikat
root@debian:~# /etc/init.d/firewall restart Zatrzymywanie firewall... Uruchomienie firewall... iptables v1.4.8: option `limit' requires an argument Try `iptables -h' or 'iptables --help' for more information.
Jak dodać moduł "limit" do kernela ?
Offline
Masz ten modul limit w jaju, tylko w skrypcie masz jakąś literówkę, dlatego nie lapie argumentów dla limit.
Reguły iptables się pisze w jednej linijce.
Offline
Proszę o zweryfikowanie
iptables -t nat -A PREROUTING -i wlan0 -p tcp -s 125.1.1.100 --dport 80 -m limit --limit 30/sec --limit-burst 3 -j DNAT --to-destination 125.1.1.1:100
Przez chwile to działało i nawet miałem już wkleić ale po restarcie przeglądarki zdechło ...
Offline
to wrzuć do terminala (albo konsoli) na którym jesteś zalogowany na roota, i gotowe.
Offline
Coś z tym modułem jest nie teges Jak ustawie --limits-burst 1 --limits 1/minute to prawie działa...
Prawie znaczy się raz na jakiś czas pokazuje się moja stronka Co jakiś czas też jest komunikat że nie można znaleźć jakiegoś pliku ze strony którą aktualnie przeglądałem Dziwi mnie to że przeglądarka wyświetla że szuka tego pliku na moim serwerze Mimo wszystko jakakolwiek próba zmiany tych parametrów kończy się :
albo nie działaniem mojej stronki wcale
albo cały czas ona jest i nic się niestety nie da zrobić
Offline
Poddałem się i postawiłem na "cron"
Napisałem dwa skrypty Jeden "firewall" gdzie na początku jest czyszczenie tablicy routingu a w drugim jest łańcuch który wywala usera na stronkę www
W cronie ustawiłem żeby co 5 minut odpalał się skrypt z przekierowaniem a po 5/sec startował firewall czyszczący tablice i pozwalający na dalsze korzystanie z internetu
Mimo wszystko dziękuje za pomoc i wytrwałość bo pewnie bym na to sam nie wpadł gdyby nie to forum :) i
Offline
Strony: 1