PPTP VPN Server cu FreeBSD

Verificati daca colectia de porturi este actualizata.
Instalati poptop din /usr/ports/net/poptop:

root@bsdpc[/usr/ports/net/poptop] # make install clean

Folosind editorul de text preferat, editam fisierul de configurare /usr/local/etc/pptpd.conf care va contine urmatoarele:

nobsdcomp
proxyarp
pidfile /var/run/pptpd.pid
+chapms-v2
mppe-40
mppe-128
mppe-stateless

Editam fisierul de configurare PPP, /etc/ppp/ppp.conf, astfel incat sa contina:

loop:
set timeout 0
set log phase chat connect lcp ipcp command
set device localhost:pptp
set dial
set login
# Server (local) IP address, Range for Clients, and Netmask
set ifaddr 192.168.31.254 192.168.31.120-192.168.31.128 255.255.255.255
set server /tmp/vpn-in-%d “” 0177

loop-in:
set timeout 0
set log phase lcp ipcp command
allow mode direct

pptp:
load loop
disable pap
disable passwdauth
disable ipv6cp
enable proxy
accept dns
enable MSChapV2
enable mppe
disable deflate pred1
deny deflate pred1
set device !/etc/ppp/secure

Toate liniile cu exceptia celor care se termina cu doua puncte (:) trebuie identate (spatiu fata de margine dat de tasta TAB), altfel ppp.conf nu va functiona.

Adaugam fisierul /etc/ppp/secure cu urmatorul continut:

#!/bin/sh
exec /usr/sbin/ppp -direct loop-in

Setam acest fisier ca executabil:

root@bsdpc[~] # chmod 0755 /etc/ppp/secure

Adaugam fisierul cu username-urile si parolele pentru conectare la VPN, /etc/ppp/ppp.secret, care va arata in felul urmator:

user1 pass1
user2 pass2

Activam ARP proxy adaugand linia net.link.ether.inet.proxyall=1 in fisierul /etc/sysctl.conf
Pentru a activa ARP Proxy fara reboot la sistem rulam urmatoarea comanda:

root@bsdpc[~] # sysctl net.link.ether.inet.proxyall=1

Setam serverul VPN sa porneasca la initializarea sistemului adaugand in /etc/rc.conf linia pptpd_enable=”YES”

Pornim serverul VPN cu comanda:

root@bsdpc[~] # /usr/local/etc/rc.d/pptpd start

Verificati firewall-ul sa acepte conexiuni tcp pe portul 1723 si deasemenea sa accepte conexiuni pe protocolul gre. Pentru un firewall folosind packet filter in fisierul de configurare trebuie sa aveti urmatoarele linii:

pass in quick on $ext_if proto tcp from any to any port 1723 keep state
pass in quick on $ext_if proto gre from any to any

Job Done!
Enjoy!

Utilizare SSH Tunnel pe post de SOCKS Proxy

1. Se creeaza o noua sesiune SSH, catre hostul ce va deservi rolul de Proxy, folosind PuTTY

SSH Tunnel as SOCKS Proxy

SSH Tunnel as SOCKS Proxy

2. Selectati “Tunnels” din meniul din stanga si setati un forward dinamic pentru portul local (de ex. 7070). Sub “Add New forward port” setati 7070 la “Source Port”, “Destination” ramane gol si setati “Dynamic” si “Auto”, apoi apasati butonul “Add”

SSH Tunnel as SOCKS Proxy

SSH Tunnel as SOCKS Proxy

3. Salvati aceasta sesiune la profilele PuTTY pentru a nu fi nevoiti sa o creati de fiecare data

SSH Tunnel as SOCKS Proxy

SSH Tunnel as SOCKS Proxy

4. Va conectati prin SSH la hostul remote folosind profilul salvat si introduceti username-ul si parola pe care le aveti pentru contul gazduit pe sistemul remote.

5. Configurare FireFox pentru a folosi SOCKS Proxy

Mergeti la “Tools” -> “Options”, apoi selectati tab-ul “Advance”, apoi “Settings”

SSH Tunnel as SOCKS Proxy

SSH Tunnel as SOCKS Proxy

Selectati “Manual proxy configuration”. La “SOCKS Host” scrieti 127.0.0.1, la “Port” 7070 si selectati “SOCKS v5″

