# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
#!/bin/sh
set -e
# Systemd systems use a systemd timer unit which is preferable to
# run. We want to randomize the apt update and unattended-upgrade
# runs as much as possible to avoid hitting the mirrors all at the
# same time. The systemd time is better at this than the fixed
# cron.daily time
if [ -d /run/systemd/system ]; then
exit 0
fi
check_power()
{
# laptop check, on_ac_power returns:
# 0 (true) System is on main power
# 1 (false) System is not on main power
# 255 (false) Power status could not be determined
# Desktop systems always return 255 it seems
if which on_ac_power >/dev/null 2>&1; then
on_ac_power
POWER=$?
if [ $POWER -eq 1 ]; then
return 1
fi
fi
return 0
}
# sleep for a random interval of time (default 30min)
# (some code taken from cron-apt, thanks)
random_sleep()
{
RandomSleep=1800
eval $(apt-config shell RandomSleep APT::Periodic::RandomSleep)
if [ $RandomSleep -eq 0 ]; then
return
fi
if [ -z "$RANDOM" ] ; then
# A fix for shells that do not have this bash feature.
RANDOM=$(( $(dd if=/dev/urandom bs=2 count=1 2> /dev/null | cksum | cut -d' ' -f1) % 32767 ))
fi
TIME=$(($RANDOM % $RandomSleep))
sleep $TIME
}
# delay the job execution by a random amount of time
random_sleep
# ensure we don't do this on battery
check_power || exit 0
# run daily job
exec /usr/lib/apt/apt.systemd.daily
Indicateur | Définition |
system | CPU time spent by the kernel in system activities |
user | CPU time spent by normal programs and daemons |
nice | CPU time spent by nice(1)d programs |
idle | Idle CPU time |
iowait | CPU time spent waiting for I/O operations to finish when there is nothing else to do. |
irq | CPU time spent handling interrupts |
softirq | CPU time spent handling "batched" interrupts |
steal | The time that a virtual CPU had runnable tasks, but the virtual CPU itself was not running |
guest | The time spent running a virtual CPU for guest operating systems under the control of the Linux kernel. |
Indicateur | Définition |
apps | Memory used by user-space applications. |
page_tables | Memory used to map between virtual and physical memory addresses. |
swap_cache | A piece of memory that keeps track of pages that have been fetched from swap but not yet been modified. |
slab_cache | Memory used by the kernel (major users are caches like inode, dentry, etc). |
cache | Parked file data (file content) cache. |
buffers | Block device (e.g. harddisk) cache. Also where "dirty" blocks are stored until written. |
unused | Wasted memory. Memory that is not used for anything at all. |
swap | Swap space used. |
vmalloc_used | 'VMalloc' (kernel) memory used |
committed | The amount of memory allocated to programs. Overcommitting is normal, but may indicate memory leaks. |
mapped | All mmap()ed pages. |
active | Memory recently used. Not reclaimed unless absolutely necessary. |
inactive | Memory not currently used. |
Je viens de Passer 1 Po (soit 8 Pb) en 149 jours pour le serveur https://ubuntu.lafibre.info qui distribue les mises à pour pour la France.
$ uptime
17:01:09 up 149 days, 11:40, 1 user, load average: 0,30, 0,48, 0,39
$ ifconfig
lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:65536 Metric:1
Packets reçus:1755415 erreurs:0 :0 overruns:0 frame:0
TX packets:1755415 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1
Octets reçus:1737669659 (1.7 GB) Octets transmis:1737669659 (1.7 GB)
p1p1 Link encap:Ethernet HWaddr 90:e2:ba:19:f7:50
inet adr:194.158.119.190 Bcast:194.158.119.191 Masque:255.255.255.252
adr inet6: fe80::92e2:baff:fe19:f750/64 Scope:Lien
adr inet6: 2001:860:f70a:100::2/64 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:319436905449 erreurs:0 :0 overruns:0 frame:0
TX packets:672964588886 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:24466146214985 (24.4 TB) Octets transmis:1001402094413622 (1.0 PB)
Tu es sur que RedHat n'a pas distribué le correctif ?
Cela m'étonne fortement.
Pour Ubuntu, il est disponible depuis le 20 octobre à 5h45 du matin, sur le serveur de mise à jour utilisé par défaut en France (https://ubuntu.lafibre.info)
Comme je gère ce serveur, j'ai réalisé quelques stats. J'ai bien nettoyé les log de tout ce qui est script et j'ai également par mégarde supprimé les mises à jour réalisées depuis un mobile (le serveur reçois le code 304 - Document non modifié depuis la dernière requête, car il est en cache coté FAI).
Nombre de mises à jour du noyau correctif par heure :
(https://lafibre.info/testdebit/ubuntu/201610_stats_ubuntu_repartition_horaire.png)
Le nombre de machines non patchées dois être encore très important.
Nombre de mises à jour du noyau correctif par heure et par distribution :
(https://lafibre.info/testdebit/ubuntu/201610_stats_ubuntu_repartition_horaire_par_distribution.png)
Je rappelle que les autres version d'Ubuntu ne sont plus maintenues.
Nombre de mises à jour du noyau correctif par heure par architecture : (i386 = 32bits / AMD64 = 64bits)
(https://lafibre.info/testdebit/ubuntu/201610_stats_ubuntu_repartition_horaire_par_architecture.png)
Voici un fichier Calc avec les données sources, si vous pensez qu'il y a d'autres graphes à faire : 201610_stats_ubuntu.ods (https://lafibre.info/testdebit/ubuntu/201610_stats_ubuntu.ods)
(lisible avec Libre office Calc et Microsoft Excel)
# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of requests a server process serves
# Nb de slots total (busy + idle + free) est la valeur la plus basse entre :
# - MaxRequestWorkers (150 par défaut)
# - ThreadsPerChild (25 par défaut) * ServerLimit (16 par défault)
# Nb de slots idle au démarrage à vide est la valeur la plus haute entre :
# - MinSpareThreads (25 par défaut) arrondi supérieur, pour être un multiplde entier de ThreadsPerChild
# - ThreadsPerChild (25 par défaut) * StartServers (2 par défaut)
# Nb minimal de slots idle quand de nombreux slots sont "busy" :
# = MinSpareThreads (25 par défaut) avec un arrondi supérieur pour que
# busy + idle soient un multiplde entier de ThreadsPerChild (25 par défaut)
# Nb maximal de slots idle quand de nombreux slots sont "busy" :
# = MaxSpareThreads (75 par défaut) avec un arrondi supérieur pour que
# busy + idle soient un multiplde entier de ThreadsPerChild (25 par défaut)
<IfModule mpm_event_module>
# Nombre de processus enfants du serveur créés au démarrage
# Influence uniquement le nb de slots idle au démarrage
# Régle pour déterminer StartServers: arrondi supérieur de
# (MinSpareThreads / ThreadsPerChild) + (MaxRequestWorkers / (40 x ThreadsPerChild))
#StartServers 2
StartServers 9
# Limite supérieure de la définition du nombre de processus
# Régle pour déterminer ServerLimit: MaxRequestWorkers / ThreadsPerChild
# Pour modifier ServerLimit un restart est nécessaire (donc coupure des connexions en cours)
# Je conseille donc de prendre une marge ServerLimit = 1.5 x (MaxRequestWorkers / ThreadsPerChild)
# Permet, par la suite, d'augmenter de 50% ThreadsPerChild avec un simple reload
# ServerLimit 16
ServerLimit 150
# Nombre minimum de threads inactifs qui seront disponibles
# pour pouvoir traiter les pics de requêtes
# Régle pour déterminer MinSpareThreads: 20 + (MaxRequestWorkers / 20)
#MinSpareThreads 25
MinSpareThreads 145
# Nombre maximum de threads inactifs
# But: libérer de la RAM inutilisée après un pic de trafic
# Régle pour déterminer MaxSpareThreads: 3 x MinSpareThreads
#MaxSpareThreads 75
MaxSpareThreads 435
# Le nombre de threads maximum que l'on peut définir par processus enfant
# Il est possible de modifier ThreadsPerChild par un simple reload jusqu'à ThreadLimit
# Pour modifier ThreadLimit un restart est nécessaire (donc coupure des connexions en cours)
# Si ThreadLimit > ThreadsPerChild, de la mémoire partagée supplèmentaire sera inutilement allouée.
# Régle pour ThreadLimit: ne pas toucher a la valeur par défault: 64 quel que soit MaxRequestWorkers
# Régle pour déterminer ThreadsPerChild: 25 (valeur par défault), quel que soit MaxRequestWorkers
#ThreadLimit 64
ThreadLimit 25
# Nombre de threads créés par chaque processus enfant
# Influence le nb total de slots max ET le nb minimal de slots
# Si > 40, Apache ne répond plus a certaines requetes, quand il y a de nombreuses connexions asychrones
# Régle pour déterminer ThreadsPerChild: 25 (valeur par défault), quel que soit MaxRequestWorkers
ThreadsPerChild 25
# Nombre maximum de connexions pouvant être traitées simultanèment
# Détermine le nombre de requetes actives pouvant être traitées simltanèment.
# A déterminer en fonciton de la charge et de la mémoire disponible
# Il est possible de modifier MaxRequestWorkers par un simple reload
#MaxRequestWorkers 150
MaxRequestWorkers 2500
# Limite le nombre de connexions qu'un processus enfant va traiter au cours de son fonctionnement
# Définir MaxConnectionsPerChild à une valeur non nulle limite la quantité de mémoire
# qu'un processus peut consommer à cause de fuites (accidentelles) de mémoire.
# Régle pour déterminer MaxConnectionsPerChild: fixé à 0, sauf fuite mémoire importante
MaxConnectionsPerChild 0
# Cette directive permet de personnaliser finement la limite du
# nombre de connexions par thread. Un processus n'acceptera de
# nouvelles connexions que si le nombre actuel de connexions
# (sans compter les connexions à l'état "closing") est inférieur à:
# ThreadsPerChild + (AsyncRequestWorkerFactor * nombre de threads inactifs)
# A faire varier entre 1.5 et 3 en fonction du type de clients du site
# Régle pour déterminer AsyncRequestWorkerFactor: fixé à 2 (valeur par défault)
# Note: Si vous modifiez la valeur par défaut, vous devrez effectuer des tests approfondis
AsyncRequestWorkerFactor 2
</IfModule>
M | Mode of operation : "_" Waiting for Connection, "S" Starting up, "R" Reading Request, "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup, "C" Closing connection, "L" Logging, "G" Gracefully finishing, "I" Idle cleanup of worker, "." Open slot with no current process |
SS | Seconds since beginning of most recent request |
Req | Milliseconds required to process most recent request |
Conn | Kilobytes transferred this connection |
Les reboot du serveur pour appliquer les mises à jour de sécurité :
Pour le livepatch tu payes le service ?
Je viens de rajouter deux mesures de protections supplèmentaires : (je suis preneur de vos autres idées)
# Temps pendant lequel le serveur va attendre certains évènements avant de considérer
# qu'une requête a échoué. Lors de la lecture de données en provenance du client,
# c'est le temps maximum jusqu'à l'arrivée d'un paquet TCP si le tampon est vide.
# Défaut: TimeOut 60
# Réduire le TimeOut a 30 secondes, permet de limiter le temps maximum pendant
# lequel Apache httpd va attendre des entrées/sorties, lors des attaques de slow DDOS.
Timeout 30
# Spécifie le délai maximum après lequel le serveur va s'arrêter dans le cas d'un arrêt "en douceur"
# Défaut: GracefulShutdownTimeout 0 => le serveur va attendre jusqu'à ce que toutes les requêtes en cours aient été traitées.
# Réduire le GracefulShutdownTimeout a une heure (3600 secondes) permet de réduire certains attaques slow DDOS.
# Réduire cette valeur en dessous d'une heure peut poser problème pour des clients avec du bas débit
# Une connexion a 400 Kb/s (50 Ko/s) est en mesure de télécharger 180 Mo en une heure.
GracefulShutdownTimeout 3600
Environ 700 000 machines se connectent a ce serveur chaque jour pour récupérer les mises à jour de sécurité.Ca commence à faire beaucoup, 700 000 machines.
Hugues a répondu avant moi.
Les statistiques d'hier :
- Ubuntu 18.04 : 4.817% (34847 separate computers)
- Ubuntu 17.10 : 6.323% (45744 separate computers)
- Ubuntu 17.04 : 2.063% (14925 separate computers)
- Ubuntu 16.10 : 1.285% (9301 separate computers)
- Ubuntu 16.04 LTS: 57.308% (414574 separate computers)
- Ubuntu 15.10 : .634% (4593 separate computers)
- Ubuntu 15.04 : .910% (6585 separate computers)
- Ubuntu 14.10 : .157% (1139 separate computers)
- Ubuntu 14.04 LTS: 18.539% (134117 separate computers)
- Ubuntu 13.10 : .273% (1976 separate computers)
- Ubuntu 13.04 : .173% (1253 separate computers)
- Ubuntu 12.10 : .127% (919 separate computers)
- Ubuntu 12.04 LTS: 5.904% (42712 separate computers)
- Ubuntu 11.10 : .143% (1035 separate computers)
- Ubuntu 11.04 : .122% (886 separate computers)
- Ubuntu 10.10 : .046% (334 separate computers)
- Ubuntu 10.04 LTS: .960% (6948 separate computers)
- Ubuntu 9.10 : .044% (321 separate computers)
- Ubuntu 9.04 : .029% (215 separate computers)
- Ubuntu 8.10 : .006% (45 separate computers)
- Ubuntu 8.04 LTS: .109% (793 separate computers)
- Ubuntu 7.10 : .003% (27 separate computers)
- Ubuntu 7.04 : .002% (18 separate computers)
- Ubuntu 6.10 : 0% (2 separate computers)
- Ubuntu 6.06 LTS: .012% (94 separate computers)
- Ubuntu 5.10 : 0% (3 separate computers)
- Ubuntu 5.04 : 0% (1 separate computers)
- Ubuntu 4.10 : 0% (0 separate computers)
Total Ubuntu : 100% (723407 separate computers)
Il n'est pas possible de faire la différence entre une station avec interface graphique vs serveur sans interface graphique.
Il n'est pas non plus possible de savoir ce qui est Ubuntu / Kubuntu / Xubuntu / Lubuntu / Ubuntu Budgie / Ubuntu Mate / Ubuntu Studio ou des distributions autres qui utilisent les paquets Ubuntu. Linux Mint utilise soit les paquets Ubuntu (Éditions standard / Éditions dérivées comme Mate, Xfce ou KDE) soit les paquets Debian (Linux Mint Debian).
Je me demande si "Ubuntu 12.04 LTS Extended Security Maintenance" (extension de maintenance payante au-delà des 5 années incluses de base) pointe sur me dépôts ou si tout passe un dépôt spécifique et protégé par authentification.
Au total seul 87% des requêtes sont réalisés par des versions d'Ubuntu maintenus, si on suppose qu'il n'y a pas d'Extended Security Maintenance. Il y a toujours eu une part non négligeable de version d'Ubuntu qui ne sont plus maintenu (13% actuellement, dont 5,9% pour Ubuntu 12.04 et 2,1% pour Ubuntu 17.04) qui sont toujours connecté à Internet et qui vont voir tous les jour si il y a des mises à jour.
Pour quelles raisons des personnes utilisent encore les anciennes versions Ubuntu (ou dérivés) ?
C'est la même chose :
- Pas envie de changer qq chose qui fonctionne / N'ose pas faire la mise à jour / Ne sais pas faire / Ne comprend pas l’intérêt de le faire
- Ne sait pas faire la mise à jour (exemple mot de passe root perdu avec connexion automatique au démarrage : la perte du mot de passe ne bloque que les mises à jour et l'installation de nouveaux logiciels)
- CPU trop ancien pour supporter la nouvelle version (Si tu as un Pentium III ou un Athlon XP, il faut prendre une veille version : car aucun navigateur web moderne ne supporte un CPU sans les 144 instruction SSE2 : Sous Linux comme sous Windows ces instructions sont nécessaires à tous les navigateurs web dans leur dernières versions)
- Pas assez de RAM pour une utilisation fluide avec la nouvelle version (la consommation en RAM augmente au fur et à mesure)
- Connexion Internet 128Kb/s trop lente pour télécharger les mises à jour