Skocz do zawartości

Iptables Kolejność Reguł


MC'

Rekomendowane odpowiedzi

Witam,

 

Mój skrypt iptables wygląda tak:

 

----------------------------------------
#	ZMIENNE
#----------------------------------------
	IPT="/sbin/iptables"
	MDP="/sbin/modprobe"

	SSH_PORT="2345"

	WWW="8008"

#-----------------------------------------
#	Ladowanie Modulow
#-----------------------------------------

	#$MDP ip_conntrack
	#$MDP ip_conntrack_ftp

#-----------------------------------------
#	 Flush all current rules from iptables
#----------------------------------------
	 $IPT -F

#------------------------------------------
# Set default policies for INPUT, FORWARD and OUTPUT chains
#------------------------------------------
	  $IPT -P INPUT   DROP
	  $IPT -P FORWARD DROP
	  $IPT -P OUTPUT  DROP

#-------------------------------------------
# Set access for localhost
#------------------------------------------
	$IPT -A INPUT  -i lo -j ACCEPT
	$IPT -A OUTPUT -o lo -j ACCEPT

#------------------------------------------
# Allow SSH connections on tcp port 2345
# This is essential when working on remote servers via SSH to prevent locking yourself out of the system
#------------------------------------------
# Tylko logowanie ssh na server z serwera juz nie da sie nigdzie logowac
	$IPT -A INPUT  -p tcp --dport $SSH_PORT -m state --state NEW,ESTABLISHED 	-j ACCEPT
	$IPT -A OUTPUT -p tcp --sport $SSH_PORT -m state --state ESTABLISHED 		-j ACCEPT
#------------------------------------------
#  PING (8- echo-request; 0 - echo-reply)
#------------------------------------------
# Incoming Ping
        $IPT -A INPUT  -p icmp --icmp-type 8  -m state --state NEW,ESTABLISHED,RELATED      -j ACCEPT
        $IPT -A OUTPUT -p icmp --icmp-type 0  -m state --state     ESTABLISHED,RELATED      -j ACCEPT

# Outgoing Ping
        $IPT -A OUTPUT -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED       -j ACCEPT
        $IPT -A INPUT  -p icmp --icmp-type 0 -m state --state     ESTABLISHED,RELATED       -j ACCEPT

#--------------------------------------
#       NTP clients
#--------------------------------------
        $IPT -A INPUT -p udp --dport 123 -m state --state NEW -j ACCEPT


#-------------------------------------------
#  YUM port 80 bo yum uzywa http do laczenie sie z repozytoriami
#-------------------------------------------
        #initaiating yum conection
                $IPT -A OUTPUT -p tcp --dport 80 -j ACCEPT
                $IPT -A INPUT  -p tcp --sport 80 -j ACCEPT

#------------------------------------------
#       DNS - needed for ping domins and yum resolving the domain names
#------------------------------------------
        $IPT -A OUTPUT -p udp --sport 1024:65535	--dport 53         -m state --state NEW,ESTABLISHED -j ACCEPT #!!!!!!
	$IPT -A INPUT  -p udp --sport 53    		--dport 1024:65535 -m state --state ESTABLISHED     -j ACCEPT


 

W takiej konfiguracji nie działą mi ssh. Gdy jednak zakomentuję wpis DNS z wyrzyknikami:

 $IPT -A OUTPUT -p udp --sport 1024:65535	--dport 53         -m state --state NEW,ESTABLISHED -j ACCEPT

 

i zastosuje reguły ze skryptu to mogę się podłączyć na ssh. W przeciwnym razie ssh nie łaczy się.

 

Jak to możliwe ? Czy to problem z tym że port 2345 jest w zakresie DNS i STATE się gryzą?

 

Odnośnik do komentarza
Udostępnij na innych stronach

Czy SSH na pewno nie działa,czy po chwili cię wpuszcza (poczekaj i sprawdź)?

 

Załadowałem regułki twojego FW u mnie na stacji i... działa jak trzeba. :)

 

Dodaj regułki logujące na sam koniec:

 

IPTABLES -A INPUT -j LOG
IPTABLES -A OUTPUT -j LOG

 

a potem pokaż nam /var/log/messages podczas próby łączenia się na ssh.

 

Pozdrawiam

Edytowane przez Gość
Odnośnik do komentarza
Udostępnij na innych stronach

Dziwne jest to, że wpuszcza mnie wtedy gdy nie jestem w firmie: neostrada, plus. Z firmowego mnie nie puszcza mimo, że puszczało. Dziś po wpisaniu

 

ssh user@IP -p 2345 
Connection closed by 212.182.24.34
 

Połączenie zamknięte po jakiś 5 min. Ale fakt masz rację. Z domu jak się łączę to muszę poczekać dobre 30 sek na prompt pytający o hasło.

Logi z moim IP są takie:

cat /var/log/messages | grep 213.25.123 //moje ip

Mar 13 17:16:23 host kernel: IN=eth0 OUT= MAC=ff:ff:ff:ff...... SRC=213.182.25.123 DST=213.182.25.255 LEN=161 TOS=0x00 PREC=0x00 T=64 ID=0 DF PROTO=UDP SPT=17500 LEN=141
 
Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