SSH Tunnel as SOCKS Proxy

SSH Tunnel as SOCKS Proxy

Job Done! Enjoy!

Autentificare SSH cu public key

Acest tutorial prezinta cum se poate face autentificarea prin protocolul SSH utilizand public keys, de pe un sistem unix/linux pe altul ce folosesc OpenSSH

Pe sistemul client vom creea directorul .ssh in homedir-ul userului care va folosi autentificarea cu public key

user@client[~] # mkdir ~/.ssh/
user@client[~] # chmod 700 ~/.ssh/
user@client[~] # ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
Enter passphrase (empty for no passphrase): ****
Enter same passphrase again: ****
user@client[~] #

Daca doriti sa fie solicitata o parola pentru public key la autentificare puteti seta o parola la passphrase care nu ar trebui sa coincida cu parola usernameului de login sau puteti sa lasati passphrase gol (pur si simplu se apasa tasta ENTER).

Restrictionam permisiunile de access la directorul .ssh pentru a nu putea fi citit key-ul de autentificare si de alti utilizatori din system.

user@client[~] # chmod 700 ~/.ssh
user@client[~] # chmod go-rwx ~/.ssh/*

Continutul fisierului din ~/.ssh/id_rsa.pub se copiaza pe sistemul la care se va face autentificarea folosind public key in ~/.ssh/authorized_keys
Acesta trebuie sa fie pe o singura linie.

user@client[~] # scp ~/.ssh/id_rsa.pub user@server.domain.tld:/home/user/
user@server.domain.tld[~] # cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
user@server.domain.tld[~] # chmod 600 ~/.ssh/authorized_keys
user@server.domain.tld[~] # rm -rf ~/id_rsa.pub

Job Done! Enjoy!

Grafice trafic cu MRTG pe FreeBSD

Acest tutorial prezinta cum se pot genera graficele pentru trafic pe sistem FreeBSD folosing MRTG si SNMPD

Vom instala pachetele necesare folosind FreeBSD Ports

Instalam colectia de porturi FreeBSD Ports
root@bsdpc[~/work/src] # portsnap fetch && portsnap extract && portsnap fetch update

Instalam SNMPd, p5-SNMP-Util, p5-SNMP_Session, p5-SNMP-Simple din FreeBSD ports
root@bsdpc[~/work/src] # cd /usr/ports/net-mgmt/net-snmp
root@bsdpc[/usr/ports/net-mgmt/net-snmp] # make install clean
root@bsdpc[/usr/ports/net-mgmt/net-snmp] # cd /usr/ports/net-mgmt/p5-SNMP-Util
root@bsdpc[/usr/ports/net-mgmt/p5-SNMP-Util] # make install clean
root@bsdpc[/usr/ports/net-mgmt/p5-SNMP-Util] # cd /usr/ports/net-mgmt/p5-SNMP_Session/
root@bsdpc[/usr/ports/net-mgmt/p5-SNMP_Session] # make install clean
root@bsdpc[/usr/ports/net-mgmt/p5-SNMP_Session] # cd /usr/ports/net-mgmt/p5-SNMP-Simple/
root@bsdpc[/usr/ports/net-mgmt/p5-SNMP-Simple] # make install clean

Instalam MRTG din FreeBSD ports
root@bsdpc[~/work/src] # cd /usr/ports/net-mgmt/mrtg/
root@bsdpc[/usr/ports/net-mgmt/mrtg] # make install clean

Copiati codul de mai jos in /usr/local/share/snmp/snmpd.conf

Code:
syslocation YourCountry
syscontact YourName - you@yourdomain.tld
rwcommunity public 127.0.0.1
rwcommunity public 10.0.0.0/24

In loc de 10.0.0.0/24 treceti IP-ul sau range-ul de ip-uri din reteaua dumneavoastra pentru care doriti sa generati graficele de trafic

Copiati codul de mai jos in /usr/local/etc/mrtg/mrtg.cfg iar in loc de msk0 la MRTG_INT_DESCR=”msk0″ treceti identificatorul de la placa de retea a systemului dumneavoastra.

