Duke nĂ« rrugĂ«n e pĂ«rmirĂ«simit tĂ« infrastrukturĂ«s, vendosa tĂ« zgjidh njĂ« çështje tĂ« vjetĂ«r dhe tĂ« mundimshme â tĂ« ofroj pa ndĂ«rlikime mundĂ«sinĂ« pĂ«r kolegĂ«t (programuesit, testuesit, administratorĂ«t, etj.) pĂ«r tĂ« menaxhuar vetĂ« virtualet e tyre nĂ« ovirt. NĂ« ovirt ka disa komponentĂ« qĂ« duhet tĂ« konfigurohen pĂ«r tĂ« zgjidhur kĂ«tĂ« problem: ndĂ«rfaqja e vetme web, console noVNC dhe ngarkimi i imazheve tĂ« disqeve.
Nuk gjetĂ«m butonin âBĂ«je TĂ« MrekullueshĂ«mâ, prandaj po tregoj se cilat çizme kam ngjitur pĂ«r tĂ« zgjidhur kĂ«tĂ« detyrĂ«. UdhĂ«zimi i plotĂ« Ă«shtĂ« mĂ« poshtĂ«:

DISKLAMIM:
Para se të filloni, dëshiroj të vë në dukje se, për një arsye të panjohur për mua, domenet e infrastrukturës krijohen në zonat private lan, local, dhe kështu me radhë.
ĂfarĂ« po e 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Ă«rdorim pa problem domenin pĂ«r faqen e kompanisĂ« Alex-GLuck-Awesome-Company.com.
Nëse keni frikë se nuk do të mund të mbani nën kontroll 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ërdoren domenet në zonat publike:
1. Brenda organizatës tuaj shfaqen shërbime që dalin në hapësirën publike: vpn, ndarja e skedarëve (seafile, nextcloud) dhe të tjera. Konfigurimi i enkriptimit të trafikut në këto shërbime zakonisht duket si një punë përpjekje, dhe për t'u mbrojtur nga MitM nuk do të bëjmë asgjë, sepse është e vështirë (në të vërtetë nuk është).
Ose brenda zyrës keni një adresë shërbimi dhe nga interneti një tjetër, dhe këto lidhje duhet mbajtur, për çka shpenzohen resurset tona të kufizuara të specialistëve. Gjithashtu, punonjësve u duhet të mbajnë mend adresa të ndryshme, e cila është e parehatshme.
2. Mund të përdorni qendra të certifikimit falas për enkriptimin e shërbimeve tuaja të brendshme.
PKI i tij â Ă«shtĂ« njĂ« shĂ«rbim qĂ« duhet mbajtur, 100 rubla nĂ« vit pĂ«r mundĂ«sinĂ« e pĂ«rdorimit tĂ« PKI nga qendrat e certifikimit falas e tejkalojnĂ« me tĂ« madhe kohĂ«n e punonjĂ«sve, tĂ« cilĂ«t mund ta kalojnĂ« atĂ« nĂ« detyra tĂ« tjera.
3. Duke pĂ«rdorimi i njĂ« qendre tĂ« certifikimit tĂ« vet, do tĂ« pengoni punonjĂ«sit tuaj tĂ« largĂ«t dhe kolegĂ«t, tĂ« cilĂ«t dĂ«shirojnĂ« tĂ« punojnĂ« me BYOD (sjellin laptopĂ«t, telefonat, tabletĂ«t e tyre), dhe nuk mund tĂ« menaxhoni pajisjet e tyre. Ata sjellin Mac, Linux, Android, iOS, Windows â nuk ka asnjĂ« kuptim tĂ« mbĂ«shtesni njĂ« kaos tĂ« tillĂ«.
Natyrisht, në çdo gjë ka përjashtime, dhe bankat me ndërmarrje të tjera të rrepta, të cilat kanë politika të konsoliduara sigurie, nuk do të jenë kurrë në gjendje të përmirësojnë shërbimin për punonjësit e tyre.
Për ta, ekzistojnë qendra certifikimi me pagesë, të cilat për një shumë të caktuar mund të nënshkruajnë certifikatën e tyre CA (kërkoni në Google "root signing service").
Ka edhe arsye të tjera pse përdorimi i domenit publik është më i leverdishëm (thelbësore është që ai t'i takojë juve), por ky artikull nuk është për këtë.
Pika, pra, janĂ«âŠ
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 para qĂ« duhet tĂ« vini re â ekspozimi i ndĂ«rfaqeve tĂ« ovirt nĂ« internet Ă«shtĂ« njĂ« praktikĂ« e keqe, pasi nuk ka asnjĂ« kuptim praktik, dhe krijon kĂ«rcĂ«nime shtesĂ« pĂ«r sigurinĂ«.
Prandaj, duhet të merrni një certifikatë në ndonjë nga bastionet tona, pas së cilës të transferoni certifikatën dhe çelësin në hostin tonë me ovirt-engine.
Shtojmë adresën e jashtme të bastionit tonë në DNS me emrin tonë të ovirt. ovirtengine.example.com, instalimin e certbot dhe nginx do ta lë jashtë kamerës (si të bëhet kjo është përshkruar tashmë në Habra).
Konfiguroni 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;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
location / {
return 444;
}
}
Pastaj marrim dëshminë tonë dhe çelësin:
certbot certonly --nginx -d ovirtengine.example.com
Arkivojmë dëshminë tonë dhe çelësin:
tar Phczf /tmp/ovirtengine.example.com.tgz /etc/letsencrypt/live/ovirtengine.example.com
Shkarkojmë arkivin nga host-i bastion, e ngremë në ovit-engine tonë:
scp bastion-host:/tmp/ovirtengine.example.com.tgz /tmp/
scp /tmp/ovirtengine.example.com.tgz ovirtengine.example.com:/
Kalojmë te objekti
MĂ« pas, çâdo tĂ« bĂ«jmĂ« Ă«shtĂ« tĂ« shpaketojmĂ« arkivin tonĂ« dhe tĂ« krijojmĂ« lidhje simbolike pĂ«r tĂ« thjeshtuar sistemin e 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, për t'u përdorur si depo për verifikimin e dëshmive:
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
ShndĂ«rrojmĂ« CA nga letâs encrypt nĂ« formatin der dhe e shtojmĂ« nĂ« depojava e besueshme tĂ« Java trust store-it tĂ« ovirtit (kjo Ă«shtĂ« njĂ« enĂ«, ku ndodhen njĂ« sĂ«rĂ« dĂ«shmish, 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
Redaktoni cilësimet SSL për apache, shtoni një parameter për të mbështetur simbolikat dhe hiqni parametrin për CA, i cili kontrollon certificatat (në mënyrë default do të përdorë grupin e trust të sistemit 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
Pasi tĂ« kemi bĂ«rĂ« njĂ« backup pĂ«r raste tĂ« papritura tĂ« skedarĂ«ve origjinalĂ«, tĂ« generuar pĂ«rmes PKI tĂ« ovirt, automatikisht dhe zĂ«vendĂ«sojmĂ« simbolikat 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
Rikthemi kontekstet SElinux në skedarë dhe rindezim shërbimeve 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 tĂ« ovirt
ovirt-imageio-proxy â demon pĂ«r ngarkimin e imazheve tĂ« diskĂ«ve
ovirt-websocket-proxy â shĂ«rbimi pĂ«r funksionimin e konsolĂ«s noVNC
Ădo gjĂ« e lartpĂ«rmendur Ă«shtĂ« verifikuar nĂ« versionin e ovirt 4.2.
Automatizimi i rinovimit të certifikatave në ovirt
Sipas praktikave të mira të sigurisë, nuk duhet të ketë lidhje ndërmjet hostit bastion dhe ovirtit, dhe certifikata jepet për vetëm 3 muaj. Këtu lind një pikë diskutimi në lidhje me mënyrën se si është realizuar rinovimi i certifikatave në sistemin tim.
Kam një playbook ansible, i cili ekzekutohet në foreman çdo ditë në orën 5 të mëngjesit sipas një grafiku. Ky playbook hyn në ovirt, kontrollon afatin e skadimit të certifikatës dhe nëse ka mbetur më pak se 5 ditë deri në skadim, shkon në hostin bastion dhe nis rinovimin e certifikatës.
Pas rinovimit të certifikatës, arkivon dosjen me skedarët, shkarkon në hostin e formanit dhe ekstrabon në hostin e ovirtit. Pas kësaj, rikthen kontekstet SElinux në skedarë dhe rindezim shërbimeve tona.
Burimi: habr.com
