Afficher/cacher Sommaire
KVM Debian Stretch serveur
Package: 4 GB Mémoire, 2 CPU, 30 GB SSD, 100 Mbps
Selected Location: Paris
Debian Stretch 64
Livraison : vps-26381 93.115.96.97
- Domaine : xoyize.xyz
- IPv4 du serveur : 93.115.96.97
- IPv6 du serveur : 2a03:75c0:35:670d::1
- Reverse DNS : xoyize.xyz
- Certificats : Let’s Encrypt
Première connexion SSH
Via SSH
ssh root@93.115.96.97
Màj
apt update && apt upgrade
Nom de domaine xoyize.xyz et host
hostnamectl set-hostname "xoyize.xyz"
Installer des outils
apt install rsync curl tree tmux jq figlet git -y
Locales
Locales : fr_FR.UTF-8
dpkg-reconfigure locales
Generating locales (this might take a while)...
fr_FR.UTF-8... done
Generation complete.
Créer le fichier /etc/locale.conf
LANG=fr_FR.UTF-8
ou
localectl set-locale LANG=fr_FR.UTF-8
TimeZone
Europe/Paris
dpkg-reconfigure tzdata
Current default time zone: 'Europe/Paris'
Local time is now: Wed Nov 8 10:00:53 CET 2017.
Universal Time is now: Wed Nov 8 09:00:53 UTC 2017.
Création utilisateur
Utilisateur xo
useradd -m -d /home/xo/ -s /bin/bash xo
Mot de passe xo
passwd xo
Visudo pour les accès root via utilisateur xo
apt install sudo
echo "xo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Déconnexion puis connexion ssh en mode utilisateur
ssh xo@93.115.96.97
DNS OVH
Configuration des champs DNS domaine xoyize.xyz
$TTL 3600
@ IN SOA dns200.anycast.me. tech.ovh.net. (2017062601 86400 3600 3600000 300)
IN NS dns200.anycast.me.
IN NS ns200.anycast.me.
IN A 93.115.96.97
IN AAAA 2a03:75c0:35:670d::1
* IN CNAME xoyize.xyz.
SSH
connexion avec clé
sur l'ordinateur de bureau
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) nommé kvm-vps-26381 pour une liaison SSH avec le serveur KVM.
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/kvm-vps-26381
Envoyer la clé publique sur le serveur KVM
scp ~/.ssh/kvm-vps-26381.pub xo@93.115.96.97:/home/xo/
sur le serveur KVM
On se connecte
ssh xo@93.115.96.97
Copier le contenu de la clé publique dans /home/$USER/.ssh/authorized_keys
$ cd ~
Sur le KVM ,créer un dossier .ssh
pwd #pour vérifier que l'on est sous /home/$USER
mkdir .ssh
cat /home/$USER/kvm-vps-26381.pub >> /home/$USER/.ssh/authorized_keys
et donner les droits
chmod 600 /home/$USER/.ssh/authorized_keys
effacer le fichier de la clé
rm /home/$USER/kvm-vps-26381.pub
Modifier la configuration serveur SSH
sudo nano /etc/ssh/sshd_config
Modifier
Port = 55028
PermitRootLogin no
PasswordAuthentication no
UsePAM no
Relancer openSSH
sudo systemctl restart sshd
Accès depuis le poste distant avec la clé privée
$ ssh -p 55028 -i ~/.ssh/kvm-vps-26381 xo@93.115.96.97
Exécution script sur connexion
Exécuter un fichier utilisateur nommé $HOME/.ssh/rc si présent
Pour tous les utilisateurs exécuter un fichier nommé /etc/ssh/sshrc si présent
Installer les utilitaires curl jq figlet
Le batch
nano ~/.ssh/rc
#!/bin/bash
#clear
PROCCOUNT=`ps -Afl | wc -l` # nombre de lignes
PROCCOUNT=`expr $PROCCOUNT - 5` # on ote les non concernées
GROUPZ=`users`
ipinfo=$(curl -s ipinfo.io) # info localisation format json
publicip=$(echo $ipinfo | jq -r '.ip') # extraction des données , installer préalablement "jq"
ville=$(echo $ipinfo | jq -r '.city')
pays=$(echo $ipinfo | jq -r '.country')
cpuname=`cat /proc/cpuinfo |grep 'model name' | cut -d: -f2 | sed -n 1p`
echo "\033[0m\033[1;31m"
figlet "xoyize.xyz"
echo "\033[0m"
echo "\033[1;35m \033[1;37mHostname \033[1;35m= \033[1;32m`hostname`
\033[1;35m \033[1;37mWired Ip \033[1;35m= \033[1;32m`ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1`
\033[1;35m \033[1;37mKernel \033[1;35m= \033[1;32m`uname -r`
\033[1;35m \033[1;37mDebian \033[1;35m= \033[1;32m`cat /etc/debian_version`
\033[1;35m \033[1;37mUptime \033[1;35m= \033[1;32m`uptime | sed 's/.*up ([^,]*), .*/1/' | sed -e 's/^[ \t]*//'`
\033[1;35m \033[1;37mCPU \033[1;35m= \033[1;32m`echo $cpuname`
\033[1;35m\033[1;37mMemory Use \033[1;35m= \033[1;32m`free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'`
\033[1;35m \033[1;37mUsername \033[1;35m= \033[1;32m`whoami`
\033[1;35m \033[1;37mSessions \033[1;35m= \033[1;32m`who | grep $USER | wc -l`
\033[1;35m\033[1;37mPublic Ip \033[1;35m= \033[1;32m`echo $publicip $pays`
\033[0m"
#curl fr.wttr.in/Paris?0
Effacer motd
sudo rm /etc/motd
Déconnexion puis connexion
Certificats SSL letsencrypt (acme)
Installation client acme.sh
cd ~
sudo -s # en mode super utilisateur
apt install netcat # prérequis
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install # --nocron
cd ..
rm -rf acme.sh/
# le client est installé dans /root/.acme.sh/
OVH DNS-Api
# application key
export OVH_AK="6b1Smj4kFgQd"
# application secret
export OVH_AS="32vap928M627TztX8t7zBBqMXDW7US"
Génération des certificats
/root/.acme.sh/acme.sh --dns dns_ovh --issue --keylength 4096 -d xoyize.xyz -d static.xoyize.xyz
Récupérer le lien pour validation
...
[Wed Nov 8 10:31:37 CET 2017] Please open this link to do authentication: https://eu.api.ovh.com/auth/?credentialToken=E6WdT7ox1BplPeTHcL2umr2PD2FJ7gp03KUsSfSXj7IOTsLhUCWCjPWbILPJ1a01
[Wed Nov 8 10:31:37 CET 2017] Here is a guide for you: https://github.com/Neilpang/acme.sh/wiki/How-to-use-OVH-domain-api
[Wed Nov 8 10:31:37 CET 2017] Please retry after the authentication is done.
...
Ouvrir le lien , saisir login/password OVH , validity Unlimited puis Login
Si OVH authentication Success !, relancer le script et patienter quelques minutes
/root/.acme.sh/acme.sh --dns dns_ovh --issue --keylength 4096 -d xoyize.xyz -d static.xoyize.xyz
Certificats
[Wed Nov 8 10:39:04 CET 2017] Your cert is in /root/.acme.sh/xoyize.xyz/xoyize.xyz.cer
[Wed Nov 8 10:39:04 CET 2017] Your cert key is in /root/.acme.sh/xoyize.xyz/xoyize.xyz.key
[Wed Nov 8 10:39:04 CET 2017] The intermediate CA cert is in /root/.acme.sh/xoyize.xyz/ca.cer
[Wed Nov 8 10:39:04 CET 2017] And the full chain certs is there: /root/.acme.sh/xoyize.xyz/fullchain.cer
Mise à jour automatique des certificats
crontab -e
21 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
Création des liens sur /etc/ssl/private pour nginx
sudo -s
ln -s /root/.acme.sh/xoyize.xyz/fullchain.cer /etc/ssl/private/xoyize.xyz-fullchain-cert.pem
ln -s /root/.acme.sh/xoyize.xyz/xoyize.xyz.key /etc/ssl/private/xoyize.xyz-key.pem
ln -s /root/.acme.sh/xoyize.xyz/xoyize.xyz.cer /etc/ssl/private/xoyize.xyz-cert.pem
ln -s /root/.acme.sh/xoyize.xyz/ca.cer /etc/ssl/private/xoyize.xyz-ca.pem
Site statique
Voir le lien https://gitlab.cinay.pw/spm/wikistatic pour installation
Vérification que le serveur statique est lancé
sudo systemctl status jekyll
Nginx proxy
On passe en mode su
sudo -s
Installation nginx
apt install nginx
Configuration /etc/nginx/nginx.conf
Ajouter dans la balise http
#Disables emitting nginx version
server_tokens off;
#Avoid timeout client need to upload big files
client_max_body_size 3M;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
#Enforce ssl ciphers
ssl_session_timeout 1d;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
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:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
#Enforce EDH ciphers
ssl_dhparam /etc/ssl/private/dhparam.pem;
Créer le paramètre Diffie-Hellmann
openssl dhparam -out /etc/ssl/private/dhparam.pem 4096
Effacement site par défaut
rm /etc/nginx/sites-enabled/*
Créer un nouveau site
nano /etc/nginx/sites-available/xoyize.xyz
server {
listen 80;
server_name static.xoyize.xyz;
return 301 https://$server_name$request_uri;
}
#Default ssl server
server {
listen 443 ssl default_server;
server_name static.xoyize.xyz;
ssl_certificate /etc/ssl/private/xoyize.xyz-fullchain-cert.pem;
ssl_certificate_key /etc/ssl/private/xoyize.xyz-key.pem;
access_log /var/log/nginx/static.access.log;
error_log /var/log/nginx/static.error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:4000;
}
}
Activation site
ln -s /etc/nginx/sites-available/xoyize.xyz /etc/nginx/sites-enabled/
Vérification
nginx -t
Redémarrer le serveur nginx
systemctl restart nginx