Avatar billede homemicky Nybegynder
11. august 2004 - 16:48 Der er 18 kommentarer og
2 løsninger

Hvordan sætter jeg iptables op?

Hej hej

Jeg er igang med et skoleprojekt, hvor jeg skal have sat en firewall op med iptables, og efter at man ikke kan få meget ud af læren, så vil jeg gerne prøve, at spørge herinde. I vores projekt indgår der 2 windows server, 2 linuxserver og en klient, webserver og mailserver på DMZ-zonen.

De to WINDOWS Server har henholdsvis 212.10.10.5 og 212.10.10.6
windows kllienterne der får fra DC'en får numrene 212.10.10.10 til 10.

(Redhat 9.0)
LINUX-maskine1: Firewallen har 3 netværkskort eth2 212.10.10.1, eth1 202.10.10.1, eth0 192.168.1.90.

(Redhat 9.0)
LINUX-maskine2: Web- og mailserver på DMZ og har ip'en 202.10.10.10.

Jeg kunne tænke mig at høre om der er nogle der vil hjælpe mig at lave sådan et script. Har kigget lidt på MAN iptables,men defra også lave et script ligger fjernt ude. Det ville være hvis man havde et script som skulle ændres lidt ved, men sådan et har jeg ikke :-( HJÆLP , og så vil jeg vildt glad.
Avatar billede bufferzone Praktikant
11. august 2004 - 17:00 #1
Jeg kan nok hjælpe dig med en del af det.

Du kan starte med at hente denne opgave:
http://www.giac.org/practical/Peter_Vestergaard_GCFW.zip

Den indeholder en tutorial i hvordan du sætter en netfilter firewall op samt det færdige script. Du kan næsten bruge scriptet direkte, hvis du fjerner alt der har med IPSec og PPTP opsætning at gøre og så sætter dine egne IP adresser ind i stedet
Avatar billede homemicky Nybegynder
11. august 2004 - 17:08 #2
på hvilken er scriptet ?? eller er det spredt
Avatar billede homemicky Nybegynder
11. august 2004 - 17:09 #3
side
Avatar billede bufferzone Praktikant
11. august 2004 - 17:14 #4
Jeg finder da gerne siden numrene til dig. Vender tilbage
Avatar billede bufferzone Praktikant
11. august 2004 - 17:16 #5
Netfilter (IPchains) tutorial side 25
Firewall script findes i Appendix A side 68
Avatar billede homemicky Nybegynder
11. august 2004 - 17:29 #6
puha der står meget jeg havde regnet med en side eller 2. Det bliver en hård og sidde med til eksamen :-)
Avatar billede bufferzone Praktikant
11. august 2004 - 17:37 #7
Nej for alt er forklaret og kommenteret, Hvis du nærlæser scripterne og forklaringen så vil du se at det er forklaret i detaljer. Skulle der være noget du ikke helt forstår, så hjælper jeg gerne
Avatar billede webmasterdk Praktikant
11. august 2004 - 17:42 #8
Homemicky > Undskyld jeg spammer :)
Bufferzone > Har du tid til at kigge på: http://www.eksperten.dk/spm/521644 ?
Avatar billede homemicky Nybegynder
11. august 2004 - 17:55 #9
NTPserver hvad laver den ??
Avatar billede bufferzone Praktikant
11. august 2004 - 18:27 #10
NTP serveren er en Network Time Server. Den er ret vigtig i et sikkert netværk. Hvis dine serveres tid ikke går ens, vil det være svært at bruge logfilerne til noget som heldst og hvis du skal politi anmelde noget som heldst, så skal serverne gå ret præcist, da dine logs også skal kunne sammenlignes med internet udbyderens log.

Systemet er sådan at der findes et antal meget præcise servere rund om i verden, f.eks. står en hos NASA. der er så nogle servere der synzer med NASA's niveau 1 server. Disse servere er så niveau 2. Du kan så sætte din router (hvis det f.eks. er en Cisco til at synce med den antianale niveau 2 tids server. Din Cisco bliver så en niveau 3 tids server. NTP serveren på dit interne net bliver så en niveau 4 tidsserver når den syncer med din router og det er præcist nok (faktisk meget præcist)
Avatar billede homemicky Nybegynder
11. august 2004 - 18:47 #11
Passer det script ikke til det jeg startede med at skrive?? vil det kunne kører med de ip-adresser som vi har forslået.
+ jeg har vel heller ikke noget at bruge router_config til noget eller hvad ?
Jeg har prøvet at minimere så det bliver lig det netværk vi har nu, så kan vi altid sætte mere på, hvis vi vil have det. Men jeg kunne godt tænke mig, at høre om du tror at det vil virke med det her script: ud fra dit script

