3.3 Palomuuri ja NAT/reititystoiminnot

Seuraavassa esimerkki kahden verkkokortin palomuurista ja NAT:ista. Verkokortit on määritelty niin, että eth0 on sisäverkkon puoli ja eth1 on ulkoverkon puoli. Sisäverkkoon tulee käyttöön 192.168.1.0/24 -osoiteavaruus.

#!/bin/bash
#
#
# Palomuuri
#
# Ensin pyyhitään kaikki vanhat säännöt
iptables --flush
iptables -t nat --flush
#
# tehdään koneesta reititin
echo 1 > /proc/sys/net/ipv4/ip_forward
#
# tehdään sääntö sisääntulevalle liikenteelle ja estetään se
iptables -P INPUT DROP
# tehdään sääntö ulosmenevälle liikenteelle ja sallitaan se
iptables -P OUTPUT ACCEPT
# tehdään sääntö edelleenohjattavalle liikenteelle ja 
# estetään se
iptables -P FORWARD DROP
#
# tehdään NAT WAN-portista
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j \
MASQUERADE
#
# forwardoidaan etätyöpöytä sisäverkon koneeelle, jonka IP \
# päättyy 14:aan
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -j \
DNAT --to 192.168.1.14:3389
#
#
# **********************************************
# *                                            *
# *  TÄSTÄ ALKAA VARSINAISET PALOMUURISÄÄNNÖT  *
# *                                            *
# **********************************************
#  -------------
# | lo loopback |
#  -------------
#
# loopbackin päästö
iptables -A INPUT -i lo -p all -j ACCEPT
#
#  ----------
# | eth0 LAN |
#  ----------
#
# kaikki liikenne päästetään sisään eth0:sta
iptables -A INPUT -i eth0 -p all -j ACCEPT
# LAN-porttiin päästetään kaikki muilta verkkokorteilta 
# edelleenohjattu liikenne
iptables -A FORWARD -i eth0 -p all -j ACCEPT
#
#  ----------
# | eth1 WAN |
#  ----------
#
#   SISÄÄNPÄÄSTÖ
#   ------------
# sallitaan muodostettuihin yhteyksiin kuuluvat (ESTABLISHED)
# ja niihin liittyvät (RELATED) yhteydet:
iptables -A INPUT -i eth1 -m state --state \
ESTABLISHED,RELATED -j ACCEPT
# sallitaan pingi
iptables -A INPUT -i eth1 -p icmp -j ACCEPT
# sallitaaan SSH tietystä ip:stä
iptables -A INPUT -i eth1 -p tcp --dport 22 -s 80.111.222.111 \
--syn -m state --state NEW -j ACCEPT
# sallitaan HTTP kaikkialta
iptables -A INPUT -i eth1 -p tcp --dport 80 --syn -m state \
--state NEW -j ACCEPT
#
#   EDELLEENOHJAUS
#   --------------
# Sisäänpäin sallitaan vain jo muodostetut yhteydet
# ja niihin liittyvät paketit:
iptables -A FORWARD -i eth1 -m state --state \
RELATED,ESTABLISHED -j ACCEPT
#
# Etätyöpöydän edelleenohjausta varten on tehtävä oma sääntö
iptables -A FORWARD -i eth1 -p tcp --dport 3389 --syn -m \
state --state NEW -j ACCEPT



Lauri Laukkarinen 2006-03-23