Kif tagħmel ħbieb Ovirt u Let's Encrypt

Mixi tul it-triq tat-titjib tal-infrastruttura, iddeċidejt li jispiċċa mistoqsija antika u bl-uġigħ - mingħajr ġesti bla bżonn, tipprovdi l-opportunità lill-kollegi (iżviluppaturi, testers, amministraturi, eċċ) biex jimmaniġġjaw b'mod indipendenti l-magni virtwali tagħhom f'ovirt. Ovirt għandu diversi komponenti li jeħtieġ li jiġu kkonfigurati biex issolvi l-kwistjoni tiegħi: l-interface tal-web innifsu, il-console noVNC u l-immaġini tad-diska uploading.

Ma sibtx il-buttuna "Make It Bad", għalhekk qed nurik liema pumi dawwart biex issolvi din il-problema. Istruzzjonijiet sħaħ taħt il-qatgħa:

Kif tagħmel ħbieb Ovirt u Let's Encrypt

DISCLAIMER:

Qabel nibda, nixtieq niġbed l-attenzjoni tiegħek għall-fatt li għal xi raġuni mhux magħrufa għalija, dominji ta 'infrastruttura huma maħluqa f'żoni privati ​​lan, lokali, eċċ.

Ma nafx x'jwaqqafni milli nuża dominju ta' organizzazzjoni f'żona pubblika. Pereżempju, minflok id-dominju Alex-GLuck-Awesome-Company.local, tista 'tuża b'mod sikur id-dominju għall-websajt tal-kumpanija Alex-GLuck-Awesome-Company.com.

Jekk tibża 'li ma tkunx tista' żżomm kont tad-dominji fl-organizzazzjoni tiegħek, u dan ikisser xi ħaġa, allura għal 100 rublu modest fis-sena tista 'tixtri dominju separat għall-infrastruttura aglac.com.

Għaliex huwa aktar profittabbli li tuża dominji f'żoni pubbliċi:

1. L-organizzazzjoni tiegħek għandha servizzi li huma aċċessibbli għall-pubbliku: vpn, kondiviżjoni ta' fajls (seafile, nextcloud), u oħrajn. It-twaqqif ta' encryption tat-traffiku fuq servizzi bħal dawn ġeneralment ikun sforz kemxejn bla ħsieb, u mhux se nkunu qed niddefendu kontra attakki MitM għax huwa diffiċli (mhux tassew).

Jew għandek indirizz wieħed tas-servizz ġewwa l-uffiċċju, u ieħor mill-Internet, u dawn il-konnessjonijiet jeħtieġ li jinżammu, li jaħli r-riżorsi speċjalizzati limitati tagħna. Ukoll, l-impjegati jridu jiftakru indirizzi differenti, li huwa inkonvenjenti.

2. Tista' tuża l-awtoritajiet taċ-ċertifikat b'xejn biex tikkriptaw is-servizzi interni tiegħek.

Il-PKI tiegħek stess huwa servizz li jeħtieġ li jiġi appoġġjat; 100 rublu fis-sena għall-opportunità li tuża PKI minn awtoritajiet ta 'ċertifikazzjoni b'xejn aktar milli tħallas għall-ħin tal-impjegati li jistgħu jonfquh fuq kompiti oħra.

3. Meta tuża l-awtorità taċ-ċertifikat tiegħek stess, int se tpoġġi tkellem fir-roti tal-impjegati u l-kollegi remoti tiegħek li jridu jaħdmu bil-BYOD (ġibu l-laptops, it-telefowns, it-tablets tagħhom stess) u ma tistax timmaniġġja l-apparat tagħhom. Huma jġibu Macs, Linux, Androids, iOS, Windows - m'hemm l-ebda skop li tappoġġja żoo bħal dan.

F'kollox, ovvjament, hemm eċċezzjonijiet, u banek b'intrapriżi ħarxa oħra li stabbilixxew politiki ta 'sigurtà qatt ma jkunu jistgħu jtejbu s-servizz għall-impjegati tagħhom.

Għalihom, hemm awtoritajiet ta 'ċertifikazzjoni mħallsa li jistgħu jiffirmaw iċ-ċertifikat CA tagħhom għal ċertu ammont (Google "root signing service").

