"Søren W Nielsen" <dsl32953@vip.cybercity.dk> wrote in message
news:acailm$1kor$1@news.cybercity.dk...
> Hej
>
> Jeg er kørt fast i forståelsen af det med IPtables; men jeg synes ikke
> rigtig jeg kommer nogen vejen.
> Er der en der vil hjælpe mig igang ?
>
> Opsætning :
>
> eth0 = internet net
> eth1 = wanforbindelse
> eth2 = dmz
Øhm, hvordan skal det forstås... ??? jeg formoder at eth0 er dit LAN og ikke
internet. Eth1 er wan (internet) og eth2 dmz.
Principielt kunne du nøjes med eth0 & eth1 og lade dine internet services
køre på eth1. Det er simplere. Et decideret DMZ er mere relevant hvis du har
adskillige systemer koblet på hvor visse af disse systemer på ingen måde
skal have fat i dit LAN (i det mindste ikke uden at gå omkring en firewall).
>
> Trikket er selvfølgelig at der routes mellem eth1 og eth2 skal på port 25
og
> port 80 i forbindelse med en web baseret mail server.
Overvej seriøst at køre webmail over TLS (SSL, port 443), ellers kan
username & password (og brugernes mails) aflyttes.
> Det interne net på eth0 skal beskyttes mod alt uvedkommende.
>
> Der skal være routning fra indersiden ud på internettet.
Overvej her om du kan nøjes med en proxy (Squid el. lign.).
> Jeg skal bruge en RH 7.2 med IPTables.
I første omgang kør setup og tjek at IPChains er disabled og IPTables er
enabled. I RH7.2 træder de per default hinanden over tæerne således at intet
i IPTables virker så længe IPChains kører.
Herefter skal du sikre dig at IP forwarding er enabled :
echo 1 > /proc/sys/net/ipv4/ip_forward
Den _meget_ simple metode er herefter (eth2 er her det netkort der har hul
til internet) :
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
Det vil gøre at maskinen NAT'er access til internet. Muligvis gør din router
allerede dette, but anyway ;_)
Herefter et uddrag fra mit eget firewall script (en del uvedkommende ting er
slettet/redigeret)...
eth0 = intranet, net = 10.0.1.0/24
eth1 = backupnet, net = 10.0.2.0/24
eth2 = dmznet (access til internet), net = 10.0.3.0/24
picasso = 10.0.x.20 = Linux server.
gateway = 10.0.3.1 = internet router.
Jeg aktiverer IP forwarding først med "echo 1 >" linien nævnt foroven og
kalder herefter dette script i forbindelse med opstart af maskinen.
Scriptet blokerer for det meste bortset fra de services (porte) jeg har
defineret som acceptable hvis source/destination IP er korrekt.
De sidste 2 linier er vigtige. Den første logger alle de pakker der er
sluppet igennem mit filter uden at blive accepteret eller droppet, og
herefter droppes de. Du kan herefter se i /var/log/messages om din maskine
modtager noget trafik du ikke lige kender til. Det er også meget godt til
debugging hvis noget ikke virker, da der straks logges hvilke pakker der er
blevet afvist.
#!/bin/sh
# 2002-01-30-jfn Firewall script
IPTABLES="/sbin/iptables"
LOG_LEVEL="notice"
LOOPBACK_NIC="lo"
INTRANET_NIC="eth0"
BACKUPNET_NIC="eth1"
DMZNET_NIC="eth2"
LOOPBACK_IP="127.0.0.1"
INTRANET_IP="picasso.intranet.dassic.com"
BACKUPNET_IP="picasso.backupnet.dassic.com"
DMZNET_IP="picasso.dmznet.dassic.com"
DMZNET_ROUTER_IP="gateway.dmznet.dassic.com"
LOOPBACK_NET="255.0.0.0"
INTRANET_NET="10.0.1.0/24"
BACKUPNET_NET="10.0.2.0/24"
DMZNET_NET="10.0.3.0/24"
INTRANET_BROADCAST="10.0.1.255"
BACKUPNET_BROADCAST="10.0.2.255"
# Attempt to Flush All Rules in Filter Table
$IPTABLES -F
# Flush Built-in Rules
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
# Flush Rules/Delete User Chains in Mangle Table, if any
$IPTABLES -F -t mangle
$IPTABLES -t mangle -X
# Delete all user-defined chains, reduces dumb warnings if you run
# this script more than once.
$IPTABLES -X
# Set Default Policies
$IPTABLES -P INPUT DROP ## Highly Recommended Default Policy
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT ## ACCEPT or nslookup will not work
$IPTABLES -t mangle -P OUTPUT ACCEPT ## ACCEPT or nslookup will not work
# ACCEPT packets which are related to an established connection.
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
RESERVED_NET="0.0.0.0/8 1.0.0.0/8 2.0.0.0/8 5.0.0.0/8 7.0.0.0/8 23.0.0.0/8
27.0.0.0/8 31.0.0.0/8 36.0.0.0/8 37.0.0.0/8 39.0.0.0/8 41.0.0.0/8 42.0.0.0/8
58.0.0.0/8 59.0.0.0/8 60.0.0.0/8 67.0.0.0/8 68.0.0.0/8 69.0.0.0/8 70.0.0.0/8
71.0.0.0/8 72.0.0.0/8 73.0.0.0/8 74.0.0.0/8 75.0.0.0/8 76.0.0.0/8 77.0.0.0/8
78.0.0.0/8 79.0.0.0/8 82.0.0.0/8 83.0.0.0/8 84.0.0.0/8 85.0.0.0/8 86.0.0.0/8
87.0.0.0/8 88.0.0.0/8 89.0.0.0/8 90.0.0.0/8 91.0.0.0/8 92.0.0.0/8 93.0.0.0/8
94.0.0.0/8 95.0.0.0/8 96.0.0.0/8 97.0.0.0/8 98.0.0.0/8 99.0.0.0/8
100.0.0.0/8 101.0.0.0/8 102.0.0.0/8 103.0.0.0/8 104.0.0.0/8 105.0.0.0/8
106.0.0.0/8 107.0.0.0/8 108.0.0.0/8 109.0.0.0/8 110.0.0.0/8 111.0.0.0/8
112.0.0.0/8 113.0.0.0/8 114.0.0.0/8 115.0.0.0/8 116.0.0.0/8 117.0.0.0/8
118.0.0.0/8 119.0.0.0/8 120.0.0.0/8 121.0.0.0/8 122.0.0.0/8 123.0.0.0/8
124.0.0.0/8 125.0.0.0/8 126.0.0.0/8 127.0.0.0/8 197.0.0.0/8 201.0.0.0/8
219.0.0.0/8 220.0.0.0/8 221.0.0.0/8 222.0.0.0/8 223.0.0.0/8 240.0.0.0/8
241.0.0.0/8 242.0.0.0/8 243.0.0.0/8 244.0.0.0/8 245.0.0.0/8 246.0.0.0/8
247.0.0.0/8 248.0.0.0/8 249.0.0.0/8 250.0.0.0/8 251.0.0.0/8 252.0.0.0/8
253.0.0.0/8 254.0.0.0/8 255.0.0.0/8"
# NMAP FIN/URG/PSH
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit
5/minute -j LOG --log-level $LOG_LEVEL --log-prefix "NMAP-XMAS:"
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
# SYN/RST
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit
5/minute -j LOG --log-level $LOG_LEVEL --log-prefix "SYN/RST:"
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# SYN/FIN -- Scan(probably)
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit
5/minute -j LOG --log-level $LOG_LEVEL --log-prefix "SYN/FIN:"
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# Loopback interface.
$IPTABLES -A INPUT -i $LOOPBACK_NIC -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_IP -d $INTRANET_IP -j ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_IP -d $BACKUPNET_IP -j ACCEPT
# Echo Reply (pong)
$IPTABLES -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
# Destination Unreachable
$IPTABLES -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
# 3Ware
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport 1080 -j
ACCEPT
# DNS
$IPTABLES -A INPUT -d $DMZNET_IP -p tcp --dport domain -j ACCEPT
$IPTABLES -A INPUT -d $DMZNET_IP -p udp --dport domain -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport domain -j
ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p udp --dport domain -j
ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_NET -d $BACKUPNET_IP -p tcp --dport
domain -j ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_NET -d $BACKUPNET_IP -p udp --dport
domain -j ACCEPT
# NetBIOS
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p udp --dport
netbios-ns -j ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_NET -d $INTRANET_IP -p udp --dport
netbios-ns -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_BROADCAST -p udp --dport
netbios-ns -j ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_NET -d $BACKUPNET_IP -p udp --dport
netbios-ns -j ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_NET -d $BACKUPNET_BROADCAST -p udp --dport
netbios-ns -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p udp --dport
netbios-dgm -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_BROADCAST -p udp --dport
netbios-dgm -j ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_NET -d $BACKUPNET_IP -p udp --dport
netbios-dgm -j ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_NET -d $BACKUPNET_BROADCAST -p udp --dport
netbios-dgm -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport
netbios-ssn -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p udp --dport
netbios-ssn -j ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_NET -d $BACKUPNET_IP -p tcp --dport
netbios-ssn -j ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_NET -d $BACKUPNET_IP -p udp --dport
netbios-ssn -j ACCEPT
# SSH
$IPTABLES -A INPUT -s login.dkuug.dk -d $DMZNET_IP -p tcp --dport ssh -j
ACCEPT
# Compaq SSH NAT DNS lookup doesn't allways work, so we have to use the IP
address instead
$IPTABLES -A INPUT -s 161.114.3.118 -d $DMZNET_IP -p tcp --dport ssh -j
ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport ssh -j
ACCEPT
$IPTABLES -A INPUT -s $BACKUPNET_NET -d $BACKUPNET_IP -p tcp --dport ssh -j
ACCEPT
# HTTP & HTTPS
$IPTABLES -A INPUT -d $DMZNET_IP -p tcp --dport http -j ACCEPT
$IPTABLES -A INPUT -d $DMZNET_IP -p tcp --dport https -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport http -j
ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport https -j
ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d
www.dassic.com -p tcp --dport http -j
ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d
www.dassic.com -p tcp --dport
https -j ACCEPT
# SMTP, POP3 & IMAPS
$IPTABLES -A INPUT -d $DMZNET_IP -p tcp --dport mail -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport mail -j
ACCEPT
$IPTABLES -A INPUT -d $DMZNET_IP -p tcp --dport pop3 -j ACCEPT
$IPTABLES -A INPUT -d $DMZNET_IP -p tcp --dport imaps -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport imaps -j
ACCEPT
# SNMP
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p udp --dport snmp -j
ACCEPT
# SNMP Trap
$IPTABLES -A INPUT -s $DMZNET_ROUTER_IP -d $DMZNET_IP -p udp --dport
snmptrap -j ACCEPT
# NTP
$IPTABLES -A INPUT -d $DMZNET_IP -p udp --dport ntp -j ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p udp --dport ntp -j
ACCEPT
# StatDB
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport 51234 -j
ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport 51235 -j
ACCEPT
# MySQL
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport mysql -j
ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p udp --dport mysql -j
ACCEPT
# Squid
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport squid -j
ACCEPT
# LDAP
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport ldap -j
ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport ldaps -j
ACCEPT
# NNTP
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport nntp -j
ACCEPT
$IPTABLES -A INPUT -s $INTRANET_NET -d $INTRANET_IP -p tcp --dport nntps -j
ACCEPT
# BootPC... stoopid bootp stuff from 3Com NIC in Lorca which can't be
disabled in the card
$IPTABLES -A INPUT -p udp --dport bootps -j DROP
# Compaq HTTP WBEM....stoopid Insight Manager stuff
$IPTABLES -A INPUT -p udp --dport 2301 -j DROP
# SSDP... yet another pathetic M$ product
$IPTABLES -A INPUT -p udp --dport 1900 -j DROP
# Microsoft ds.....yet again
$IPTABLES -A INPUT -p tcp --dport microsoft-ds -j DROP
# Microsoft DirectPlay...and once again
$IPTABLES -A INPUT -p udp --dport 2234 -j DROP
$IPTABLES -A INPUT -j LOG --log-level $LOG_LEVEL --log-prefix "IPTables
INPUT : "
#$IPTABLES -A FORWARD -j LOG --log-level $LOG_LEVEL --log-prefix "IPTables
FORWARD : "
/Jesper