Sammudes infrastruktuuri parandamise teel, otsustasin lahendada vana ja piinava kĂŒsimuse â vĂ”imaldada kolleegidel (arendajad, ŃĐ”ŃŃĐžŃĐŸĐČŃĐžĐșĐž, administraatorid jne) iseseisvalt hallata oma virtuaalmasinaid ovirt'is. Ovirt'is on mitu komponenti, mida tuleb seadistada, et seda kĂŒsimust lahendada: veebiliides, noVNC konsool ja ketaste piltide laadimine.
Nuppu "Teha vinge" ma ei leidnud, seega nĂ€itan, milliseid nuppusid ma keerasin, et selle ĂŒlesande lahendada. TĂ€ielik juhend on allpool:

KĂTTESAAMINE:
Enne alustamist tahaksin juhtida tÀhelepanu sellele, et mingil mulle tundmatul pÔhjusel luuakse infrastruktuuri domeenid privaatsetes tsoonides nagu lan, local jne.
Mis takistab organisatsiooni domeeni kasutamist avalikus tsoonis, ei ole mulle teada. NÀiteks, selle asemel, et kasutada domeeni Alex-GLuck-Awesome-Company.local, vÔib julgelt kasutada domeeni ettevÔtte veebisaidi jaoks Alex-GLuck-Awesome-Company.com.
Kui te kardate, et ei suuda jÀlgida oma organisatsiooni domeene ja see vÔib midagi rikkuda, siis tagasihoidlike 100 rubla eest aastas vÔite vÔtta eraldi domeeni infrastruktuuri jaoks aglac.com.
Miks on kasulikum kasutada domeene avalikes tsoonides:
1. Teie organisatsiooni sees tekivad teenused, mis vĂ€ljuvad avalikku ruumi: VPN, failivahetus (seafile, nextcloud) ja teised. Selliste teenuste liikluse krĂŒpteerimise seadistamine nĂ€eb tavaliselt vĂ€lja nagu kiire ja kerge, ja Meie ei kaitse end MitM-i eest, sest see on keeruline (tegelikkuses mitte).
VĂ”i on teie kontoris teenuse aadress ĂŒks, kuid internetist teine, ja neid ĂŒhendusi tuleb sĂ€ilitada, millele kulutatakse meie piiratud spetsialistide ressursse. Samuti peavad töötajad meeles pidama erinevaid aadresse, mis on ebamugav.
2. Te saate kasutada tasuta sertifitseerimiskeskuste teenuseid oma sisemiste teenuste krĂŒpteerimiseks.
Omandatud PKI â see on teenus, mida tuleb toetada, 100 rubla aastas tasuta sertifitseerimiskeskuste PKI kasutamise vĂ”imaluse eest katab kenasti töötajate aja, mida nad vĂ”iksid kasutada muude ĂŒlesannete tĂ€itmiseks.
3. Kui kasutate oma sertifitseerimiskeskust, segate oma eemal olevate töötajate ja kolleegide tööd, kes soovivad kasutada BYOD (toovad oma sĂŒlearvutid, telefonid, tahvelarvutid) ja te ei saa nende seadmeid hallata. Nad toovad Macid, Linuxid, Androidid, iOS-i, Windowsi â sellise loomaaia toetamine ei oma mingit mĂ”tet.
Muidugi on kĂ”ikjal erandeid, ja pangad koos teiste karmide ettevĂ”tetega, kellel on pĂŒsinud turvapoliitikad, ei suuda kunagi oma teenuseid oma töötajatele parandada.
Nende jaoks on tasulised sertifitseerimiskeskused, mis teatud tasu eest saavad nende CA sertifikaadi allkirjastada (otsige 'root signing service').
On ka teisi pÔhjuseid, miks avaliku domeeni kasutamine on kasulikum (peamine on, et see kuuluks teile), kuid artikkel ei kÀsitle seda.
Oluline on asja tuumâŠ
HOIATUSE! Kui lisate Letâs Encrypt CA sertifikaadi ovirt'ile usaldusvÀÀrsete hulka, vĂ”ib see mĂ”jutada teie sĂŒsteemide turvalisust!
Esimene asi, millele tĂ€helepanu pöörata â ovirt'i liideseid internetti avaldada on halb praktika, kuna selles pole mingit praktilist mĂ”tet ja see loob tĂ€iendavaid turvaohtusid.
Seega on vaja certifikaati saada mÔnel meie bastion-hostil, seejÀrel kandke sertifikaat ja vÔti meie ovirt-engine hostile.
Lisame oma bastion-hosti vÀlise aadressi DNS-isse koos meie ovirt'i nimega ovirtengine.example.com, certboti ja nginx'i installatsioon jÀÀb minu poolt mainimata (kuidas seda teha on juba Habr's kajastatud).
Seame ĂŒles Nginx versiooniga >=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;
}
}
SeejÀrel saame meie sertifikaadi ja vÔtme:
certbot certonly --nginx -d ovirtengine.example.com
Arhiivime meie sertifikaadi ja vÔtme:
tar Phczf /tmp/ovirtengine.example.com.tgz /etc/letsencrypt/live/ovirtengine.example.com
Laadime bastioni hostilt arhiivi ja saadame selle meie ovirt-teenusele:
scp bastion-host:/tmp/ovirtengine.example.com.tgz /tmp/
scp /tmp/ovirtengine.example.com.tgz ovirtengine.example.com:/
Liigume sihtkohta
Edasi lahti pakime meie arhiivi ja loome sĂŒmboolseid linke, et sĂŒsteemi failide asukoht oleks arusaadavam:
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
Seadistame ovirtis sisseehitatud pki, et sertifikaatide kontrollimiseks kasutataks java (openjdk) sertifikaatide hoidlat:
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
Konvertime letâs encrypti CA der-formaati ja lisame selle ovirt java trust store'i sertifikaatide hoidjasse (see on konteiner, kus hoitakse sertifikaatide nimekirja, mida kasutatakse javis):
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
Muudame Apache SSL-i seadeid, lisame sĂŒmboollinkide toe ning eemaldame CA parameetri, millega sertifikaate kontrollitakse (vaikimisi kasutatakse sĂŒsteemi usaldusvÀÀrsete CA-de komplekti kontrollimiseks):
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
SeejĂ€rel varundame igaks juhuks originaalfailid, mis on genereeritud PKI ovirt'i automaatika teel, ja asendame sĂŒmboollinkidega Let's Encrypti failid:
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
Taastame failide SElinux kontekstid ja taaskÀivitame meie teenused (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 â veebiserver apache
ovirt-engine â ovirti veebi liides
ovirt-imageio-proxy â ketaste piltide laadimise daemoon
ovirt-websocket-proxy â teenus noVNC konsooli jaoks
KÔik eelpool loetletud on testitud ovirti versioonil 4.2.
Ovirti sertifikaatide automaatne uuendamine
Hea turvapraktika kohaselt ei tohiks bastioni ja ovirti vahel olla ĂŒhendust ning sertifikaat vĂ€ljastatakse vaid kolmeks kuuks. Siinkohal tekib vaieldav kĂŒsimus, kuidas sertifikaatide uuendamine on mul korraldatud.
Mul on ansible'i mÀnguplaan, mis kÀivitatakse igapÀevaselt Foremanis kell 5 hommikul ajakava jÀrgi. See mÀnguplaan siseneb ovirti, kontrollib sertifikaadi kehtivusaega ja kui kehtivuse lÔpuni on jÀÀnud vÀhem kui 5 pÀeva, lÀheb bastioni ja kÀivitab sertifikaadi uuendamise.
PÀrast sertifikaadi uuendamist arhiveerib ta failide kausta, laadib Foremani hostisse ja dekomprimeerib selle ovirti hostis. SeejÀrel taastab ta failide SElinux kontekstid ja taaskÀivitame meie teenused.
Allikas: habr.com
