Duke ecur nĂ« rrugĂ«n e pĂ«rmirĂ«simit tĂ« infrastrukturĂ«s, vendosa qĂ« tĂ« zgjidh njĂ« çështje tĂ« lashtĂ« dhe tĂ« mundimshme â tĂ« ofroj mundĂ«sinĂ« pĂ«r kolegĂ«t (zhvilluesit, testuesit, administratorĂ«t, etj.) qĂ« tĂ« menaxhojnĂ« vetĂ« makinat e tyre virtuale nĂ« Ovirt pa ndihmĂ« tĂ« tepĂ«rt. NĂ« Ovirt ka disa komponente qĂ« duhet tĂ« konfigurohen pĂ«r tĂ« zgjidhur kĂ«tĂ« çështje: vetĂ« ndĂ«rfaqja ueb, konsolla noVNC dhe ngarkimi i imazheve tĂ« hard disqeve.
Nuk gjeta butonat "Bëje Super", prandaj po tregoj cilat doreza kam lëvizur për të zgjidhur këtë detyrë. Udhëzimi i plotë më poshtë:

PĂRGJEGJĂSIA:
Para se të filloj, dëshiroj të theksoj se për një arsye të panjohur për mua, domenet e infrastrukturës krijohen në zona private lan, local, etj.
ĂfarĂ« pengon pĂ«rdorimin e domenit tĂ« organizatĂ«s nĂ« zonĂ«n publike nuk e di. PĂ«r shembull, nĂ« vend tĂ« domenit Alex-GLuck-Awesome-Company.local, mund tĂ« pĂ«rdoret qetĂ«sisht domendi pĂ«r faqen e kompanisĂ« Alex-GLuck-Awesome-Company.com.
Nëse keni frikë se nuk do të jeni në gjendje të monitoroni domenet në organizatën tuaj dhe se kjo do të shkaktojë ndonjë problem, për vetëm 100 rubla në vit mund të merrni një domen të veçantë për infrastrukturën aglac.com.
Pse është më e leverdishme të përdorni domene në zonat publike:
1. Ju keni brenda organizatës shërbime që dalin në hapësirën publike: vpn, shkëmbim skedalesh (seafile, nextcloud) dhe të tjera. Të konfigurosh enkriptimin e trafikut në këto shërbime zakonisht duket si një punë e shpejtë, dhe nuk do të mbrohemi nga MitM, sepse është e vështirë (në të vërtetë nuk është).
Ose brenda zyrës keni një adresë shërbimi, ndërsa nga Interneti një tjetër, dhe këto lidhje duhet të mbahen, për të cilat shpenzohen burimet tona të kufizuara të specialistëve. Po ashtu, punonjësit duhen të mbajnë mend adresa të ndryshme, gjë që është e pafavorshme.
2. Ju mund të përdorni qendra certifikimi falas për të enkriptuar shërbimet tuaja të brendshme.
PKI e vetme â Ă«shtĂ« njĂ« shĂ«rbim qĂ« duhet mbĂ«shtetur, 100 lekĂ« nĂ« vit pĂ«r mundĂ«sinĂ« e pĂ«rdorimit tĂ« PKI nga qendrat e certifikimit falas e kompensojnĂ« me tĂ« madhe kohĂ«n e punonjĂ«sve, tĂ« cilĂ«t mund ta shpenzojnĂ« atĂ« nĂ« detyra tĂ« tjera.
3. Duke me pĂ«rdorimin e qendrĂ«s tuaj tĂ« certifikimit, do tĂ« keni probleme me punonjĂ«sit dhe kolegĂ«t tuaj tĂ« largĂ«t qĂ« duan tĂ« punojnĂ« me BYOD (duke sjellĂ« laptopĂ«t, telefonĂ«t, tabletĂ«t e tyre) dhe nuk mund t'i menaxhoni pajisjet e tyre. Ata sjellin Mac, Linux, Android, iOS, Windows â mbĂ«shtetja pĂ«r njĂ« kopsht tĂ« tillĂ« Ă«shtĂ« krejtĂ«sisht e panevojshme.
Sigurisht, ka përjashtime, dhe bankat me ndërmarrje të tjera të rrepta që kanë politika të ngurta sigurie nuk do të jenë ndonjëherë në gjendje të përmirësojnë shërbimet për punonjësit e tyre.
Për ta, ekzistojnë qendra certifikimi me pagesë që për një shumë të caktuar mund të nënshkruajnë certifikatën e tyre CA (gjejni në internet "root signing service").
Ka edhe arsye të tjera pse përdorimi i domenit publik është më i favorshëm (më kryesorja është që ai të përkasë juve), por ky artikull nuk është për këtë.
Thelbësorja, e pra...
KUJDES! NĂ«se shtoni certifikatĂ«n CA nga Letâs Encrypt nĂ« listĂ«n e besuar pĂ«r oVirt, kjo mund tĂ« ndikojĂ« nĂ« sigurinĂ« e sistemeve tuaja!
E mira e parë për të cilën duhet të shkoni është se ekspozimi i ndërfaqeve të ovirt në internet është një praktikë e keqe, pasi nuk ka asnjë kuptim praktik dhe krijon kërcënime të këtij në siguri.
Prandaj është e nevojshme të merrni një certifikat në ndonjë nga bastion-hostet tona, pas së cilës të transferoni certifikatën dhe çelësin në hostin tonë me ovirt-engine.
Shtojmë adresën tonë të jashtme të bastion-hostit në DNS me emrin tonë të ovirt ovirtengine.example.com, instalimin e certbot dhe nginx do ta lë jashtë skenës (si të bëni këtë është përshkruar tashmë në Habr).
Konfigurojmë nginx versioni >=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;
# lejonëzoni serverin të bashkëngjisë OCSP, duke reduktuar kështu kohën e ngarkesës së faqeve për përdoruesit
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
location / {
return 444;
}
}
Pastaj marrim certifikatën dhe çelësin tonë:
certbot certonly --nginx -d ovirtengine.example.com
Arkivoni certifikat dhe çelësin tonë:
tar Phczf /tmp/ovirtengine.example.com.tgz /etc/letsencrypt/live/ovirtengine.example.com
Po shkarkojmë arkivin nga bastion-host dhe e ngarkojmë në ovirt-engine tonë:
scp bastion-host:/tmp/ovirtengine.example.com.tgz /tmp/
scp /tmp/ovirtengine.example.com.tgz ovirtengine.example.com:/
Shkoni te destinacioni
Tani ne do të nxjerrim arkivin tonë dhe do të krijojmë simbole lidhëse për të thjeshtuar kuptimin e sistemit të vendosjes së skedave:
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
Konfigurojmë pki-në e integruar në ovirt që për kontrollin e certifikatave të përdoret depoja e certifikatave java (openjdk):
cat < /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
KonvertojmĂ« CA nga letâs encrypt nĂ« formatin der dhe e shtojmĂ« nĂ« depozitat e certifikatave java trust store tĂ« ovirt-it (kjo Ă«shtĂ« njĂ« kontenier nĂ« tĂ« cilin ndodhet njĂ« listĂ« e certifikatave, njĂ« sistem i tillĂ« pĂ«rdoret nĂ« 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
Modifikojmë cilësimet SSL për apache, shtojmë parametrin për mbështetje të simlinkeve dhe hiqnim parametrin për CA, i cili kontrollon certifikatat (me default do të përdorim grupin sistemik të CA të besuara për verifikim):
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
Pas kĂ«saj, backupojmĂ« pĂ«r çdo rast skedarĂ«t origjinalĂ«, tĂ« gjeneruar pĂ«rmes PKI tĂ« ovirt, automatikisht dhe zĂ«vendĂ«sojmĂ« simlinket me skedarĂ«t nga 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
Rikthejmë kontekstet e SElinux në skedarë dhe rinisnim shërbimet tona (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 web apache
ovirt-engine â ndĂ«rfaqja web e ovirt
ovirt-imageio-proxy â demon pĂ«r ngarkimin e imazheve tĂ« disqeve
ovirt-websocket-proxy â shĂ«rbimi pĂ«r funksionimin e konsolĂ«s noVNC
Të gjitha më lart janë kontrolluar në versionin e oVirt 4.2.
Rifreskimi automatik i certifikatave në oVirt
Sipas praktikave të mira të sigurisë, nuk duhet të ketë lidhje midis hostit të bastionit dhe oVirt, dhe certifikata jepet vetëm për 3 muaj. Këtu lind një moment diskutues në lidhje me mënyrën se si realizohet rifreskimi i certifikatave për mua.
Kam një playbook Ansible që ekzekutohet në Foreman çdo ditë në ora 5 në mëngjes sipas orarit. Ky playbook hyn në oVirt, kontrollon afatin e skadimit të certifikatës dhe nëse mbetet më pak se 5 ditë deri në skadimin, kalon në hostin e bastionit dhe ekzekuton rifreskimin e certifikatës.
Pas rifreskimit të certifikatës, ai arkivon dosjen me skedarët, shkarkon në hostin e Foreman dhe nxjerr në hostin e oVirt. Pas kësaj, rikthen kontekstet e SElinux në skedarë dhe rinstalon shërbimet tona.
Burimi: habr.com
