ďťż
 
 
   FIREWALL-iptables od zera - jak?
 
 

Tematy

 
    
 

 

 

 

FIREWALL-iptables od zera - jak?





Dominik - 22-07-2007 00:45
Zmęczyły mnie różnorakie firewalle i nakładki na iptables- ciężko je ustawić a jeszcze trudniej coś poprawić w ich konfiguracji. Stąd myśle o najprostszym rozwiązaniu - skrypt dla iptables uruchamiany przy starcie. Poradników jest co prawda sporo, lecz a) trudno znaleźć coś dla początkującego (wymagają zbyt dużej wiedzy by je zrozumieć), b) proponują różne metody i którą tu wybrać? Najczęściej odsyłając jednak do firestartera czy shorewalla :-(
Już raz postawiłem sobie znośny skrypt, niestety po przejście na Lennego nie dał oczekiwanych rezultatów (przekopiowałem go, identycznie podpiąłem i nie wstawał przy starcie, oraz pozostawił otwarte porty)

1) Zaczynam od skryptu z generatora iptables stąd
2) odpalam go i sprawdzam czy dobrze działa (shields up)
3) następnie usiłuje ręcznie poprawiać [ wróć do 2 i jeśli działa to 4, inaczej wróć do 3 ]
4) jeśli działa to kopiuje go do /etc/init.d/nazwa_skryptu potem ( żeby ruszał przy starcie) update-rc.d nazwa_skryptu defaults 80 Na razie męczę się z wygenerowaniem/poprawą skryptu, dla ustawienia: 1 interfejs sieciowy, zmienne ip, komputer nic nie udostępnia -tylko przeglądanie stronek, gg, irc obecnie skrypt zostawia otwarty port 80 i komputer nie jest niewidzialny na 443. Co poprawić w skrypcie? A może źle się do tego zabieram? Jeśli tak, to jak to robić porządnie?

skrypt, na którym próbuje:
P.S. proszę o bardzo dokładne instrukcje, przykłady dla bardzo początkującego, może pomożecie nie tylko w moim przypadku



darkwater - 22-07-2007 00:53
skoro jesteś początkujący to polecam ci program fwbuilder (w repo). generuje on normalny skrypt z regułkami iptables który można bezproblemowo przejżeć/edytować. potem dodajesz go do /etc/init.d/ , update-rc.d i działa.



Dominik - 22-07-2007 01:34
dzięki, ale właśnie zaproponowałeś mi kolejny wielki program - nauka obsługiwania go jest porównywalna z nauką obsługi firewalli. No chyba, że jest kilka pakietów fwbuilder. Przepraszam ale szukam metody bez dociągania żadnych oprogramowań środowisk itp. Jeszcze raz powoli:
chodzi mi o sposób na dobre poprawianie skryptu iptables, bez użycia kolejnych nakładek/generatorów Jak zaczynasz to nauka obsługi każdego kolejnego programu miesza - tutaj np zacznę mylić zasady pisania iptables z tym jak używać fwbuildera - dałem w 1 poście link do generatora iptables właśnie dlatego, że wymaga mniejszej wiedzy od użytkownika. Niestety wymaga podania zbyt wielu opcji jak na początkującego, często się pomylimy i później musimy ręcznie poprawiać - dlatego założyłem ten temat

W tym przypadku pomogło ponowne wygenerowanie iptables lecz gdy przechodzimy do strony: blokowane porty wpisujemy te, które shields up podał jako otwarte, i dalej tak samo. W dzień porównam oba skrypty i wskaże różnice (co poprawić lub dopisać) A jeszcze jedno: dla tej konfiguracji na podstronie udostępniane serwisy nie wpisujemy żadnych.



Kaka' - 22-07-2007 08:25
Hej,

jak nie możesz sobie poradzić z iptables to szczerze mogę polecić shorewalla (sam ostatnio przekopałem jego dokumentację) - naprawdę, dobrze spełnia swoje zadanie. Wystarczy tylko parę linijek i już masz sprawny firewall.

Pozdrawiam.



