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/.


Członek DUG



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




Moderator Mamut
dac regulki w kolejnosci:
* zezwalamy na mysql hostom podanym w pliku
* blokujemy mysql wszystkim
* zezwalamy na nawiazane polaczenia
Offline


Członek DUG



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

Członek DUG


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


Członek DUG



początek to ustawianie modułów i wpisów do kernela,
więc nie jest w środku :). Ale spoko już poprawiam i sprawdzam
Offline




Moderator Mamut
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


Członek DUG



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




Moderator Mamut
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


Członek DUG



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