#!/bin/bash
# GIAC enterprises
# (C) 2002 Peter Vestergaard
#
#-----------------------------------------------------------------------------
# SETUP ENVIRONMENT VARIABLES
#-----------------------------------------------------------------------------
IPTABLES="/sbin/iptables"         # Iptables binary

LO_INT="lo"            # Loopback Interface
LAN_INT="eth2"        # Internal Interface to LAN
WAN_INT="eth0"        # External Interface to Internet
DMZ_INT="eth1"        # DMZ Interface
LAN_NET="212.10.10.0/24"        # allowed to access the internet
DMZ_NET="202.10.10.10"        # The service network

# Get the IP-address for the interfaces
LAN_IP="`ifconfig $LAN_INT | grep \"inet addr\" | cut -f 2 -d \":\" | cut -f 1 -d \" \"`"
WAN_IP="`ifconfig $WAN_INT | grep \"inet addr\" | cut -f 2 -d \":\" | cut -f 1 -d \" \"`"
DMZ_IP="`ifconfig $DMZ_INT | grep \"inet addr\" | cut -f 2 -d \":\" | cut -f 1 -d \" \"`"

LO_IP="127.0.0.0"        # Loopback device
INT_MAILSERVER="202.10.10.10"    # The mail server on the LAN
ROUTER_CONFIG="10.0.0.3"        # The ip number allowed to configure the router
LO_FP="212.10.10.5"        # Head office file and print server
LO_DC="212.10.10.5"        # Head office Domain controller

INT_DNS="212.10.10.5"        # The dns server on the service network
EXT_MAILSERVER="202.10.10.10"    # The mail server on the service network
EXT_WEBSERVER="202.10.10.10"    # The web server on the service network
# network
EXT_DNS="193.162.159.193"        # The dns server provided by the ISP

#-----------------------------------------------------------------------------
# TELL SYSLOG AND CONSOLE THAT THE SCRIPT HAS BEEN STARTED
#-----------------------------------------------------------------------------
echo "`date` : FIREWALL SCRIPT RESTARTED" >> /var/log/messages

echo
echo "Linuxfirewall at GIAC Enterprises"
echo "(C) CopyRight by Peter Vestergaard, 2002"
echo "All rights reserved"
echo
echo "Initiating firewall with these settings:"
echo "- External adapter:        $WAN_INT ($WAN_IP)"
echo "- Internal adapter:        $LAN_INT ($LAN_IP)"
echo "- DMZ adapter    :        $DMZ_INT ($DMZ_IP)"
echo
echo -n "Initiating script            :"
echo "Done"


#-----------------------------------------------------------------------------
# START BY LOADING IPTABLES INTERFACE
#-----------------------------------------------------------------------------

echo -n "Loading IP-TABLES Interface        :"
modprobe ip_tables
echo "Done"

#-----------------------------------------------------------------------------
# FLUSH EXISTING CONNECTIONS, make sure that established related rules are flushed when adding or
# removing rules
#-----------------------------------------------------------------------------

echo -n "Flush connections        :"

$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
rmmod ip_conntrack_ftp
rmmod ip_nat_ftp
rmmod ipt_state
rmmod iptable_nat
rmmod ip_conntrack
echo "Done"

#-----------------------------------------------------------------------------
# NOW INITIALIZE AND SETUP DEFAULT RULES
#-----------------------------------------------------------------------------
echo -n "Setting up default rules        :"

# Default policies drop all packets.
$IPTABLES -P INPUT DROP            # Drop all packets to input
$IPTABLES -P FORWARD DROP            # Don’t forward anything
$IPTABLES -P OUTPUT DROP            # Drop all packets to output

# Flushing Standard chains
$IPTABLES -F INPUT               
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -Z INPUT               
$IPTABLES -Z FORWARD
$IPTABLES -Z OUTPUT

#-----------------------------------------------------------------------------
# CREATE AND FLUSH CHAINS
#-----------------------------------------------------------------------------

# Create chains for LOCAL packets destination firewall
$IPTABLES -N local
$IPTABLES -F local               

# Create a chains for packets from the internal NETWORK
$IPTABLES -N lan
$IPTABLES -F lan               

# Create a chains for packets from the internet
$IPTABLES -N wan
$IPTABLES -F wan               

# Create a chains for packets from the service network
$IPTABLES -N dmz
$IPTABLES -F dmz               

# Create a chains for forward packets
$IPTABLES -N forwardfromwantodmz
$IPTABLES -F forwardfromwantodmz       
$IPTABLES -N forwardfromwantolan
$IPTABLES -F forwardfromwantolan       
$IPTABLES -N forwardfromlantodmz
$IPTABLES -F forwardfromlantodmz       
$IPTABLES -N forwardfromlantowan
$IPTABLES -F forwardfromlantowan       
$IPTABLES -N forwardfromdmztowan
$IPTABLES -F forwardfromdmztowan       
$IPTABLES -N forwardfromdmztolan
$IPTABLES -F forwardfromdmztolan       
       

# Flush NAT-chain POSTROUTING and PREROUTING
$IPTABLES -t nat -F POSTROUTING
$IPTABLES -t nat -F PREROUTING
echo "Done"

#-----------------------------------------------------------------------------
# SETTING UP RULES FOR LOCAL INTERFACE
#-----------------------------------------------------------------------------
echo -n "Setting up LOCAL chain        :"

# Allow all connections, if the interface is local.
$IPTABLES -A local -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

echo "Done"

#-----------------------------------------------------------------------------
# SETTING UP RULES FOR INTERNAL INTERFACE
#-----------------------------------------------------------------------------
echo -n "Setting up LAN chain        :"

# Protect against IP-spoofing
$IPTABLES -A lan -s $WAN_IP/32 -j DROP
$IPTABLES -A lan -s $LO_IP/8 -j DROP
$IPTABLES -A lan -s $DMZ_IP/32 -j DROP
$IPTABLES -A lan -s $LAN_IP/32 -j DROP

# All other traffic that already HAS been established is OK
$IPTABLES -A lan -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A lan -j LOG --log-prefix "FW-LOG LAN INTERFACE:"
$IPTABLES -A lan -j DROP

echo "Done"

#-----------------------------------------------------------------------------
# SETTING UP RULES FOR WAN INTERFACE
#-----------------------------------------------------------------------------
echo -n "Setting up WAN chain        :"

# Protect against IP-spoofing
$IPTABLES -A wan -s $WAN_IP/32 -j DROP
$IPTABLES -A wan -s $LAN_IP/32 -j DROP
$IPTABLES -A wan -s $LO_IP/8 -j DROP
$IPTABLES -A wan -s $DMZ_IP/32 -j DROP

echo "Done"

#-----------------------------------------------------------------------------
# SETTING UP RULES FOR OUTPUT CHAIN
#-----------------------------------------------------------------------------
echo -n "Setting up OUTPUT chain        :"

$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -j LOG --log-prefix "FW-LOG OUTPUT:"
$IPTABLES -A OUTPUT -j DROP

echo "Done"
#-----------------------------------------------------------------------------
# SETTING UP RULES FOR DMZ INTERFACE
#-----------------------------------------------------------------------------
echo -n "Setting up DMZ chain        :"

# Protect against IP-spoofing
$IPTABLES -A dmz -s $WAN_IP/32 -j DROP
$IPTABLES -A dmz -s $LO_IP/8 -j DROP
$IPTABLES -A dmz -s $DMZ_IP/32 -j DROP
$IPTABLES -A dmz -s $LAN_IP/32 -j DROP

$IPTABLES -A dmz -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A dmz -j LOG --log-prefix "FW-LOG DMZ INTERFACE:"
$IPTABLES -A dmz -j DROP

echo "Done"
#-----------------------------------------------------------------------------
# SETUP RULES FOR PORTFORWARDING TO DMZSERVERS
#-----------------------------------------------------------------------------

echo -n "Setting up DMZ Portforwarding    :"

# Rules for the portforwarding to the servers on the DMZ
# Portforwarding from wan interface tcp port 25 to mail relay server port 25 on service network and allow this
# traffic from any on the internet
$IPTABLES -t nat -A PREROUTING -i $WAN_INT -p tcp -d $WAN_IP --dport 25 -j DNAT --to-destination $EXT_MAILSERVER:25
$IPTABLES -A forwardfromwantodmz -p tcp --destination $EXT_MAILSERVER --dport 25 -j ACCEPT
# Portforwarding from wan interface tcp port 80 and 443 to web server port 80 and 443 on service network and
# allow this traffic from any on the internet
$IPTABLES -t nat -A PREROUTING -i $WAN_INT -p tcp -d $WAN_IP --dport 80 -j DNAT --to-destination $EXT_WEBSERVER:80
$IPTABLES -A forwardfromwantodmz -p tcp --destination $EXT_WEBSERVER --dport 80 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $WAN_INT -p tcp -d $WAN_IP --dport 443 -j DNAT --to-destination $EXT_WEBSERVER:443
$IPTABLES -A forwardfromwantodmz -p tcp --destination $EXT_WEBSERVER --dport 443 -j ACCEPT

#-----------------------------------------------------------------------------
# SETUP MASQUERADING
#-----------------------------------------------------------------------------

echo -n "Setting up NAT chains    :"       

# Nat from LAN to WAN
$IPTABLES -t nat -A POSTROUTING -s $LAN_NET -o $WAN_INT -j SNAT --to-source $WAN_IP
# Nat from DMZ to WAN
$IPTABLES -t nat -A POSTROUTING -s $DMZ_NET -o $WAN_INT -j SNAT --to-source $WAN_IP

echo "Done"

#-----------------------------------------------------------------------------
# SETUP FIREWALL RULES
#-----------------------------------------------------------------------------

echo -n "Setting up firewall rules    :"       

# Packets coming from DMZ to WAN.
$IPTABLES -A forwardfromdmztowan -p udp --source $INT_DNS --destination $EXT_DNS --dport 53 -j ACCEPT #allow Internal dns to access the external dns server – for resolving Internet ip numbers
$IPTABLES -A forwardfromdmztowan -p tcp --source $INT_DNS --destination $EXT_DNS --dport 53 -j ACCEPT #allow Internal dns to access the external dns server – for resolving Internet ip numbers
$IPTABLES -A forwardfromdmztowan -p tcp --source $EXT_MAILSERVER --dport 25 -j ACCEPT #  Allow the
# mailserver to send mails outbound.
# Accept established and related traffic, log and drop the rest.
$IPTABLES -A forwardfromdmztowan -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A forwardfromdmztowan -j LOG --log-prefix "FW-LOG DMZTOWAN:"
$IPTABLES -A forwardfromdmztowan -j DROP

# Packets coming from WAN to DMZ.
# The rules allowing in traffic are placed directly below natting rules.
# Accept established and related traffic, log and drop the rest.
$IPTABLES -A forwardfromwantodmz -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A forwardfromwantodmz -j LOG --log-prefix "FW-LOG WANTODMZ PORTFWD"
$IPTABLES -A forwardfromwantodmz -j DROP

# Packets coming from DMZ to LAN.
$IPTABLES -A forwardfromdmztolan -p tcp --source $EXT_MAILSERVER --destination $INT_MAILSERVER --dport 25 -j ACCEPT #Allow the mail relay server to forward mail to the internal mail server.
# Accept established and related traffic, log and drop the rest.
$IPTABLES -A forwardfromdmztolan -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A forwardfromdmztolan -j LOG --log-prefix "FW-LOG DMZTOLAN STATEFULL:"
$IPTABLES -A forwardfromdmztolan -j DROP

# Packets coming from LAN to DMZ.
$IPTABLES -A forwardfromlantodmz -p tcp --source $INT_MAILSERVER --destination $EXT_MAILSERVER --dport 25 -j ACCEPT # Allow the internal mailserver to send mail to the mail relay server.
$IPTABLES -A forwardfromlantodmz -p tcp --source $LAN_NET --destination $EXT_WEBSERVER --dport 80 -j ACCEPT # Allow the internet enabled users to access the webserver on the service network
$IPTABLES -A forwardfromlantodmz -p tcp --source $LAN_NET --destination $EXT_WEBSERVER --dport 443 -j ACCEPT # Allow the internet enabled users to access the webserver on the service network
$IPTABLES -A forwardfromlantodmz -p udp --source $LO_DC --destination $INT_DNS --dport 53 -j ACCEPT
# Allow the internal DNS server to access the dns server on the service network.
$IPTABLES -A forwardfromlantodmz -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A forwardfromlantodmz -j LOG --log-prefix "FW-LOG LANTODMZ:"
$IPTABLES -A forwardfromlantodmz -j DROP

# Packets coming from LAN to WAN
# allow the internet enabled users to access http, https and ftp on the internet.
$IPTABLES -A forwardfromlantowan -p tcp --source $LAN_NET --dport 80 -j ACCEPT
$IPTABLES -A forwardfromlantowan -p tcp --source $LAN_NET --dport 443 -j ACCEPT
$IPTABLES -A forwardfromlantowan -p tcp --source $LAN_NET --dport 21 -j ACCEPT
$IPTABLES -A forwardfromlantowan -p tcp --source $ROUTER_CONFIG --destination $BORDERROUTER --dport 22 -j ACCEPT

