iptables: firewall i masquerade

Serwery i sieci oparte na Slackware, wszelkiego rodzaju usługi, troubleshooting.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
tssmoq
Użytkownik
Posty: 53
Rejestracja: 2004-12-14, 19:52
Kontakt:

iptables: firewall i masquerade

Post autor: tssmoq »

Witam wszystkich forumowiczow!

Mam nastepujacy problem, postawilem firewalla poslugujac sie opisem ze stony sieci.krysiak.info oraz paru innych tutoriali i ksiazek. Nie wiem na ile zglebilem temat, w kazdym badz razie nie moge sobie poradzic z ta zapora (moze jestem zbyt glupi na to...). Problem wyglada tak: po wlaczeniu firewala hosty w lanie moga sie kontaktowac z routerem i z samba na nim postawiona, natomiast brak polaczenia z internetem z lokanych hostow (choc router widzi np. serwery dns itp). Natomiast gdy wylacze firewalla i zostawie sam routing (z pliku rc.inet1) wszystko dziala bez problemowo. Czy ktos mialby na tyle cierpliwosci, zeby przegladnac skrypt firewala i wskazac mi blad, bo sam siedze nad tym juz sporo i nic nie moge wymyslic. Z gory dziekuje.
A i jeszcze oba pliki (oczywiscie ze zmienionymi ip):

rc.inet1

#!/bin/sh
#/etc/rc.d/rc.inet1
# Poczatek skryptu
HOSTNAME='cat /etc/HOSTNAME'
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo

# Ładowanie modulow kart sieciowych (dopisac)


# Konfiguracja kart i routingu
/sbin/ifconfig eth0 80.70.60.5 netmask 255.255.255.0 broadcast 80.70.60.255 up
/sbin/route add default gw 80.70.60.1
/sbin/ifconfig eth1 10.0.0.7 netmask 255.255.255.0 broadcast 10.0.0.255 up

# Wlaczenie NAT
/usr/sbin/iptables -t filter -A FORWARD -s 10.0.0.0/255.255.255.0 -d 0/0 -j ACCEPT
/usr/sbin/iptables -t filter -A FORWARD -s 0/0 -d 10.0.0.0/255.255.255.0 -j ACCEPT
/usr/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.1 -d 0/0 -j MASQUERADE
/usr/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.3 -d 0/0 -j MASQUERADE
/usr/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.5 -d 0/0 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
/root/firewall.start
# Po skrypcie

firewall.start

#!/bin/sh
#Początek skryptu firewall'a

# Ładowanie modulow (conntrack sluzy do sledzenia polaczen)
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp

#Czyszczenie tablic iptables
/usr/sbin/iptables -F -t nat
/usr/sbin/iptables -X -t nat
/usr/sbin/iptables -F -t filter
/usr/sbin/iptables -X -t filter

# Zakaz odbierania i przepuszczania wszelkich pakietow
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P OUTPUT DROP
/usr/sbin/iptables -P FORWARD DROP

# Wylaczenie odpowiedzi na pingi
#/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Ochrona przed atakiem typu Smurf
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Odrzucenie pakietow "source route"
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

# Odrzucenie pakietow ICMP redirect (zmieniajace nasza tablice routingu)
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

# Ochrona przed blednymi komunikatami ICMP error
/bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# 0drzucenie, przez karty, pakietow z sieci z poza tablicy routingu
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

# Logowanie dziwnych pakietow (spoofed, source routed, redirects)
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

# Przepuszczamy ruch na petli zwrotnej lo bez ograniczen
/usr/sbin/iptables -A INPUT -i lo -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o lo -j ACCEPT

# Tworzymy nowy lancuch syn-flood, chroniacy przed atakami typu DoS (prawdopodobnie trzeba go bedzie ustawic recznie)
/usr/sbin/iptables -N syn-flood
/usr/sbin/iptables -A INPUT -i eth0 -p tcp --syn -j syn-flood
/usr/sbin/iptables -A syn-flood -m limit --limit 1/s --limit-burst 8 -j RETURN
/usr/sbin/iptables -A syn-flood -m limit --limit 1/s --limit-burst 8 -j LOG --log-level debug --log-prefix "IPT SYN-FLOOD: "
/usr/sbin/iptables -A syn-flood -j DROP