Dominik - 22-07-2007 23:46
Kaka' to nie jest kwestia dobrania dobrego firewalla - nakładki, znalazłem już takowy (arno iptables firewall). Zależy mi na tym aby nauczyć się iptables. Po prostu nie chcę iść na skróty.
Bawię się z iptables metodą prób i błędów w oparciu o kilka manów i stronek różnej jakości. Z pewnością popełniam wiele błędów. Założyłem ten temat i opisuje krok, po kroku, co robię w nadziei, że ktoś pokaże mi gdzie robię błędy.

Jak na razie wreszcie mi iptables chodzi, (shields up stwierdza iż wszystko w porządku) jednak nie wiem dlaczego wywala mi błędy dotyczące polecenia RETURN nawet gdy korzystam z takich gotowców jak ten co wkleiłem.

I jeszcze jedno pytanie dotyczące tego "gotowca" - widzę tutaj użycie REJECT zamiast DROP - w kilku miejscach (acz nie we wszystkich) musiałem to pozmieniać, żeby uciszyć porty. Dlaczego czasem owo REJECT wykrywa mi jako port zamknięty a czasem jako ukryty?

P.S. Nie wklejam wszystkich wersji skryptu, ani logów bo jakoś nie chcą wejść jako załącznik a długie cytaty jeszcze bardziej zaciemniają



cordial - 23-07-2007 00:12

I jeszcze jedno pytanie dotyczące tego "gotowca" - widzę tutaj użycie REJECT zamiast DROP - w kilku miejscach (acz nie we wszystkich) musiałem to pozmieniać, żeby uciszyć porty. Dlaczego czasem owo REJECT wykrywa mi jako port zamknięty a czasem jako ukryty? Nagłówki pakietów są sprawdzane w trakcie przechodzenia przez maszynę.

ACCEPT - zaakceptowany.
DROP - pakiet zostanie “upuszczony na podłogę” - odrzucony.
REJECT - odrzucony, z tą różnicą, że zostaje on odesłany z powrotem do źródła, powiadamiając o tym nadawcę.

Ja w ogóle nie używam REJECT, po co?


#reject zamiast drop w celu unikniecia opoznien przy polaczeniach Hm? :|

Pozdr.



Dominik - 23-07-2007 21:38
Dzięki cordial
Spróbuje wymienić we wszystkich przychodzących reject na drop. Z tym opóźnieniem zasugerowałem się m.in tym Nie byłem pewny, czy to ma jakieś znaczenie, ale sprawdzę empirycznie :-P
Dziwi mnie tylko, że mimo kilku miejsc w skrypcie, gdzie pozostawiłem REJECT porty były wykrywane jako "stealth" - o ile rozumiem zachowywały się jak przy DROP, czy mam szukać jakiejś kolejności reguł?
Zastanawia mnie czemu przy wykonaniu skryptu (np tego z 1 postu) konsola grymasi o niewłaściwe użycie return. Możecie pokazać na tym skrypcie, czy wklejać najkrótszy, w którym wystąpił problem?



cordial - 24-07-2007 01:25

