VPN og Linux
For å ivareta sikkerhet, samt å ha kontroll over det trådløse
nettet har vi valgt å satse på VPN (Virtual Private Network) tjenester
basert på PPTP (Point to Point Tunneling Protocol) for å ha kontroll
med trafikken som går over det trådløse nettet.
Vi har opprettet en maskin som skal være VPN server ved UiB
(uib-vpn-gw.uib.no eller bare uib-vpn-gw når du kommer fra det
trådløse nettet). Tilsvarende er det opprettet VPN-servere ved NHH
(nhh-vpn-gw) og HiB (hib-vpn-gw) Primær oppgaven er å kjøre vpn
tunneler til brukere på det trådløse nettet, men det er selvsagt
ingenting i veien for å benytte dette for å virtuellt å koble seg til
UiB/NHH/HiB fra andre steder på Internet.
Alessio Pace has made a step-by-step HOWTO
in english!
Eksempel for Linux:
Eksempelet er laget for UiB, men ved å sette inn informasjon i
henhold til tabellen under vil ting fungere mot NHH/HiB.
VPN-server (Fra trådløs-nettet) |
VPN-server (Fra Internet) |
Brukernavn |
| uib-vpn-gw |
uib-vpn-gw.uib.no |
brukernavn@ansatt.uib.no (ansatte)
brukernavn@student.uib.no (studenter) |
hib-vpn-gw
|
hib-vpn-gw.hib.no
|
brukernavn |
Kompiler og innstaller PPTP for
Linux Du kan også hente ferdigkompilerte pakker (må være
oppkoblet) fra
http://pptpclient.sourceforge.net/download.phtml
From: marius.hjelle@roman.uib.no
Hei
det er tydeligvis en del usikkerhet knyttet til pptp-linux pakken og oppsett på RedHat. Først og fremst skyldes
dette ppp-mppe dependency. ' Saturday-night special' løsningen er å ignorere dette enten ved rpm --nodeps eller
lignende. Jeg har lenge brukt min hjemmesnekra rpm med ppp-mppe avskrud og det ser ut til å funke sånn passe.
Hei.
Jeg syns "VPN og Linux" avdelingen på http://www.wlan.uib.no er ganske knotete.
Jeg har laget et startup script som fikser ting litt enklere enn det som er
forklart på siden også. Websiden for dette scriptet er
http://bronz.mine.nu/~hanscats/VPN/"
Det hadde vært fint om scriptet enten hadde
ligget på wlan.uib.no eller at det var en link fra uib sin side til min.
Mvh
Hans Cats
Student UiB
Filen:/etc/ppp/pap-secrets
# /etc/ppp/pap-secrets ( husk chmod 600;chown root:root)
# Secrets for authentication using PAP
# client server secret IP addresses
user@rasmus vpn-gw hemmelig *
Filen: PPTP-ON
#########
# PPTP-ON
#########
#!/bin/bash
# Neste linje er for å slette tidligere tuneller hvis disse ikke
# har blitt avsluttet på en normal måte
/bin/rm -f /var/run/pptp/* 1>/dev/null 2>/dev/null
# Denne linjen kobler opp vpn-tunnellen vha. informasjon fra
# /etc/ppp/pap-secrets
/usr/local/sbin/pptp vpn-gw debug name user@rasmus defaultroute noauth
# PPP versjon opp til 2.3.9 trenger ikke noauth
#/usr/local/sbin/pptp vpn-gw debug name user@rasmus defaultroute
# Siden det tar et par sekunder for at Linux boksen skal få opprettet
# vpn forbindelsen og lagt til default route, lar vi scriptet henge
# litt før vi gjør tunnellen tilgjengelig.
sleep 10
Filen: PPTP-OFF
##########
# PPTP-OFF
##########
#!/bin/bash
killall pppd
/bin/rm /var/run/pptp/*
killall pppd
Du må selvsagt skifte user@rasmus med ditt brukernavn og rasmus med
maskinen du har konto på.
Linker for Linux
http://pptpclient.sourceforge.net
http://www.pdos.lcs.mit.edu/~cananian/Projects/PPTP/
Generellt:
Etter at man har opprettet en VPN tunnel til UiB vil all trafikk inn og ut
av maskinen din gå gjennom tunnelen til vpn-gw maskinen på UiB, og så
rutes fra den til dit den skal. Svaret vil sendes fra maskinen du snakker
med til vpn-gw for så å pakkes inn i tunnelen din, og sendes til deg. For
maskinen du "snakker" med på Internet vil du identifiseres som en UiB
maskin, med et UiB IP nummer.
Litt mer om PPTP
http://www.moretonbay.com/vpn/pptp.html
PPTP er et resultat av et draft fra IETF. PPTP er direkte implementert i
Microsofts operativsystemer. Klienter for andre operativsystemer har enten
allerede kommet, eller vil antaglig komme etterhvert. Pr i dag kjenner jeg
til at det finnes klient for NT/95/98, Linux, Solaris, Digital Unix,
OpenBSD og FreeBSD og flere vil etterhvert komme. Dermed føler vi at vi
kan satse på dette som en akseptabel løsning.
Bruke Linux som gateway mellom hjemmenett og UiB.
Vi har nå lagt opp til at du kan innstallere Linux direkte over den
trådløse linken. Last ned Linux bootdiskett
ftp://ftp.uib.no/pub/linux skriv den til en diskett
med dd hvis du har en unix maskin tilgjengelig, eller
ftp://ftp.uib.no/pub/linux hvis du har en dos
maskin. I den maskinen du skal ha Linux på setter du inn ett
nettverkskort, og kobler til SA-10 boksen. Så booter du maskinen med
bootnet disketten. Velg at du skal bruke dhcp på ethernet kortet, og at du
skal innstallere fra vpn-gw via ftp. Så går innstallasjonen... ingen cd
eller annet er nødvendig. RedHat ligger her:
ftp://ftp.uib.no/pub/linux
Ale filer kan lastes ned uten å opprette vpn forbinnelse først. (da hadde
det vært vanskelig å få innstallert) Grunnen til at det går uten vpn er at
alle filene ligger på vpn serveren.
Sånn, nå har du (forhåpentligvis) en maskin med Linux operativ
system...
Så nå er det bare å gå i gang å få opp pptp.....
Hvis du vil ha flere maskiner på nett er det bare å putte inn et nettkort
til i Linux burken. Legge til begge kortene i /etc/lilo.conf og boote.
Det nettkortet som skal være lokalnett gir du lokalnett-ip f.eks
192.168.1.1/255.255.255.0 og de andre pcene gir du gateway 192.168.1.1
Du kan jo fyre opp en dhcp server på linuxen, så trenger du ikke å
konfigurere de andre pcene i det hele tatt :-) Fyr opp en liten dns
server med et eller annet fiktivt domene (hjemme.no eller noe), og som
cache servere setter du opp 129.177.30.3 og 129.177.12.31 så funker
dns gjennom løsningen din oxo.... NB! Det er ekstremt viktig
at DHCP-serveren konfigureres til å kun svare på forespørsler som
kommer fra det interne nettet. Ellers begynner den å svare på
forespørsler som kommer fra andre trådløs-klienter. Dette har
allerede skapt problemer på trådløs-nettet.
Så legger du til disse to linjene i /etc/rc.d/rc.local
/sbin/ipchains -A forward -i ppp0 -j MASQ
/sbin/modprobe ip_masq_ftp
skift ut ppp0 med det interfacet som er mot vpn-tunnelen altså
129.177.44.x interfacet.
linje to må til for å få helt fleksible ftp overføringer, som går både på
port 20 og 21....
Sånn nå vil all 192.168.1.x trafikk bli omaddressert som 129.177.44.x når
det går ut over vpn tunnelen, og svarene som kommer tilbake omadressert
tilbake... Ergo kommer alle maskinene på nett via linux burken, og i
motsettning til proxy løsninger er dette helt transparent for pcene, det
fungerer som om alle har link....
NB husk at den som kobler opp vpn forbinnelsen står som ansvarlig for all
trafikk som går ut via forbinnelsen, og ved ulovligheter er det den
brukeren som i ekstreme tilfeller vil miste kontoen, og få onkel på besøk.
Det var moralprekenen.... liker ikke den, men det bør poengteres, for det
har vist seg at ikke alle har reflektert over det....
Eksempler på filer.
# /etc/dhcpd.conf
# Configuration file for ISC dhcpd
server-identifier server.hjemme.no;
option domain-name "hjemme.no";
option domain-name-servers 192.168.1.1;
option subnet-mask 255.255.255.0;
default-lease-time 720000;
max-lease-time 7200000;
option netbios-node-type 2;
shared-network HJEMMENETT {
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.249;
option domain-name "hjemme.no";
option domain-name-servers 192.168.1.1;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
}
}
########
server:/# cat /etc/named.conf
options {
directory "/local/named"; // running directory for named
check-names master warn; /* default. */
named-xfer "/usr/sbin/named-xfer";
pid-file "/local/named/log/named.pid";
multiple-cnames yes;
};
zone "." {
type hint;
file "pz/cache";
};
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "pz/0.0.127.IN-ADDR.ARPA";
};
zone "1.168.192.IN-ADDR.ARPA" {
type master;
file "pz/1.168.192.IN-ADDR.ARPA";
};
zone "hjemme.no" {
type master;
file "pz/hjemme.no";
};
#########
server:~# cat /local/named/pz/cache
$ORIGIN .
. 999999 IN NS A.ROOT-SERVERS.NET.
; 999999 IN NS B.ROOT-SERVERS.NET.
;
A.ROOT-SERVERS.NET. 999999 IN A 10.1.1.1
;B.ROOT-SERVERS.NET. 999999 IN A 129.177.30.3
#########
server:~# cat /local/named/pz/0.0.127.IN-ADDR.ARPA
0.0.127.in-addr.arpa. IN SOA hjemme.no postmaster.hjemme.no. (
1999081601
10800
3600
3600000
86400 )
; NAMESERVERE
0.0.127.in-addr.arpa. IN NS server.hjemme.no.
; MASKINER
localhost IN A 127.0.0.1
1.0.0.127.in-addr.arpa. IN PTR localhost
##########
server:~# cat /local/named/pz/1.168.192.IN-ADDR.ARPA
$ORIGIN 1.168.192.IN-ADDR.ARPA.
@ SOA server.hjemme.no. server.hjemme.no. (
1999090201
10800
3600
3600000
86400 )
;
; NAMESERVERE
NS server.hjemme.no.
;
; MASKINER
;
1 PTR server.hjemme.no.
10 PTR dhcp-maskin-1.hjemme.no.
##########
server:~# cat /local/named/pz/hjemme.no
$ORIGIN hjemme.no.
@ SOA server.hjemme.no. postmaster.hjemme.no. (
1999090202
10800
3600
604800
86400 )
; NAMESERVERE
NS server
localhost A 127.0.0.1
server A 192.168.1.1
;
gateway CNAME server
;
dhcp-maskin-1 A 192.168.1.10
Det scriptet som er lagt opp for Linux, virker kun for brukere av RH7x. For
oss andre er det ufullstendig, siden pptp ikke setter opp riktig default
route. Her er et mer komplett script for adsl brukere:
Filen:/etc/ppp/pap-secrets
# /etc/ppp/pap-secrets ( husk chmod 600;chown root:root)
# Secrets for authentication using PAP
# client server secret
IP addresses
stxxxxx@student 10.31.1.1 hemmelig *
Filen: PPTP-ON
#########
# PPTP-ON
#########
#!/bin/bash
# Neste linje er for å slette tidligere tuneller hvis disse ikke
# har blitt avsluttet på en normal måte
/bin/rm -f /var/run/pptp/* 1>/dev/null 2>/dev/null
# Denne linjen kobler opp vpn-tunnellen vha. informasjon fra
# /etc/ppp/pap-secrets
/usr/sbin/pptp 10.31.1.1 debug name stxxxxx@student mtu 1400 defaultroute
noaut$
# PPP versjon opp til 2.3.9 trenger ikke noauth
#/usr/local/sbin/pptp vpn-gw debug name user@student defaultroute
# Siden det tar et par sekunder for at Linux boksen skal få opprettet
# vpn forbindelsen og lagt til default route, lar vi scriptet henge
# litt før vi gjør tunnellen tilgjengelig.
sleep 5
# Vi vil nå sette opp default route til gateway
route add -host 10.31.1.1 gw 10.24.19.73 dev eth0
route add -net 217.13.0.0/16 gw 10.24.19.73 dev eth0
route del default
route add default dev ppp0
Filen: PPTP-OFF
##########
# PPTP-OFF
##########
#!/bin/bash
killall pppd
/bin/rm /var/run/pptp/*
killall -9 pppd #Så er vi sikker på at den går ned
/etc/init.d/net.eth0 restart # for å få igjen ruter og slikt
Interesante linker:
http://www.microsoft.com/ntserver/commserv/deployment/moreinfo/pptpfaq.asp
ftp://ftp.ietf.org/rfc/rfc2637.txt
|