# Przepuszczanie nawiazanych polaczen ICMP i nawiazywanie polaczen pochodzacych z naszego hosta
/usr/sbin/iptables -A INPUT -i eth0 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A INPUT -i eth0 -p icmp -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o eth0 -p icmp -m state --state NEW -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o eth0 -p icmp -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o eth0 -p icmp -m state --state RELATED -j ACCEPT

# Logowanie pakietow uznanych za NEW bez ustawionej flagi syn i odrzucenie takich pakietow (gdyby bylo za duzo wylaczyc!!!)
/usr/sbin/iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j LOG --log-level debug --log-prefix "IPT NEW: "
/usr/sbin/iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP

# Logowanie i porzucenie pakietow sfragmentowanych (atak Jolt2) (gdyby bylo za duzo wylaczyc!!!)
/usr/sbin/iptables -A INPUT -i eth0 -f -j LOG --log-level debug --log-prefix "IPT FRAGMENTS: "
/usr/sbin/iptables -A INPUT -i eth0 -f -j DROP

# Zabezpieczenie anty-spoofingowe
# Pakiety z adresem zrodlowym ustawionym na nasz
/usr/sbin/iptables -A INPUT -i eth0 -s 80.70.60.5 -j DROP
# Pakiety z adresow nierutowalnych, multicast i zarezerwowanych
/usr/sbin/iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
/usr/sbin/iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
/usr/sbin/iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
/usr/sbin/iptables -A INPUT -i eth0 -s 224.0.0.0/4 -j DROP
/usr/sbin/iptables -A INPUT -i eth0 -d 224.0.0.0/4 -j DROP
/usr/sbin/iptables -A INPUT -i eth0 -s 240.0.0.0/5 -j DROP
/usr/sbin/iptables -A INPUT -i eth0 -d 127.0.0.0/8 -j DROP
#/usr/sbin/iptables -A INPUT -i eth0 -d 80.70.60.255 -j DROP
# SAMBA? M$
/usr/sbin/iptables -A INPUT -i eth1 -p udp -d 10.0.0.7 --dport 137 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A INPUT -i eth1 -p tcp -d 10.0.0.7 --dport 139 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Definicja mozliwych polaczen do naszego routera
# Łancuch INPUT
/usr/sbin/iptables -A INPUT -p tcp --sport 1024: --dport 22 -m state --state NEW -j ACCEPT # ssh z obu stron
/usr/sbin/iptables -A INPUT -p tcp --sport 1024: --dport 113 -m state --state NEW -j REJECT --reject-with icmp-port-unreachable
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A INPUT -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A INPUT -j LOG --log-level debug --log-prefix "IPT INPUT: "
/usr/sbin/iptables -A INPUT -j DROP

# Łancuch OUTPUT (tu mozna definiowac co meze wychodzic z sieci wewnetrznej)
/usr/sbin/iptables -A OUTPUT -m state --state ! INVALID -j ACCEPT
/usr/sbin/iptables -A OUTPUT -j LOG --log-level debug --log-prefix "IPT OUTPUT: "
/usr/sbin/iptables -A OUTPUT -j DROP

# Łancuch FORWARD
/usr/sbin/iptables -A FORWARD -i eth1 -p tcp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state NEW -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p tcp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p tcp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state NEW -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -o eth1 -p tcp -d 10.0.0.0/255.255.255.0 --dport 1024: -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A FORWARD -o eth1 -p tcp -d 10.0.0.0/255.255.255.0 --dport 1024: -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -o eth1 -p udp -d 10.0.0.0/255.255.255.0 --dport 1024: -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A FORWARD -o eth1 -p udp -d 10.0.0.0/255.255.255.0 --dport 1024 -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 411:413 -m state --state NEW -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 411:413 -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 411:413 -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -o eth1 -p udp -d 10.0.0.0/255.255.255.0 --sport 411:413 -m state --state ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -p icmp -m state --state ! INVALID -j ACCEPT
/usr/sbin/iptables -A FORWARD -j LOG --log-level debug --log-prefix "IPT FORWARD: "
/usr/sbin/iptables -A FORWARD -j DROP