Dobra a teraz zagadka. Jeśli wpiszę linie DNS w tej kolejności:

 

$IPT -A OUTPUT -p udp --sport 1024:65535    --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT 
$IPT -A INPUT -p udp --sport 53         --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
 

SSH z pracy nie działa z innych IP działa.
 Gdy zamienie je kolejnoscią SSH działa również z lokalnej sieci serwera w pracy.. WTF to jest dla mnie zagadka.


Czy ktoś jest w stanie mi to wyjaśnić jaki drobny szczegół jest zmieniony zamieniając kolejność tych reguł?

Odnośnik do komentarza
Udostępnij na innych stronach

Wątpię żebo komus się chciało dumać. Zrób może dla kazdego przypadku

iptables -S > przypadekX.txt

I zapodaj oba pliki wynikowe bo coś dziwne to jest.

Jest jakiś konkretny powód dla którego ograniczasz porty (i upewniłeś się że pakiety zapytań zawsze przychodzą/wychodzą z portu >1024)?

Odnośnik do komentarza
Udostępnij na innych stronach

Dla przypadku NIEdziałajacego z lokalnych IP:

iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT DROP
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 2345 -m state --state NEW,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p udp -m udp --dport 123 -m state --state NEW -j ACCEPT 
-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT 
-A INPUT -p udp -m udp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 8008 -j ACCEPT 
-A OUTPUT -o lo -j ACCEPT 
-A OUTPUT -p tcp -m tcp --sport 2345 -m state --state ESTABLISHED -j ACCEPT 
-A OUTPUT -p icmp -m icmp --icmp-type 0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A OUTPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A OUTPUT -p udp -m udp --sport 1024:65535 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT 
-A OUTPUT -p tcp -m tcp --sport 8008 -j ACCEPT 

Dla przypadku działającego SSH ze wszystkich IP czyli po zamianie kolejnosci wpisów DNS (tyle że DNS wtedy leży):

 iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT DROP
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 2345 -m state --state NEW,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p udp -m udp --dport 123 -m state --state NEW -j ACCEPT 
-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT 
-A INPUT -p udp -m udp --sport 53 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 8008 -j ACCEPT 
-A OUTPUT -o lo -j ACCEPT 
-A OUTPUT -p tcp -m tcp --sport 2345 -m state --state ESTABLISHED -j ACCEPT 
-A OUTPUT -p icmp -m icmp --icmp-type 0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A OUTPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A OUTPUT -p tcp -m tcp --sport 8008 -j ACCEPT 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 months later...

przecież skrypt nie bierze pod uwagę interfejsów (zewnętrzny - z domu czy wewnętrzny - z pracy) Oba traktuje tak samo. Dziwna rzecz albo problem gdzieś indziej :(

 

Czy nie jest czasami tak iż w przypadku ssh połączenie jest nawiązywane na porcie 22 (lub innym wybranym porcie nasłuchowym) a potem sesja już na innym dowolnym porcie jest kontynuowana??

czy nie jest potrzebny taki wpis??

 

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  

 

 

Czy zawsze trzeba blokować pakiety wychodzące z komputera ?? bo przecież sami siebie nie będziemy atakować ??

 

 

iptables -P OUTPUT ACCEPT 

 

ja kiedyś używałem taki skrypcik na domowym serwerku

 

echo "Startowanie firewall-a..."
  iptables -P INPUT DROP
  iptables -P FORWARD DROP
  iptables -P OUTPUT ACCEPT
#akceptujemy sesję które nasz komputer zainicjował 
  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
#ssh wraz z zabezpieczeniem przed brutalnym atakiem - 3 błędne hasła w ciągu 21s i disconnect
  iptables -A INPUT -p tcp --dport ssh -m state --state NEW -m recent --update --second 21 --hitcount 3 -j DROP 
  iptables -A INPUT -p tcp --dport ssh -m state --state NEW -m recent --set
#jeśli poprzednie reguły nie odwaliły ssh to akceptuj
  iptables -A INPUT -p tcp --dport ssh  -j ACCEPT
#wpuść na stronę www
  iptables -A INPUT -p tcp --dport http -j ACCEPT 
# Explicitly disable ECN
  if [ -e /proc/sys/net/ipv4/tcp_ecn ]
    then
      echo 0 > /proc/sys/net/ipv4/tcp_ecn
    fi
# Disable spoofing on all interfaces
  for x in ${INTERFACES} do
        echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter
  done
Odnośnik do komentarza
Udostępnij na innych stronach

Czy zawsze trzeba blokować pakiety wychodzące z komputera ?? bo przecież sami siebie nie będziemy atakować ??

Ale jak Ciebie ktoś zaatakuje (np. przez nieuwagę ściągniesz coś do siebie), to nie będzie np. wysyłał spamu z twojego komputera. Blokować nie trzeba, ale jeśli firewall ma mieć jakiś sens to warto. W sumie ludzie jadą na domyślnych ustawieniach i też jakoś z tym żyją. Nawet z INPUT na ACCEPT.
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...