Op een dag, moe van het moeten havens en meer poorten voor alles wat ik wilde doen met de Linux server ik thuis openen, heb ik besloten om iets te kunnen rechtstreeks verbinding maken met die machine en alle diensten die beschikbaar zijn voor mij te doen zonder te hoeven maak een voor een. De oplossing was duidelijk, vast een VPN aan de server en automatisch toegang tot alle beschikbare diensten. Het grootste probleem bij de vaststelling van virtueel netwerk was dat het moest worden eenvoudige, snel te maken en, bovenal, hoeft geen extra software nodig hebben als zou wel het gebruiken vanaf elke computer op elke locatie. Bovendien, als ik reed goed een perfect systeem om op afstand ondersteuning te bieden aan mijn zussen via VNC zonder te hoeven openen deze poorten
.
Standaard worden alle Windows-computers worden standaard geleverd met een VPN-client die kan contectarse virtual private networks, maar niet van welke aard dan ook, alleen PPTP . We hadden kunnen kiezen een ander systeem op basis van IPsec of OpenVPN , maar zou extra software goed cerfied aan beide uiteinden van de VPN, dat niet voldoet aan de eisen die we hadden opgelegd nodig. PPTP is een protocol ontwikkeld door Microsoft (vandaar komt standaard Windows) en, daardoor, is langzaam aan een klant (en zelfs een server) die werkt onder Linux. Niet de meest veilige VPN-protocollen
maar laat haar taken vervult.
Het idee is dan ook het opzetten van een PPTP-server op Linux. Zodra we zien hoe u verbinding server zowel Linux als Windows. Hoewel het idee van dit artikel is een huiselijke omgeving is volledig van toepassing op kleine bedrijven die op afstand toegang tot hun werknemers nodig hebben, zonder complicerende hun leven en maken grote uitgaven gewijd routers of op een Windows-server (het begrijpen van dit als een machine met een Windows server
.
PPTP-server op Linux
Laat enrevesar een beetje meer onze server. Voor meer veelzijdigheid zal de gebruikersauthenticatie te geven wordt uitgevoerd via een server Radius kan vervolgens worden gebruikt om een andere dienst die je kunt bedenken (ftp, e-mail, draadloze hotspot ...) authenticeren.
Ik denk dat het te simpel, nog ingewikkelder we het. De Radius server te verifiëren, eveneens, met een database MySQL , die een zeer eenvoudig te beheren zonder te raken tekstbestanden om nieuwe gebruikers aan te maken te hebben. Het scenario is dan ook Radius PPTP + + MySQL.
Als software die we gebruiken:
- Linux Server, Centos 5.2 in mijn geval.
- PopTop, PPTP-server onder Linux.
- PPTP Client , PPTP-client onder Linux.
- FreeRadius als Radius server.
- Radiusclient als Radius client, dat kan de server PopTop Radius bevragen.
Om de software te installeren, in mijn geval, niets eenvoudiger. Installeer eerst de yum repository PopTop:
- rpm-Uvh http://poptop.sourceforge.net/yum/stable/fc7/pptp-release-current.noarch.rpm
En je kunt alle software te installeren:
- freeradius freeradius-mysql radiusclient pptp pptpd yum - enablerepo = poptop-stabiele install freeradius-mysql freeradius pptp pptpd radiusclient
Ik denk dat dat genoeg zou zijn en zou alles wat je nodig hebt. We gaan ervan uit, natuurlijk, heb je al MySQL geïnstalleerd.
Vroeger was het ingewikkelder dan het installeren PopTop en moest de kernel patchen, maar vandaag de dag, als je core is hoger dan 2.6.15 (zo niet, waar wacht je op voor update?), Niet deze stap nodig. Hoe dan ook, als je het moest doen, is volkomen veilig, ik heb het zelf voor een lange tijd. Op de website van PopTop hebben de instructies voor het.
Ervan uitgaande dat je hebt alle software correct geïnstalleerd zonder enig probleem, en we gewoon elke een van de stappen die deel uitmaken van onze VPN-server in te stellen.
PopTop configureren
Het eerste ding om te doen is te beslissen dat je gaat gebruiken in uw VPN-adres. In mijn geval heb ik een onafhankelijk van al het andere (192.168.3.0), dus ik kan het te beheren op wil, staan of te ontkennen wat ik kan bedenken een eenvoudige manier. De volgende configuratiebestanden aangegeven te sleutelen en zoals ik heb de mijne.
/ Etc / pptpd.conf
- # cat /etc/pptpd.conf [OSUs @ server ~] # cat / etc / pptpd.conf
- optie / etc / ppp / options.pptpd
- 192.168 lokaalIP -5 0,3 0,1
- remoteip 192.168 0,3 0,6 -10
De parameter lokaalIP hebben IP's die uw lokale server en elke keer krijg je een verbinding, terwijl in remoteip u aangeven welke clients dynamisch zal geven gebruiken. Je moet een voldoende ruime waaier gezet om mogelijke gelijktijdige verbindingen u kan hebben te dekken.
/ Etc / ppp / options.pptpd
- # cat /etc/ppp/options.pptpd [OSUs @ server ~] # cat / etc / ppp / options.pptpd
- naam pptpd
- weiger-pap
- weiger-chap
- weiger-MSCHAP
- vereisen-MSCHAP-v2
- -128 Mppe eisen
- proxyarp
- slot
- nobsdcomp
- novj
- novjccomp
- nologfd
- radius.so plugin
Het wordt aanbevolen dat consultases man pagina's om te zien wat elke parameter doet.
Zoals je kunt zien aan het einde van alle geven de PPTP-server met behulp van de pluggin voor Radius, dus we configureert alles op Radius.
FreeRadius configureren
/ Etc / raddb / clients.conf
- # cat /etc/raddb/clients.conf [OSUs @ server ~] # cat / etc / raddb / clients.conf
- opdrachtgever 0,0 0,1 127,0 {
- secret = TUCLAVESECRETA
- korte naam = localhost
- }
Wij geven voor elke radius-server die we hebben, een verbinding sleutel en naam. De belangrijkste klanten zullen gebruiken om de server straal bevragen. Normaal gesproken in een omgeving als de onze is dat de Radius-server is dezelfde VPN-server bevindt.
Het volgende bestand is het belangrijkste omdat het vertelt verzoeken FreeRadius om te verifiëren met een MySQL server. Zolang zet alleen de relevante onderdelen:
/ Etc / raddb / radiusd.conf
- mschap {
- AuthType = MS-CHAP
- use_mppe = yes
- require_strong = yes
- }
- machtigen {
- preprocess
- MSCHAP
- achtervoegsel
- eap
- sql
- }
- authenticeren {
- Auth-type MS-CHAP {
- MSCHAP
- }
- eap
- }
- preacct {
- preprocess
- achtervoegsel
- bestanden
- }
- boekhoudkundige {
- detail
- acct_unique
- sql
- }
- sessie {
- sql
- }
In / etc / raddb / sql.conf moet goed toegang tot uw MySQL database, server, gebruikersnaam, wachtwoord en database die we later iets zal zien configureren.
RADIUS-client configureren
/ Etc / radiusclient / servers
- # cat /etc/radiusclient/servers [OSUs @ server ~] # cat / etc / radiusclient / servers
- localhost TUCLAVESECRETA
Waar de sleutel is dezelfde als die zetten in / etc / raddb / localhost clients.conf en uw adres als andere server die de pptpd heeft.
In / etc / radiusclient dictionary.microsoft u het bestand. Ik herinner me dat ik had wat problemen mee, voor het geval laat ik de ene heb ik nu niet komt standaard.
In / etc / radiusclient / radiusclient.conf ervoor dat u de volgende parameters wijst naar het IP-adres van de Radius server als niet dezelfde VPN-server zich bevindt:
- authserver localhost
- acctserver localhost
Als ze anders naar localhost, vergeet dan niet om hier te configureren.
Het creëren van de MySQL database
We kregen de laatste stap.
Maak een nieuwe database (create database radius) en een gebruiker met machtigingen voor het. Onthoud nu / etc / raddb / sql.conf met deze gegevens.
Nu maakt de structuur van de database. Met FreeRadius pakket is de structuur die je nodig hebt.
- radius mysql </ usr / share / doc / freeradius -1,1 0,3 / voorbeelden / mysql.sql
De stap die volgt negeren altijd als iemand wordt uitgelegd hoe u FreeRadius configureren met MySQL en geloof me het is niet intuïtief.
Hoe de tafels van authenticatie te vullen?
Goede vraag Manel
.
- Tabel radcheck: gebruikersaccounts onderhouden met de volgende velden:
- Gebruikersnaam: gebruikersnaam.
- Categorieën: Wachtwoord (letterlijk, niet het belangrijkste, maar het woord User Password).
- op: == (twee gelijke tekens).
- Waarde: User key.
- Tabel radreply: bevat initialisatie parameters die klanten verbinden. Hier stel ik de IP's die betekenen voor bepaalde klanten om redenen van gemak. Ik heb ook aangegeven dat alleen toestaan gelijktijdige aansluiting met dezelfde gebruikersnaam.
- Gebruikersnaam: de gebruikersnaam die u configureert (zoals ingevoerd in tabel radcheck).
- Kenmerk: het woord Ingelijste-IP-adres of Gelijktijdig-gebruik, zoals u aangeeft de IP toegewezen aan die gebruiker of het maximum aantal sessies met dezelfde naam.
- op: = (isgelijkteken)
- Waarde: 192.168.3.99 (het IP u wilt) of het maximum aantal gelijktijdige verbindingen aan dezelfde gebruiker.
- Tafel gebruikersgroep, groeperen gebruikers in groepen.
- Gebruikersnaam: gebruikersnaam
- GroupName: groepsnaam.
RadAct tabel bevat de server activiteit log, sessies geïnitieerd, duur, enz..
Laatste stappen
Vergeet openen in uw router en / of firewall poort 1723 voor het toestaan inkomende verbindingen zoals gebruikt door de PPTP protocol.
Hoewel zoals hieronder wordt besproken kan de Radius server connecties (en dus de VPN-server) audit kan interessant zijn om een waarschuwing mechanisme hebben dat een client is verbonden. Een manier is om het netwerk interfaces beschikbaar zijn op de server (ifconfig) bekijken, zullen er vele pppx als actieve gebruikers zijn. Maar er is een andere methode die u toelaat om elke keer dat een gebruiker verbinding maakt of verbreekt ontvangen, bijvoorbeeld per e-mail, een bericht.
Elke keer krijg je ppp-interface wordt het script / etc / ppp / ip-up.local met alle parameters met betrekking tot die aansluiting, remote IP, lokale, interface-... ook als u geen verbinding lanceringen / etc / ppp / ip -down.local. alleen dit script aan te passen aan onze behoeften. Deze scripts zijn alle benodigde parameters om de gebruiker te identificeren. We zouden iets doen, bijvoorbeeld om ip-up.local.
- # / Bin / sh
- "$5" == "192.168.3.10" ] if ["$ 5" == "192.168.3.10"]
- dan
- client = "Pepito"
- fi
- echo "VPN-verbinding
- Interface: $ 1
- Lokale VPN: $ 4
- VPN Remote: $ 5
- Remote IP: $ 6
- 1: $ 1
- 2: $ 2
- 3: 3 $
- 4: 4 $
- 5: $ 5
- 6: 6 $
- <a href= "mailto:osus@osusnet.com" >osus@tudominio.com</a> "| Mail-s" VPN-verbinding - $ client "<a href= "mailto:osus@osusnet.com"> osus@tudominio.com </ a>
Zo zou u een e-mail telkens wanneer een gebruiker pakt een VPN tunnel naar uw server te ontvangen en je zou weten wat IP is de gebruiker en als je een vast IP-adres hebt opgegeven in de RADIUS-configuratie, zult u weten welke gebruiker is, in dit geval "pepito ".
Met IP-down.local zo'n script zou alleen maar in plaats van VPN-verbinding in een e-mail onderwerp zou zetten loskoppelen VPN. Parameters zijn precies hetzelfde.
Deze scripts kunnen ze ook gebruiken om routes op basis van bepaalde tunnels aangemaakt creëren / wijzigen / verwijderen.
Het pakket zelf wordt geïnstalleerd pptpd opstartscript nodig in mijn geval / etc / init.d / pptpd. Ik moet het gewoon automatisch toe te voegen aan het runlevel boot van mijn server en de service is altijd beschikbaar.
In theorie is allemaal de vpn gemaakt tegen routeringsserver elkaar hebben, wat betekent dat je kon via de server van de ene klant naar de andere zonder gehannes rond. Ik zeg theoretisch want dat is de functie van de parameter proxyarp we eerder geconfigureerd. Deze routing kan niet genoeg zijn en je moet VPN-clients kunnen toegang krijgen tot andere subnetten van uw infrastructuur. Je kunt doen wat je wilt, zelfs het opzetten van een brug , maar voor deze dingen beter dan iptables .
Denk aan een scenario waar we een lokale lan deel onze server (adres 192.168.0.0) en het creëren van nieuwe netwerk voor VPN's (adres 192.168.3.0). Om volledige routing tussen de twee netwerken in staat zou zoiets doen:
- # / Bin / sh
- >/proc/sys/net/ipv4/ip_forward echo 1> / proc/sys/net/ipv4/ip_forward
- LAN = "192.168.0.0/16"
- VPN2 = "192.168.3.0/24"
- -j ACCEPT iptables-A FORWARD-s $ LAN-d $ VPN2-j ACCEPT
- -m state –state ESTABLISHED,RELATED -j ACCEPT iptables-A FORWARD-s $ VPN2-d $ LAN-m state-Staat zijn gevestigd, VERBONDEN-j ACCEPT
- iptables-t nat-A POSTROUTING-d $ VPN2-j MASQUERADE
Single. Als we wilden alleen bepaalde gebruikers op het lokale netwerk accediesen zou de variabele IP VPN2 de straal geeft de gebruiker te wijzigen.
FreeRadius uit een webomgeving, dialup_admin
Oke, het is waar, het is een pijn in de kont te FreeRadius en al zijn parameters te beheren, dus wat beter dan een eenvoudige web-omgeving voor het gebruikersbeheer en de visualisatie van het bedrijfsleven en het systeem log. Dit hulpprogramma is dialup_admin . Ik zal niet worden geïnstalleerd omdat ik denk dat het komt uit dit artikel en daarnaast is een eenvoudige webapplicatie zonder veel moeite.
Met deze tool zal het veel gemakkelijker zijn om gebruikers en hun eigenschappen te creëren en bijhouden wie verbonden is, perioden aansluiting hebben, enz..
Oprichting van VPN van Windows
Heel simpel. Van Netwerkverbindingen, een nieuwe verbinding te maken u, kies Verbinding met het netwerk op mijn werk en het is eigenlijk gewoon voer de hostnaam of het IP-adres van uw VPN-server host en verbinden. Ik adviseer unchecking de Standaardgateway in het externe netwerk gebruiken in de eigenschappen van deze nieuwe verbinding, Networking, TCP / IP, Geavanceerd, anders zijn alle normale internetverkeer u via de VPN.
Als alles goed gaat zal verbinding maken met uw server en krijg toegang tot het alsof je op je eigen lokale netwerk.
Oprichting van VPN van Linux
Omdat Linux is een tikkeltje ingewikkelder omdat, zoals gebruikelijk, om de configuratie handmatig te doen. Er is een grafische tool voor het creëren van verbindingen in een vergelijkbare manier als Windows, maar wel uitleggen hoe dat te doen vanuit de console als uw machine heeft geen grafische omgeving.
- # cat /etc/ppp/options.pptp [OSUs @ server ~] # cat / etc / ppp / options.pptp
- slot
- noauth
- weiger-eap
- weiger-chap
- weiger-MSCHAP
- nobsdcomp
- nodeflate
We geven nu de gebruikersnaam en het wachtwoord gebruikt om verbinding. IdentificadorRed is de naam die we geven aan de verbinding, kunt u alles wat je wilt zijn.
- # cat /etc/ppp/chap-secrets [OSUs @ server ~] # cat / etc / ppp / chap-secrets
- IdentificadorRed gebruikerssleutel *
Maak nu de configuratie voor de verbinding die u maakt met IdentificadorRed we eerder hebben besproken. In TUIP moet zetten de hostnaam of IP-adres van uw VPN-server.
- # cat /etc/ppp/peers/IdentificadorRed [OSUs @ server ~] # cat / etc / ppp / peers / IdentificadorRed
- remotenaam IdentificadorRed
- linkname IdentificadorRed
- ipparam IdentificadorRed
- pty "pptp-nolaunchpppd TUIP"
- Gebruikersnaam
- vereisen-mppe
- vereisen-MSCHAP-v2
- weiger-eap
- weiger-pap
- weiger-chap
- weiger-MSCHAP
- # Demand
- Holdoff 5
- aanhouden
- maxfail 0
- ipcp-accept-remote
- ipcp-Accept-lokaal
- noauth
- 192.168 0,3 0,1: 3 .254 192.168
Hier zijn twee interessante opties:
- aanhouden: automatisch opnieuw als de tunnel wordt afgesneden om wat voor reden dus dat is altijd actief.
- vraag: maakt automatisch de tunnel bij het openen van de server IP of een andere die worden gerouteerd via deze tunnel, terwijl het niet nodig is inactief. Mag natuurlijk niet zo anders worden aanhouden is altijd actief.
Tot slot maken we een eenvoudige startup script om automatisch te starten of gewoon voor het niet hebben om de parameters te onthouden.
- # cat /etc/init.d/IdentificadorRed [OSUs @ server ~] # cat / etc / init.d / IdentificadorRed
- # / Bin / sh
- in case "$ 1" in
- starten)
- echo-n "Starten VPN IdentificadorRed"
- Echo
- touch / var / lock / subsys / pptpd
- / Usr / sbin / pppd call IdentificadorRed logfd 1 updetach &
- ;;
- stop)
- echo-n "Stoppen VPN IdentificadorRed"
- Echo
- -n 1 /var/run/ppp-IdentificadorRed.pid` kill-TERM `head-n 1 / var / run / ppp-IdentificadorRed.pid`
- ;;
- *)
- echo "Usage: $ 0 {start | stop}"
- exit 1
- esac
- exit 0
En dat alle mensen. Het kostte me heel langer dan verwacht om dit artikel te schrijven, want als ik aan het schrijven was ik was jumping nieuwe herinneringen over details die moeten worden benoemd.
Merk op dat mijn ervaring met PPTP teruggaat vijf jaar geleden dus misschien enig detail zijn veranderd in de afgelopen jaren. Na die eerste VPN-server vorig jaar verhuisden we naar CentOS5 besturingssysteem en de configuratie van de VPN-server vrijwel alle parameters gelaten zoals ze waren. Ik denk niet dat je geen enkel probleem bij het oplossen van een aantal kleine details die kunnen ontstaan hebben.











