Witajcie!
muszę zbudować filtr na iptables, który zrobi mi NAT dla lanu i obsłuży DMZ.
znalazłem na necie taki opis:
http://linux.howto.pl/artykuly,linux-20-9-0.html
wszystko pasuje do mojego zadania ale nie widzę tam NAT, a może jest tylko ja jestem za cienki by to dostrzec
bo chyba nie wystarczy że dodam do tablicy NAT taki wpis:
-A POSTROUTING -o eth0 -j SNAT --to-source ip.mojego.eth.0
i tamte regułki (z linux.howto zmodyfikuje) do swoich warunków...
podrzućcie jakieś pomysły albo linki bo sam chyba nie dam rady....
a może ktoś znajdzie chwilę zeby mi to troche przybliżyć...
zrobiłem tak:
interfejsy:
ifconfig eth0 192.84.219.1 netmask 255.255.255.252 - external
ifconfig eth1 192.84.219.2 netmask 255.255.255.0 - dmz
ifconfig eth2 192.168.0.1 netmask 255.255.0.0 - internal
# w pierwszej kolejności ustawiamy NAT
*nat
- A PREROUTING –i ! lo –j DROP
- A POSTROUTING –i ! lo –j DROP
- A OUTPUT –j DROP
-A POSTROUTING -o eth0 -j SNAT --to-source 192.84.219.1
# udostępniono porty (8000:9900) dla komputera 192.168.1.60
-A PREROUTING -s 192.168.1.60 -p tcp -m tcp --dport 8000:9990 -j ACCEPT
# domyślna polityka: odrzucamy wszystko na wszystkich
# interfejsach oprócz loopback
- A INPUT –i ! lo –j DROP
- A OUTPUT –i ! lo –j DROP
- A FORWARD –j DROP
# definujemy łańcuchy, które łatwo pozwolą orientować się w regułach
-N internal-dmz
-N external-dmz
-N internal-external
-N dmz-internal
-N dmz-external
-N external-internal
-N icmp-accept
# łańcuchy dotyczące logów zapory
-N NEVER
-N LOGDROP
-A NEVER -j LOG --log-level alert --log-prefix "filter ERROR: "
-A NEVER -j DROP
iptables -A LOGDROP -m limit -j LOG --log-prefix "filter: "
iptables -A LOGDROP -j DROP
# łączymy fizyczne interfejsy ze zdefiniowanymi wyżej
# łańcuchami
-A FORWARD -i eth2 -o eth1 -j internal-dmz
-A FORWARD -i eth2 -o eth0 -j internal-external
-A FORWARD -i eth1 -o eth0 -j dmz-external
-A FORWARD -i eth1 -o eth2 -j dmz-internal
-A FORWARD -i eth0 -o eth1 -j external-dmz
-A FORWARD -i eth0 -o eth2 -j external-internal
-A FORWARD -j NEVER
# zezwolenie na niektóre odpowiedzi diagnostyczne
-A icmp-accept -p icmp --icmp-type destination-unreachable -j ACCEPT
-A icmp-accept -p icmp --icmp-type source-quench -j ACCEPT
-A icmp-accept -p icmp --icmp-type time-exceeded -j ACCEPT
-A icmp-accept -p icmp --icmp-type parameter-problem -j ACCEPT
# główny ruch na interfejsach zapory
-A internal-dmz -p tcp -d 192.84.219.3 --dport 25 -j ACCEPT
-A internal-dmz -p tcp -d 192.84.219.3 --dport 110 -j ACCEPT
-A internal-dmz -p tcp -d 192.84.219.3 --dport 20 -j ACCEPT
-A internal-dmz -p tcp -d 192.84.219.3 --dport 21 -j ACCEPT
-A internal-dmz -p tcp -d 192.84.219.3 --dport 80 -j ACCEPT
-A internal-dmz -p icmp -j icmp-accept
-A internal-dmz -j LOGDROP
#
-A external-dmz -p tcp -d 192.84.219.3 --dport 25 -j ACCEPT
-A external-dmz -p tcp -d 192.84.219.3 --dport 20 -j ACCEPT
-A external-dmz -p tcp -d 192.84.219.3 --dport 21 -j ACCEPT
-A external-dmz -p tcp -d 192.84.219.3 --dport 80 -j ACCEPT
-A external-dmz -p icmp -j icmp-accept
-A external-dmz -j DROP
#
-A internal-external -p tcp --dport 80 -j ACCEPT
-A internal-external -p tcp --dport 22 -j ACCEPT
-A internal-external -p tcp --dport 21 -j ACCEPT
-A internal-external -p tcp --dport 443 -j ACCEPT
-A internal-external -p tcp --dport 53 -j ACCEPT
-A internal-external -p udp --dport 53 -j ACCEPT
-A internal-external -p tcp --dport 1024:65535 -j DROP
-A internal-external -p icmp --icmp-type ping -j ACCEPT
-A internal-external -j LOG
-A internal-external -j REJECT
-A dmz-internal -p tcp ! --syn -s 192.84.219.3 25 -j ACCEPT
-A dmz-internal -p tcp ! --syn -s 192.84.219.3 20 -j ACCEPT
-A dmz-internal -p tcp ! --syn -s 192.84.219.3 21 -j ACCEPT
-A dmz-internal -p tcp ! --syn -s 192.84.219.3 80 -j ACCEPT
-A dmz-internal -p icmp -j icmp-accept
-A dmz-internal -j NEVER
- A dmz-external -p tcp -s 192.84.219.3 25 -j ACCEPT
-A dmz-external -p tcp -s 192.84.219.3 20 -j ACCEPT
-A dmz-external -p tcp -s 192.84.219.3 21 -j ACCEPT
-A dmz-external -p tcp ! --syn -s 192.84.219.3 80 -j ACCEPT
-A dmz-external -p icmp -j icmp-accept
-A dmz-external -j NEVER
-A external-internal -p tcp ! --syn --sport 80 -j ACCEPT
-A external-internal -p tcp ! --syn --sport 22 -j ACCEPT
-A external-internal -p tcp ! --syn --sport 20 -j ACCEPT
-A external-internal -p tcp ! --syn --sport 21 -j ACCEPT
-A external-internal -p tcp ! --syn --sport 445 -j ACCEPT
-A external-internal -p tcp ! --syn --sport 53 -j ACCEPT
-A external-internal -p icmp --icmp-type ping -j ACCEPT
-A external-internal -j DROP
# kilka przykładowych dodatkowych reguł podnoszących
# bezpieczeństwo systemu
# odrzucamy pingi dłuższe niż 128 bitów – ochrona przed
# atakiem Ping of death
-A INPUT -i -p icmp --icmp-type echo-request -m length --length 128:0xffff -j REJECT
# odrzucamy pofragmentowane pakiety
-A INPUT -f -j DROP
# odrzucamy ataki słownikowe na ssh
-A INPUT -p tcp -m state --state ESTABLISHED --tcp-flags FIN,ACK FIN,ACK --dport 22 -m recent --name sshattack --set
-A INPUT -p tcp -m state --state ESTABLISHED --tcp-flags RST RST --dport 22 -m recent --name sshattack --set
-A INPUT -m recent --name sshattack --rcheck --seconds 60 --hitcount 60 -m limit --limit 60/minute -j LOG --log-prefix 'SSH attack: '
iptables -A INPUT -m recent --name sshattack --rcheck --seconds 60 --hitcount 60 -j DROP
# koniec reguł zapory
czy to ma prawo działać..?
dzięki
i pozdrawiam.