Stąd myśle o najprostszym rozwiązaniu - skrypt dla iptables uruchamiany przy starcie. Poradników jest co prawda sporo, lecz a) trudno znaleźć coś dla początkującego (wymagają zbyt dużej wiedzy by je zrozumieć), b) proponują różne metody i którą tu wybrać? Najczęściej odsyłając jednak do firestartera czy shorewalla :-( Ja napisałem prosty poradnik. Bardzo prosty skrypt, dobry dla osoby która nie miała nigdy wcześniej styczności z iptables. W chwili obecnej, skrypt który napisałem mi wystarcza. Aczkolwiek z czasem planuję jego ulepszenie i rozbudowę. Możesz go sobie obejrzeć tutaj.


Już raz postawiłem sobie znośny skrypt, niestety po przejście na Lennego nie dał oczekiwanych rezultatów (przekopiowałem go, identycznie podpiąłem i nie wstawał przy starcie, oraz pozostawił otwarte porty) Spróbuj na "Lennym" swój skryp "podpiąć" korzystając z metody którą opisałem.


echo "Ustawienia polityki dla lancuchow standardowych..."
$F -P INPUT ACCEPT
$F -P FORWARD ACCEPT
$F -P OUTPUT ACCEPT
$F -t nat -P PREROUTING ACCEPT
$F -t nat -P OUTPUT ACCEPT
$F -t nat -P POSTROUTING ACCEPT
$F -t mangle -P PREROUTING ACCEPT
$F -t mangle -P OUTPUT ACCEPT
$F -t mangle -P INPUT ACCEPT
$F -t mangle -P FORWARD ACCEPT
$F -t mangle -P POSTROUTING ACCEPT
Powiedz mi, po co Ci te wpisy?


echo "Czyszczenie regul dla lancuchow standardowych..."
$F -F
$F -t nat -F
$F -t mangle -F
Stąd bym napewno wywalił NAT i mangle. No chyba, że nie masz publicznego adresu IP, a mangle?


echo "Kasowanie wszystkich niestandardowych lancuchow..."
$F -X
$F -t nat -X
$F -t mangle -X
Tutaj podobnie, 2 ostatnie bym wyrzucił.


if [ "$1" = "stop" ]
then
echo "Firewall zostal wylaczony."
exit 0
fi

echo "Ustawienia polityki lancuchow standardowych..."
$F -P INPUT DROP
$F -P OUTPUT DROP
$F -P FORWARD DROP
Dlaczego dałeś OUTPUT DROP? Ja generalnie postępuje tak, zezwalam na połączenia które wychodzą z mojej maszyny + połączenia które są powiązane z istniejącymi już połączeniami.


#################
# tcp_wchodzace #
#################
echo "Tworzenie regul dla lancucha tcp_wchodzace..."

#ident request
#reject zamiast drop w celu unikniecia opoznien przy polaczeniach
$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port 113 -j REJECT
#FTP client (data port non-PASV)
#$F -A tcp_wchodzace -p TCP -s 0/0 --source-port 20 -j ACCEPT
#FTP control
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port 21 -j ACCEPT
# Passive FTP
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port : -j ACCEPT
#ssh
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port 22 -j ACCEPT
#HTTP
$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port 80 -j ACCEPT
#HTTPS
$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port 443 -j ACCEPT
#SMTP
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port 25 -j ACCEPT
#POP3
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port 110 -j ACCEPT
#SSL POP3
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port 995 -j ACCEPT
#IMAP4
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port 143 -j ACCEPT
#SSL IMAP4
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port 993 -j ACCEPT
#ICQ File Transfers & Other Advanced Features
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port : -j ACCEPT
#MSN Messenger File Transfers
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port : -j ACCEPT
#NFS Server - portmapper
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port -j ACCEPT
#NFS Server - statd
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port -j ACCEPT
#NFS Server - NFS daemon
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port -j ACCEPT
#NFS Server - lockd
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port -j ACCEPT
#NFS Server - mountd
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port -j ACCEPT
#NFS Server - quotad
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port -j ACCEPT
#User specified allowed TCP protocol
#$F -A tcp_wchodzace -p TCP -s 0/0 --destination-port -j ACCEPT

#nie pasujace: powrot i logowanie
$F -A tcp_wchodzace -p TCP -j RETURN

##################
# tcp_wychodzace #
##################
echo "Tworzenie regul dla lancucha tcp_wychodzace..."

#Blokowanie FTP Data
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 20 -j REJECT
#Blokowanie FTP Control
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 21 -j REJECT
#Blokowanie SSH
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 22 -j REJECT
#Blokowanie Telnet
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 23 -j REJECT
#Blokowanie HTTP
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 80 -j REJECT
#Blokowanie HTTPS
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 443 -j REJECT
#Blokowaie SMTP
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 25 -j REJECT
#Blokowaie POP3
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 110 -j REJECT
#Blokowaie POP3SSL
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 995 -j REJECT
#Blokowaie IMAP4
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 143 -j REJECT
#Blokowaie IMAP4SSL
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 993 -j REJECT
#Blokowanie NEWS
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 119 -j REJECT
#Blokowanie IRC
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port : -j REJECT
#Blokowaie AIM
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 5190 -j REJECT
#Blokowaie AIM Images
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 4443 -j REJECT
#Blokowaie MSN Messenger
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port 1863 -j REJECT
#Blokowany zakres portow
#$F -A tcp_wychodzace -p TCP -s 0/0 --destination-port -j REJECT
#blokowanie gg
#$F -A tcp_wychodzace -p TCP -s 0/0 -d 217.17.41.0/24 -j REJECT
#$F -A tcp_wychodzace -p TCP -s 0/0 -d 217.17.33.0/24 -j REJECT

#nie pasujace ACCEPT
$F -A tcp_wychodzace -p TCP -s 0/0 -j ACCEPT

#################
# udp_wchodzace #
#################
echo "Tworzenie regul dla lancucha udp_wchodzace..."

#Drop netbios calls
$F -A udp_wchodzace -p UDP -s 0/0 --destination-port 137 -j DROP
$F -A udp_wchodzace -p UDP -s 0/0 --destination-port 138 -j DROP

#ident - reject zamiast drop w celu unikniecia opoznien w polaczeniach
$F -A udp_wchodzace -p UDP -s 0/0 --destination-port 113 -j REJECT

#NTP
#$F -A udp_wchodzace -p UDP -s 0/0 --destination-port 123 -j ACCEPT
#DNS
$F -A udp_wchodzace -p UDP -s 0/0 --destination-port 53 -j ACCEPT
#zewnetrzny server DHCP
$F -A udp_wchodzace -p UDP -s 0/0 --source-port 68 --destination-port 67 -j ACCEPT
#NFS Server - portmapper
#$F -A udp_wchodzace -p UDP -s 0/0 --destination-port -j ACCEPT
#NFS Server - statd
#$F -A udp_wchodzace -p UDP -s 0/0 --destination-port -j ACCEPT
#NFS Server - NFS daemon
#$F -A udp_wchodzace -p UDP -s 0/0 --destination-port -j ACCEPT
#NFS Server - lockd
#$F -A udp_wchodzace -p UDP -s 0/0 --destination-port -j ACCEPT
#NFS Server - mountd
#$F -A udp_wchodzace -p UDP -s 0/0 --destination-port -j ACCEPT
#NFS Server - quotad
#$F -A udp_wchodzace -p UDP -s 0/0 --destination-port -j ACCEPT
#dopuszczalny zakres portow udp
#$F -A udp_wchodzace -p UDP -s 0/0 --destination-port -j ACCEPT

#nie pasujace - powrot i logowanie
$F -A udp_wchodzace -p UDP -j RETURN

##################
# udp_wychodzace #
##################
echo "Tworzenie regul dla lancucha udp_wychodzace..."

#Blokowany zakres portow
#$F -A udp_wychodzace -p UDP -s 0/0 --destination-port -j REJECT
#blokowanie gg
#$F -A udp_wychodzace -p UDP -s 0/0 -d 217.17.41.0/24 -j REJECT
#$F -A udp_wychodzace -p UDP -s 0/0 -d 217.17.33.0/24 -j REJECT

#nie pasujace ACCEPT
$F -A udp_wychodzace -p UDP -s 0/0 -j ACCEPT
Można wypisywać wszystkie usługi wychodzące z naszej maszyny tworząc wyjątki, no ale po co?
Nie lepiej, zaakceptować wszystkie wychodzące połączenia?

Blokując domyślnie wszystkie przychodzące i przechodzące. Po to aby później odblokować jedynie te które chcemy. : )