Jeszcze jedno mi sie przypomnialo w hosts.allow mam wpisane 3 hosty przepuszczane, w hosts.deny nic, poniewaz gdy dodalem tam wpis ALL:ALL to nic nie przepuszczal
Awatar użytkownika
snaj
Moderator w st. spocz.
Posty: 1608
Rejestracja: 2004-10-10, 16:32
Lokalizacja: Warszawa
Kontakt:

Re: iptables: firewall i masquerade

Post autor: snaj »

hosts.allow i deny nie maja nic do routingu i maskarady.
# Łancuch FORWARD
/usr/sbin/iptables -A FORWARD -i eth1 -p tcp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state NEW -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p tcp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p tcp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state NEW -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 1024: -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -o eth1 -p tcp -d 10.0.0.0/255.255.255.0 --dport 1024: -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A FORWARD -o eth1 -p tcp -d 10.0.0.0/255.255.255.0 --dport 1024: -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -o eth1 -p udp -d 10.0.0.0/255.255.255.0 --dport 1024: -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A FORWARD -o eth1 -p udp -d 10.0.0.0/255.255.255.0 --dport 1024 -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 411:413 -m state --state NEW -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 411:413 -m state --state ESTABLISHED -j ACCEPT
/usr/sbin/iptables -A FORWARD -i eth1 -p udp -s 10.0.0.0/255.255.255.0 --sport 411:413 -m state --state RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -o eth1 -p udp -d 10.0.0.0/255.255.255.0 --sport 411:413 -m state --state ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A FORWARD -p icmp -m state --state ! INVALID -j ACCEPT
/usr/sbin/iptables -A FORWARD -j LOG --log-level debug --log-prefix "IPT FORWARD: "
/usr/sbin/iptables -A FORWARD -j DROP
ten zestaw regulek mnie oszolomil :cry:
TO ci w zupelnosci wystarcza :
/usr/sbin/iptables -t filter -A FORWARD -s 10.0.0.0/255.255.255.0 -d 0/0 -j ACCEPT
/usr/sbin/iptables -t filter -A FORWARD -s 0/0 -d 10.0.0.0/255.255.255.0 -j ACCEPT
Poza tym w fw czyscisz tabelki i zapominasz potem uruchomic maskarade :
/usr/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.1 -d 0/0 -j MASQUERADE
/usr/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.3 -d 0/0 -j MASQUERADE
/usr/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.5 -d 0/0 -j MASQUERADE
*
[color=blue]Sieci[/color]/[color=green]Serwery[/color]/[color=red]Security[/color] - Freelancer
*
Awatar użytkownika
tssmoq
Użytkownik
Posty: 53
Rejestracja: 2004-12-14, 19:52
Kontakt:

Re: iptables: firewall i masquerade

Post autor: tssmoq »

Co do tego rozbicia NEW, ESTABLISHD itd. to dlatego, ze wczesniej wywalalo mi blad i dl;atego tak to rozpisalem, pozniej sie okazalo, ze popelnilem literowke i niepotrzebnie to wszystko tak rozbilem. Nie chcialo mi sie juz tego poprawiac. Ale dzieki za odpowiedz, zaraz to przetestuje

[ Dodano: 2004-12-14, 21:44 ]
Hehe, super dziala, wielkie dzieki. A to znowu tak prosty blad, kurcze musze byc bardziej uwazny, jeszcze raz serdecznie dziekuje. A co do hosts.allow, to wiem ze to nie wplywa na maskarade, ale dlaczego hosts.deny wyklucza juz sprawdzanie hosts.allow? Czy trzeba zrobic w hosts.deny jakies excepting...?
Pozdrawiam
Awatar użytkownika
snaj
Moderator w st. spocz.
Posty: 1608
Rejestracja: 2004-10-10, 16:32
Lokalizacja: Warszawa
Kontakt:

Re: iptables: firewall i masquerade

Post autor: snaj »

Najpierw sprawdzany jest allow potem deny, i jesli trafienie jest w allow to deny juz nie jest sprawdzany.
Co do tego FORWARDa to chodzilo mi szczegolnie o te sport i dport - nie bardzo widze sens ich sprawdzania :>
*
[color=blue]Sieci[/color]/[color=green]Serwery[/color]/[color=red]Security[/color] - Freelancer
*
Awatar użytkownika
tssmoq
Użytkownik
Posty: 53
Rejestracja: 2004-12-14, 19:52
Kontakt:

