Кантип достосо болот Ovirt жана Let's Encrypt

Инфраструктураны өркүндөтүү жолунда жүрүп, мен эски жана азаптуу суроону бүтүрүүнү чечтим - керексиз ишараттарсыз, кесиптештерге (иштеп чыгуучулар, тестерлер, администраторлор ж. Ovirtте менин көйгөйүмдү чечүү үчүн конфигурацияланышы керек болгон бир нече компоненттер бар: веб-интерфейстин өзү, noVNC консолу жана дисктин сүрөттөрүн жүктөө.

Мен "Жаман кылуу" баскычын тапкан жокмун, андыктан бул көйгөйдү чечүү үчүн кайсы баскычтарды бурганымды көрсөтүп жатам. Толук көрсөтмөлөр төмөнкү кесип:

Кантип достосо болот Ovirt жана Let's Encrypt

ТАРТУУ:

Баштоодон мурун, мага белгисиз себептерден улам инфраструктуралык домендер lan, жергиликтүү ж.б.

Уюмдун доменин коомдук зонада колдонууга эмне тоскоол болгонун билбейм. Мисалы, Alex-GLuck-Awesome-Company.local доменинин ордуна, сиз компаниянын Alex-GLuck-Awesome-Company.com веб-сайты үчүн доменди коопсуз колдоно аласыз.

Эгер сиз уюмуңуздагы домендерди көзөмөлдөй албай калам деп корксоңуз жана бул бир нерсени бузуп салат, анда жылына жөнөкөй 100 рублга aglac.com инфраструктурасы үчүн өзүнчө домен сатып алсаңыз болот.

Эмне үчүн коомдук зоналарда домендерди колдонуу пайдалуураак:

1. Сиздин уюмуңузда жалпыга жеткиликтүү кызматтар бар: vpn, файл бөлүшүү (seafile, nextcloud) жана башкалар. Мындай кызматтарда трафикти шифрлөөнү орнотуу, адатта, бир аз кыйынчылыкты талап кылат жана биз MitM чабуулдарынан коргонбойбуз, анткени бул кыйын (чындыгында андай эмес).

Же сизде кеңсенин ичинде бир кызмат дареги бар, экинчиси Интернеттен жана бул байланыштар сакталышы керек, бул биздин чектелген адистик ресурстарыбызды текке кетирет. Ооба, кызматкерлер ар кандай даректерди эстеп калуусу керек, бул ыңгайсыз.

2. Сиз ички кызматтарыңызды шифрлөө үчүн акысыз тастыктама органдарын колдоно аласыз.

Сиздин жеке PKI - бул колдоого алынышы керек болгон кызмат; PKIди акысыз сертификаттоо органдарынан колдонуу мүмкүнчүлүгү үчүн жылына 100 рубль, аны башка иштерге жумшай турган кызматкерлердин убактысы үчүн төлөнөт.

3. Өзүңүздүн сертификаттык ыйгарымыңызды колдонгондо, сиз BYOD менен иштөөнү каалаган алыскы кызматкерлериңиздин жана кесиптештериңиздин дөңгөлөктөрүнө спик салып коёсуз (өз ноутбуктарын, телефондорун, планшеттерин алып келиңиз) жана сиз алардын түзмөктөрүн башкара албайсыз. Алар Mac, Linux, Android, iOS, Windows алып келишет – мындай зоопаркты колдоонун эч кандай пайдасы жок.

Бардык нерседе, албетте, өзгөчөлүктөр бар жана коопсуздук саясатын орноткон башка катаал ишканалары бар банктар эч качан өз кызматкерлери үчүн кызматты жакшырта албайт.

Алар үчүн CA сертификатына белгилүү бир суммага кол коё турган акы төлөнүүчү сертификаттоо органдары бар (Google "тамырга кол коюу кызматы").

Коомдук доменди колдонуу пайдалуураак болушунун башка себептери бар (эң негизгиси ал сизге таандык), бирок бул макала ал жөнүндө эмес.

Кеп...

КӨҢҮЛ БЕРҮҮ! Эгерде сиз ovirtтин ишенимдүү тизмесине Let's Encrypt CA сертификатын кошсоңуз, ал системаларыңыздын коопсуздугуна таасирин тийгизиши мүмкүн!

Сиз көңүл бурушуңуз керек болгон биринчи нерсе - Ovirt интерфейстерин Интернетке көрсөтүү жаман практика, анткени Бул практикалык мааниге ээ эмес жана кошумча коопсуздук коркунучтарын жаратат.

Ошондуктан, сиз биздин бастион хостторубуздун бирине сертификат алып, андан кийин сертификатты жана ачкычты ovirt-engine менен хостубузга өткөрүп беришиңиз керек.

Биздин бастиондун тышкы дарегин ovirt аты менен dns кошобуз ovirtengine.example.com, Мен certbot жана nginx орнотууну көшөгө артына калтырам (бул кантип кылуу керектиги буга чейин Habréде сүрөттөлгөн).

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;
    }
}