Pozdrawiam. : )



stahoo - 29-07-2007 18:24
witam wszystko pięknie opisane tylko, że znalazłem kilka opisów jak konfigurować iptables i w każdym jest napisane że trzeba skopiować go do /etc/init.d/ :shock: ale ja nie mam init.d mam natomiast init0.d init1.d init2.d itd: więc gdzie go mam skopiować bo nie kumam :-/

[ Dodano: 2007-07-29, 18:46 ]
oki sooooorki znalazłem :mrgreen:

[ Dodano: 2007-07-29, 19:27 ]
Witam ponownie ale w sprawie iptables kilka spraw chciałbym się dowiedzieć tzn:
wpisuje kod:
iptables -L wynik: Chain INPUT (policy ACCEPT)
target    prot opt source              destination

Chain FORWARD (policy ACCEPT)
target    prot opt source              destination

Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination no to napisałem sobie skrypt i wpisuje
chmod +x firewall.sh
./firewall.sh sprawdzam iptables -L no i są reguły takie
wynik: Chain INPUT (policy DROP)
target    prot opt source              destination
ACCEPT    0    --  anywhere            anywhere            state RELATED,ESTABLISHED
ACCEPT    0    --  localhost            localhost
ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:www
ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:ftp
ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:ftp-data

Chain FORWARD (policy DROP)
target    prot opt source              destination

Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination wydaje mi się że do stacji domowej mi to wystarczy (jeśli coś jest nie tak to poproszę o komentarz )