Hemm raġunijiet oħra għaliex huwa aktar profittabbli li tuża dominju pubbliku (l-iktar ħaġa importanti hija li tappartjeni lilek), iżda dan l-artikolu mhux dwar dan.

Il-punt hu...

ATTENZJONI! Jekk iżżid ċertifikat ta' Let's Encrypt CA mal-lista ta' fiduċja ta' ovirt, dan jista' jaffettwa s-sigurtà tas-sistemi tiegħek!

L-ewwel ħaġa li trid tagħti attenzjoni għaliha hija li l-esponiment tal-interfaces Ovirt għall-Internet hija prattika ħażina, għax Dan ma jagħmilx sens prattiku, u joħloq theddid addizzjonali għas-sigurtà.

Għalhekk, għandek bżonn tikseb ċertifikat fuq wieħed mill-hosts bastion tagħna, u mbagħad tittrasferixxi ċ-ċertifikat u ċ-ċavetta lill-ospitant tagħna b'ovirt-engine.

Aħna nżidu l-indirizz estern tal-host bastion tagħna mad-DNS bl-isem ovirt tagħna ovirtengine.example.com, Se nħalli l-installazzjoni ta 'certbot u nginx wara l-kwinti (kif tagħmel dan huwa diġà deskritt fuq Habré).

Twaqqif ta 'verżjoni njinx>=1.15.7

/etc/nginx/conf.d/default.conf

server {
    server_name _;
    listen 80 default_server;
    location /robots.txt { alias /usr/share/nginx/html/robots.txt; }
    location /.well-known {
        root /usr/share/nginx/html;
    }
    location / {
        return 444;
    }
}

server {
    server_name _;
    listen 443 ssl http2 default_server;
    location /robots.txt { alias /usr/share/nginx/html/robots.txt; }
    location /.well-known {
        root /usr/share/nginx/html;
    }

    ssl_certificate /etc/nginx/ssl/$ssl_server_name/fullchain.pem; 
    ssl_certificate_key /etc/nginx/ssl/$ssl_server_name/privkey.pem;

    ssl_protocols TLSv1.2;
    ssl_prefer_server_ciphers on;

    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;

    # позволяем серверу прикреплять OCSP-ответы, тем самым уменьшая время загрузки страниц у пользователей
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security max-age=15768000;

    location / {
        return 444;
    }
}

Imbagħad niksbu ċ-ċertifikat u ċ-ċavetta tagħna:

certbot certonly --nginx -d ovirtengine.example.com

Arkivja ċ-ċertifikat u ċ-ċavetta tagħna:

tar Phczf /tmp/ovirtengine.example.com.tgz /etc/letsencrypt/live/ovirtengine.example.com

Niżżel l-arkivju mill-host tal-bastjun u tella' fil-magna ovirt tagħna:

scp bastion-host:/tmp/ovirtengine.example.com.tgz /tmp/
scp /tmp/ovirtengine.example.com.tgz ovirtengine.example.com:/

Ejja ngħaddu għall-għan

Sussegwentement, aħna nippakkjaw l-arkivju tagħna u noħolqu symlinks biex nissimplifikaw il-fehim tas-sistema tal-lokazzjoni tal-fajls:

tar Pxzf /ovirtengine.example.com.tgz && rm -f ovirtengine.example.com.tgz
mkdir -p /etc/letsencrypt/live
ln -f -s /etc/letsencrypt/live /etc/pki/letsencrypt

Aħna kkonfiguraw il-pki inkorporat f'Ovirt sabiex il-maħżen taċ-ċertifikati java (openjdk) jintuża biex tivverifika ċ-ċertifikati:

cat << EOF > /etc/ovirt-engine/engine.conf.d/99-setup-pki.conf 
ENGINE_HTTPS_PKI_TRUST_STORE="/etc/pki/java/cacerts"
ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD=""
EOF

Aħna nikkonvertiw is-CA minn ejja kriptaġġ f'format der u żidha mal-maħżen taċ-ċertifikati tal-maħżen fiduċjarju ovirt java (dan huwa kontenitur li fih lista ta 'ċertifikati, sistema bħal din tintuża f'java):

