Koraki za zaščito našega VPS

Ta vadnica prikazuje, kako pripraviti in zaščititi navidezni zasebni strežnik (VPS) z Debian GNU / Linuxom. Preden začnemo, se predpostavljajo nekatere stvari:

  1. GNU / Linux poznate na vmesni ravni.
  2. Obstaja VPS za osebno uporabo, do katerega imamo dostop prek SSH.
  3. VPS ima namenski zunanji ipv4 250.250.250.155, naš ponudnik pa je lastnik bloka 250.250.0.0/16. (1)
  4. V našem VPS bomo za dostop od zunaj omogočili samo storitve http, https in ssh.
  5. Zunanji DNS ne bo omogočen, saj je to običajno na plošči našega ponudnika. (2)
  6. Deloval bo kot super uporabnik.

Namestitev

Najprej posodobimo strežnik in namestimo nekaj paketov, ki jih bomo potrebovali:

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

konfiguracija

Zdaj bomo ustvarili delovnega uporabnika. Delo kot root na strežniku ni varno, zato bomo najprej ustvarili posebnega uporabnika:

adduser operator usermod -aG sudo operator

Prvi ukaz ustvari uporabnika operaterja, drugi pa ga doda v skupino sudo, ki vam bo omogočil zagon aplikacij kot root.

Prilagodite dovoljenja za super uporabnike

Za redno delo bomo uporabili uporabnika operaterja predhodno ustvarjene, moramo prilagoditi možnosti izvajanja ukaza kot super uporabnika, za katerega izvršimo naslednji ukaz:

visudo

Ta ukaz v bistvu omogoča spreminjanje datoteke / etc / sudoers; v katerem bi morali vsebovati te vrstice:

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

V prvi vrstici je možnost dodana privzetim vrednostim timestamp_timeout ki vam omogoča, da nastavite čas poteka gesla (v minutah), ko se izvrši ukaz sudo. Privzeto je 5, vendar to včasih ni varno iz dveh razlogov:

  1. Če nehote pustimo računalnik prijavljen, preden geslo poteče, lahko nekdo brez omejitev izvrši ukaz kot root.
  2. Če zaradi neznanja zaženemo aplikacijo ali skript, ki vsebuje zlonamerno kodo, še preden poteče geslo, lahko aplikacija brez našega izrecnega soglasja dostopa do našega sistema kot super uporabnik.

Da bi se izognili tveganjem, smo vrednost nastavili na nič, to pomeni, da bo treba vsakič, ko se izvrši ukaz sudo, vnesti geslo. Če je negativna vrednost nastavljena na -1, učinek je, da geslo nikoli ne poteče, kar bi povzročilo nasprotni rezultat, kot ga želimo.

V drugi vrstici je pojasnjeno, da lahko skupina sudo izvrši kateri koli ukaz v katerem koli računalniku, kar je običajno, čeprav ga je mogoče prilagoditi. (3) Obstajajo tisti, ki zaradi udobja postavijo vrstico na naslednji način, da ne bi morali vnašati gesla:

% sudo VSE = (VSE: VSE) NOPASSWD: VSE

Kot smo že pojasnili, je to tvegano in zato ni priporočljivo.

Onemogoči ponovni zagon

Iz varnostnih razlogov bomo s kombinacijo tipk onemogočili tudi ponovni zagon Ctrl + Alt + Del, za katero moramo dodati to vrstico v datoteko / etc / inittab:

ca: 12345: ctrlaltdel: / bin / echo "Ctrl + Alt + Del je onemogočen."

Zamenjajte OpenSSH z DropBear

Večina VPS ima nameščen OpenSSH, kar je vsekakor zelo koristno, če pa ne bomo izkoristili vseh funkcij OpenSSH, obstajajo lažje alternative za VPS, kot je dropbear, kar običajno zadostuje za redno uporabo. Vendar pa je pomanjkljivost te aplikacije ta, da nima vgrajenega SFTP strežnika in zato smo na začetku namestili paket gesftpserver.

Če želite konfigurirati Dropbear, bomo datoteko spremenili / etc / default / dropbear tako da vsebuje ti dve vrstici:

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

Prva vrstica preprosto omogoča storitev, druga pa več stvari:

  1. Izogibajte se korenskemu dostopu.
  2. Poslušanje storitve postavi na vrata 22 lokalnega vmesnika (kasneje bomo razložili, zakaj).
  3. Nastavi čas čakanja (20 minut).

SSLH

Pristanišče 22 (SSH) je dobro znano in je na splošno eno prvih, ki ga hekerji poskušajo prebiti, zato bomo namesto njega uporabili vrata 443 (SSL). Zgodi se, da se ta vrata uporabljajo za varno brskanje po HTTPS.

Iz tega razloga bomo uporabili paket sslh, ki ni nič drugega kot multiplekser, ki analizira pakete, ki prispejo na vrata 443, in jih interno usmeri v eno ali drugo storitev, odvisno od tega, ali je vrsta prometa SSH ali SSL.

SSLH ne more poslušati v vmesniku, kjer že posluša druga storitev, zato smo prej Dropbear prisilili, da posluša na lokalnem vmesniku.

Zdaj moramo sslh označiti vmesnik in vrata, skozi katera naj posluša, in kam preusmeriti pakete, odvisno od vrste storitve, in za to bomo spremenili konfiguracijsko datoteko / etc / default / sslh:

DAEMON = / usr / sbin / sslh DAEMON_OPTS = "- uporabnik 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 = da

Na koncu ponovno zaženemo storitve:

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

Po prejšnjem ukazu bo naša varna seja verjetno prekinjena, v tem primeru se je dovolj znova prijaviti, vendar tokrat z delovnim uporabnikom in z vrati 443. Če seja ni prekinjena, jo je priporočljivo zapreti in začnite znova z ustreznimi vrednostmi.

Če vse deluje pravilno, lahko še naprej delamo kot root in po želji odstranimo OpenSSH:

sudo su - aptitude -r purge openssh-server

Požarni zid

Naslednja stvar, ki jo bomo storili, je ločiti dnevnike od požarnega zidu v ločeno datoteko /var/log/firewall.log za lažjo nadaljnjo analizo, zato smo paket ulogd namestili ob zagonu. Za to bomo uredili datoteko /etc/logd.conf za prilagoditev ustreznega razdelka:

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

Nato bomo spremenili datoteko vrtenja zapisa / etc / logrotate / ulogd da obdržite dnevno rotacijo (z datumom) in shranite stisnjene salve v imenik / var / log / ulog /:

/var/log/ulog/*.log /var/log/firewall.log {dnevno dateext missingok stiskanje zakasnitev stiskanje skupnih skriptov ustvari 640 root adm postrotate /etc/init.d/ulogd reload mv /var/log/firewall.log-* .gz / var / log / ulog / endscript}

Nato bomo ustvarili pravila netfilterja z izvajanjem naslednjega:

IPT = $ (kateri 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 NAPREJ DROP $ IPT -P IZHOD ACCEPT $ IPT -A INPUT -m stanje - stanje INVALID -j ULOG --ulog-predpona IN_INVALID $ IPT -A INPUT -p igmp -j ULOG --ulog -prefix IN_IGMP $ IPT -A INPUT -m pkttype --pkt-type broadcast -j ULOG --ulog-predpona IN_BCAST $ IPT -A INPUT -m pkttype --pkt-type multicast -j ULOG --ulog-predpona IN_MCAST $ IPT -A NAPREJ -j ULOG --ulog-predpona NAPREJ $ IPT -N ICMP_IN $ IPT -A VHOD!  -i lo -p icmp -j ICMP_IN $ IPT -A ICMP_IN -p icmp -f -j ULOG --ulog-predpona IN_ICMP_FRAGMENTED $ IPT -A ICMP_IN -p icmp -m icmp -m dolžina!  --length 28: 1322 -j ULOG --ulog-predpona IN_ICMP_INVALIDSIZE $ IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-over 4 / sec --hashlimit-mode srcip --hashlimit-srcmask 24 - -hashlimit-name icmpflood -j ULOG --ulog-predpona IN_ICMP_FLOOD $ IPT -A ICMP_IN -p icmp -m icmp -m hashlimit --hashlimit-upto 64kb / min --hashlimit-mode srcip --hashlimit-srcmask 24 - hashlimit-name icmpattack -j ULOG --ulog-predpona IN_ICMP_FLOOD $ IPT -A ICMP_IN -p icmp -m icmp -m u32!  --u32 "0x4 & 0x3fff = 0x0" -j ULOG --ulog-predpona IN_ICMP_ATTACK $ IPT -A ICMP_IN -p icmp -m icmp!  - emp-type echo-request -m state --state NEW -j ULOG --ulog-predpona IN_ICMP_INVALID $ IPT -A ICMP_IN -p icmp -m icmp - emp-type -mpmp -j ULOG --ulog- predpona IN_ICMP $ IPT -A ICMP_IN -p icmp -m icmp - type-type echo-request -m limit --limit 1 / sec --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp - emp-type echo-reply -m limit --limit 2 / sec --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type destination-unreachable -m limit - limit 2 / sec --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp - time-type type-overset -m limit --limit 2 / sec --limit-burst 4 -j ACCEPT $ IPT -A ICMP_IN -p icmp -m icmp --icmp-type parameter-problem -m limit --limit 2 / sec --limit-burst 4 -j SPREJMI $ IPT -A ICMP_IN -j RETURN $ IPT -N UDP_IN $ IPT - VHOD!  -i lo -p udp -j UDP_IN $ IPT -A UDP_IN!  -ja glej!  -p udp -f -j ULOG --ulog-predpona IN_UDP_FRAGMENTED $ IPT -A UDP_IN -p udp -m udp --sport 53 -m dolžina!  --length 28: 576 -j ULOG --ulog-predpona IN_UDP_DNS_INVALIDSIZE $ IPT -A UDP_IN -p udp -m udp --dport 53 -m -state --state NEW -j ULOG --ulog-predpona IN_UDP_DNSREQUEST $ IPT - UDP_IN -p udp -m udp --dport 53 -m -state --state NOVO -j REJECT --reject-with icmp-port-nedosegljiv $ IPT -A UDP_IN -p udp -m udp!  - šport 53!  -s $ IPEXTBLK!  -d $ IPBCAST -m stanje - stanje NOVO -j ULOG --ulog-predpona IN_UDP $ IPT -A UDP_IN -p udp -m udp -m stanje - stanje VZPOSTAVLJENO, POVEZANO -j SPREJEM $ IPT -A UDP_IN -j VRNITE $ IPT -N TCP_IN $ IPT -A VHOD!  -i lo -p tcp -j TCP_IN $ IPT -A TCP_IN!  -ja glej!  -p tcp -f -j ULOG --ulog-predpona IN_TCP_FRAGMENTED $ IPT -A TCP_IN -p tcp -m tcp --sport 53 -m stanje - stanje VZPOSTAVLJENO, POVEZANO -m dolžina!  --length 513: 1500 -j ULOG --ulog-predpona IN_TCP_DNS_INVALIDSIZE $ IPT -A TCP_IN -p tcp -m tcp --dport 53 -m state --state NEW -j ULOG --ulog-predpona IN_TCP_DNS $ IPT -A TCP_IN -p tcp -m tcp --dport 53 -m stanje - stanje NOVO -j REJECT --reject-with icmp-port-nedosegljiv $ IPT -A TCP_IN -p tcp -m tcp -m multiport!  --dports 80,443 -m state --state NEW -j ULOG --ulog-predpona IN_TCP $ IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m state --state NEW -m hashlimit - hashlimit -do 4 / s --hashlimit-burst 16 --hashlimit-mode srcip --hashlimit-name navreq -j SPREJEM $ IPT -A TCP_IN -p tcp -m tcp -m multiport --dports 80,443 -m state - state -m omejen!  --connlimit-nad 16 -j ACCEPT $ IPT -A TCP_IN -p tcp -m tcp -m multiport! 

S prejšnjo konfiguracijo bi moral biti naš VPS razumno zavarovan, če pa želimo, ga lahko še malo zaščitimo, za kar lahko uporabimo nekatera naprednejša pravila.

Vsi VPS ne omogočajo namestitve dodatnih modulov za netfilter, vendar je zelo koristen psd, ki vam omogoča, da se izognete skeniranju vrat. Na žalost ta modul privzeto ni integriran v netfilter, zato je treba namestiti določene pakete in nato zgraditi modul:

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

Ko je zgoraj navedeno, lahko dodamo pravilo, kot je to:

iptables -A INPUT -m psd --psd-prag teže 15 --psd-prag zakasnitve 2000 --psd-lo-port-weight 3 --psd-hi-ports-weight 1 -j ULOG --ulog- predpona IN_PORTSCAN

Prejšnje pravilo v bistvu pomeni, da bomo ustvarili števec, ki se bo povečal za 3 vsakič, ko se poskusi dostop do vrat, nižjih od 1024, in za 1 vsakič, ko se poskuša dostopati do vrat, višjih od 1023, in ko se bo doseže 15 v manj kot 20 sekundah, bo pakete registriral ulog kot poskus portscan. Pakete bi lahko še vedno zavrgli naenkrat, vendar v tem primeru nameravamo uporabiti fail2ban, ki ga bomo konfigurirali kasneje.

Ko so pravila ustvarjena, moramo sprejeti določene previdnostne ukrepe, da bodo trajna, sicer jih bomo ob ponovnem zagonu strežnika izgubili. To lahko dosežemo na več načinov; V tej vadnici bomo uporabili paket iptables-persistent, ki smo ga namestili na začetku in v katerem so shranjena pravila /etc/iptables/rules.v4 y /etc/iptables/rules.v6 za ipv6.

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

Čeprav uporaba ipv6 na Kubi še ni razširjena, bi lahko ustvarili nekaj osnovnih pravil:

IPT = $ (ki ip6tables) $ IPT -P INPUT DROP $ IPT -P NAPREJ DROP $ IPT -P IZHOD SPREJEM $ IPT -A INPUT -i lo -j SPREJEM $ IPT -A INPUT! -i lo -m state --state VZPOSTAVLJENO, POVEZANO -j SPREJEM unset IPT

Tudi ta pravila lahko vztrajamo:

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

Na koncu za večjo varnost očistimo register požarnega zidu in znova zaženemo storitve:

echo -n> /var/log/firewall.log storitev logrotate ponovni zagon storitve ulogd ponovni zagon storitve iptables-trajni ponovni zagon

Nginx

Nginx bomo uporabili kot spletni strežnik, ker imajo VPS ponavadi manjšo količino RAM-a v primerjavi s pravim strežnikom, zato je na splošno primerneje imeti nekaj lažjega od Apacheja.

Pred konfiguriranjem Nginxa bomo ustvarili potrdilo (brez gesla) za uporabo prek 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 - ven cert.key openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.crt

Ko bo to storjeno, bomo ustvarili datoteko z geslom za uporabnika "elusuario":

htpasswd -c .htpasswd uporabnika

Nato bomo datoteko spremenili / etc / nginx / spletna mesta so na voljo / privzeto , da nastavite privzete nastavitve spletnega mesta. Lahko bi izgledalo takole:

strežnik {ime_ strežnika localhost; indeks index.html index.htm default.html default.htm; root / var / www; location / {# nastavite vrstni red preverjanja in stran za nalaganje, če URI-ja ni mogoče najti, poskusite_datoteke $ uri $ uri / /index.html; }} strežnik {poslušaj 127.0.0.1:443; ime_strežnika localhost; index index.html index.htm default.html default.htm; root / var / www; ssl vklopljen; ssl_certificate cert.crt; ssl_certificate_key cert.key; ssl_session_timeout 5m; # Omogoči HTTPS samo prek TLS (bolj varno kot SSL) ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # dajte prednost šifram visoke trdnosti [HIGH], # premaknite šifre srednje moči [MEDIUM] na konec seznama, # onemogočite šifre nizke trdnosti [LOW] (40 in 56 bitov) # onemogočite šifre z izvoznimi algoritmi [ EXP] # onemogoči ničelne šifre [eNULL], brez preverjanja pristnosti [aNULL], SSL (različici 2 in 3) in DSS (dovoljujejo samo ključe do 1024 bitov) ssl_ciphers VISOKO: + SREDNJE :! LOW :! EXP:! ANULL :! eNULL :! SSLv3 :! SSLv2 :! DSS; # Dajte prednost strežniškim načinom šifriranja (privzeto se uporabljajo odjemalski) ssl_prefer_server_ciphers on; location / {# omogoči preverjanje pristnosti auth_basic "Prijava"; auth_basic_user_file /etc/nginx/.htpasswd; # nastavite vrstni red preverjanja in naloži kodo strani, če URI-ja try_files $ uri $ uri / = 404 ni mogoče najti; # dovoli izdelavo indeksa za preverjene uporabnike s samodejnim indeksom; autoindex_exact_size off; autoindex_localtime vklopljen; }}

Preverimo, ali je konfiguracija pravilna:

nginx -t

Na koncu ponovno zaženemo storitev:

storitev nginx restart

Fail2Ban

Preden začnemo konfigurirati Fail2Ban, za večjo varnost ustavimo storitev in očistimo register:

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

Nato ustvarimo konfiguracijsko datoteko /etc/fail2ban/jail.local z naslednjo vsebino po meri:

# Konfiguracijska datoteka po meri /etc/fail2ban/jail.local # [DEFAULT] findtime = 43200; 12 ur bantime = 86400; 1 dan maxretry = 3; prepoved bo začela veljati po 4. poskusu [ssh] enabled = false [nginx-auth] enabled = true filter = nginx-auth action = iptables-multiport [name = NoAuthFailures, port = "http, https"] logpath = / var / log / nginx * / * error * .log [nginx-badbots] omogočen = true filter = apache-badbots action = iptables-multiport [name = BadBots, port = "http, https"] logpath = / var / log / nginx * /*access*.log bantime = 604800; 1 teden maxretry = 0 [nginx-login] omogočeno = true filter = nginx-login action = iptables-multiport [name = NoLoginFailures, port = "http, https"] logpath = / var / log / nginx * / * access *. log bantime = 1800; 30 minut [nginx-noscript] omogočeno = resnična akcija = iptables-multiport [name = NoScript, port = "http, https"] filter = nginx-noscript logpath = /var/log/nginx*/*access*.log maxretry = 0 [nginx-proxy] omogočeno = true action = iptables-multiport [name = NoProxy, port = "http, https"] filter = nginx-proxy logpath = /var/log/nginx*/*access*.log bantime = 604800 ; 1 teden maxretry = 0 [firewall] omogočen = true action = iptables-multiport [name = Firewall] filter = logpath požarnega zidu = /var/log/firewall.log maxretry = 0

Ko je to končano, ustvarimo v imeniku /etc/fail2ban/filters.d/ naslednje datoteke:

# /etc/fail2ban/filter.d/nginx-auth.conf # Avtorizacijski filter # Blokira IP-je, ki se ne morejo overiti z osnovnim preverjanjem pristnosti # [Definicija] failregex = za osnovno preverjanje pristnosti ni bil naveden uporabnik / geslo. uporabnik. * ni bil najden v odjemalcu. *: uporabnik. * neusklajenost gesla. * odjemalec: ignoreregex =
# /etc/fail2ban/filter.d/nginx-login.conf # Filter za prijavo # Blokira IP-je, ki ne uspejo preveriti pristnosti s pomočjo strani za prijavo v spletno aplikacijo # Skeniraj dnevnik dostopa za HTTP 200 + POST / session => neuspešna prijava # [Definicija ] failregex = ^ -. * POST / seje HTTP / 1 \ .. "200 ignoreregex =
# /etc/fail2ban/filter.d/nginx-noscript.conf # Noscript filter # Blokiraj IP-je, ki poskušajo izvesti skripte, kot so .php, .pl, .exe in druge smešne skripte. # Ujema se npr. # 192.168.1.1 - - "GET /something.php # [Definicija] failregex = ^ -. * GET. * (\. Php | \ .asp | \ .exe | \ .pl | \ .cgi | \ scgi) ignoreregex =
# /etc/fail2ban/filter.d/proxy.conf # Proxy filter # Blokiraj IP-je, ki poskušajo strežnik uporabiti kot proxy. # Ujemanja, npr. # 192.168.1.1 - - "GET http://www.something.com/ # [Definicija] failregex = ^ -. * PRIDOBITE http. * Ignoreregex =
# /etc/fail2ban/filter.d/firewall.conf # Filter požarnega zidu # [Definicija] failregex = ^. * IN_ (INVALID | PORTSCAN | UDP | TCP |). * SRC = . * $ ignoreregex =

Na koncu zaženemo storitev in naložimo konfiguracijo:

fail2ban-service -b fail2ban-ponovno nalaganje odjemalca

Preverjanje

Kot zadnji korak si lahko zapise ogledamo z rep -f o multitail –sledi vsem. Dejansko slednja aplikacija ponuja to prednost, da omogoča ogled več datotek hkrati in zagotavlja osnovno poudarjanje sintakse.

Če e-poštni račun v VPS ni konfiguriran, je priporočljivo onemogočiti opozorilno sporočilo, ki se prikaže ob zagonu multitail, za kar bomo izvedli naslednji ukaz:

echo "check_mail: 0"> ~ / .multitailrc

Pravzaprav bi lahko naredili vzdevek (4) za hiter ogled dnevnikov s kratkim ukazom, na primer "flog":

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

1) To so izmišljene vrednote.
2) Omogočanje drugih storitev je enostavno, ko razumete, kako to deluje.
3) Za več podrobnosti zaženite man sudoers.
4) Po želji se lahko doda v datoteko ~ / .bash_aliases


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   MSX je dejal

    Nekaj ​​zanimivih stvari je, +1

  2.   yukiteru je dejal

    @Hugo to vrstico v konfiguraciji:

    ssl_protocols SSLv3 TLSv1;

    Iz njega bi vzel SSLv3, ker ta protokol ni več varen, tudi v Debianu Jessie so bile številne storitve konfigurirane tako, da se zaradi tega izogibajo uporabi tega protokola.

    Informacije o temi tukaj:

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

    1.    Hugo je dejal

      Zamisel v resnici ni bila ponuditi glavnih storitev prek HTTPS, ampak razložiti, kako uporabiti vrata 443 za SSH, ne da bi pri tem izgubili možnost uporabe za HTTPS, ampak hvala za opozorilo.

      Kakorkoli že, članek sem posodobil tako, da sem nekoliko spremenil konfiguracijo nginxa in mimogrede vključil nekaj pripomb, da bi s tem mehanizmom šifriranja še malo pojasnil stvari in odpravil nekaj manjših napak.

  3.   Daniel PZ je dejal

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

  4.   Sandekuera je dejal

    Najlepša hvala za delitev.

  5.   fernando je dejal

    zelo dober vodnik in prihaja iz biserov zdaj, ko sem začel v tem blogu, še bolj pa zdaj, ko bom nameščal svoj prvi vps in še vedno imam veliko težav, vendar me je ta članek rešil iz številnih dvomov, zahval in pozdravov