ale po restarcie systemu te wpisy znikają i z powrotem mam
Chain INPUT (policy ACCEPT)
target    prot opt source              destination

Chain FORWARD (policy ACCEPT)
target    prot opt source              destination

Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination co mam zrobić żeby system to zapisał poproszę łopatologicznie debianka używam 2 dzień



cordial - 30-07-2007 10:14


co mam zrobić żeby system to zapisał poproszę łopatologicznie debianka używam 2 dzień
Zajrzyj tutaj -> link

pozdr.



markossx - 30-07-2007 14:36
zajrzyj:

http://hack.pl/forum/archive/index.php?t-443.html

http://linux.howto.pl/artykuly,linux-20-9-0.html

tu jest dość "łopatologicznie"



kayo - 30-07-2007 20:36
Dla tych którzy chcą mieć firewall w czystym iptables a nie chce im sie za dużo klepać:
http://www.iem.pw.edu.pl/~rzeznicp/iptables/



Dominik - 30-07-2007 21:45
cordial no Twój poradnik jak na razie najwięcej wyjaśnia. Dziękuje
A po co mi tamte wpisy, o które pytałeś...
chyba wie ;-) Jak zaznaczyłem, zabawę zaczynam na ich gotowcu. Jeśli coś tylko może zwiększyć bezpieczeństwo, to zostawiam - stąd nie ruszałem echo "Ustawienia polityki lancuchow standardowych..."
$F -P INPUT DROP
$F -P OUTPUT DROP
$F -P FORWARD DROP nie wiem czy to nie przyblokuje ewentualnych "żyjątek", gdyby chciały się pochwalić zawartością dysku itp. Jeśli się mylę powiedz proszę. (W debianie jestem zielony, a w sieci to poziom mniej niż zero)
Drugi powód to taki, że później i tak dodaje blokadę dla niektórych portów (113) tu się z tym użerałem



stahoo - 02-08-2007 20:23
Witam i dzięki wszystko pięknie poszło :-D



cordial - 03-08-2007 00:02

Witam i dzięki wszystko pięknie poszło :-D Cieszę się. : )


cordial no Twój poradnik jak na razie najwięcej wyjaśnia. Dziękuje Miło mi. : )


nie wiem czy to nie przyblokuje ewentualnych "żyjątek", gdyby chciały się pochwalić zawartością dysku itp. Generalnie to nie spotkałem się jeszcze z jakimś wirusem działającym na Linuksie. Co prawda występują, ale w małej liczbie i nie są zbytnio szkodliwe. Kiedyś mój kumpel, powiedział że "pierwszym miejscem w którym umieściłby złośliwy kod, to była by paczka". Myślę że chłop dobrze powiedział. : )

Trzeba uważać na to co się instaluje i skąd, używać firewalla. Jeśli czegoś nie wpuścisz do systemu, to logicznie rozumując nie będzie też tam nic, czego byś nie chciał i co mogło by się komunikować na zewnątrz.

Natomiast jeśli Joanna Rutkowska zapragnie dostać się do Twojej maszyny razem z Michałem Zalewskim, to żaden firewall nie pomoże. : )

Pozdr.



Dominik - 07-08-2007 19:56
cordial faktycznie największe problemy miałem ze "złośliwą" paczką, ale obecnie to najbardziej przeraża mnie możliwość złośliwej strony czy tym podobnych paskudztw... nigdy nie mogę przewidzieć kiedy "koledzy mogą znów się nudzić...".
Tak samo nie mogę założyć, że upilnuje wszystko, dlatego myślę też o "2 linii zabezpieczeń"
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis