Afficher/cacher Sommaire
xoyize.xyz
KVM serveur islandais
Première connexion SSH
Via SSH
ssh root@37.235.49.24
Màj
apt update && apt upgrade
Installer nano curl et tmux
apt install curl tmux
Création utilisateur
Utilisateur xoy
useradd -m -d /home/xoy/ -s /bin/bash xoy
Mot de passe xoy
passwd xoy
Déconnexion puis connexion ssh en mode utilisateur
ssh xoy@37.235.49.24
SSH via clé
Sur le poste distant , générer un jeu de clé
$ ssh-keygen -t rsa -b 4096 -C kvm-iceland -f ~/.ssh/kvm-iceland
Copier la clé publique depuis le poste distant dans /home/$USER
$ scp ~/.ssh/kvm-iceland.pub xoy@37.235.49.24:/home/xoy/
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-iceland.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-iceland.pub
Modifier la configuration serveur SSH
su
# passage en superutilisateur
nano /etc/ssh/sshd_config
Port = 48022
PermitRootLogin no
PasswordAuthentication no
Relancer openSSH
# systemctl restart sshd
Accès depuis le poste distant avec la clé privée
$ ssh -p 48022 -i ~/.ssh/kvm-iceland xoy@37.235.49.24
sudo
passage en superutilisateur et installation sudo
$ su
apt install sudo
Configuration simplifiée ,ajouter utilisateur et ses droits en fin de fichier
echo "xoy ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Fuseau/Locales
Fuseau horaire en mode console root
# dpkg-reconfigure tzdata
Geographic area: 8 # Europe
Time zone: 37 # Paris
Current default time zone: 'Europe/Paris'
Local time is now: Fri Dec 23 18:26:28 CET 2016.
Universal Time is now: Fri Dec 23 17:26:28 UTC 2016.
Locales
dpkg-reconfigure locales
Generating locales (this might take a while)...
en_GB.UTF-8... done
fr_FR.UTF-8... done
Generation complete.
ipinfo.io
curl ipinfo.io
{
"ip": "37.235.49.24",
"hostname": "24.49.235.37.in-addr.arpa",
"city": "Hafnarfjörður",
"region": "Gullbringusysla",
"country": "IS",
"loc": "64.0653,-21.9545",
"org": "AS50613 Thor Data Center ehf"
}
Reykjavik iceland
session SSH ne se termine pas correctement lors d’un “reboot” à distance
Si vous tentez de redémarrer/éteindre une machine distance par ssh, vous pourriez constater que votre session ne se termine pas correctement, vous laissant avec un terminal inactif jusqu’à l’expiration d’un long délai d’inactivité. Il existe un bogue 751636 à ce sujet. Pour l’instant, la solution de contournement à ce problème est d’installer :
sudo apt-get install libpam-systemd
cela terminera la session ssh avant que le réseau ne tombe.
Veuillez noter qu’il est nécessaire que PAM soit activé dans sshd.
Nom d’hôte et non de domaine
sudo nano /etc/hosts
127.0.0.1 localhost
#149.154.157.240 240.157.154.149.in-addr.arpa 240
37.235.49.24 xoyize.xyz vpna
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
sudo nano /etc/hostname
vpna
Valider et vérifier
sudo hostname vpna
hostname
vpna
hostname -f
xoyize.xyz
Sauvegarde via shuttle
Installer rsync
sudo apt install rsync # debian
Ajout utilisateur de backupuser qui ne peut exécuter que rsync et de la clé publique du “serveur de sauvegarde”
#création utilisateur backup
sudo useradd backupuser -c "limited backup user" -m -u 4210
#ajout clé publique ssh dans le fichier authorized_keys du nouvel utilisateur
sudo mkdir /home/backupuser/.ssh
sudo nano /home/backupuser/.ssh/authorized_keys #coller le contenu /home/backupuser/.ssh/id_rsa.pub copié sur terminal du serveur shuttle (yanspm.com)
Création script bash rsync-wrapper.sh
sudo nano /home/backupuser/rsync-wrapper.sh
Contenu du script
#!/bin/sh
date > /home/backupuser/backuplog
#echo $@ >> /home/backupuser/backuplog
/usr/bin/sudo /usr/bin/rsync "$@";
Droits sur le fichier
sudo chown backupuser:backupuser /home/backupuser/rsync-wrapper.sh
sudo chmod 755 /home/backupuser/rsync-wrapper.sh
Edition fichier sudoers pour un accès root à l’exécution de rsync
sudo -s
Ajouter ligne suivante en fin de fichier,exécution en mode root de rsync
echo "backupuser ALL=NOPASSWD: /usr/bin/rsync" >> /etc/sudoers
exit
systemd/journal
Ajout de l’utilisateur courant au groupe systemd-journal
sudo gpasswd -a $USER systemd-journal
Accès utilisateur aux fichiers log
sudo gpasswd -a $USER adm
Après déconnexion puis reconnexion , l’utilisateur a accès au journal:
$ journalctl
Pour avoir les lignes NON TRONQUEES
$ export SYSTEMD_LESS=FRXMK journalctl
Pour un mode permanent ,modifier ~/.bashrc
$ echo "export SYSTEMD_LESS=FRXMK journalctl" >> ~/.bashrc
DNS/OVH
Modifier les DNS sur OVH
$TTL 3600
@ IN SOA dns106.ovh.net. tech.ovh.net. (2016122302 86400 3600 3600000 300)
IN NS ns106.ovh.net.
IN NS dns106.ovh.net.
IN A 37.235.49.24
IN AAAA 2a03:f80:354:37:235:49:24:1
* IN CNAME xoyize.xyz.
Clé Diffie-Hellman
Génération puis envoi de la clé depuis poste distant
openssl dhparam -out ~/Private/dh/diffie-hellman-4096.pem -outform PEM -2 4096
scp -P 48022 -i /home/yannick/.ssh/kvm-iceland ~/Private/dh/diffie-hellman-4096.pem xoy@37.235.49.24:/tmp/dh4096.pem
Mise en place sur le serveur
sudo mv /tmp/dh4096.pem /etc/ssl/private
sudo chown root. /etc/ssl/private/dh4096.pem
sudo chmod 640 /etc/ssl/private/dh4096.pem
Motd
10-sysinfo avec contenu de 11-sysinfo car noyau kernel > 3.0.0
Météo /etc/update-motd.d/98-meteo
#!/bin/bash
/usr/local/bin/ansiweather-fr.sh -l Reykjavik,IS -u metric -s true
Serveur OpenVPN
- Installation serveur OpenVPN sur VPS Debian Jessie (chercher l’expression “openvpn jessie” dans le champ recherche du site)
- Tunnel Your Internet Traffic Through an OpenVPN Server
Le client Iceland-vpn.ovpn
Configuration server.conf
Fichiers de configuration serveur OpenVpn
/etc/openvpn/server.conf
port 1194
proto udp
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
push "redirect-gateway def1 bypass-dhcp"
crl-verify crl.pem
ca ca.crt
cert server.crt
key server.key
tls-auth tls-auth.key 0
dh dh.pem
auth SHA256
cipher AES-128-CBC
tls-server
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-128-GCM-SHA256
status openvpn.log
verb 3
/etc/sysctl.conf
# enable packet forwarding for IPv4
net.ipv4.ip_forward=1
# enable packet forwarding for IPv6
net.ipv6.conf.all.forwarding=1
#net.ipv6.conf.all.proxy_ndp = 1
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
Validation immédiate avant reboot
sysctl net.ipv4.ip_forward=1
sysctl net.ipv6.conf.all.forwarding=1
Règles iptables
Création d’un fichier des règles ipv4
sudo nano /etc/ip4tables.rules # modifier le port SSH si nécessaire
*filter
# Allow all loopback (lo) traffic and reject traffic
# to localhost that does not originate from lo.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
-A OUTPUT -o lo -j ACCEPT
# Allow ping and ICMP error returns.
-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
# Allow SSH.
-A INPUT -i eth0 -p tcp -m state --state NEW,ESTABLISHED --dport 48022 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state ESTABLISHED --sport 48022 -j ACCEPT
# Allow UDP traffic on port 1194.
-A INPUT -i eth0 -p udp -m state --state NEW,ESTABLISHED --dport 1194 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state ESTABLISHED --sport 1194 -j ACCEPT
# Allow DNS resolution and limited HTTP/S on eth0.
# Necessary for updating the server and keeping time.
-A INPUT -i eth0 -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED --sport 80 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW,ESTABLISHED --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED --sport 443 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW,ESTABLISHED --dport 443 -j ACCEPT
# Allow traffic on the TUN interface.
-A INPUT -i tun0 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT
# Allow forwarding traffic only from the VPN.
-A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Log any packets which don't fit the rules above...
# (optional but useful)
-A INPUT -m limit --limit 3/min -j LOG --log-prefix "iptables_INPUT_denied: " --log-level 4
-A FORWARD -m limit --limit 3/min -j LOG --log-prefix "iptables_FORWARD_denied: " --log-level 4
-A OUTPUT -m limit --limit 3/min -j LOG --log-prefix "iptables_OUTPUT_denied: " --log-level 4
# then reject them.
-A INPUT -j REJECT
-A FORWARD -j REJECT
-A OUTPUT -j REJECT
COMMIT
Importer les nouvelles règles
sudo iptables-restore < /etc/ip4tables.rules
Persistance des règles
sudo apt install iptables-persistent #répondre yes/oui 2 fois
Si les règles ont changé ,il faut relancer
sudo dpkg-reconfigure iptables-persistent
Relancer le service
sudo systemctl restart openvpn.service
Rotation des fichiers log
Rotation des fichiers log openvpn
sudo nano /etc/logrotate.d/openvpn
/var/log/openvpn.log {
rotate 6
monthly
compress
missingok
}
- surveille le fichier xxxx.log et génère une rotation une fois par mois - c’est l’ “intervalle de rotation”.
- ‘rotate 6’ signifie qu’à chaque intervalle, on conserve 6 semaines de journalisation.
- Les fichiers de logs sont compressés au format gzip en spécifiant ‘compress’
- ‘missingok’ permet au processus de ne pas s’arrêter à chaque erreur et de poursuivre avec le fichier de log suivant.