Fremgangsmåte for å sikre vår VPS

Denne opplæringen viser hvordan du forbereder og sikrer en Virtual Private Server (VPS) med Debian GNU / Linux. Før vi begynner antas visse ting:

  1. Du har et mellomnivå av fortrolighet med GNU / Linux.
  2. Det er en VPS for personlig bruk som vi har tilgang til via SSH.
  3. VPS har den dedikerte eksterne ipv4 250.250.250.155, og leverandøren vår eier 250.250.0.0/16-blokken. (1)
  4. I vår VPS vil vi bare ha http, https og ssh-tjenester aktivert for tilgang utenfra.
  5. Ekstern DNS blir ikke aktivert siden det vanligvis gjøres i leverandørens panel. (2)
  6. Det vil fungere som en superbruker.

Installasjon

Som et første trinn, la oss oppdatere serveren og installere noen pakker vi trenger:

# aptitude update & aptitude safe-upgrade # aptitude -RvW installer dropbear gesftpserver sslh iptables-vedvarende ulogd fail2ban nginx-light apache2-utils dnsutils telnet ghostscript poppler-utils zip zip ut unrar-free p7zip-full less multitail tee mc

Konfigurasjon

Nå skal vi opprette en arbeidsbruker. Å jobbe som root på en server er usikkert, så vi oppretter først en spesiell bruker:

adduser operator usermod -aG sudo operator

Den første kommandoen oppretter operatørbrukeren, den andre legger den til i gruppen sudo, som lar deg kjøre applikasjoner som root.

Juster tillatelser for superbrukere

Når det gjelder å jobbe regelmessig, bruker vi brukeren operatør tidligere opprettet, må vi justere alternativene for kommandokjøring som superbruker, som vi utfører følgende kommando for:

visado

Denne kommandoen tillater i utgangspunktet å endre filen / etc / sudoers; der vi skal inneholde disse linjene:

Standardinnstillinger env_reset, timestamp_timeout = 0% sudo ALL = (ALL: ALL) ALL

I første linje er alternativet lagt til standardverdiene tidsstempel_tidsavbrudd som lar deg stille utløpstiden (i minutter) for passordet når sudo-kommandoen utføres. Standard er 5, men dette er noen ganger usikkert av to grunner:

  1. Hvis vi utilsiktet lar datamaskinen være pålogget før passordet utløper, kan noen utføre en kommando som superbruker uten noen begrensninger.
  2. Hvis vi gjennom uvitenhet utfører et program eller skript som inneholder skadelig kode før passordet utløper, kan applikasjonen ha tilgang til systemet vårt som superbruker, uten vårt uttrykkelige samtykke.

For å unngå risiko, har vi satt verdien til null, det vil si at hver gang sudo-kommandoen utføres, må passordet legges inn. Hvis en negativ verdi er satt til -1, er effekten at passordet aldri utløper, noe som vil gi det motsatte resultatet av det vi ønsker.

I den andre linjen er det avklart at sudogruppen kan utføre hvilken som helst kommando på hvilken som helst datamaskin, noe som er vanlig, selv om den kan justeres. (3) Det er de som for enkelhets skyld legger linjen som følger for å unngå å måtte skrive inn passordet:

% sudo ALL = (ALL: ALL) NOPASSWD: ALL

Som vi forklarte før, er dette imidlertid risikabelt, og derfor anbefales det ikke.

Deaktiver omstart

Av sikkerhetsgrunner vil vi også deaktivere omstart ved hjelp av tastekombinasjonen Ctrl + Alt + Del, som vi må legge til denne linjen i filen / Etc / inittab:

ca: 12345: ctrlaltdel: / bin / echo "Ctrl + Alt + Del er deaktivert."

Erstatt OpenSSH med DropBear

De fleste VPS kommer med OpenSSH installert, noe som absolutt er veldig nyttig, men med mindre vi trenger å utnytte all funksjonaliteten til OpenSSH, er det lettere alternativer for en VPS, for eksempel dropbear, som vanligvis er tilstrekkelig for vanlig bruk. En ulempe med dette programmet er imidlertid at det ikke kommer med en integrert SFTP-server, og det er derfor vi installerte pakken i begynnelsen gesftpserver.

For å konfigurere Dropbear, vil vi endre filen / etc / default / dropbear slik at den inneholder disse to linjene:

NO_START = 0 DROPBEAR_EXTRA_ARGS = "- w -p 127.0.0.1:22 -I 1200 -m"

Den første linjen aktiverer bare tjenesten, og den andre gjør flere ting:

  1. Unngå rottilgang.
  2. Det får tjenesten til å lytte på port 22 i det lokale grensesnittet (vi vil forklare hvorfor senere).
  3. Stiller inn ventetid (20 minutter).

SSLH

Port 22 (SSH) er kjent og er generelt en av de første hackere prøver å bryte, så vi vil bruke port 443 (SSL) i stedet. Det hender at denne porten brukes til sikker surfing over HTTPS.

Av denne grunn vil vi bruke sslh-pakken, som ikke er noe mer enn en multiplekser som analyserer pakkene som ankommer port 443, og ruter dem internt til en eller annen tjeneste, avhengig av om typen trafikk er SSH eller SSL.

SSLH kan ikke lytte på et grensesnitt der en annen tjeneste allerede lytter, og det er grunnen til at vi tidligere fikk Dropbear til å lytte på det lokale grensesnittet.

Nå, det vi trenger å gjøre er å indikere å sslh grensesnittet og porten den skal lytte gjennom, og hvor du skal omdirigere pakkene, avhengig av type tjeneste, og for dette vil vi endre konfigurasjonsfilen / etc / default / sslh:

DAEMON = / usr / sbin / sslh DAEMON_OPTS = "- bruker sslh - listen 250.250.250.155:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile / var / run / sslh / sslh .pid "RUN = ja

Til slutt starter vi tjenestene på nytt:

service ssh stop && service dropbear start && service sslh restart

Etter forrige kommando vil den sikre økten vår sannsynligvis bli avbrutt, i så fall er det nok å logge på igjen, men denne gangen med arbeidsbrukeren og ved hjelp av port 443. Hvis økten ikke blir avbrutt, anbefales det å lukke den og starte på nytt. med passende verdier.

Hvis alt fungerer som det skal, kan vi fortsette å jobbe som root, og avinstallere OpenSSH hvis vi ønsker det:

sudo su - aptitude -r purge openssh-server

brannmurer

Den neste tingen vi vil gjøre er å skille loggene fra brannmuren til den separate filen /var/log/brannmur.log for å legge til rette for videre analyse, og det er derfor vi installerte ulogd-pakken ved oppstart. For dette vil vi redigere filen /etc/logd.conf for å justere den aktuelle delen:

[LOGEMU] file = "/ var / log / firewall.log" sync = 1

Deretter vil vi endre rekordrotasjonsfilen / etc / logrotate / ulogd for å holde en daglig rotasjon (med dato) og lagre komprimerte salver i katalogen / var / log / ulog /:

/var/log/ulog/*.log /var/log/firewall.log {daglig dateext manglerok komprimeringsforsinkelsekomprimer shareskript oppretter 640 root adm postrotate /etc/init.d/ulogd reload mv /var/log/firewall.log-* .gz / var / log / ulog / sluttskript}

Så vi vil opprette netfilterreglene ved å utføre følgende:

IPT = $ (hvilke iptables) IPEXT = 250.250.250.155 IPEXTBLK = 250.250.0.0 / 16 IPBCAST = 255.255.255.255 $ IPT -F $ IPT -X $ IPT -Z $ IPT -A INPUT -i lo -j ACCEPT $ IPT - P INPUT DROP $ IPT -P FORWARD DROP $ IPT -P OUTPUT ACCEPT $ IPT -A INPUT -m state --state INVALID -j ULOG --ulog-prefix IN_INVALID $ IPT -A INPUT -p igmp -j ULOG --ulog -prefiks IN_IGMP $ IPT -A INNGANG -m pkttype --pkt-type kringkasting -j ULOG --ulog-prefiks IN_BCAST $ IPT -A INNGANG -m pkttype --pkt-type multicast -j ULOG --ulog-prefiks IN_MCAST $ IPT -A FORWARD -j ULOG --ulog-prefix FORWARD $ IPT -N ICMP_IN $ IPT -A INPUT!  -i lo -p icmp -j ICMP_IN $ IPT -A ICMP_IN -p icmp -f -j ULOG --ulog-prefiks IN_ICMP_FRAGMENTED $ IPT -A ICMP_IN -p icmp -m icmp -m lengde!  --lengde 28: 1322 -j ULOG --ulog-prefiks IN_ICMP_INVALIDSIZE $ IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-over 4 / sek --hashlimit-mode srcip --hashlimit-srcmask 24 - -hashlimit-navn icmpflood -j ULOG --ulog-prefiks IN_ICMP_FLOOD $ IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-opptil 64kb / min --hashlimit-mode srcip --hashlimit-srcmask 24 - hashlimit-navn icmpattack -j ULOG --ulog-prefiks IN_ICMP_FLOOD $ IPT -A ICMP_IN -p icmp -m icmp -m u32!  --u32 "0x4 & 0x3fff = 0x0" -j ULOG --ulog-prefiks IN_ICMP_ATTACK $ IPT -A ICMP_IN -p icmp -m icmp!  --icmp-type ekko-forespørsel -m tilstand --stat NYTT -j ULOG --ulog-prefiks IN_ICMP_INVALID $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type ekko-forespørsel -j ULOG --ulog- prefiks IN_ICMP $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type ekko-forespørsel -m grense --grense 1 / sek --grense-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type ekko-svar -m-grense - begrense 2 / sek - begrense-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type destinasjon-utilgjengelig -m grense - grense 2 / sek - begrense burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type tidsoverskridelse -m grense - begrense 2 / sek - begrense burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type parameter-problem -m grense - begrense 2 / sek - begrense burst 4 -j ACCEPT $ IPT -A ICMP_IN -j RETUR $ IPT -N UDP_IN $ IPT-EN INNGANG!  -i lo -p udp -j UDP_IN $ IPT -A UDP_IN!  -jeg!  -p udp -f -j ULOG --ulog-prefiks IN_UDP_FRAGMENTED $ IPT -A UDP_IN -p udp -m udp --sport 53 -m lengde!  --lengde 28: 576 -j ULOG --ulog-prefiks IN_UDP_DNS_INVALIDSIZE $ IPT -A UDP_IN -p udp -m udp --dport 53 -m -state --state NEW -j ULOG --ulog-prefix IN_UDP_DNSREQUEST $ IPT - A UDP_IN -p udp -m udp --dport 53 -m -state --state NEW -j REJECT --reject-with icmp-port-unreachable $ IPT -A UDP_IN -p udp -m udp!  - sport 53!  -s $ IPEXTBLK!  -d $ IPBCAST -m state --state NEW -j ULOG --ulog-prefix IN_UDP $ IPT -A UDP_IN -p udp -m udp -m state --state ESTABLISHED, RELATED -j ACCEPT $ IPT -A UDP_IN -j RETUR $ IPT -N TCP_IN $ IPT -A INNGANG!  -i lo -p tcp -j TCP_IN $ IPT -A TCP_IN!  -jeg!  -p tcp -f -j ULOG --ulog-prefiks IN_TCP_FRAGMENTED $ IPT -A TCP_IN -p tcp -m tcp --sport 53 -m state --state ESTABLISHED, RELATED -m length!  --lengde 513: 1500 -j ULOG --ulog-prefiks IN_TCP_DNS_INVALIDSIZE $ IPT -A TCP_IN -p tcp -m tcp --dport 53 -m tilstand --stat NYTT -j ULOG --ulog-prefiks IN_TCP_DNS $ IPT -A TCP_IN -p tcp -m tcp --dport 53 -m tilstand --stat NYTT -j AVVIS - avvis-med icmp-port-utilgjengelig $ IPT -A TCP_IN -p tcp -m tcp -m multiport!  --dports 80,443 -m state --state NEW -j ULOG --ulog-prefix IN_TCP $ IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m state --state NEW -m hashlimit - hashlimit-opptil 4 / sek --hashlimit-burst 16 --hashlimit-mode srcip --hashlimit-navn navreq -j ACCEPT $ IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m tilstand - state ESTABLISHED -m connlimit!  --connlimit-over 16 -j ACCEPT $ IPT -A TCP_IN -p tcp -m tcp -m multiport! 

Med den forrige konfigurasjonen, bør VPS være rimelig sikret, men hvis vi ønsker kan vi sikre den litt mer, som vi kan bruke noen mer avanserte regler for.

Ikke alle VPS tillater installasjon av ekstra moduler for netfilter, men en veldig nyttig er psd, som lar deg unngå portskanning. Dessverre er denne modulen ikke integrert i netfilter som standard, så det er nødvendig å installere visse pakker og deretter bygge modulen:

aptitude -RvW installer iptables-dev xtables-addons-source module-assistant module-assistant --verbose --text-mode auto-install xtables-addons-source

Når ovenstående er gjort, kan vi legge til en regel som denne:

iptables -A INNGANG -m psd --psd-vekt-terskel 15 --psd-forsinkelse-terskel 2000 --psd-lo-port-vekt 3 --psd-hi-porter-vekt 1 -j ULOG --ulog- prefikset IN_PORTSCAN

Den forrige regelen betyr i utgangspunktet at vi vil lage en teller som vil øke med 3 hver gang det blir gjort et forsøk på å få tilgang til en port lavere enn 1024 og med 1 hver gang et forsøk på å få tilgang til en port høyere enn 1023, og når denne telleren når 15 en periode på mindre enn 20 sekunder, blir pakkene registrert av ulog som et forsøk på portscan. Pakkene kan fortsatt kastes på en gang, men i dette tilfellet har vi tenkt å bruke fail2ban, som vi konfigurerer senere.

Når reglene er opprettet, må vi ta visse forholdsregler for å gjøre dem vedvarende, ellers mister vi dem når serveren startes på nytt. Det er flere måter å oppnå dette på; I denne opplæringen bruker vi den iptables-vedvarende pakken som vi installerte i begynnelsen, som lagrer reglene i /etc/iptables/rules.v4 y /etc/iptables/rules.v6 for ipv6.

iptables-save> /etc/iptables/rules.v4

Selv om bruken av ipv6 på Cuba ennå ikke er utbredt, kan vi faktisk lage noen grunnleggende regler:

IPT = $ (hvilke ip6tabeller) $ IPT -P INNGANG DROP $ IPT -P VIDERE DROP $ IPT -P UTGANG AKSEPT $ IPT -A INNGANG -i lo -j Aksepter $ IPT -A INNGANG! -i lo -m state --state ESTABLISHED, RELATED -j ACCEPT unset IPT

Disse reglene kan også gjøres vedvarende:

ip6tables-save> /etc/iptables/rules.v6

Endelig for større sikkerhet, renser vi registret for brannmuren og starter tjenestene på nytt:

echo -n> /var/log/firewall.log service logrotate restart service ulogd restart service iptables-persistent restart

Nginx

Vi vil bruke Nginx som en webserver, fordi VPS-er har en tendens til å ha redusert mengde RAM sammenlignet med en ekte server, så det er generelt lurt å ha noe lettere enn Apache.

Før vi konfigurerer Nginx, oppretter vi et sertifikat (uten passord) for bruk over HTTPS:

cd / etc / nginx openssl genrsa -des3 -out cert.key 4096 cp -v cert.key cert.key.original openssl req -new-key cert.key -out cert.csr openssl rsa -in cert.key.original - ut cert.key openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.crt

Når dette er gjort, oppretter vi en passordfil for brukeren "elusuario":

htpasswd -c .htpasswd brukeren

Deretter vil vi endre filen / etc / nginx / sites-available / default for å angi standard nettstedsinnstillinger. Det kan se slik ut:

server {server_name localhost; index index.html index.htm default.html default.htm; rot / var / www; location / {# angi rekkefølgen for bekreftelse og siden som skal lastes inn, hvis URI ikke blir funnet try_files $ uri $ uri / /index.html; }} server {lytter 127.0.0.1:443; servernavn localhost; index index.html index.htm default.html default.htm; rot / var / www; ssl på; ssl_certificate cert.crt; ssl_certificate_key cert.key; ssl_session_timeout 5m; # Aktiver HTTPS bare over TLS (sikrere enn SSL) ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # gi preferanse til høystyrke [HIGH] -koder, # flytt mediumstyrke [MEDIUM] -koder til slutten av listen, # deaktiver lavstyrke [LAV] -koder (40 og 56 bits) # deaktiver krypter med eksportalgoritmer [EXP] # deaktiver nullkoder [eNULL], uten godkjenning [aNULL], SSL (versjon 2 og 3) og DSS (tillater bare nøkler opptil 1024 bits) ssl_ciphers HIGH: + MEDIUM :! LOW :! EXP: ! aNULL :! eNULL :! SSLv3 :! SSLv2 :! DSS; # Foretrekker serverens krypteringsmetoder (som standard brukes klientens) ssl_prefer_server_ciphers on; location / {# aktiver autentisering auth_basic "Login"; auth_basic_user_file /etc/nginx/.htpasswd; # angi bekreftelsesrekkefølgen og sidekoden som skal lastes inn, hvis URI try_files $ uri $ uri / = 404 ikke blir funnet; # tillat oppretting av en indeks for autentiserte brukere autoindeks på; autoindex_exact_size off; autoindex_localtime på; }}

Vi sjekker at konfigurasjonen er riktig:

nginx -t

Til slutt starter vi tjenesten på nytt:

service nginx restart

Feil2Ban

Før du begynner å konfigurere Fail2Ban, for større sikkerhet, stopper vi tjenesten og rydder registeret:

fail2ban-client stop echo -n> /var/log/fail2ban.log

Deretter oppretter vi konfigurasjonsfilen /etc/fail2ban/jail.local med følgende tilpasset innhold:

# Egendefinert konfigurasjonsfil /etc/fail2ban/jail.local # [STANDARD] findtime = 43200; 12 timer varighet = 86400; 1 dagers maxretry = 3; forbudet vil tre i kraft etter det fjerde forsøket [ssh] enabled = false [nginx-auth] enabled = true filter = nginx-auth action = iptables-multiport [name = NoAuthFailures, port = "http, https"] logpath = / var / logg / nginx * / * feil * .logg [nginx-badbots] aktivert = true filter = apache-badbots action = iptables-multiport [name = BadBots, port = "http, https"] logpath = / var / log / nginx * /*access*.log bantime = 4; 604800 ukes maxretry = 1 [nginx-login] aktivert = true filter = nginx-login action = iptables-multiport [name = NoLoginFailures, port = "http, https"] logpath = / var / log / nginx * / * access *. logg bantime = 0; 1800 minutter [nginx-noscript] aktivert = sann handling = iptables-multiport [navn = NoScript, port = "http, https"] filter = nginx-noscript logpath = /var/log/nginx*/*access*.log maxretry = 30 [nginx-proxy] aktivert = sann handling = iptables-multiport [name = NoProxy, port = "http, https"] filter = nginx-proxy logpath = /var/log/nginx*/*access*.log bantime = 0 ; 604800 ukes maxretry = 1 [brannmur] aktivert = sann handling = iptables-multiport [navn = brannmur] filter = brannmur loggsti = /var/log/firewall.log maxretry = 0

Når dette er gjort, lager vi i katalogen /etc/fail2ban/filters.d/ følgende filer:

# /etc/fail2ban/filter.d/nginx-auth.conf # Authfilter # Blokkerer IP-er som ikke godkjennes ved hjelp av grunnleggende godkjenning # [Definisjon] failregex = ingen bruker / passord ble gitt for grunnleggende autentisering. * klient: bruker. * ble ikke funnet i. * klient: bruker. * passord uoverensstemmelse. * klient: ignororeregex =
# /etc/fail2ban/filter.d/nginx-login.conf # Påloggingsfilter # Blokkerer IP-er som ikke godkjennes ved hjelp av webapplikasjonens påloggingsside # Skannetilgangslogg for HTTP 200 + POST / økter => mislykket pålogging # [Definisjon ] failregex = ^ -. * POST / økter HTTP / 1 \ .. "200 ignoreregex =
# /etc/fail2ban/filter.d/nginx-noscript.conf # Noscript filter # Blokker IP-er som prøver å utføre skript som .php, .pl, .exe og andre morsomme skript. # Treff f.eks # 192.168.1.1 - - "GET /something.php # [Definisjon] failregex = ^ -. * GET. * (\. Php | \ .asp | \ .exe | \ .pl | \ .cgi | \ scgi) ignoreregex =
# /etc/fail2ban/filter.d/proxy.conf # Proxy filter # Blokker IP-er som prøver å bruke serveren som proxy. # Treff f.eks # 192.168.1.1 - - "FÅ http://www.something.com/ # [Definisjon] failregex = ^ -. * FÅ http. * Ignoreregex =
# /etc/fail2ban/filter.d/firewall.conf # Brannmurfilter # [Definisjon] failregex = ^. * IN_ (INVALID | PORTSCAN | UDP | TCP |). * SRC = . * $ ignoreregex =

Til slutt starter vi tjenesten og laster konfigurasjonen:

fail2ban-service -b fail2ban-client reload

Bekreftelse

Som et siste trinn kan vi se postene med hale -f o multitail - følg alt. Faktisk tilbyr sistnevnte applikasjon fordelen at den lar deg se flere filer samtidig og gir grunnleggende syntaksutheving.

Hvis en e-postkonto ikke er konfigurert i VPS, er det tilrådelig å deaktivere en advarsel som vises når du starter multitail, og som vi vil utføre følgende kommando for:

ekko "sjekk_mail: 0"> ~ / .multitailrc

Faktisk kan vi godt lage et alias (4) for å se loggene raskt med en kort kommando, for eksempel "flog":

alias flog = 'multitail --follow-all /var/log/firewall.log /var/log/fail2ban.log'

1) Dette er fiktive verdier.
2) Det er enkelt å aktivere andre tjenester når du forstår hvordan det fungerer.
3) For flere detaljer, kjør mannsudoer.
4) Valgfritt kan legges til ~ / .bash_aliases-filen


6 kommentarer, legg igjen dine

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   MSX sa

    Det er noen interessante ting, +1

  2.   yukiteru sa

    @ Hugo denne linjen i konfigurasjonen:

    ssl_protocols SSLv3 TLSv1;

    Jeg vil ta SSLv3 ut av det fordi den protokollen ikke lenger er sikker, selv i Debian Jessie, er mange tjenester konfigurert for å unngå å bruke den protokollen av den grunn.

    Informasjon om temaet her:

    https://www.linode.com/docs/security/security-patches/disabling-sslv3-for-poodle
    http://disablessl3.com/

    1.    Hugo sa

      Ideen var egentlig ikke å tilby hovedtjenestene via HTTPS, men å forklare hvordan man bruker port 443 for SSH uten å miste muligheten for å bruke den til HTTPS om nødvendig, men takk for advarselen.

      Uansett har jeg oppdatert artikkelen for å endre nginx-konfigurasjonen litt og for øvrig inkludere noen kommentarer for å avklare ting litt mer med dette av krypteringsmekanismene, og for å fikse noen mindre feil.

  3.   Daniel PZ sa

    Muchas gracias por este estupendo tutorial, ahora lo pondré en practica! :D, Sigan así DesdeLinux, siempre me sorprenden, Saludos desde Perú.

  4.   Ñandekuera sa

    Tusen takk for at du delte.

  5.   fernando sa

    veldig god guide og det kommer fra perler nå som jeg startet i denne bloggen, men enda mer nå når jeg er i ferd med å montere min første vps og fremdeles med mange problemer, men denne artikkelen har tatt meg ut av mange tvil, takk og hilsener