Zapora (iptables)

Konfiguracja serwerów, usług, itp.
dhapollo
Beginner
Posty: 168
Rejestracja: 12 czerwca 2010, 14:10
Lokalizacja: Warszawa

Zapora (iptables)

Post autor: dhapollo »

Witam.

Postanowiłem po raz pierwszy samodzielnie napisać zaporę opartą o iptables. Proszę o spojrzenie okiem i sugestie co do dalszej części, to co wpisałem to zapewne są to same podstawy albo i to nie :)

Kod: Zaznacz cały


#!/bin/sh

#ruting
echo "1" > /proc/sys/net/ipv4/ip_forward

#firewall start

###### Kasujemy wcześniejsze wpisy
iptables -F
iptables -X
###### Blokujemy INPUT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

###### Pozwalamy na wszystko dla localhost
iptables -A INPUT -i lo -j ACCEPT

###### Akceptujemy połączenia już ustanowione w obu łańcuchach OUTPUT i INPUT:.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

##### Otwieramy porty DHCP aby mogło przydzielać IP oraz otwieramy port 200
iptables -A INPUT -p tcp -s 192.168.3.0/24 --dport 200 -j ACCEPT
iptables -A INPUT -p udp -i eth1 --dport 67 -j ACCEPT
iptables -A INPUT -p udp -i eth1 --dport 68 -j ACCEPT

#### Porty od VPN
iptables -A INPUT -p tcp -i eth0 --dport 1723 -j ACCEPT
iptables -A INPUT -p tcp -i eth1 --dport 1723 -j ACCEPT

#### web torrent
iptables -A INPUT -p tcp -i eth0 --dport 9091 -j ACCEPT

### Port od SSH na eth0 -INTERNET
iptables -A INPUT -p tcp -i eth0 --dport 55 -j ACCEPT

### Serwer www na eth0
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT

   ##### Przekierowanie na stronÄ™ z komunikatem
   
   #iptables -A PREROUTING -t nat -s 192.168.3.0/24 -p tcp -j DNAT --to-destination 192.168.3.1:200
 
   #Pozwalamy  / zabraniamy  pingowania
   # Pingowac pomĹĽna zawsze z podsieci 192.168.1.0/24 niezaleznie od filtracji mac
   # w celu pingowania tylko dla filtru mac przenieść pod otwarte porty :)
   iptables -A INPUT -s 192.168.3.0/24 -p icmp --icmp-type echo-request -j DROP
   iptables -A INPUT -s 192.168.125.0/24 -p icmp --icmp-type echo-request -j ACCEPT
   
   

   ##### MAC CONTROL ACCESS LIST
   iptables -N MACCONTROL
   iptables -A MACCONTROL -s 192.168.125.100 -m mac --mac-source 00:1B:38:28:7A:2E -j ACCEPT
   iptables -A MACCONTROL -s 192.168.125.101 -m mac --mac-source 00:1C:26:12:89:A3 -j ACCEPT
   iptables -A MACCONTROL -s 192.168.125.102 -m mac --mac-source 00:1D:92:4B:11:65 -j ACCEPT
   iptables -A MACCONTROL -s 192.168.125.103 -m mac --mac-source 00:00:39:75:AF :D 4 -j ACCEPT
   iptables -A MACCONTROL -s 192.168.125.104 -m mac --mac-source 00:11:95:7E:4E:90 -j ACCEPT
   iptables -A MACCONTROL -s 192.168.125.105 -m mac --mac-source 00:30:4F:6D:98 :D 3 -j ACCEPT
   iptables -A MACCONTROL -s 192.168.125.106 -m mac --mac-source 00:23:4E:79:37:C7 -j ACCEPT

#### adresy dla VPN
    iptables -A MACCONTROL -s 192.168.125.200 -j ACCEPT

#### adres dla kieszeni dyskowej 500GB
    iptables -A MACCONTROL -s 192.168.125.200 -j ACCEPT

   iptables -A MACCONTROL -j DROP

##### Otwieramy porty dla naszej sieci
  iptables -A INPUT -s 192.168.125.0/24 -p tcp --dport 55 -j MACCONTROL
  iptables -A INPUT -s 192.168.125.0/24 -p tcp --dport 80 -j MACCONTROL