Code:
LoadMIBs: /usr/local/share/snmp/mibs/UCD-SNMP-MIB.txt
WorkDir: /usr/local/apache2/htdocs/stats
Options[_]: growright, bits, nopercent, nobanner, noinfo, pngdate
PNGTitle[_]: host.domain.tld
Background[_]: #FFFFFF
Timezone[_]: Europe/Europe
Colours[_]: GREEN#00FF00,BLUE#0066FF,DARK GREEN#33FF33,PINK#FF66FF
XSize[_]: 600
YSize[_]: 180
YTics[_]: 12
Target[speedused]: 1:public@127.0.0.1:
SetEnv[speedused]: MRTG_INT_IP="" MRTG_INT_DESCR="msk0"
MaxBytes[speedused]: 125000000
AbsMax[speedused]: 230000000
Title[speedused]: Traffic Analysis
PageTop[speedused]: Traffic Analysis
Options[speedused]: growright, bits, nopercent, nobanner, noinfo, pngdate

Editati /etc/rc.conf si adaugati snmpd_enable= “YES”, apoi pornim serviciul SNMPd
root@bsdpc[~/work/src] # /usr/local/etc/rc.d/snmpd start

Creem directorul unde se vor salva graficele MRTG
root@bsdpc[~/work/src] # mkdir /usr/local/apache2/htdocs/stats

Rulam de 2-3 ori scriptul MRTG pana cand acesta nu va ma da erori sau avertizari, la inceput acestea apar doarece nu gaseste fisierele de loguri si imaginile mai vechi

root@bsdpc[~/work/src] # /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

Editam /etc/crontab si adaugam scriptul MRTG la crontab pentru ca acesta sa ruleze la fiecare 5 minute si sa actualizeze graficele
root@bsdpc[~/work/src] # pico /etc/crontab

La finalul fisierului /etc/crontab adaugam linia:
*/5 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

Job Done! Enjoy!

DOWNLOAD snmpd.conf
DOWNLOAD mrtg.cfg

Limitare de banda la apache

Pentru cei care doresc sa limiteze banda la apache pentru clienti, ca masura de precautie pentru download-ul de diverse fisiere ori pentru evitarea epuizarii vitezei de upstream putem folosi modulul mod_bw.

Modulul specificat poate limita viteza pe apache dupa extensie, per virtual host, per client si / sau per total.

Pentru a citi mai multe despre acest modul aveti urmatoarele url-uri de referinta:

* http://bwmod.sourceforge.net/
* http://bwmod.sourceforge.net/files/mod_bw-0.7.txt “The .. fine Manual”

Default, dupa compilare modulul nu functioneaza sub httpd 2.x ( apache2 )
Afiseaza o eroare ca in exemplul de mai jos:

httpd: Syntax error on line 59 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/modules/mod_bw.so into server: /usr/local/apache2/modules/mod_bw.so:
Undefined symbol "apr_atomic_cas"

Pentru a evita eroarea de mai sus, editam sursa mod_bw.c la linia 61

root@dj[~/work/src/mod_bw] # pico +61 mod_bw.c

Aici stergem liniile urmatoare:

/* Compatibility for ARP < 1 */
#if (APR_MAJOR_VERSION < 1)
#define apr_atomic_inc32 apr_atomic_inc
#define apr_atomic_dec32 apr_atomic_dec
#define apr_atomic_add32 apr_atomic_add
#define apr_atomic_cas32 apr_atomic_cas
#define apr_atomic_set32 apr_atomic_set
#endif

Compilam si instalam modulul

root@dj[~/work/src/mod_bw] # /usr/local/apache2/bin/apxs -cia mod_bw.c

Editam fisierul de configurare de la virtualhost-ul pe care dorim sa-l limitam si adaugam liniile de configurare a limitei pentru modulul mod_bw, apoi se va executa restart la serviciul apache

root@dj[~/work/src/mod_bw] # /etc/rc.d/httpd restart

### --------------------------- ###
####### Exemple configurare #######
### --------------------------- ###

## Se adauga in sectiunea virtual host-ului ##

## Pentru limitarea fiecarui vizitator la 128KB/s pe un virtual host

<VirtualHost *>
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 128000
MinBandwidth all -1
</VirtualHost>

## Pentru limitarea extensiilor avi, mpg la 64KB/s

<VirtualHost *>
BandwidthModule On
ForceBandWidthModule On
LargeFileLimit .avi 1 64000
LargeFileLimit .mpg 1 64000
</VirtualHost>