===== Nastavení VPS =====
=== Instalace ===
\\
**na základech:**
- Debian 8 -> 11
- Apache 2
- PHP5 -> 8.x
\\
nutný základ
aptitude update
aptitude upgrade
\\
na PC vygenerovat a odeslat klíče na server
ssh-keygen -t ed25519 -a 10
ssh-copy-id user@server.cz
\\
v //__/etc/ssh/sshd_config__//:
- vypnout přihlašování heslem
- natavit na jakém portu má server naslouchat ssh spojení
PasswordAuthentication no
Port 12345
service ssh restart
\\
v Debianu bývá dost stará verze PHP, takže přidáme [[https://packages.sury.org/php/|repo Ondřeje Surého]]:\\
aptitude install lsb-release
wget https://packages.sury.org/php/apt.gpg -O /etc/apt/trusted.gpg.d/php-sury.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php-sury.list
aptitude update
doinstalovat:
aptitude install bash-completion
aptitude install apache2
aptitude install mariadb-server mariadb-client
aptitude install php8.x libapache2-mod-php8.x
aptitude install php8-apcu
service apache2 restart
\\
vytvořit soubor //__/var/www/html/info.php__// s obsahem:
\\
a doladit:
apt-cache search php8.x
service apache2 restart
=== Nastavení sajty ===
\\
vytvořit adresář do kterého nasypeme statický obsah, nebo wordpress, dokuwiky, ...
mkdir /var/www/mujserver.cz
\\
vytvořit soubor //__/etc/apache2/sites-available/mujserver.cz__// s obsahem:
ServerName www.mujserver.cz
ServerAlias mujserver.cz
DocumentRoot /var/www/mujserver.cz
\\
a sajtu povolíme a reloudneme Apače
a2ensite mujserver.cz
service apache2 reload
\\
**Nezabezpečené HTTP snad už dneska nikdo nechce, takže pokračujem.**\\
[[https://www.root.cz/clanky/acme-sh-snadna-cesta-k-certifikatu-od-let-s-encrypt/|Podrobněji na Rootu]]\\
[[https://github.com/acmesh-official/acme.sh|Cesta ke zdroji]]\\
\\
Napřed vytvoříme přesměrování pro adresář //__.well-known__//, který bude sloužit pro ověřování při generování certifikátů, ale v dokument rootu ho nechceme.\\
Doplníme tedy do ///etc/apache2/sites-available/mujserver.cz.conf//:
Alias "/.well-known" "/srv/letsencrypt/webroot/.well-known"
AllowOverride None
Require all granted
Satisfy Any
\\
Pak založíme uživatele, pod kterým poběží získávání certifikátů
useradd -m letsencrypt
a vytvoříme adresáře s patřičným oprávněním
mkdir /srv/cert
mkdir /srv/letsencrypt/webroot -p
chown -R letsencrypt:letsencrypt /srv/cert/
chown -R letsencrypt:letsencrypt /srv/letsencrypt/
\\
Poté přidáme oprávnění uživateli //letsencrypt// k reloadu apače.
visudo
a doplníme na:
# User privilege specification
root ALL=(ALL:ALL) ALL
letsencrypt ALL = NOPASSWD: /etc/init.d/apache2 reload
\\
Následně přejdeme k instalaci klienta:
cd /home/letsencrypt
su letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install --certhome /srv/cert
instalátor zapíše i plánovanou událost do crontabu (pod userem //letsencrypt//)\\
a poté si vygenerujeme certifikáty
.acme.sh/acme.sh --issue -d mujserver.cz -d www.mujserver.cz -d xyz.mujserver.cz -w /srv/letsencrypt/webroot/ --reloadcmd "sudo /etc/init.d/apache2 reload"
\\
Nakonec, už jako root, upravíme soubor //__/etc/apache2/sites-available/mujserver.cz__//, aby apač věděl, kde má certifikáty:
ServerName www.mujserver.cz
ServerAlias mujserver.cz
DocumentRoot /var/www/mujserver.cz
ServerAdmin ferda@example.cz
SSLEngine on
SSLCertificateFile /srv/cert/mujserver.cz/mujserver.cz.cer
SSLCertificateKeyFile /srv/cert/mujserver.cz/mujserver.cz.key
SSLCertificateChainFile /srv/cert/mujserver.cz/fullchain.cer
\\
Pro apač 2.4:
ServerName www.mujserver.cz
ServerAlias mujserver.cz
DocumentRoot /var/www/mujserver.cz
ServerAdmin ferda@example.cz
SSLEngine on
SSLCertificateFile /srv/cert/mujserver.cz/fullchain.cer
SSLCertificateKeyFile /srv/cert/mujserver.cz/mujserver.cz.key
\\
v //__/etc/apache2/mods-available/ssl.conf__// odkomentovat:
SSLHonorCipherOrder on
a doladíme
a2enmod ssl
service apache2 restart
\\
**další zabezpečení**\\
v souboru //__/etc/apache2/conf-available/security.conf__// odkomentovat:
Header set X-Frame-Options: "sameorigin"
Header set X-Content-Type-Options: "nosniff"
a doplnit:
Header always set X-Xss-Protection "1; mode=block"
a nakonec
a2enmod headers
service apache2 restart
php
\\
**HSTS**\\
do konfigurace virtualhosta dolnit:
...
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
...
!!!Pro začátek nastavit menší max-age (minuty, hodiny), pak prodlužovat, aby si to člověk na dva roky nezaříznul!!!