11. august 2004 - 16:48Der 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-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.
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
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
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)
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
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
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 #-----------------------------------------------------------------------------
#----------------------------------------------------------------------------- # FLUSH EXISTING CONNECTIONS, make sure that established related rules are flushed when adding or # removing rules #-----------------------------------------------------------------------------
#----------------------------------------------------------------------------- # 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
#----------------------------------------------------------------------------- # 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
# 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
# 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
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å.
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.
æ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.
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??
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??
Det vil jeg lige prøve kigge på imorgen i skolen tak :-)
Synes godt om
Ny brugerNybegynder
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.