Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

iptables - budowa firewall'a, zasada działania oraz ustawienia dhcp

Simi91 19 Aug 2013 16:22 2640 5
  • #1
    Simi91
    Level 10  
    Witam.

    Jestem początkujący jeśli chodzi o iptables dlatego postanowiłem zwrócić się po Waszą pomoc. Problemów jest kilka dlatego rozdzielę je na kilka punktów.

    1. Zacząłem pisać firewalla opierając się na przykładach z Internetu oraz książki (Sieci Linux. Receptury) i jestem na etapie czegoś takiego:

    #_____________________________________________________________________________
    $ipt -t nat -X
    $ipt -t mangle -F
    $ipt -t mangle -X

    #Czyszczenie liczników

    $ipt -t filter -Z
    $ipt -t nat -Z
    $ipt -t mangle -Z

    $mod ip_tables
    $mod ip_conntrack
    $mod iptable_filter
    $mod iptable_nat
    $mod iptable_mangle
    $mod ipt_LOG
    $mod ipt_limit
    $mod ipt_state

    #Polityka domyślna

    $ipt -t filter -P INPUT DROP
    $ipt -t filter -P FORWARD DROP
    $ipt -t filter -P OUTPUT ACCEPT

    $ipt -t nat -P OUTPUT ACCEPT
    $ipt -t nat -P PREROUTING ACCEPT
    $ipt -t nat -P POSTROUTING ACCEPT

    $ipt -t mangle -P PREROUTING ACCEPT
    $ipt -t mangle -P INPUT ACCEPT
    $ipt -t mangle -P FORWARD ACCEPT
    $ipt -t mangle -P OUTPUT ACCEPT
    $ipt -t mangle -P POSTROUTING ACCEPT

    #Pętla zwrotna

    $ipt -A INPUT -i lo -j ACCEPT

    ###################################################################
    # SERWER

    #Zapis ataków do logów oraz ochrona
    $ipt -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j LOG --log-prefix "Ping of death : "
    $ipt -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

    #Zapis atakow do logow oraz ochrona przed atakami typu SYN-flood
    $ipt -N syn-flood
    $ipt -A INPUT -p tcp --syn -j syn-flood
    $ipt -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
    $ipt -A syn-flood -m limit --limit 1/s --limit-burst 4 -j LOG --log-prefix "SYN-flood : "
    $ipt -A syn-flood -j DROP



    #Przepuszczenie polaczen nawiazanych oraz nawiazujacych nowe polaczenia dla istniejacych
    $ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    #Polaczenie przez SSH
    $ipt -A INPUT -p tcp --destination-port 22 -j ACCEPT

    #Odpowiedz na pingowanie
    $ipt -A INPUT -p icmp -j ACCEPT

    #Zezwalamy na WWW
    $ipt -A INPUT -p tcp --dport 80 -j ACCEPT

    ###################################################################
    # FORWARD

    $ipt -A FORWARD -d 192.168.3.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
    $ipt -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
    lecz

    #NATOWANIE ADRESOW
    $ipt -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    #Ograniczenie TTL
    $ipt -t mangle -A POSTROUTING -o $eth_wew -j TTL --ttl-set 0

    #____________________________________________________________________________________

    Firewall działa poprawnie, lecz nie rozumiem kilku rzeczy.

    1.a) Gdzie znajdują się loga iptables? (aktualnie serwer testowy jest na Ubuntu Server, lecz wersja ostateczna będzie stała na Raspberry PI (raspbianie)).
    1.b) Czy da się określić ścieżkę, gdzie loga mają być zapisywane?
    1.c) Z tego co czytałem reguły są sprawdzane po kolei zgodnie z indeksem, dlatego kolejność ma znaczenie? (np mamy regułę ipt -A ... , która DROPuje wszystkie mac adresy rózne od YY:YY:... ,a zaraz pod nią jest ipt -A reguła, która ACCEPTuje dany adres mac XX:XX: ... to zostanie on upuszczony mimo , że pasował do reguły drugiej?
    1.d) Nie rozumiem do końca jak działa poniższa linijka. Tworzenie własnych łańcuchów jest czymś w stylu funkcji? Po prostu jeśli wielokrotnie nam się powtarza sytuacja, w której sprawdzamy to samo, to ustawiamy cel na nasz łańcuch?
    Jak zachowa się tutaj funkcja RETURN ? Proszę o wytłumaczenie tych reguł.
    $ipt -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN

    1.e) Każdy nowy pakiet, który przechodzi przez firewalla ma status new. Dlaczego mam na serwerze dostęp do Internetu skoro zezwalam jedynie na ssh, komunikaty icmp, odblokowywuje port 80 i przepuszczam pakiety established, related. W którym momencie firewall zmienia ich status na ESTABLISHED, bądz REALTED skoro nie pasują do żadnej reguły?

    2. Czy, ktoś może mi poradzić jakieś reguły, które warto dodać do domowego serwera? (sieć po kablu oraz bezprzewodowo, usługi www, dhcp, ssh, nat)

    3. Chciałbym stworzyć powiązanie adresów MAC z adresami IP(DHCP statyczne). Już piszę o co mi chodzi. Użytkownik sieci podaje mi adres MAC swojego komputera. Ja dodaje MACa do serwera. Serwer DHCP przydziela IP dla danego MACa. Ponadto istnieje opcja taka, że jeśli użytkownik sieci dostanie BANa to cały ruch sieciowy jaki wykona zawsze przekierowuje go na stronę wewnętrzną serwera domowego. Mój pomysł był taki, aby stworzyć reguły, że od IP 192.168.3.100 do 192.168.3.200 zezwalaj na ruch, a od 192.168.3.200 do 192.168.3.220 REDIRECT na moją stronkę. Korzystam z pakietu isc-dhcp-server. Problem jest w tym, że nie wiem jak powiązać IP z mac adresami i jak zrobić te dwie pule adresów. Najlepiej jak by MAC adresy z adresy IP były w osobnym pliku(żeby było przejrzyściej). Jeśli idea jest zła - piszcie. Jeśli znacie rozwiązanie, proszę o pomoc.

    4. Na koniec chciałbym zrobić coś w stylu (jak ja to nazwałem) żetonu :). Mam użytkownika, który jest uzależniony od Internetu... i chcę, aby mógł raz dziennie skorzystać sobie z Internetu na określony czas. Przykład. Kowalski o adresie MAC 123, łączy się z AP przesyła jakieś tam pakiety i w tym momencie rusza timer na np godzinę. Jeśli sesja została zerwana serwera to nie interesuje - zegar tyka. Mija godzina, Kowalski może skorzystać z Internetu dopiero dnia następnego.

    Wiem, że post jest obszerny... ale proszę o pomoc.

    Dziękuje za przeczytanie i pozdrawiam :)
    Do you have a problem with Raspberry? Ask question. Visit our forum Raspberry.
  • #4
    bogiebog
    Level 43  
    Simi91 wrote:
    Niestety nie znalazłem odpowiedzi na moje pytania.

    Na żadne ?
  • #5
    Simi91
    Level 10  
    Prawie. Jeśli chodzi o pytanie drugie to wyciągnąłem kilka przydatnych reguł. Czy sposób, który zaproponowałem w pkt trzecim jest ok?
  • #6
    Simi91
    Level 10  
    Jeśli chodzi o pkt 3 to udało mi się znaleźć rozwiązanie do DHCP statycznego.

    Do pliku /etc/dhcp/dhcpd.conf dopisujemy następującą linijkę :
    host test
    {
    hardware ethernet 00:E0:G8:V0:46:68;
    fixed-address 192.168.3.177;
    }

    Czy istnieje jakieś "dowiązanie" do tego pliku, żebym mógł tą treść umieszczać gdzie indziej ?