# Allow 1 specific host to configure the router from the inside.
# Accept established and related traffic, log and drop the rest.
$IPTABLES -A forwardfromlantowan -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A forwardfromlantowan -j LOG --log-prefix "FW-LOG LANTOWAN:"
$IPTABLES -A forwardfromlantowan -j DROP

# Packets coming from WAN to LAN
# Accept established and related traffic, log and drop the rest.
$IPTABLES -A forwardfromwantolan -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A forwardfromwantolan -j LOG --log-prefix "FW-LOG WANTOLAN PORTFWD"
$IPTABLES -A forwardfromwantolan -j DROP
Avatar billede bufferzone Praktikant
11. august 2004 - 20:27 #12
Det er jo svært sådan lige at gennemskue, hvorfor prøver du det ikke af i praksis. Bor du i nærheden af frederiksberg, så har jeg et stest setop med en linux boks med 5 netkort, Cisco router og 3 klient maskiner. Vi kan også sætte servere på.
Avatar billede bufferzone Praktikant
11. august 2004 - 20:29 #13
Generelt ser det dog fornuftigt ud, idet jeg har følgende bemærkninger.

Du skal være opmærksom på at en del at den grundlæggende filtrering foretages i routeren, hvorfor den ikke er med i dette script. Det bør du lige kikke på. Se evt under konfiguration af router hvad der filtreres der.
Avatar billede homemicky Nybegynder
11. august 2004 - 21:33 #14
ærgeligt det gad jeg ellers godt :-), men der er lidt langt fra århus til kbh her på en onsdag aften.
Men nu prøver jeg med det her script imorgen oppe i skolen, og så kan jeg lige vende tilbage imorgen. Ellers tusinde tak for hjælpen indtil videre.
Avatar billede bufferzone Praktikant
11. august 2004 - 22:38 #15
Du kan roligt vende tilbage, da jeg kender Peter Vestergård personligt, så skal vi nok finde ud af tingene.
Avatar billede homemicky Nybegynder
12. august 2004 - 10:12 #16
Hej hej igen
Scriptet virker, men rmmod ip fejler har det de nogen betydning.
Jeg kunne godt tænke mig at det forkortet ned, så det kun fyldte 1-2 sider. Det er lidt vildt at sidde med det her når man kun har 20 min. Vil I hjælpe mig med det??
Avatar billede homemicky Nybegynder
12. august 2004 - 14:39 #17
Jeg har et andet script, som er lidt mindre, men godt nok ikke så sikkert som peter vestervang, men hvorfor vil det ikke kører?? Man kan godt kører den, men der sker ikke noget??
Avatar billede homemicky Nybegynder
12. august 2004 - 14:40 #18
Her er scriptet:

#!/bin/sh
#var
EXT_NIC="eth0"
DMZ_NIC="eth1"
INTRA_NIC="eth2"
LIN_SERV="202.10.10.10"
EXT_IP="192.168.1.90"
#modules
modprobe ip_conntrack_ftp
#flush
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING
iptables -F
#standard policies
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -P INPUT DROP
#open oneway out
iptables -A FORWARD -i $DMZ_NIC -o $EXT_NIC -j ACCEPT
iptables -A FORWARD -i $INTRA_NIC -o $EXT_NIC -j ACCEPT
#open ports
iptables -A FORWARD -d $LIN_SERV -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -d $LIN_SERV -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -d $LIN_SERV -p tcp --dport 80 -j ACCEPT
#DNAT
iptables -t nat -A PREROUTING -p tcp --dport 21 -d $EXT_IP -j DNAT --to $LIN_SERV
iptables -t nat -A PREROUTING -p tcp --dport 22 -d $EXT_IP -j DNAT --to $LIN_SERV
iptables -t nat -A PREROUTING -p tcp --dport 80 -d $EXT_IP -j DNAT --to $LIN_SERV
#SNAT
iptables -t nat -A POSTROUTING -o $EXT_NIC -j SNAT --to $EXT_IP
#state
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#icmp
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
#start forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
Avatar billede bufferzone Praktikant
12. august 2004 - 18:19 #19
homemicky>Mangler du ikke port 53 for at man kan browse? Denne bør åbnes specifikt til DNS serveren
Avatar billede homemicky Nybegynder
12. august 2004 - 22:12 #20
Det vil jeg lige prøve kigge på imorgen i skolen tak :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester