===== 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!!!