openssl x509 -outform der -in /etc/pki/letsencrypt/ovirtengine.example.com/chain.pem -out /tmp/ovirtengine.example.com.chain.der
keytool -import -alias "Let's Encrypt Authority X3" -file /tmp/ovirtengine.example.com.chain.der -keystore /etc/pki/ovirt-engine/.truststore -storepass $(grep '^ENGINE_PKI_TRUST_STORE_PASSWORD' /etc/ovirt-engine/engine.conf.d/10-setup-pki.conf | cut -f 2 -d '"')
rm -f /tmp/ovirtengine.example.com.chain.der

Aħna neditjaw is-settings SSL għal apache, inżidu parametru biex isostni symlinks u neħħi l-parametru għas-CA li bih niċċekkjaw iċ-ċertifikati (b'mod awtomatiku, is-sett tas-sistema ta' CAs fdati se jintuża għall-verifika):

sed -r -i 's|^(SSLCACertificateFile.*)|#1|g' /etc/httpd/conf.d/ssl.conf
sed -r -i '0,/(^#?SSLCACertificateFile.*)/ s//1nOptions FollowSymlinks/' /etc/httpd/conf.d/ssl.conf

Imbagħad, fil-każ, aħna nappoġġjaw il-fajls oriġinali ġġenerati permezz tal-PKI awtomatiku ta 'ovirt u nibdluhom b'links simboliċi b'fajls minn Let's Encrypt:

ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/fullchain.pem /etc/pki/ovirt-engine/apache-chain.pem
services=( 'apache' 'imageio-proxy' 'websocket-proxy' )
for i in "${services[@]}"; do
cp /etc/pki/ovirt-engine/certs/$i.cer{,."$( date +%F )".bak}
cp /etc/pki/ovirt-engine/keys/$i.key.nopass{,."$( date +%F )".bak}
ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/privkey.pem /etc/pki/ovirt-engine/keys/$i.key.nopass
ln -f -s /etc/pki/letsencrypt/ovirtengine.example.com/cert.pem /etc/pki/ovirt-engine/certs/{apache,imageio-proxy,websocket-proxy}.cer
done

Nirrestawraw il-kuntesti SElinux fuq il-fajls u nibdew mill-ġdid is-servizzi tagħna (httpd, ovirt-engine, ovirt-imageio-proxy, ovirt-websocket-proxy):

restorecon -Rv /etc/pki
systemctl restart httpd ovirt-engine ovirt-imageio-proxy ovirt-websocket-proxy

httpd — server tal-web apache
ovirt-engine - interface tal-web ovirt
ovirt-imageio-proxy - daemon għat-tniżżil ta' immaġini tad-disk
ovirt-websocket-proxy - servizz għat-tħaddim tal-console noVNC

Kollha ta 'hawn fuq ġie ttestjat fuq Ovirt verżjoni 4.2.

Tiġdid awtomatiku taċ-ċertifikati fuq ovirt

Skont prattiki tajbin ta 'sigurtà, m'għandu jkun hemm l-ebda konnessjoni bejn l-ospitant tas-swar u l-ovirt, u ċ-ċertifikat jinħareġ biss għal 3 xhur. Hawnhekk tqum kwistjoni kontroversjali dwar kif implimentajt it-tiġdid taċ-ċertifikati.

Għandi playbook ansible li jaħdem fuq foreman kuljum fil-5 am skond skeda. Dan il-playbook imur għand l-ovirt, jiċċekkja l-perjodu ta’ validità taċ-ċertifikat, u jekk fadal inqas minn 5 ijiem qabel l-iskadenza, imur għand il-bastion host u jibda jaġġorna ċ-ċertifikat.

Wara li jaġġorna ċ-ċertifikat, jarkivja l-folder bil-fajls, tniżżlu lill-host Forman u unzips lill-host Ovirt. Wara dan SElinux jirrestawra l-kuntesti fuq il-fajls u jerġa 'jibda s-servizzi tagħna.

Sors: www.habr.com

Ixtri hosting affidabbli għal siti bi protezzjoni DDoS, servers VPS VDS 🔥 Ixtri hosting ta' websajts affidabbli bi protezzjoni DDoS, servers VPS VDS | ProHoster