iptables -A INPUT -s 192.168.125.0/24 -p tcp --dport 9091 -j MACCONTROL
#iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -s 192.168.125.0/24 -p udp --dport 500 -j ACCEPT
iptables -A INPUT -s 192.168.125.0/24 -p tcp --dport 450 -j MACCONTROL
iptables -A INPUT -s 192.168.125.0/24 -p tcp --dport 139 -j MACCONTROL
iptables -A INPUT -s 192.168.125.0/24 -p tcp --dport 138 -j MACCONTROL
iptables -A INPUT -s 192.168.125.0/24 -p tcp --dport 137 -j MACCONTROL
iptables -A INPUT -s 192.168.125.0/24 -p tcp --dport 136 -j MACCONTROL

####proxy
iptables -A INPUT -s 192.168.125.0/24 -p tcp --dport 3128 -j MACCONTROL
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

#### ruting cd
iptables -t nat -A POSTROUTING -s 192.168.125.0/24 -d 0.0.0.0/0 -j MASQUERADE



Chce zabezpieczyć serwer i sieć przed atakami zarówno z internetu jak i próby włamań do sieci. Czy jest możliwość aby iptables wykrywało zainfekowane komputery w sieci lokalnej i przekierowało na strone z komunikatem?
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Co masz na myśli zainfekowane? W iptables masz moduly umozliwiajace filtrowanie po zawartosci pakietów, więc jeżli znasz konkretny kod, mozesz po nim filtrować.
dhapollo
Beginner
Posty: 168
Rejestracja: 12 czerwca 2010, 14:10
Lokalizacja: Warszawa

Post autor: dhapollo »

Słyszałem że można wykrywać zawirusowane maszyny w sieci, niestety nie wiem jak to ma działać.
Wracając do mojego kodu co polecasz dopisać z podstaw?
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Po pierwsze w ogóle nie opierałbym tego na iptables, bo jest to karkołomne o ile w ogóle wykonalne. Musisz zrobić transparentne proxy oparte o squid, clamav, icap. W internecie mnóstwo jest poradników np.: ten
dhapollo
Beginner
Posty: 168
Rejestracja: 12 czerwca 2010, 14:10
Lokalizacja: Warszawa

Post autor: dhapollo »

OK. A wracając do tego co napisałem to jakieś sugestie?
Awatar użytkownika
Andyk
Beginner
Posty: 125
Rejestracja: 08 listopada 2008, 01:24

Post autor: Andyk »

Zablokuj wszystko i pozwól tylko na to co jest niezbędne. Stara, dość restrykcyjna zasada, ale skuteczna.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Andyk: i jak Twoja rada się ma do pytania autora wątku? Zabezpieczy go to przed złośliwym kodem?

dhapollo: czegoś takie nie da się zrobić z pomoca iptables. Co innego jakbys miał jeden czy 2 przykłady, które chcesz blokować. No ale nie da się z tego zrobić generalnego mechanizmu.
Awatar użytkownika
Andyk
Beginner
Posty: 125
Rejestracja: 08 listopada 2008, 01:24

Post autor: Andyk »

Bastian pisze:Andyk: i jak Twoja rada się ma do pytania autora wątku? Zabezpieczy go to przed złośliwym kodem?
Przecież napisałeś, że się nie da. Ja napisałem ogólną zasadę tworzenia firewalla, bo nie znam dokładnych wytycznych jak on ma działać co blokować a co nie. Przecież napisał:
OK. A wracając do tego co napisałem to jakieś sugestie?
Z tej wypowiedzi wynika że zaakceptował to, co napisałeś. Skrypt mogę pochwalić wygląda ładnie i przejrzyście.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Wydawało mi się, że autor nadal czeka na pomysł co do złośliwego kodu. A więc przepraszam.
snejk
Posty: 78
Rejestracja: 03 sierpnia 2010, 00:33
Lokalizacja: /dev/random

Post autor: snejk »

Słyszałem że można wykrywać zawirusowane maszyny w sieci, niestety nie wiem jak to ma działać.
Np. po dużej liczbie pakietów wysyłanych na port 25 - komputery rozsyłające spam.
Ale tak jak koledzy wcześniej doradzili, zacznij od:

Kod: Zaznacz cały

iptables -P INPUT DROP
a potem zezwalaj na konkretny ruch.
ODPOWIEDZ