Tilbage
LINUX som webserver
LINUX som webserver
  LINUX som webserver LINUX som webserver
 
 

Index:

Gammel Pc med to netkort

Linux server versionen

ADSL fra Tele Danmark

Fast IP-adresse

Domæne

Webserveren Apache

Egen E-mail server?

Firwall, Iptables til Linux

Aktive FTP problem

Firewall scriptet

Se scriptet




Linux: Powered by Apache


Linux: Powered by Fedora Core



Se også
på Niveaa.dk:


Touch skærm på
museum - howto


Nyt website med nyheder p Joomla

Økonomikørsel
Kr Grnt


Langstrupstien

Nivå slide show

Historisk racerløb

Oltidsvej ved Nivå ?

Linux siderne
   Er Linux noget ...

Links

'Nivå' til forsiden

3D-computeranimation

Mogens Glistrup i gyngen
- historien bag pressefoto



Websitet er flyttet til Surftown - selvfølgelig på en Linux server. Mit bidrag til at mindske CO2. Sparer 1.200 kr. pr. år i eludgift til egen webserver.
Men da mange besøger dette webserver-site, vil det fortsat være tilgængeligt.


Linux Fedora Core som firewall, webserver og router med aktive FTP transfere.

Af John Stæhr  Opdateret 05.01.2011 (# SMTP)

Opsætning af deling af Internet på privat netværk med Tele Danmark ADSL, og løsning af problemet med FTP aktive transfere fra en Pc på netværket, bag ved Linux serveren. Der er benyttet Netfilter (Iptables).

Lun på tanken om egen webserver:
Jeg skulle udskifte mit ISDN med ADSL og var lun på iden om at få min egen webserver. Desuden havde jeg hørt, at det gav meget stor sikkerhed hvis man brugte en Linux maskine i stedet for en router eller en Windows Pc med deling af Internet, for vi skulle naturligvis have hver sin Pc med adgang til Internettet her i huset.
Hardware - en gammel Pc med to netkort:
Jeg har en gammel IBM Aptiva 350 Mhz Pc med 256 MB RAM, og en 8 GB harddisk, den skulle være min webserver, router o.s.v.. Da en webserver/router altid er tændt, var det tilmed en fordel med den gamle maskines lavere strømforbrug. Det havde en Linux-bekendt i hvert fald fortalt mig. Og så kunne det jo godt passe?

Siden har jeg ændret harddiskene til raid med to 80 GB spejlede diske. Så kører serveren videre selvom en harddisk står af, hvilket er sket et par gange. Jeg arbejder nu med en stor database på serveren, så raid er en god id, selvom det ikke kan erstatte backup. Og IBM'en kører stadig uden problemer her i januar 2007, selvom den er fra 1998.

Reserve maskine:
Når der skal laves større systemændringer på serveren, bliver der uvægerligt et tidsrum, hvor serveren er nede. Her har jeg en gammel "no name" 200 Mhz maskine med Linux Fedora Core på, som jeg lige opdaterer hjemmesiden på, venter en time (af hensyn til TDC), og så på nettet med den. Så er der ro til at få det hele til at køre ordentligt på IBM'en. Og man skulle jo nødigt miste sine gode placeringer i Google.

To netkort:
For at kunne fungere som router, skulle Linux-maskinen have to netkort, et til ADSL forbindelsen og et til det lokale netværk, hvor jeg i forvejen anvendte en Switch. Da jeg var nybegynder med Linux, kunne jeg ikke få Linux til at genkende mine meget gamle ISA netkort, så jeg investerede i to nye PCI 10/100 kort.

Det blev dog nødvendigt, at få min "Linux-bekendt" til køre "hardware" setup på netkortene, for at få dem til at virke. Præcis de samme kort, virkede dog uden setup i Windows.

Netkortet der er forbundet med ADSL, kaldte jeg i opsætningen for eth0, og satte det op til at hente IP-adresse og DNS automatisk. Kortet til netværket kaldte jeg for eth1 og det fik IP-adressen 192.168.1.1 med undernetmasken 255.255.255.0. Klientmaskinerne fik Ip-adresserne 192.168.1.2 og 192.168.1.3 o.s.v., begge ligeledes med undernetmasken 255.255.255.0.

Det har i øvrigt ingen betydning, om du, af en eller anden grund, bytter om på netkortene (eth1 og eth0), når blot du ændrer det tilsvarende i firewall scriptet, som vi kommer tilbage til om lidt.

Jeg valgte ikke at installere SAMBA til det lokale Windows netværk på Linux maskinen. Altså ingen deling af printer og filer mellem Linux og Windows maskinerne her.

Top
Linux server versionen:
Jeg købte Linux Fedora Core distributionen hos www.linuxpusher.dk for godt 100 kr. Jeg skulle bruge server versionen, som er en del af Fedora Core distributionen. Men da jeg skulle installere Fedora Core, opstod der problemer.

Installationen krævede svar på en hel del spørgsmål, som ikke lige var paratviden, selv for en superbruger af Bill Gates produkter, som mig. Men det lykkedes til sidst. Beviset på det er, at du lige nu kigger på en fil, der ligger på min egen Linux "hjemme" Apache webserserver.

Top
ADSL fra Tele Danmark
I forvejen havde vi TDC Opasia ISDN i huset, så det var nærliggende at opgradere til deres ADSL. Men efter mange forgæves forsøg, fandt jeg ud af, at ADSL Netexpress fra TDC Opasia - den der nu hedder TDC Bredbånd (PPPoE) - ikke lige er det nemmeste for en Linux bruger. Men, at jeg i stedet skulle have valgt Tele Danmark Internet's ADSL løsning - som nu hedder TDC Bredbånd (DHCP). Det var før det hele blev slået sammen hos TDC.
Efter en del korrespondance, blev jeg løst fra Opasia's 6 måneders binding, så jeg kunne få den rigtige løsning for mig og Linux, nemlig Tele Danmark ADSL (DHCP).
En afgørende forskel.
Jamen det er da samme firma? Ja det er det, men med to vidt forskellige ADSL-løsninger. Men siden da har TDC besluttet at lægge de to udbydere sammen (januar 2003). Det forvirrede kunderne. Og nu har de som sagt givet de to ADSL-typer navnene (PPPoE) og (DHCP).

ADSL Netexpress (PPPoE) ligner meget en ISDN- eller modemforbindelse, med et opkaldsprogram, som kan fås til både Windows og Mac, men ikke til Linux. For mange private med Windows og Mac er Netexpress sikkert en fordel, fordi man kan lukke forbindelsen ned, når den ikke bruges.
Fedora Core har ganske vist en PPPoE funktion, men jeg kunne som sagt ikke få det til at virke.

Til gengæld var ADSL fra Tele Danmark Internet (DHCP) usædvanlig let at gå til med Linux. Skru boksene fast i væggen, sæt det medfølgende kabel i det dertil indrettede stik i dit netkort (eth0), og du er på Internettet. Intet skal installeres på Pc-en fra TDC Bredbånd - intet. Det er som at forbinde to Pc'er i et netværk. Til gengæld er du på nettet altid, når Pc'en er tændt. Men det er jo ikke noget problem med en Linux Iptables Firewall.

Top
Fast IP-adresse:
Nu manglede jeg så at få en fast IP-adresse til min webserver. Den kan bestilles hos Tele Danmark, det koster 120 kr. om året. Man kan dog også have sin egen webserver med dynamisk tildelte IP-adresser, hvis man ellers kan finde ud af det.
Domæne:
Nu er et IP-nummer ikke nogen god adresse for en hjemmeside. Jeg skulle altså bruge et domæne, og ikke mindst; det skulle kunne bruges til min private webserver. Og så skulle jeg kunne administrere domænet selv over Internettet. Der er forskellige firmaer som kan levere dette til meget små penge, som f.eks. www.dht.dk eller andre.
Der er også gratis muligheder som f.eks. www.gratisdns.dk.
Sagen er at et dk-domæne skal hostes på to DNS servere og det kan man ikke sådan uden videre selv gøre. For at få lov til at køre navneserver, skal man indbetale over 31.000 kr. eller mere i depositum, samt opfylde forskellige tekniske og administrative krav, så den service må man altså købe ude i byen.

Top

Flere domæner på samme server:
Du kan sagtens hoste flere domæner på denne samme Apache server. Du skal blot oprette en "virtuel server" for hvert domæne.
Hvis du bruger andre filnavne end index.htm - index.PHP osv., så husk at lave en index.htm i alle mapper - også i billeder og grafik - eventuelt med en redirect i javascript til den rigtige side. Hvis du ikke gør det, vil alle kunne se dit filsystem i mappen, blot ved at skrive mappens navn i URL'en.

Google og andre søgemaskiner:
Og så hører det med til jobbet som "Webmaster", at have kendskab til hvordan man fjerner sider fra Google og andre søgemaskiner. Du kan læse hvordan på Googles hjemmeside under tilføj/fjern hjemmesider. Der skal som minimum oprettes en robots.txt i roden på din server.

Desuden: Husk at skrive dine søgeord/søgestreng i sidernes title. Du kan se i Googles søgeresultater, hvor meget der kommer med i deres indeksering - det er den med bold skrift markerede overskrift. Eller du kan kigge i title på denne side. Består din sider hovedsageligt af grafik, billeder og links, så husk også at udfylde din "meta description", med dine foretrukne søgeord indflettet i en sætning. Du kan også se i Googles søgeresultater, hvor meget der kommer i betragtning i deres beskrivelse af siden. Det bør du altid gøre hvis du ikke har en beskrivende tekst på din side. Jeg gør det altid selv, uanset hvilken tekst der er på selve siden.

Top
Webserveren Apache:
Er brugbart sat op i serversionen af Fedora Core, hvis man altså har valgt Apache under installationen. Men den skal startes først. I terminalen skriver du ntsysv og der fremkommer en dialog boks hvor man sætte * i de moduler der skal startes sammen med Linux - find httpd og sæt * ved hjælp af tab tasten. Pas på ikke at slå noget fra, hvis du ikke lige ved hvad du har gang i.

Man kan også starte modulet selv, hver gang man har bootet. I teminalvinduet skrives; service httpd start, eller måske skulle du lige skrive service httpd status først, for at se om Apache er aktiv i forvejen. Man kan også lukke webserveren ned ved at skrive; service httpd stop. Eller man kan restarte ved at skrive; service httpd restart, hvis man har ændret noget i configurationen af Apache. Husk at du skal være logget på som root for at få lov.

Du kan se om Apache virker (port 80) ved at åbne en af Fedora Cores webbrowsere og skrive localhost i adressefeltet. Du kan også skrive 127.0.0.1. Der vises så en testside, hvor der i øvrigt er links, hvor du kan læse en masse om Apache webserveren.
Hvis dit netværk er oppe at køre med ADSL og det hele, kan du skrive din IP-adresse eller dit domæne på samme måde i en af klienternes webbrowsere. Du kan se din IP-adresse ved at skrive ifconfig i terminalvinduet, du skal atter være logget på som root for at få lov.

Det er i øvrigt en rigtig dårlig id, at køre webserver som root, der er jo fri adgang for alle de slemme fra hele den store verden. Opret dig selv som bruger, og kør Linux som bruger, så bestemmer du sandsynligvis selv, hvornår nogen skal pille ved dine systemfiler.

Top
Egen E-mail server?
# Det ser ud til at TDC nu tillader, at du bruger dit webhotels SMTP server til udgående post. Så prøv det først.

Tele Danmark tillader ikke at du kører indgående SMTP på port 25, så du kan altså ikke umiddelbart køre post-server. Dette for at beskytte dig imod, at din postserver overtages af en eller anden "spammer". Til gengæld kan du sende e-mail med SMTP via f. eks. "Sendmail". Hvis du f. eks. arbejder med PHP. Men du kan naturligvis også sende og modtage post med Fedora Cores almindelige (bruger) e-mailprogram som normalt.

Jeg har valgt at forwarde mit domænes e-mail adresser hos www.dht.dk, til den e-mailkonto som følger med TDC abonnementet. Dette er en af de muligheder der følger med i dht's domæne administrations løsning, som jeg tidligere har nævnt under domæne.
Hvis man alligevel ønsker at køre post-server er der en mulighed, hvis man bruger en anden SMTP adresse end den almindelige "smtp.mail.dk" hos TDC. Muligheden hedder "backup-mx-post.tele.dk". Men dt der med at bruge "sendmail", det er ikke sådan lige at gå til!!!

Top
Iptables, firewall i Linux:
Når man åbner www port 80 for alle i hele verden, og lader al Internet-trafik gå igennem sin Linux maskine, så er der ligesom i Windows noget der hedder Firewall, der kan lukke af for alle de slemme drenge. For jeg nægter at tro på, at der er piger der er slemme på den måde. I de nyeste Linux-distributioner hedder sikkerheden Netfilter, også kaldet Iptables. Her var jeg så heldig, at en flink og meget kompetent mand, Henrik Størner havde lagt et script ud på nettet, som jeg kunne bruge. Jeg skulle bare fjerne nogle "havelåger" "#", for at få de ting jeg skulle bruge til at virke. Og så i øvrigt gøre præcis som han har skrevet i sine kommentarer i selve scriptet. Ingen ben i det.

Top
Aktive FTP problem med Iptables:
Men... jeg passer en hjemmeside, der ligger på en server der ikke accepterer passive transfere, som mit FTP program normalt er sat op til (det program man flytter filer ud på en webserver med). Når jeg skulle lægge mit arbejde ud på denne server - fra min Windows-maskine bag ved Linux-serveren - lukkede Linux Iptables totalt af. Henrik Størner skrev flere gange i sslug-nyhedsgruppen: "Husk modulet ip_conntrack_ftp". Men det løste ikke mit problem.
Efter mange dages søgen på nettet, lykkedes det mig så omsider at finde løsningen; der skulle bruges endnu et modul: ip_nat_ftp. Og så var der hul igennem. Dette kun for at illustrere, hvor besværligt og tidskrævende Linux kan være. Selvom der er flinke folk ude på nettet til at hjælpe.

Jeg har nu skrevet modulerne ind i mit Iptables, nærmere bestemt i filen Securenet som ses nedenfor, og begge moduler loader nu automatisk, når jeg booter Linux.

Top
Firewall scriptet Netfilter:
Mit netfilter (Iptables) som efter modificering virker som router, webserver og med aktive FTP transfere.

Skriptet her er af Henrik Størner, og scriptets fil; Netfilter.sh kan du hente på denne adresse: http://www.sslug.dk/sikkerhed/netfilter.html, men dt du kan se herunder er delvis fordansket, efter bedste evne.
Men hent Henrik Størners fil, og ret den til. Og brug denne her som inspiration.

Det smarte ved scriptet er bl.a., at man blot skal følge anvisningerne i selve scriptet, så virker det. Sæt havelåge "#" foran det som du ikke skal bruge, eller fjern "#".

For at få Størners script til at virke skal du i NTSYSV fjerne markeringen for Iptables, så kun Securenet starter, når du booter maskinen. Jeg har netop opgraderet til Fedora Core og her var dette vigtigt. Men det kan være svært at huske, hvad man gjorde da man satte RH 7.3 op for tre år siden. Sådan en server, den kører bare i årevis. Den koster i øvrigt ca. 1.200 kr. om året i el-forbug.

Du kan teste om Securenet kører ved i kommandofortolkeren at skrive: "service iptables status", eller "service securenet restart". Hvis den svarer, med informationer, som du kan genkende fra scriptet, eller at kæden allerede findes - så er alt ok. Hvis den kun svarer med en *ny promt* så har du ingen firewall eller NAT kørende.

Opdatering af Fedora Core kernel:
Jeg har netop opdateret til en ny kernel. Efter reboot virkede NAT ikke, selvom jeg havde valgt update da jeg installerede den. Det skyldtes, at den nye kernel havde ændret i /etc/sysctl.conf / net.ipv4.ip_forward=1 så der nu stod =0 - så tjek det lige, hvis du får problemer. Se i øvrigt nederst i scriptet herunder.

Jeg har testet scriptet efter opsætningen på www.dslreports.com/scan/ (stoppet). Efter portscanning fik jeg denne bedømmelse:
  • All TCP filtered: No response
  • All UDP filtered: No response
Conclusion: Healty Setup! We could detect notting interesting on any of the default ports on your IP adress. Your computer appears to be a hard target. Well done!

Top
Her er så scriptet:
# !/bin/sh
#
# Konfigurer sikkert netvaerk for Linux 7.x
#
# Ved f.eks. brug af Linux til deling af Internet på netwaerk.
#
# chkconfig: - 06 90
# Beskrivelse: Setup firewall og netvaerk sikkerhed
# Dette forudsaetter at dit Internet er på eth0 forbindelse
# og den lokale (trovaerdige) LAN er eth1

#
# Aktiver eller deaktiver regel, ved at fjerne eller indsætte "#"
#
# For at installere dette på et Fedora Core system,
# gem dette script som:
# /etc/rc.d/init.d/securenet
# koer derefter kommandoerne herunder i terminalvinduet:
#
# chmod 755 /etc/rc.d/init.d/securenet
# /sbin/chkconfig --add securenet
# /sbin/chkconfig --level 2345 securenet on
#
# Resten klarer scriptet selv, bortset fra at skrive
# et 1-tal i en fil til allersidst:
#
# Denne "iptables" kommando er tilgaengelig fra
# http://netfilter.kernelnotes.org/
# Og rpm-pakken er tilgaengelig fra Fedora Core's
# contrib-section
#
# Henrik Størner, henrik@storner.dk
# Redigeret 08.02 niveaa.dk

PATH=/bin:/sbin:/usr/bin:/usr/sbin

#########################################
# Foerst setup nogle kernel features
#########################################

# Deaktiver forwarding - dette er for systemer der ikke
# indgaar i netvaerk.
# (For masquerading, (netvaerk) se senere).
# echo "0" >/proc/sys/net/ipv4/ip_forward

# Aktiver syn-cookies (syn-flooding "angreb")
echo "1" >/proc/sys/net/ipv4/tcp_syncookies

# Deaktiver ICMP echo-request til broadcast addresser
# (Smurf amplifier)
echo "1" >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Deaktiver source-routing og aktiver IP spoof detection
# Det ser ud til at dette maa goeres for alle netvaerk interfaces
for f in /proc/sys/net/ipv4/conf/*; do
# Drop alle source-routed pakker
echo "0" >$f/accept_source_route

# Aktiver source-address verification (anti spoofing).
# Vaerdien 2 betyder brug adgangs filtrering som per RFC 1812.
# Det ovenover er lidt mere end et simpelt routing tjek
# (aktiver med 1) men det er uden betydning for de
# fleste hjemme brugere.
echo "2" >$f/rp_filter
done

# Indlaes ftp "aktive transfere" moduler.
# hvis din hjemmeside filer ikke kan overfoeres til en
# ftp-fjernadresse via passive transfere
# (med dit ftp-program fra en anden enhed
# paa netvaerket)
#      /sbin/modprobe ip_conntrack_ftp
#      /sbin/modprobe ip_nat_ftp

######################
# Setup IP firewalling
######################

# Standard regler
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT

# Lav en faelles kaede for INPUT og FORWARD handlinger
# kaedenavn "block"
iptables -N block
iptables -F block

# Tillad trafik paa etablerede forbindelser
iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
# Tillad nye forbindelser, hvis det ikke er udefra.
iptables -A block -m state --state NEW -i ! eth0 -j ACCEPT

# Drop hjemmesider som mine boern ikke maa se - skriv ip-nummeret
# iptables -A block --destination 80.198.x.x -j DROP
# Husk at koer "service securenet restart" naar du har
# tilfoejet ip-adresser.

# Drop foelgende ip-numre som generer min webserver
# med ulovlige forespoergsler i laengere tid
# iptables -A block --source 80.198.29.171 -j DROP
# iptables -A block --source 80.198.29.173 -j DROP
# Husk at koer "service securenet restart" naar du har
# tilfoejet ip-adresser.

# Kun for webserver (httpd service).
# Tillad ny forbindelse til vor offentlige http service
# For hjemme brugere er der normalt ingen webserver.
# Hvordan du goer dette, afhaenger af, om servicen koerer paa
# firewall serveren, eller paa et andet system "bag"
# firewall'en (brandmuren)
# (paa den interne LAN, eller paa en separat netvaerks
# enhed - kaldet DMZ).
# Den foelgende kommando behoeves i begge tilfaelde:

# Her Aabnes for din httpd (www) webserver.
iptables -A block -m state --protocol tcp --state NEW --destination-port http -j ACCEPT

# Nedenstaaende kun hvis httpd (webserveren) befinder sig
# paa en anden enhed i netvaerket. (her: 192.168.1.2), saa maa du
# lave "port forwarding" som her (ingen brug for ipmasqadm mere):
# iptables -t nat -A PREROUTING --protocol tcp --destination-port
# http -j DNAT --to # 192.168.1.2

# Bloker alt andet
iptables -A block -j LOG

# Aktiver den nye kaede
iptables -A INPUT -j block
iptables -A FORWARD -j block

######################################
# Setup Masquerading (deling af Internet f.eks.)
######################################

# Setup NAT for udgaaende forbindelser fra det lokale netwaerk
# Hvis du har netvaerk bag linux serveren, og maskinerne
# bagved skal på
# Internettet, og du skal bruge ftp til fjernadresser osv.
### NB: Dette er slaaet fra som default. Hvis du oensker at bruge ###
### masquerading, fjern "###" kommentar maerkerne ###
### fra linierne her under ###

iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#
# NB: På et Fedora Core system, er forwarding
# kontrolleret i /etc/sysctl.conf !
# Du skal derfor saette net.ipv4.ip_forward=1 (til 1)
# i denne fil, ellers vil
# kommandoen herunder ikke have nogen effekt.
# Filen findes i stien som vist i kommandoen herover

echo "1" >/proc/sys/net/ipv4/ip_forward

#Slut


Print version af scriptet (Åbner i nyt vindue)

Top