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/.
Hej,
Uczę się iptables i blokowania portów. Niestety mam kilka pytań i prosił bym o pomoc
#!/bin/bash F="/sbin/iptables" M="/sbin/modprobe" LOG="ipt#" L="listaon" #interfejs globalny - dla sieci zewnetrznej G_NET_NAME="eth0" G_NET_IP="192.168.1.246" # No spoofing #ignorowanie ICMP echo request wysylanych na adres rozgloszeniowy echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts #ochrona przed SYN flood echo "1" > /proc/sys/net/ipv4/tcp_syncookies #refuse source routed packets echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects #walidacja zrodla za pomoca reversed path (RFC1812). echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter #logowanie pakietow z nieprawidlowych adresow echo "1" > /proc/sys/net/ipv4/conf/all/log_martians #Blokada ICMP #cho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #cho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts #ICM ODPORNE NA ATAK $F -A INPUT -p ICMP -s 0/0 --icmp-type 8 -j DROP $F -A INPUT -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT #WGRYWAMY MODULY $M ip_tables $M ip_nat_ftp $M iptable_filter $M ip_conntrack_ftp # CZYSZCZENIE REGOL $F -F # first set the default behaviour => accept connections $F -P INPUT DROP $F -P OUTPUT ACCEPT $F -P FORWARD ACCEPT $F -A INPUT -j LOG -m limit --limit 15/h --log-prefix '**IPTAB**' --log-level 4 # 15 logów na godzine $F -A OUTPUT -j LOG -m limit --limit 15/h --log-prefix '**IPTAB**' --log-level 4 $F -A FORWARD -j LOG -m limit --limit 15/h --log-prefix '**IPTAB**' --log-level 4 # ZESTAWIONE POLACZENIA PODTRZYMUJEMY $F -A INPUT -i $G_NET_NAME -m state --state ESTABLISHED,RELATED -j ACCEPT # PETLA ZWROTNA LO DOPUSZCZONA $F -A INPUT -i lo -j ACCEPT # DOPUSZCZONE SERWISY # HTTP HTTPCACHE $F -A INPUT -s 0/0 -p tcp --dport 80:8080 -j ACCEPT #HTTPS $F -A INPUT -s 0/0 -p tcp --dport 443 -j ACCEPT #SSH Z BLOKOWANIEM PO 3 PROBACH NA 60 sek $F -A INPUT -s 0/0 -p tcp --dport 22 -j ACCEPT $F -I INPUT -p tcp --dport 22 -i $G_NET_NAME -m state --state NEW -m recent --set $F -I INPUT -p tcp --dport 22 -i $G_NET_NAME -m state --state NEW -m recent --update --second 60 --hitcount 3 -j DROP $F -I INPUT -p tcp --dport 22 -i $G_NET_NAME -m state --state NEW -m recent --update --second 60 --hitcount 3 -j LOG --log-prefix '**SSH HACK **' #MYSQL DOPUSZCZ JESLI BYL W PLIKU for i in `cat $L |cut -d ' ' -f 1`; do $F -A INPUT -s $i -p tcp --dport 3306 -j ACCEPT done; #POSTGRESQL for i in `cat $L |cut -d ' ' -f 1`; do $F -A INPUT -s $i -p tcp --dport 5432 -j ACCEPT done; #FTP #$F -A INPUT -p tcp -s 0/0 --source-port 20:21 -j ACCEPT #FTP PASSIV #F -A INPUT -p tcp -s 0/0 --destination-port 62000:64000 -j ACCEPT # End message echo "Firewall .... OK"
Problem jest w tym, że jeśli host który ma mieć dostęp do MySQL lub postgreSQL usunę z pliku listaon i przeładuję wczytam jeszcze raz mój plik ma nadal dostęp.
Prawdopodobnie jest to z tą regułką związane
$F -A INPUT -i $G_NET_NAME -m state --state ESTABLISHED,RELATED -j ACCEPT
Co muszę zrobić, żeby jednak zrywał takie połączenie ?
Drugie moje pytanie dotyczy, czy warto coś jeszcze dodać, do blokady np. Blastera lub Sasla ? jeśli tak to jak ?
Będę bardzo wdzięczny za pomoc
Offline
dac regulki w kolejnosci:
* zezwalamy na mysql hostom podanym w pliku
* blokujemy mysql wszystkim
* zezwalamy na nawiazane polaczenia
Offline
zmieniłem jak poleciłeś
Dałem na końcu tą regułkę
$F -A INPUT -i $G_NET_NAME -m state --state ESTABLISHED,RELATED -j ACCEPT
Wydaje mi się że mam dobrze
1. UWALAM wszystko INPUT -P DROP
2. Wpuszczam to co chcę
3. Zostawiam nawiązane połączenia
Obiaw jest taki sam nie odcina hosta który nie powinien mieć dostępu do 3306 :(
Offline
nie wiem czy nie palne jakiejs glupoty, ale dlaczego dales czyszczenie regul w srodku?
a jakbys zaczal od czyszczenia regul zanim cokolwiek wpuscisz ...
dopiero raczkuje w temacie, wiec jak glupote palnalem to przepraszam
Offline
początek to ustawianie modułów i wpisów do kernela,
więc nie jest w środku :). Ale spoko już poprawiam i sprawdzam
Offline
INPUT -P DROP nie jest na poczatku ... to ustawia polityke domyslna czyli regula uwalenia wszystkiego jest dopiero nakoncu ... wiec jezeli pomiedzy wpuszczeniem wybranych mysql a wpuszczeniem nawiazanych nie masz jawnego DROP wszystkich pozostalymch mysql to masz zle ...
btw. pokaz aktualny kod
Offline
Myślałem że jak dam cały INPUT -P DROP to zablokuję wszystkie porty.
Potem będę odblokowywał te które mi są potrzebne. Ale wyciągając wnioski z tego co Ty piszesz to tak nie działa :(
To jak zrobić żeby uciąć wszystkie porty i wpuszczać wybrane ?
Offline
to dziala tak ze blokuje wszystko ... ale jako ze reguly sa przetwarzane po koleji a polityka domyslna jest ostatnia regula (gdy przetwarzanie nie zostalo zakonczone DROP lub ACEPT przez wczesniejsze reguly stosujemy polityke domyslna)
tak jak pisalem:
* zezwalamy na mysql hostom podanym w pliku
for i in `cat $L |cut -d ' ' -f 1`; do $F -A INPUT -s $i -p tcp --dport 3306 -j ACCEPT done;
* blokujemy mysql wszystkim
$F -A INPUT -p tcp --dport 3306 -j DROP
* zezwalamy na nawiazane polaczenia
$F -A INPUT -i $G_NET_NAME -m state --state ESTABLISHED,RELATED -j ACCEPT
Offline
Oki bardzo dziękuję za pomoc. Potestuję to co podałeś.
Chyba doszedłem gdzie miałem problem. Niestety wszystko testowałem na VirtualBox i chyba dlatego on wpuszcza wszystkich.
Zaraz odpalę to na zewnątrz :)
Ale dzięki za poradę
Offline