Андан кийин биз сертификатыбызды жана ачкычыбызды алабыз:

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

Биздин сертификат жана ачкычты архивдөө:

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

Архивди bastion хостунан жүктөп алып, аны биздин ovirt кыймылдаткычыбызга жүктөңүз:

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

Максатка карай өтөлү

Андан кийин, биз архивибизди ачып, файл жайгашкан системаны түшүнүүнү жөнөкөйлөтүү үчүн символдук шилтемелерди түзөбүз:

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

Биз Ovirt ичинде орнотулган pkiди конфигурациялайбыз, ошентип java сертификаттар дүкөнү (openjdk) сертификаттарды текшерүү үчүн колдонулат:

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

Биз CAны келгиле шифрлөөдөн der форматына айландырабыз жана аны ovirt java ишеним дүкөнүнүн сертификаттар дүкөнүнө кошобуз (бул сертификаттардын тизмесин камтыган контейнер, мындай система 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

Биз apache үчүн SSL жөндөөлөрүн түзөтөбүз, символдук шилтемелерди колдоо үчүн параметрди кошобуз жана сертификаттарды текшерүү үчүн CA параметрин алып салабыз (демейки боюнча, текшерүү үчүн ишенимдүү CA тутумунун топтому колдонулат):

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

Андан кийин, кандайдыр бир учурда, биз ovirt автоматтык PKI аркылуу түзүлгөн түпнуска файлдардын камдык көчүрмөсүн сактап, аларды 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

Биз файлдарда SElinux контексттерин калыбына келтиребиз жана кызматтарыбызды кайра иштетебиз (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 — веб-сервер Apache
ovirt-engine - ovirt веб интерфейси
ovirt-imageio-proxy - диск сүрөттөрүн жүктөө үчүн демон
ovirt-websocket-proxy - noVNC консолун иштетүү үчүн кызмат

Жогоруда айтылгандардын баары Ovirt 4.2 версиясында сыналган.

ovirt боюнча күбөлүктөрдү автоматтык узартуу

Жакшы коопсуздук практикасына ылайык, бастиондун ээси менен овирттин ортосунда эч кандай байланыш болбошу керек жана сертификат 3 айга гана берилет. Бул жерде мен күбөлүктөрдү узартууну кантип ишке ашырдым деген талаштуу маселе туулат.

Менде график боюнча күн сайын эртең мененки саат 5те бригадир иштеген акылдуу оюн китебим бар. Бул оюн китепчеси ovirtке барып, сертификаттын жарактуу мөөнөтүн текшерет жана мөөнөтү бүтөрүнө 5 күндөн аз убакыт калса, ал бастиондун хостуна барып, сертификатты жаңылай баштайт.

Сертификат жаңыртылгандан кийин, ал файлдары бар папканы архивдейт, аны Forman хостуна жүктөйт жана аны Ovirt хостуна ачат. Андан кийин SElinux файлдардагы контексттерди калыбына келтирип, кызматтарыбызды кайра иштетет.

Source: www.habr.com

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster