fcfb922647d50f80d2d191b845982fba4c174f5e
Guides/Installation-serveur.md
... | ... | @@ -1,9 +1,8 @@ |
1 | 1 | # Configuration d'un nouveau serveur au ResEl |
2 | 2 | |
3 | -Ce guide décrit toutes les étapes qui doivent être réalisées au niveau software sur une nouvelle machine physique ou une machine virtuelle. Il se veut suffisant à lui même, mais tous les services sont généralement décrits de manière plus complète dans d'autres pages de ce wiki. |
|
3 | +Ce guide décrit toutes les étapes logicielles qui doivent être réalisées sur une nouvelle machine physique ou virtuelle. Il est suffisant, mais tous les services sont généralement décrits de manière plus complète dans les autres pages de ce wiki. |
|
4 | 4 | |
5 | -Cela va de soit, mais je vous conseille de parcourir ce guide une fois de haut en bas avant |
|
6 | -de configurer votre propre machine. |
|
5 | +Cela va de soit, mais je vous conseille de parcourir ce guide une fois de haut en bas avant de configurer votre propre machine. |
|
7 | 6 | |
8 | 7 | **Ce guide décrit les étapes pour :** |
9 | 8 | 1. Recenser la machine sur le LDAP |
... | ... | @@ -26,7 +25,7 @@ Pour les machines virtuelles, il est recommandé d'utiliser les templates créé |
26 | 25 | * Vérifier la configuration réseau, en particulier celle du Switch ! |
27 | 26 | * Avant d'installer un nouveau système sur machine physique, il convient de la tester : disques, mémoire... |
28 | 27 | |
29 | -## 1. Ajouter la machine au LDAP |
|
28 | +## Ajouter la machine au LDAP |
|
30 | 29 | |
31 | 30 | Le [LDAP](/Services/LDAP) est la base de données au ResEl permettant d'inventorier |
32 | 31 | tout les serveurs actifs. Cette entrée est essentielle pour s'assurer que la machine |
... | ... | @@ -40,23 +39,48 @@ Attention : il faut ajouter uniquement les 2 derniers octets des adresses IPv4, |
40 | 39 | |
41 | 40 | ## Table des partitions |
42 | 41 | |
43 | -Pour les machines virtuelles il est recommandé de ne pas faire de table de partition, sauf dans de rares cas. Utilisez le gabarit proxmox créé en cas de doute. |
|
42 | +### Machine virtuelle |
|
43 | +Pour les machines virtuelles il est recommandé de ne pas faire de table de partition, sauf dans de rares cas. Utilisez le gabarit Proxmox créé en cas de doute. |
|
44 | 44 | |
45 | 45 | TODO (rédacteur) : |
46 | -* Configuration machines physiques (LVM principalement) |
|
46 | +* expliquer la méthode pour faire sans table, cf : https://www.debian.org/releases/stable/amd64/apds03.html.fr / https://wiki.debian.org/fr/Debootstrap |
|
47 | + |
|
48 | +### Machine physique |
|
49 | + |
|
50 | +TODO (rédacteur) : |
|
51 | +* Configuration LVM machines physiques |
|
52 | + |
|
53 | +### Ressources |
|
54 | +* [Tutoriel simple sur le partitionnement](http://lea-linux.org/documentations/Partitionnement) |
|
55 | +* [Wiki arch sur le LVM](https://wiki.archlinux.org/index.php/LVM) |
|
47 | 56 | |
48 | 57 | ## Réseau |
49 | 58 | **Vous devez IMPÉRATIVEMENT configurer une IP fixe, pas de DHCP !** En effet, si un reboot accidentel survient à un moment où le serveur DHCP est indisponible (exemple : longue coupure de courant, les dns qui tombent), l'interface ne sera pas configurée et le serveur sera ainsi injoignable. |
50 | 59 | |
51 | 60 | ### Réseau statique |
52 | 61 | |
53 | -Vous pouvez voir la liste des interfaces disponible en tapant la commande |
|
62 | +### Préparation |
|
63 | + |
|
64 | +Si vous travaillez sur une **machine virtuelle**, vérifiez sur Proxmox que vous avez |
|
65 | +bien ajouté toutes les interfaces dont vous avez besoin, dont au moins 1 sur le VLAN |
|
66 | +admin. Choisissez de préférence une interface de type `VirtIO` sur le `vmbr1`. |
|
67 | + |
|
68 | +Si vous travaillez sur une **machine physique** assurez-vous que vos ports ethernet |
|
69 | +soient bien branchés, et que les switchs soient bien configurés pour faire passer les |
|
70 | +VLAN nécéssaires. |
|
71 | + |
|
72 | +Dans tous les cas, vérifiez bien que les mac soient sur la fiche de la machine dans le |
|
73 | +LDAP, et que les adresses ip ne soient pas utilisées pour autre chose. |
|
74 | + |
|
75 | +### Configuration |
|
76 | + |
|
77 | +Sur la machine vous pouvez voir la liste des interfaces disponible en tapant la commande |
|
54 | 78 | ```bash |
55 | 79 | ip link |
56 | 80 | ``` |
57 | 81 | |
58 | -Choisissez-en une (ici `eth0`) |
|
59 | -Dans le fichier `/etc/network/interfaces` : |
|
82 | +Choisissez-en une (ex. ici `eth0`) |
|
83 | +Ajoutez les lignes suivantes dans le fichier `/etc/network/interfaces` : |
|
60 | 84 | ``` |
61 | 85 | allow-hotplug eth0 |
62 | 86 | iface eth0 inet static |
... | ... | @@ -68,43 +92,108 @@ iface eth0 inet static |
68 | 92 | # dns-* options are implemented by the resolvconf package, if installed |
69 | 93 | dns-nameservers 172.22.2.230 |
70 | 94 | dns-search adm.resel.fr |
95 | + up ip route add 172.23.2.0/23 via 172.22.3.254 dev eth0 # Route vers Rennes |
|
96 | +``` |
|
97 | +Sur le même modèle ajoutez les autres lignes pour les autres interfaces. N'oubliez pas |
|
98 | +qu'il faut une seule `gateway` pour toutes les interfaces qui sera la passerelle par |
|
99 | +défaut. |
|
100 | + |
|
101 | +Pour les DNS, rien de plus simple, éditez le fichier `/etc/resolv.conf` : |
|
102 | +``` |
|
103 | +options timeout:1 |
|
104 | +search adm.resel.fr adm.rennes.resel.fr resel.fr rennes.resel.fr |
|
105 | +nameserver 172.22.2.229 |
|
106 | +nameserver 172.22.2.32 |
|
107 | +nameserver 172.23.2.229 |
|
108 | +``` |
|
109 | + |
|
110 | +Redémarrez le réseau, puis vérifiez que tout fonctionne : |
|
111 | +```bash |
|
112 | +systemctl restart networking |
|
113 | +ping pegase |
|
71 | 114 | ``` |
72 | 115 | |
116 | +### Ressources |
|
117 | +* [Documentation Debian sur le réseau](https://wiki.debian.org/NetworkConfiguration) |
|
118 | +* [Les réseaux au ResEl](https://wiki.resel.fr/R%C3%A9seau/Routage) |
|
73 | 119 | |
74 | -### Résolution des DNS: |
|
75 | -Dans le `/etc/resolv.conf` : |
|
120 | + |
|
121 | +## La gestion de paquets |
|
122 | + |
|
123 | +### Configuration d'APT |
|
124 | +Nous utilisons au ResEl Debian et nous sommes en 2017 donc nous utilisons la commande `apt`. |
|
125 | +Avant de pouvoir installer des paquets il faut s'assurer que les miroirs ResEl soient bien |
|
126 | +configurés. Vous avez lors du bootstrap de la machine déjà utilisé le miroir ResEl situé à l'adresse suivante : http://miroir.resel.fr/debian/. |
|
127 | + |
|
128 | +Le playbook Ansible [apt-full-conf.yml](https://git.resel.fr/confs/ansible/blob/master/playbooks/apt-full-conf.yml) est normalement suffisant. Cependant, voici la configuration manuelle : |
|
129 | + |
|
130 | +Modifier votre fichier `/etc/apt/source.list` pour ressembler à ceci : |
|
76 | 131 | ``` |
77 | - options timeout:1 |
|
78 | - search adm.resel.fr adm.rennes.resel.fr resel.fr rennes.resel.fr |
|
79 | - nameserver 172.22.2.229 |
|
80 | - nameserver 172.22.2.32 |
|
81 | - nameserver 172.23.2.229 |
|
132 | +deb http://miroir.adm.resel.fr/debian/ jessie main contrib non-free |
|
133 | +deb-src http://miroir.adm.resel.fr/debian/ jessie main contrib non-free |
|
134 | + |
|
135 | +deb http://miroir.adm.resel.fr/debian/ jessie-updates main contrib non-free |
|
136 | +deb-src http://miroir.adm.resel.fr/debian/ jessie-updates main contrib non-free |
|
137 | + |
|
138 | +# Security |
|
139 | +deb http://pegase.adm.resel.fr:9999/debian-security jessie/updates main contrib non-free |
|
140 | +deb-src http://pegase.adm.resel.fr:9999/debian-security/ jessie/updates main contrib non-free |
|
82 | 141 | ``` |
83 | 142 | |
84 | -## Les paquets indispensables |
|
143 | +Pour profiter des proxy ResEl (pour récupérer les rapports de bugs par exemple) créez un fichier `/etc/apt/apt.conf.d/01reselproxy` : |
|
144 | +``` |
|
145 | +Acquire::http::proxy::bugs.debian.org "http://pegase.adm.resel.fr:3128"; |
|
146 | +Acquire::https::proxy::bugs.debian.org "http://pegase.adm.resel.fr:3128"; |
|
147 | +Acquire::http::proxy::security.debian.org "http://pegase.adm.resel.fr:3128"; |
|
148 | +Acquire::https::proxy::security.debian.org "http://pegase.adm.resel.fr:3128"; |
|
149 | +``` |
|
85 | 150 | |
86 | -Il faut pouvoir se connecter à distance sur la machine et permettre à certaines personnes autorisées de pouvoir passer *root*, et pouvoir laisser un programme tourner, même déconnecté (utile en cas de compilation, ou si on perd la connexion de façon accidentelle) : |
|
151 | +Vérifiez que tout fonctionne bien, et mettez à jour : |
|
87 | 152 | ``` |
88 | -apt-get install ssh sudo tmux vim postfix ntp ntpdate |
|
153 | +apt update |
|
154 | +apt upgrade |
|
89 | 155 | ``` |
90 | 156 | |
91 | -Au ResEl, on versionne les configurations : |
|
157 | +### Les packets indispensables |
|
158 | + |
|
159 | +Pour nous simplifier la vie, et harmoniser les paquets installés sur toutes les machines du ResEl, nous allons installer quelque paquets indispensables : |
|
92 | 160 | ``` |
93 | -apt-get install git |
|
161 | +apt install ssh sudo tmux vim postfix ntp ntpdate |
|
94 | 162 | ``` |
95 | 163 | |
96 | -Enfin, très fortement dépendant de la machine à mettre en place ou des besoins ponctuels, quelques utilitaires pour la gestion du réseau, ou la compilation : |
|
164 | +Je vous propose quelques paquets très utiles, installez-les si vous pensez que c'est nécessaire. Cependant prenez note : **chaque paquet installé en plus est une faille de sécurité potentielle en plus !** |
|
165 | + |
|
166 | +Git pour car on versionne nos configurations : |
|
97 | 167 | ``` |
98 | -apt-get install tcpdump nmap dnsutils traceroute tcptraceroute arping vlan |
|
168 | +apt install git |
|
99 | 169 | ``` |
100 | 170 | |
171 | +Des outils de compilation (*ma maman m'a dit de ne jamais mettre un compilateur sur une machine de prod*) : |
|
101 | 172 | ``` |
102 | -apt-get install build-essential linux-header linux-source git patchutils |
|
173 | +apt install build-essential linux-header linux-source patchutils |
|
174 | +``` |
|
175 | + |
|
176 | +Quelques outils réseau (*ma maman me faisait manger du savon quand je mettais des outils de réseau sur un serveur de prod*): |
|
177 | +``` |
|
178 | +apt install tcpdump nmap dnsutils traceroute tcptraceroute arping vlan |
|
103 | 179 | ``` |
104 | -[TODO: vérifier le nom des paquets] |
|
105 | 180 | |
106 | -## Configuration de sshd |
|
107 | - Voici les options qui doivent apparaître impérativement dans `/etc/ssh/sshd_config` : |
|
181 | +ZSH parce que c'est bon pour la santé : |
|
182 | +``` |
|
183 | +apt install zsh |
|
184 | +``` |
|
185 | + |
|
186 | +## Configuration initiale |
|
187 | +Après avoir installé les paquets importants, nous allons les configurer. Cette étape est très importante car c'est celle-ci qui nous permettra d'avoir une configuration homogène et sécurisée au ResEl. |
|
188 | + |
|
189 | + |
|
190 | +### Configuration de sshd |
|
191 | + |
|
192 | +[SSHD](https://en.wikipedia.org/wiki/Secure_Shell) est le service permettant de se connecter à distance à une machine. Il est essentiel de bien le configurer pour éviter les intrusions dans le réseau. |
|
193 | + |
|
194 | +Ce service est configuré avec l'aide du playbook Ansible [deploy-ssh-keys.yml](https://git.resel.fr/confs/ansible/blob/master/playbooks/deploy-ssh-keys.yml). Attention, il faut activer l'option `configure_sshd: False` dans le rôle `sshd` sur le serveur voulu. |
|
195 | + |
|
196 | +Voici les options qui doivent apparaître impérativement dans `/etc/ssh/sshd_config` : |
|
108 | 197 | |
109 | 198 | ``` |
110 | 199 | Protocol 2 |
... | ... | @@ -114,36 +203,75 @@ StrictModes yes |
114 | 203 | PermitEmptyPasswords no |
115 | 204 | AllowGroups sshusers |
116 | 205 | ``` |
117 | -Et bien sûr, créer le groupe `sshusers` et ajouter les administrateurs humains dans le groupe `sshusers`. |
|
206 | +Pour éviter que n'importe quel utilisateur puisse se connecter sur les machines, nous utilisons un groupe s'appellant `sshusers`. Seuls les utilisateurs de ce groupe peuvent se connecter à la machine. |
|
207 | + |
|
208 | +```bash |
|
209 | +groupadd sshusers |
|
210 | +``` |
|
211 | + |
|
212 | +Puis ajoutez les utilisateurs que vous désirez dans le groupe : |
|
213 | +```bash |
|
214 | +adduser lcarr sshusers |
|
215 | +adduser mrobin sshusers |
|
216 | +``` |
|
217 | + |
|
218 | +**Quelques liens** |
|
219 | +* [Géré votre client ssh](https://wiki.resel.fr/Guides/Connexion-SSH) |
|
220 | + |
|
221 | +### Configuration de sudo |
|
222 | + |
|
223 | +[sudo](https://www.sudo.ws/) est la commande linux permettant de déléguer une commande à un autre utilisateur, typiquement root. |
|
118 | 224 | |
119 | -## Gestion du temps |
|
225 | +La configuration par défaut devrait suffire, simplement vérifiez que le groupe `sudo` est bien défini dans le `visudo` : |
|
226 | +```bash |
|
227 | +visudo |
|
228 | +``` |
|
229 | +Doit contenir : |
|
230 | +``` |
|
231 | +%sudo ALL=(ALL:ALL) ALL |
|
232 | +``` |
|
233 | + |
|
234 | + |
|
235 | +### Configuration de la gestion du temps |
|
120 | 236 | Voir aussi : [Le NTP au ResEl](Services/NTP) |
121 | 237 | |
122 | 238 | Le client NTP (Network Time Protocol) permet aux différents pc du ResEl d'être à la même heure, ce qui est bien utile lorsqu'un problème survient et que l'on doit étudier les logs. On préfère installer un serveur de temps local sur chaque serveur, ce qui présente l'avantage d'une synchronisation continue. |
123 | 239 | |
124 | -Le serveur de temps du ResEl est disponible à l'adresse ntp[.adm|.adm-pub].resel.fr. Il faut modifier la variable server dans `/etc/ntp.conf` : |
|
240 | +Le serveur de temps du ResEl est disponible à l'adresse `ntp[.adm|.adm-pub].resel.fr`. Il faut modifier la variable server dans `/etc/ntp.conf` : |
|
125 | 241 | ``` |
126 | 242 | server ntp.resel.fr iburst dynamic |
127 | 243 | ``` |
128 | -[TODO: Second serveur de temps ?] |
|
129 | 244 | |
245 | +### Configuration de ZSH |
|
246 | + |
|
247 | +[ZSH](http://www.zsh.org/) est un super shell que l'on aime bien utiliser au ResEl. Vous pouvez mettre la configuration "ResEl" par défaut avec le playbook [zsh.yml](https://git.resel.fr/confs/ansible/blob/master/playbooks/zsh.yml). |
|
130 | 248 | |
249 | +TODO (rédacteur) : |
|
250 | +* Détailler la configuration par défaut |
|
131 | 251 | |
132 | 252 | ## Monitoring |
133 | 253 | Voir aussi : [le monitoring au ResEl](Monitoring) |
134 | 254 | |
255 | +Le monitoring est une partie essentielle de la configuration de la machine, ne la négligez pas. |
|
256 | + |
|
257 | + |
|
135 | 258 | ### Serveur de mail |
136 | 259 | Voir aussi : [Gestions des mails machines](Services/Postfix) |
137 | 260 | |
138 | - Il faut dans tous les cas configurer le serveur mail, afin de faire suivre les mails donnant le résultat des commandes programmées (crontab), etc. Les écrans debconf de exim4 ou postfix permettent de configurer facilement un serveur qui se contente d'envoyer des mails, il s'agit d'un « smarthost ». Les mails sont à faire suivre au serveur de courrier du ResEl. Le serveur SMTP ne doit pas écouter sur l'interface eth0, ce n'est pas nécessaire. En éditant `/etc/aliases`, les mails destinés au root local sont généralement transmis à root@<machine>.resel.fr. |
|
261 | +L'envoi de mails est la méthode la plus basique pour surveiller une machine. De nombreuses informations passent par les e-mails, c'est la méthode historique, et elle risque de rester la méthode principale pendant un moment. |
|
262 | + |
|
263 | + |
|
264 | +TODO: Tout ce qui suit c'est du charabia, si vous comprenez félécitations. Moi je ne comprends rien... |
|
265 | + |
|
266 | +Il faut dans tous les cas configurer le serveur mail, afin de faire suivre les mails donnant le résultat des commandes programmées (crontab), etc. Les écrans debconf de exim4 ou postfix permettent de configurer facilement un serveur qui se contente d'envoyer des mails, il s'agit d'un « smarthost ». Les mails sont à faire suivre au serveur de courrier du ResEl. Le serveur SMTP ne doit pas écouter sur l'interface eth0, ce n'est pas nécessaire. En éditant `/etc/aliases`, les mails destinés au root local sont généralement transmis à root@<machine>.resel.fr. |
|
139 | 267 | |
140 | 268 | *Exemple pour Postfix* : internet with smarthost, avec un relais pegase.adm.resel.fr et l'envoi des mails root locaux à root@…, ainsi que les mails de security vers security@…. Il convient de modifier /etc/postfix/main.cf et mettre en crochets [pegase.adm.maisel.enst-bretagne.fr] pour éviter d'utiliser la résolution du MX. |
141 | 269 | |
142 | 270 | |
143 | 271 | ### Log des événements |
144 | -Voir aussi [Monitoring/Syslog](Monitoring/Syslog) |
|
272 | +Voir aussi : [Monitoring/Syslog](/Monitoring/Syslog) |
|
145 | 273 | |
146 | - Le ResEl utilise LogCheck pour surveiller l'activité sur le serveur. Installer syslog-ng (qui remplace rsyslog ou syslogd qui est installé par défaut), et dans `/etc/syslog-ng/syslog-ng.conf`. |
|
274 | +Le ResEl utilise LogCheck pour surveiller l'activité sur le serveur. Installer syslog-ng (qui remplace rsyslog ou syslogd qui est installé par défaut), et dans `/etc/syslog-ng/syslog-ng.conf`. |
|
147 | 275 | |
148 | 276 | Pour envoyer les logs vers veronica, comme indiqué à la fin du fichier de conf par défaut, créer un nouveau fichier dans `/etc/syslog-ng/conf.d/`. Appelez le `veronica.conf` par exemple (il faut obligatoirement terminer le nom de fichier par .conf pour qu'il soit pris en compte) et ajoutez-y les lignes suivantes: |
149 | 277 | |
... | ... | @@ -170,7 +298,7 @@ sudo systemctl restart syslog-ng |
170 | 298 | ### Icinga2 |
171 | 299 | Voir aussi : [Monitoring/Icinga](Monitoring/Icinga) |
172 | 300 | |
173 | - Ajouter un fichier dans la configuration de Icinga2 sur le master eris, dans /etc/icinga2/zones.d/<campus> et reload icinga2. |
|
301 | +Ajouter un fichier dans la configuration de Icinga2 sur le master eris, dans /etc/icinga2/zones.d/<campus> et reload icinga2. |
|
174 | 302 | ``` |
175 | 303 | sudo icinga2 daemon --validate |
176 | 304 | sudo systemctl restart icinga2 |
... | ... | @@ -209,7 +337,6 @@ Sur DGSI, ajouter la machine à la liste de celles qu'il faut scanner, dans `/et |
209 | 337 | *[Attention, le plugin APT est (encore) buggué, voir le ticket résolu à ce sujet.](https://trac.resel.fr/ticket/584)* |
210 | 338 | |
211 | 339 | |
212 | - |
|
213 | 340 | ## Mises à jour |
214 | 341 | Installer apticron, apt-listchanges et apt-listbugs. |
215 | 342 | |
... | ... | @@ -249,7 +376,7 @@ deb-src http://security.debian.org/ jessie/updates main |
249 | 376 | |
250 | 377 | Voir sur [BackpPC](/Services/Backuppc) |
251 | 378 | |
252 | -## S.M.A.R.T. |
|
379 | +## S.M.A.R.T. (uniquement machines physiques) |
|
253 | 380 | Voir aussi [Monitoring/S.M.A.R.T.](Monitoring/SMART) |
254 | 381 | |
255 | 382 | Les données S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) permettent aux disques durs et SSD de remonter de nombreux indicateurs sur leur durée de vie, leurs cycles de fonctionnement, leur usage,... |
... | ... | @@ -270,7 +397,7 @@ Il faut également éditer le fichier de configuration `/etc/smartd.conf`, comme |
270 | 397 | /dev/sdb -a -o on -S on -s (S/../.././05|L/../../6/05) -m root |
271 | 398 | ``` |
272 | 399 | |
273 | -## Onduleurs |
|
400 | +## Onduleurs (uniquement machines physiques) |
|
274 | 401 | Voir aussi [Monitoring/S.M.A.R.T.](Monitoring/Onduleurs) |
275 | 402 | |
276 | 403 | Si la machine est une machine physique il faut qu'elle écoute un onduleur pour pouvoir s'éteindre en toute sécurité. |