Re: iptables: firewall i masquerade

Post autor: tssmoq »

No moze tak, ale zwroc uwage na to, ze 1. firewal byl pisany po to aby ukryc obecnosc sieci czyli jako snat a nie masquerade (jesli to moze miec jakies znaczenie) a 2. i chyba najwazniejsze, ja to po za drobnymi zmianami, przepisalem.
Co do host'ow, to ma to znaczyc, ze samo ustawienie hosts.allow wystarcza, jesli chodzi o dostep do tego kompa. Ale w takim razie dlaczego nie mialem dostepu, po dopisaniu reguly w hosts.deny? Nie chce mi sie teraz tego juz sprawdzac czy w tej chwili tak bedzie, bo komunikuje sie z routerem przez ssh, a moj monitor wazy ~20kg i wrazie utraty dostepu bede musial go dzwigac :? .
Dzieki wielkie za zainteresowanie i pomoc. Sledze to forum i watki od dluzszego czasu, chociaz uzywajac slacka jako desktopa nie mialem zadnych ( :wink: :P ) problemow, to jak sie okazuje administracja przyspaza ich wiele...
Awatar użytkownika
snaj
Moderator w st. spocz.
Posty: 1608
Rejestracja: 2004-10-10, 16:32
Lokalizacja: Warszawa
Kontakt:

Re: iptables: firewall i masquerade

Post autor: snaj »

I myslisz ze tym firewallem ukryles siec ? Nawet nie zaczales jej ukrywac ;] A to czy w regulce jest snat czy maskarada to nie ma znaczeia (no chyba ze masz zmienne ip).
Co do allow i deny jest jak pisze, ja tego nie wymyslam a an dowod :
The access control software consults two files. The search
stops at the first match:

o Access will be granted when a (daemon,client) pair
matches an entry in the /etc/hosts.allow file.

o Otherwise, access will be denied when a (dae-
mon,client) pair matches an entry in the
/etc/hosts.deny file.

o Otherwise, access will be granted.

A non-existing access control file is treated as if it
were an empty file. Thus, access control can be turned off
by providing no access control files.
man twoim przyjacielem jest !
*
[color=blue]Sieci[/color]/[color=green]Serwery[/color]/[color=red]Security[/color] - Freelancer
*
Awatar użytkownika
tssmoq
Użytkownik
Posty: 53
Rejestracja: 2004-12-14, 19:52
Kontakt:

Re: iptables: firewall i masquerade

Post autor: tssmoq »

Co do maskowania sieci, to sie nie zrozumielismy, orginalnie (tzn. sieci.krysiak.info) skrypt byl pisany do ukrycia routingu, z zastrzezeniem, ze to tylko prowizorka i przy bardziej wnikliwej analizie latwe do wykrycia. Mi chodzilo natomiast o jakiegos w miare sprawnego firewalla z routingiem, nie koniecznie ukrywajacym moja siec. Stad nie ma tam SNAT'a oraz innych bajerow, ktore pewnie trzeba by bylo dodac, aby siec chociaz w miare byla zaslonieta. Stwierdzilem, ze takie rozwiazanie ma byc na tyle pewne, aby pierwszy lepszy cracker nie dobral sie do moich kompow. A ktos kto sie na tym zna, to mam nadzieje, albo sie za to nie bedzie zabieral, bo po co?, albo i tak trzeba by bylo nie lada wysilku, zeby zabezpieczyc co nigdy nie jest na 100% pewne.Uff, troche sie rozpisalem...
Jeszcze kwestia mana, nie posiadam mana do hosts.allow/deny(pewnie zle szukam). Jest do hosts, ale to troche inna sprawa. Mam ustawiony dostep przy hosts.allow i musze tylko ufac, ze jest to jakies utrudnienie dla intruzow. Wszelkie poszukiwania w ogole zaczynalem od Slackware-book, a nastepnie manow. Jednak nie wszystko jest do przebrniecia dla mnie...
Pozdrawiam
ODPOWIEDZ