SRV_PROXY

Co je to reverse PROXY?

Reverzní proxy server je principem velmi podobný proxy serveru. Sdružuje (resp. rozděluje) požadavky klientů, kteří jsou k němu připojeni. V praxi se nejčastěji využívá s několika připojenými servery. Všechna připojení z internetu směřující na některý ze těchto serverů jsou směrována přes tento reverzní proxy server, který buďto požadavek zpracuje sám nebo ho předá dál serverům.

Převzato z: https://cs.wikipedia.org/wiki/Reverzní_proxy

Odkazy ke studiu: 

http://kselax.ru/en/set-up-apache2-nodejs-reverse-proxy-server/

https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension

Návod na instalaci

1) Založíme nový LXC container

dle tohoto návodu: https://intranet.rs-kovarik.cz/srvtemplate Místo SRV_TEMPLATE zadat jméno SRV_PROXY

2) Připojíme se k serveru přes terminál

ssh připojení k Turiisu a pak přes lxc-attach

Příkazy:

lxc-attach SRV_PROXY

3) Instalace apache2

Příkazy:

apt update

apt install apache2

3) Povolení služby apache2

Příkazy:

systemctl enable apache2

4) Port forwarding

Nastavíme si prostup z venku 80 a 443 tcp na tento server na proty 80 a 443.

Je jedno jestli napřímo z omnie, nebo 80 napřímo a 443 přes SRV_SSLH kde budeme pměrovat SSL na SRV_PROXY

Toto není věc, která by se dala zdokumentovat copy&paste

5) Nastavení DNS záznamů u správce donény

Nastavíme A záznamy na domény, které chceme směřovat na náš server. 

Ověříme, že po zadání naší domény se dostaneme po http na default stránku apache2 serveru.

6) SSL certifikáty od lets encrypt

          Řídíme se dle návodu: 

          (pozor snapd nefunguje na turris LXC) https://certbot.eff.org/lets-encrypt/ubuntufocal-apache

Příkazy:

apt update

apt install certbot

                              apt install python3-certbot-apache

Zastaralý postup instalace certboot -  již nefunkční:

Detailní manuál zde: https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04

Příkazy:

apt-get install software-properties-common

add-apt-repository ppa:certbot/certbot

apt update

apt install python-certbot-apache

Dále by mělo být stejné

Konfigurace apache serveru:

Smažeme vše ze složek /etc/apache2/sites-available/* /etc/apache2/sites-enabled/*

Vytvoříme nový soubor dle naší domény.

nano /etc/apache2/sites-available/your_domain.conf

Do souboru vložit následující konfiguraci:

<VirtualHost *:80>
        ServerName your_domain.top_level_domain

        ServerAdmin your_email
        DocumentRoot /var/www/html

       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Povolíme naší novou konfiguraci

a2ensite your_domain

service apache2 restart

service apache2 status (mělo by být active)

Pokud máme víve domén (i třetího řádu) tak opakujeme pro jednotlivé domény ten samý postup od bodu Vytvoříme nový soubor dle naší domény)

Instalace certifikátu:

certbot --apache -d your_domain

(pokud máme více domén, tak přidáváme jen -d domain1.test -d domain2.test) 

Měl by se nás zeptat zde chceme přesměrovávat. Dáme že jo:

Následný výstup pokud vše proběhne tak asi takto:

Automatická obnova:

Vyzkoušíme následující příkaz:

certbot renew --dry-run

Měl by proběhnout bez chyby.

 

Přidáme úlohu do cronu:

crontab -e

Vložíme následující příkaz, uložíme a zavřeme

#renew SSL certificates

0 0 1 * * sudo certbot renew --dry-run
 

ctrl+x uložit a enter

7) Konfigurace proxy apache serveru 

Zde částečně vycházím z https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension a částečně z vlastních poznatků a zkušeností.

Část která nejde dělat přesně copy&paste, ale je nutné si uvědomit případné souvislosti dle toho jaký systém zpřístupňujeme přes tuto proxy! 

Příkazy na povolení potřebných modulů pokud nějaký nejde, je nutné najít na google doinstalovat a upravit návod: 

a2enmod ssl

a2enmod proxy

a2enmod proxy_http

a2enmod http2

a2enmod proxy_http2

a2enmod proxy_connect

a2enmod proxy_wstunnel

a2enmod lbmethod_byrequests

a2enmod proxy_html

a2enmod rewrite

Restart apache:

service apache2 restart

service apache2 status

Samotné nastavení reverse proxy se provádí v konfiguraci ssl verzí stránek v apache. Například soubor /etc/apache2/sites-available/your-doamin.le-ssl.conf Zde už musíme vědět čeho přesně chceme dosáhnout uvedu zde pouze několik příkladů, jak může konfigurace vypadat:

Příklad pro VOUCH proxy. 

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName proxy.rs-kovarik.cz

        ServerAdmin info@rs-kovarik.cz
        DocumentRoot /var/www/html

        SSLProxyEngine On
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyHTMLInterp On

        ProxyHTMLExtended On
        ProxyHTMLURLMap (.*)192.168.1.32(.*) $1proxy.rs-kovarik.cz$2 [Rin]

        #       SSLProxyCheckPeerCN on
        #       SSLProxyCheckPeerExpire on

        Alias /.well-known/acme-challenge/ "/var/www/html/.well-known/acme-challenge/"
        ProxyPass /.well-known/acme-challenge !

        ProxyPass /portainer/api/websocket/ wss://192.168.1.32:443/portainer/api/websocket/
        ProxyPassReverse /portainer/api/websocket/ wss://192.168.1.32:443/portainer/api/websocket/

        ProxyPass /dmz/json ws://192.168.1.153:83/dmz/json
        ProxyPassReverse /dmz/json ws://192.168.1.153:83/json

        ProxyPass / https://192.168.1.32:443/
        ProxyPassReverse / https://192.168.1.32:443/

        RewriteEngine on

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile /etc/letsencrypt/live/proxy.rs-kovarik.cz/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/proxy.rs-kovarik.cz/privkey.pem
</VirtualHost>
</IfModule>

Příklad pro kerberos.io a VOUCH proxy:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName cam1.proxy.rs-kovarik.cz

        ServerAdmin info@rs-kovarik.cz
        DocumentRoot /var/www/html


        SSLProxyEngine On
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyHTMLInterp On

        ProxyHTMLExtended On
        ProxyHTMLURLMap (.*)192.168.1.32(.*) https://cam1.proxy.rs-kovarik.cz$2 [Rin]

        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerExpire off

        Alias /.well-known/acme-challenge/ "/var/www/html/.well-known/acme-challenge/"
        ProxyPass /.well-known/acme-challenge !

        ProxyPass / https://192.168.1.32:443/
        ProxyPassReverse / https://192.168.1.32:443/

        RewriteEngine on

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLCertificateFile /etc/letsencrypt/live/proxy.rs-kovarik.cz/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/proxy.rs-kovarik.cz/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Příklad pro VOUCH proxy:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName vouch.rs-kovarik.cz

        ServerAdmin info@rs-kovarik.cz
        DocumentRoot /var/www/html

        Alias /.well-known/acme-challenge/ "/var/www/html/.well-known/acme-challenge/"
        ProxyPass /.well-known/acme-challenge !

        ProxyPreserveHost on
        ProxyPass / http://192.168.1.34:9090/
        ProxyPassReverse / http://192.168.1.34:9090/

        SSLCertificateFile /etc/letsencrypt/live/proxy.rs-kovarik.cz/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/proxy.rs-kovarik.cz/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Příklad pro nagios:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName nagios.rs-kovarik.cz

        ServerAdmin info@rs-kovarik.cz
        DocumentRoot /var/www/html

        ProxyPreserveHost on

        Alias /.well-known/acme-challenge/ "/var/www/html/.well-known/acme-challenge/"
        ProxyPass /.well-known/acme-challenge !

        ProxyPass / http://192.168.1.153:81/
        ProxyPassReverse / http://192.168.1.153:81/

        SSLCertificateFile /etc/letsencrypt/live/proxy.rs-kovarik.cz/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/proxy.rs-kovarik.cz/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Příklad pro gps:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName gps.rs-kovarik.cz

        ServerAdmin info@rs-kovarik.cz
        DocumentRoot /var/www/html

        ProxyRequests off

        Alias /.well-known/acme-challenge/ "/var/www/html/.well-known/acme-challenge/"
        ProxyPass /.well-known/acme-challenge !

        ProxyPass /api/socket ws://192.168.1.133:9090/api/socket
        ProxyPassReverse /api/socket ws://192.168.1.133:9090/api/socket

        ProxyPreserveHost on
        ProxyPass / http://192.168.1.133:9090/
        ProxyPassReverse / http://192.168.1.133:9090/

        SSLCertificateFile /etc/letsencrypt/live/proxy.rs-kovarik.cz/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/proxy.rs-kovarik.cz/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

 

 


VYHLEDÁVÁNÍ

Zanechte nám svoje číslo
Rádi se Vám ozveme

NEZÁVAZNÁ POPTÁVKA