Afficher/cacher Sommaire
XS35V2
Shuttle XS35V2, un barebone ultra-fin et totalement silencieux. Sa plate-forme est basée sur le chipset Intel NM10 Express avec un processeur Intel Atom Dual-Core D525.
- Processeur Intel Atom Dual-Core D525 double cœur cadencé à 1,8 GHz basse consommation d’énergie
- Chipset graphique intégré
- 4Go Mémoire DDR3 667/800 MHz (1 slot SO-DIMM)
- port réseau 1 Gigabit
- ethernet HWaddr 80:ee:73:33:28:50 Caractéristiques
- disque primaire Crucial BX100 SSD SATA 120 Go (format 2.5”)
-
Second disque Crucial SSD 480Go (format 2.5") - Connexion sans fil Wi-Fi N
Non Activée - Alimentation externe sans ventilateur 40 Watts
- Châssis ajouré pour un meilleur refroidissement des composants
- Fonctionnement silencieux grâce au refroidissement sans ventilateur (fanless)
- Contrôleur audio haute définition
- Lecteur de cartes mémoire intégré
-
consommation moyenne 20W
- Wireless Network (WLAN)
- Supports IEEE 802.11b/g/n, max. 150Mbps up-/downstream
- Security: WPA/WPA2(-PSK), WEP 64/128bit, IEEE 802.11x/i
- Single-chipset: Realtek RTL8188CE
- Half size Mini-PCIe-Card
- Shuttle Europe XS35V2 spécifications
Mise à jour BIOS
La mise à jour BIOS se fait en DOS à partir d’un périphérique bootable.
Créer la clé bootable FreeDOS
# Get the bootable USB image and flash the USB.
# Step 1. Figure out the USB device.
# Plug in the USB, it will usually auto-mount. Here are some
# commands you can use to find it.
# Command Notes
# =========================== =============================
# dmesg The device will be in the log
# ls -l /dev/disk/by-id/usb* List all of theUSB devices
# mount Oftentimes it is in /media
# grep -Ff \ Only Ubuntu/Debian.
# <(hwinfo --disk --short) \
# <(hwinfo --usb --short)
USB=/dev/sdd
# Step 2. Make sure that the device isn't mounted
sudo umount ${USB}1
# Step 3. Get the archived image.
wget http://downloads.joelinoff.com/fdos11.tar.bz2
# Step 4. Extract the image.
tar jxf fdos11.tar.bz2
# Step 5. Flash the USB
dd if=fdos11.img of=$USB bs=1M
Télécharger le BIOS sur le site Shuttle XS35V2
Extraire et copier les éléments contenu dans DOS sur la racine de la clé USB
Booter sur la clé USB et lancer flash.bat
Patienter…
Disque SATA LVM
Boot sur clé “partition magic”
Partionnement gdisk
gdisk /dev/sda
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-7814037134, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-7814037134, default = 7814037134) or {+-}size{KMGTP}: +50M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef02
Changed type of partition to 'BIOS boot partition'
Command (? for help): n
Partition number (2-128, default 2):
First sector (34-7814037134, default = 104448) or {+-}size{KMGTP}:
Last sector (104448-7814037134, default = 7814037134) or {+-}size{KMGTP}: +512M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): n
Partition number (3-128, default 3):
First sector (34-7814037134, default = 628736) or {+-}size{KMGTP}:
Last sector (628736-7814037134, default = 7814037134) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'
Command (? for help): w
LVM
Création volume physique
pvcreate /dev/sda3
Création groupe
vgcreate vg-120g-crucial /dev/sda3
Création des volumes logiques
lvcreate -L 15G -n root vg-120g-crucial
lvcreate -L 20G -n home vg-120g-crucial
lvcreate -L 4G -n swap vg-120g-crucial
Type de fichier
mkfs.ext4 /dev/vg-120g-crucial/root
mkfs.ext4 /dev/vg-120g-crucial/home
mkswap /dev/vg-120g-crucial/swap
mkfs.ext2 /dev/sda2 # boot
Debian Stretch
Installation à partir d’une clé USB bootable netinst debian 9 32bits
ATTENTION !!! le réseau filaire doit être connecté directement sur la box car pas de réseau à travers le switch.
Nom de la machine : xs35v2
Utilisateur : xsuser
Installation serveur SSH et système uniquement
IP V4 : 192.168.0.47 (fixer le bail statique pour cette IP sur la box)
Première connexion SSH
Via SSH
ssh xsuser@192.168.0.47
Passage en su
su
Installer les outils
apt install rsync curl tmux jq figlet git -y
Locales/TimeZone
Configurés lors de l’installation debian 9
sudo
Installer sudo
apt install sudo
Droits d’accès sudo à l’utilisateur xsuser
echo "xsuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
SSH avec clé
sur l'ordinateur de bureau
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) nommé xs35v2 pour une liaison SSH avec le serveur KVM.
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/xs35v2
Envoyer la clé publique sur le serveur KVM
scp ~/.ssh/xs35v2.pub xsuser@192.168.0.47:/home/xsuser/
sur le serveur **xs35v2**
Copier le contenu de la clé publique dans /home/$USER/.ssh/authorized_keys
$ cd ~
Sur le KVM ,créer un dossier .ssh
mkdir .ssh
cat /home/$USER/xs35v2.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/xs35v2.pub
Modifier la configuration serveur SSH
sudo nano /etc/ssh/sshd_config
Modifier
Port = 55029
PasswordAuthentication no
Relancer openSSH
sudo systemctl restart sshd
Accès depuis le poste distant avec la clé privée
$ ssh -p 55029 -i ~/.ssh/xs35v2 xsuser@192.168.0.47
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 "XS35V2 192.168.0.47"
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;37mLocal Ip \033[1;35m= \033[1;32m`echo "192.168.0.47"`
\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
Configuration
Les disques
sudo fdisk -l
Disque /dev/sda : 111,8 GiB, 120034123776 octets, 234441648 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : gpt
Identifiant de disque : A217BA7B-6B3E-477C-88D6-26C876FF4004
Périphérique Début Fin Secteurs Taille Type
/dev/sda1 2048 104447 102400 50M Amorçage BIOS
/dev/sda2 104448 1153023 1048576 512M Système de fichiers Linux
/dev/sda3 1153024 234441614 233288591 111,2G LVM Linux
Disque /dev/mapper/vg--120g--crucial-root : 15 GiB, 16106127360 octets, 31457280 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Disque /dev/mapper/vg--120g--crucial-home : 20 GiB, 21474836480 octets, 41943040 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Disque /dev/mapper/vg--120g--crucial-swap : 4 GiB, 4294967296 octets, 8388608 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Structure
df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev 2,0G 0 2,0G 0% /dev
tmpfs 404M 5,7M 398M 2% /run
/dev/mapper/vg--120g--crucial-root 15G 921M 14G 7% /
tmpfs 2,0G 0 2,0G 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 2,0G 0 2,0G 0% /sys/fs/cgroup
/dev/sda2 504M 33M 446M 7% /boot
/dev/mapper/vg--120g--crucial-home 20G 44M 19G 1% /home
tmpfs 404M 0 404M 0% /run/user/1000
Volumes LVM
root@xs35v2:/home/xsuser# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 vg-120g-crucial lvm2 a-- 111,24g 72,24g
root@xs35v2:/home/xsuser# vgs
VG #PV #LV #SN Attr VSize VFree
vg-120g-crucial 1 3 0 wz--n- 111,24g 72,24g
root@xs35v2:/home/xsuser# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home vg-120g-crucial -wi-ao---- 20,00g
root vg-120g-crucial -wi-ao---- 15,00g
swap vg-120g-crucial -wi-ao---- 4,00g
Il reste 72.24G de libre sur le volume LVM
sudo -s
On va utiliser 50G pour le partage NFS
lvcreate -L 50G -n part-xs35 vg-120g-crucial
Type de fichier ext4
mkfs.ext4 /dev/vg-120g-crucial/part-xs35
Créer un point de montage
mkdir /mnt/part-xs35
Ajouter en fin de fichier /etc/fstab
/dev/vg-120g-crucial/part-xs35 /mnt/part-xs35 ext4 defaults 0 2
Montage manuel
mount -a
Sortie sudo
exit
Donner les droits utilisateurs
sudo chown $USER.$USER -R /mnt/part-xs35
On dispose de 50G sur /mnt/part-xs35
Second volume LVM de 500G vg-500g-crucial
Créer un point de montage pour “music”
mkdir /mnt/music
Donner les droits utilisateurs
sudo chown $USER.$USER -R /mnt/music
Ajouter en fin de fichier /etc/fstab
/dev/vg-500g-crucial/music /mnt/music ext4 defaults 0 2
Parefeu (iptables)
Les règles de base
#!/bin/sh
# Règles de base
iptables -t filter -F -m comment --comment "Vider les règles table filter"
iptables -t nat -F -m comment --comment "Vider les règles table nat"
iptables -t filter -X -m comment --comment "Vider les règles personnelles table filter"
iptables -t nat -X -m comment --comment "Vider les règles personnelles table nat"
iptables -t filter -P INPUT ACCEPT -m comment --comment "Autoriser toute connexion entrante"
iptables -t filter -P FORWARD ACCEPT -m comment --comment "Autoriser toute redirection"
iptables -t filter -P OUTPUT ACCEPT -m comment --comment "Autoriser toute connexion sortante"
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Ne pas casser les connexions en cours"
iptables -t filter -A INPUT -i lo -j ACCEPT -m comment --comment "Autoriser loopback"
iptables -t filter -A INPUT -p icmp -j ACCEPT -m comment --comment "Autoriser ICMP (Ping)"
iptables -t filter -A INPUT -p tcp --dport 55029 -j ACCEPT -m comment --comment "Port SSH Input"
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT -m comment --comment "DNS tcp Input"
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT -m comment --comment "DNS udp Input"
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT -m comment --comment "HTTP Input"
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT -m comment --comment "HTTPS Input"
Création d’un parefeu iptables qui se lance au démarrage de la machine
apt install iptables-persistent
Faut-il enregistrer les règles IPv4 actuelles ? OUI
Faut-il enregistrer les règles IPv6 actuelles ? NON
Les tables sont enregistrés sous /etc/iptables/ , rules.v4 pour IPv4 et rules.v6 pour IPv6
Sauvegarde/Restauration manuelle des régles iptables
iptables-save > /etc/iptables/rules.v4
iptables-restore < /etc/iptables/rules.v4
NFS serveur
Installation
on passe en mode su
sudo -s
Installation
apt install nfs-kernel-server
Vérification serveur
rpcinfo -p | grep nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
Vérifier que le système supporte effectivement NFS
cat /proc/filesystems | grep nfs
nodev nfsd
Si la commande ne renvoie rien, il se peut que le module NFS ne soit pas chargé, auquel cas, il faut le charger
modprobe nfs
Enfin, vérifions que portmap attend les instructions sur le port 111
rpcinfo -p | grep portmap
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
Configuration du partage
Passage en su
sudo -s
indiquer au serveur les répertoires qui seront partagés, les machines qui y auront accès et les conditions de ce partage.
nano /etc/exports
Ajouter en fin de fichier /etc/exports
/mnt/part-xs35 192.168.0.0/24(rw,sync,no_subtree_check,no_root_squash)
/mnt/music 192.168.0.0/24(rw,sync,no_subtree_check,no_root_squash)
Sécurisation
Passage en su
sudo -s
Le protocole RPC n’a pas la réputation d’être bien sécurisé, mais la version 4 de NFS entend corriger ce problème, elle est donc à privilégier. Il est déconseillé d’effectuer un partage NFS via internet, ou bien dans ce cas, opter pour un tunnel crypté.
- S’assurer que les partages sont réservés à certaines IP dans /etc/exports
- S’appuyer sur rpcbind (/etc/hosts.deny et /etc/hosts.allow) pour sécuriser l’accès au serveur NFS
- Configurer convenablement iptables
hosts.deny hosts.allow
Tout le monde est interdit, puis le LAN est autorisé:
nano /etc/hosts.deny
rpcbind mountd nfsd statd lockd rquotad : ALL
nano /etc/hosts.allow
rpcbind mountd nfsd statd lockd rquotad: 192.168.0.
iptables (NFS)
Par défaut, les différents services NFS (lockd, statd, mountd, etc.) demandent des assignations de ports aléatoires à partir du portmapper (portmap/rpcbind), ce qui signifie que la plupart des administrateurs doivent ouvrir une gamme de ports dans leur base de règles de pare-feu pour que NFS fonctionne.
Il va donc falloir fixer les ports de ces services afin de créer les règles iptables.
nano /etc/default/nfs-common
STATDOPTS="--port 32765 --outgoing-port 32766"
nano /etc/default/nfs-kernel-server
RPCMOUNTDOPTS="-p 32767"
nano /etc/default/quota
RPCRQUOTADOPTS="-p 32769"
sysctl --system
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...
Relancer le service
systemctl restart nfs-kernel-server
Nous pouvons maintenant fixer nos règles iptables:
sudo iptables -A INPUT -s 192.168.0.0/24 -p tcp -m multiport --ports 111,2049,32764:32769 -j ACCEPT -m comment --comment "NFS Server"
sudo iptables -A INPUT -s 192.168.0.0/24 -p udp -m multiport --ports 111,2049,32764:32769 -j ACCEPT -m comment --comment "NFS Server"
Configurer un client NFS
Prérequis : NFS installé (https://wiki.archlinux.fr/NFS)
Créer un dossier pour le montage
sudo mkdir /mnt/part-xs35
Donner les droits utilisateurs
sudo chown $USER.users -R /mnt/part-xs35
Montage manuel
sudo mount -t nfs4 -o rw 192.168.0.47:/mnt/part-xs35 /mnt/part-xs35
Test lecture écriture
touch /mnt/part-xs35/test.txt
Ne doit générer aucune erreur
Montage auto , ajouter en fin de fichier /etc/fstab
192.168.0.47:/mnt/part-xs35 /mnt/part-xs35 nfs4 noauto,x-systemd.automount 0 0
Subsonic
Application dédiée musique, serveur java
Installer java
sudo apt install openjdk-8-jre
Installer subsonic , télécharger la version en cours
wget -O subsonic-6.1.3.deb http://www.subsonic.org/pages/download2.jsp?target=subsonic-6.1.3.deb
Installer
sudo dpkg -i subsonic-6.1.3.deb
Modifier le paramètrage /etc/default/subsonic
SUBSONIC_ARGS="--port=8090 --max-memory=200"
SUBSONIC_USER=xsuser
Relancer subsonic
sudo systemctl restart subsonic
Ouvrir le port 8090
sudo iptables -t filter -A INPUT -p tcp --dport 8090 -j ACCEPT -m comment --comment "Subsonic port http"
Les sauvegarder
sudo -s
iptables-save > /etc/iptables/rules.v4
Serveur Nginx + Php + MariaDb
Nginx (compilation), PHP5 et PHP7 ,MariaDb
Point d’accès Wifi
Utilisation dongle wifi Ralink Technology, Corp. RT5370 Wireless Adapter
Multiple Point d’accès Wifi + OpenVPN
Point d’accès VPN : YanOpenVPN
Point d’accès NON connectable sur internet : YanHotSpot
Règles parefeu iptables
Les règles sauvegardées /etc/iptables/rules.v4 pour NFS,subsonic,Point d’accès Wifi VPN
# Generated by iptables-save v1.6.0 on Tue Jan 2 18:16:19 2018
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1:40]
:POSTROUTING ACCEPT [1:40]
-A POSTROUTING -o tun0 -m comment --comment "Activer MASQUERADE sur tunnel vpn tun0" -j MASQUERADE
COMMIT
# Completed on Tue Jan 2 18:16:19 2018
# Generated by iptables-save v1.6.0 on Tue Jan 2 18:16:19 2018
*filter
:INPUT ACCEPT [18:1188]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [124:12427]
-A INPUT -i lo -m comment --comment "Autoriser loopback" -j ACCEPT
-A INPUT -p icmp -m comment --comment "Autoriser ICMP (Ping)" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 55029 -m comment --comment "Port SSH Input" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -m comment --comment "DNS tcp Input" -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -m comment --comment "DNS udp Input" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m comment --comment "HTTP Input" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m comment --comment "HTTPS Input" -j ACCEPT
-A INPUT -s 192.168.0.0/24 -p tcp -m multiport --ports 111,2049,32764:32769 -m comment --comment "NFS Server" -j ACCEPT
-A INPUT -s 192.168.0.0/24 -p udp -m multiport --ports 111,2049,32764:32769 -m comment --comment "NFS Server" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8090 -m comment --comment "Subsonic port http" -j ACCEPT
-A FORWARD -s 10.10.11.0/24 -i wlan0 -o tun0 -m conntrack --ctstate NEW -m comment --comment "VPN : Autoriser trafic wlan0 vers tun0" -j ACCEPT
-A FORWARD -s 10.10.12.0/24 -i wlan0_0 -o tun0 -m conntrack --ctstate NEW -m comment --comment "VPN : Bloquer le trafic wlan0_0 vers tun0" -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Tue Jan 2 18:16:19 2018