12 KiB
Création d'une nouvelle machine physique
Le but est d'intégrer une nouvelle machine physique dans le SI.
Installer un microprogramme libre
Installation du système d'exploitation FSDG (Trisquel)
Préparation du média d'installation
Récupérer l'image Trisquel NetInstall, qui est la plus adaptée à l'installation de serveurs.
A la date d'écriture de cette procédure, on utilise Trisquel version 11 (Aramo) via la console série, sans écran.
Installation du système
Démarrer le média d'installation sur la console série
Utiliser TAB
pour éditer la ligne de commande du menu de démarrage du média et remplacer
dans la ligne de commande du noyau vga=788
par console=ttyS0,115200n8
.
Supprimer également la directive quiet
.
Appuyer sur entrée pour continuer le démarrage.
Configuration de la langue et position
Installer avec la langue anglaise et la locale en_US.UTF8
.
Indiquer le lieu en France, utiliser le miroir allemand.
Création de l'utilisateur d'administration
Créer l'utilisateur admin666
avec un mot de passe fort.
Enregistrer ce mot de passe dans le coffre (section infra générale).
Partitionnement des disques
Partitionner selon le schéma voulu pour la machine spécifique. Par exemple avec du RAID logiciel sur deux disques, une partition de démarrage (en ext2
), une partition racine et une partition de stockage de machine virtuelle.
Sélection des paquets de base de l'installateur
Choisir d'installer postfix
, openssh
et Trisquel console environment
.
Configurer postfix
Indiquer de configurer postfix
en mode local.
Configurer GRUB
Installer GRUB sur le premier disque contenant une partition de démarrage.
Configuration critique du système
Programme de démarrage (grub
)
Au premier démarrage du système, afin de pouvoir accéder à la console série, modifier la ligne de commande du noyau dans l'interface de GRUB avec la touche e
. Ajouter la directive console=ttyS0,115200n8
à la ligne linux
.
Une fois le système démarré, modifier le fichier /etc/default/grub
:
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="libata.force=noncq nohz=on console=ttyS0,115200n8"
GRUB_CMDLINE_LINUX=""
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Effectuer ensuite :
update-grub
update-initramfs -u
Programme de redémarrage (kexec
)
Les démarrages gérés par le BIOS sont parfois longs et risqués, on préfère utiliser kexec.
Installer avec :
apt install kexec-tools.
Reconfiguration de la langue
Utiliser la commande dpkg-reconfigure locales
et sélectionner uniquement fr_FR.UTF8
.
Redémarrer à l'issue de cette commande.
Installation des paquets de base
apt install etckeeper molly-guard tig lm-sensors fancontrol screen emacs-nox needrestart iotop htop atop usbtop curl ncdu iptraf tig unzip ufw ifupdown net-tools bridge-utils
Paramétrage réseau
Il faut passer de netplan.io à networking :
apt purge netplan.io
Éditer le service de résolution DNS dans /etc/systemd/resolved.conf
, et modifier la ligne #DNS=
en DNS=192.168.0.1
(correspondant à l'adresse du routeur).
Relancer le service :
systemctl restart systemd-resolved
Supprimer le fichier /etc/resolv.conf
et le regénérer :
rm /etc/resolv.conf
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Configurer dans /etc/network/interfaces
:
auto lo br0
iface lo inet loopback
allow-hotplug ens10
allow-hotplug ens9
# bridge for vm
iface br0 inet static
bridge_ports ens10
address 192.168.1.2
gateway 192.168.0.1
broadcast 192.168.255.255
netmask 255.255.0.0
iface br0 inet6 static
bridge_ports ens10
address 2001:910:1028:0::2/128
gateway 2001:910:1028::1
Configurer ensuite le routage sur le routeur :
- aller sur https://routeur.libre-en-communs.org/cgi-bin/luci/admin/network/dhcp ;
- onglet Static Leases, bouton Add :
- Hostname : nom de PM en domaine,
- MAC : dispo sur la machine,
- IPv4 : choisir une 192.168.0.x (réservé infra générale, pour les machines physiques).
- valider les changements.
Redémarrer la machine à la fin de ces étapes.
Configuration SSH (OpenSSH
)
Créer l'utilisateur cominfra
pour servir de proxy de connexion, sans mot de passe :
adduser cominfra
Placer toutes les clés publiques nécessaires dans /home/cominfra/.ssh/authorized_keys
et
dans /home/admin666/.ssh/authorized_keys
.
Configurer le serveur OpenSSH avec le fichier /etc/ssh/sshd_config
:
Port 222
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
AllowAgentForwarding yes
AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding no
PrintMotd no
TCPKeepAlive yes
PermitTunnel yes
AcceptEnv LANG LC\_* GIT\_*
Subsystem sftp /usr/lib/openssh/sftp-server
Match User admin666 Address *,!192.168.0.0/16,!::1,!127.0.0.1
DenyUsers admin666
Configuration de sudo
Utiliser la commande :
sudo visudo
Modifier la ligne %sudo ALL=(ALL:ALL) ALL
en %sudo ALL=(ALL:ALL) NOPASSWD:ALL
.
Configuration du pare-feu (UFW
)
Autoriser les ports 222, 25, 5665, 68, 7789, 16514, 49152, 49153, 3493 :
ufw allow 25
ufw allow 68
ufw allow 222
ufw allow 3493
ufw allow 5665
ufw allow 7789
ufw allow 16514
ufw allow 49152
ufw allow 49153
Activer le pare-feu
ufw enable
Configuration du MTA (Postfix
)
Il faut configurer le MTA pour qu'il relaie les courriels vers mail.a-lec.org.
Éditer /etc/postfix/transport
:
a-lec.org :
* discard:
Éditer /etc/postfix/virtual
:
@localhost admin@a-lec.org
@anthea.libre-en-communs.org admin@a-lec.org
Valider les changements :
postmap /etc/postfix/transport
postmap /etc/postfix/virtual
postfix reload
Configuration du moteur de virtualisation (KVM + libvirt
)
Installer les paquets :
apt install qemu-kvm libvirt-daemon-system libvirt-clients
Créer un nouvel utilisateur dédié : virt-user
adduser virt-user
adduser virt-user libvirt
Configuration de htop
Éditer le fichier ~/.config/htop/htoprc
pour les comptes admin666
et root
:
fields=0 48 17 18 38 39 40 2 46 47 49 1
sort_key=0
sort_direction=1
tree_sort_key=0
tree_sort_direction=1
hide_kernel_threads=1
hide_userland_threads=0
shadow_other_users=0
show_thread_names=0
show_program_path=1
highlight_base_name=0
highlight_megabytes=1
highlight_threads=1
highlight_changes=0
highlight_changes_delay_secs=5
find_comm_in_cmdline=1
strip_exe_from_cmdline=1
show_merged_command=0
tree_view=0
tree_view_always_by_pid=0
header_margin=1
detailed_cpu_time=0
cpu_count_from_one=0
show_cpu_usage=1
show_cpu_frequency=0
show_cpu_temperature=0
degree_fahrenheit=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=0
enable_mouse=1
delay=15
left_meters=LeftCPUs2 Blank Memory DiskIO NetworkIO Systemd
left_meter_modes=1 2 1 2 2 2
right_meters=RightCPUs2 Blank CPU LoadAverage Tasks Uptime
right_meter_modes=1 2 1 2 2 2
hide_function_bar=0
Configuration de bash
Éditer /etc/skel/.bashrc
et /home/admin666/.bashrc
:
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "\[\033[01;32m\]=(^-^)=${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='\[\033[01;32m\]=(^-^)=${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='=(^-^)=${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;=(^-^)=${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
Éditer le fichier /root/.bashrc
:
# ~/.bashrc: executed by bash(1) for non-login shells.
# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
PS1='\[\033[01;32m\]=(^-^)=${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
alias ll='ls $LS_OPTIONS -l'
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
# more aliases
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi