Infos
Malwares et exploits
Apache
Authentification
CVE-2016-4484 : vulnérabilité au niveau de Cryptsetup
(shell-scripts qui gèrent les partitions encryptées au format LUKS) - article
des chercheurs, dracut serait également vulnérable, article
fr, article angl
CVE-2016-0728 : cette vulnérabilité - à patcher -
existerait depuis 2012, et impacterait les distribs GNU/Linux (à partir de la version 3.8 du noyau Linux) et 66% des appareils sous Android.
201501 - GHOST (glibc)
Infos : découverte de la faille et explications, article
Buffer overflow dans la fonction __nss_hostname_digits_dots() de la librairie GNU glibc, fonction
appelée par les fonctions de la famille gethostbyname(). Cette faille affecte les distributions GNU/Linux utilisant glibc-2.2 à glibc-2.17.
Mesures à prendre
- Un patch est sorti en 2013 => installer glibc 2.18 ou ultérieure.
201411 - Failles SSLv3 (OpenSSL) - POODLE, etc.
Articles : en français ici, là, et là...
Infos et versions d'OpenSSL patchées
Mesures à prendre
201409 - Shellshock (shell Bash)
Article
201404 - Heartbleed (OpenSSL)
Articles : angl
Infos et versions patchées
Outils
sslh - permet d'avoir plusieurs services (SSH, HTTPS, etc.) sur le port 443
Outils logiciels de sécurité
Audit : vérifier son propre ordinateur comme si on était un intrus : vérifier le réseau, les ports, les services, les processus, les
fichiers et le noyau Linux ; et supprimer ce qui n'est pas nécessaire (services, etc.).
Ensuite, utiliser des outils d'audit
Anti-virus & contrôle des emails
- Doc Ubuntu
- ClamAV - (wikipédia fr | angl).
- Clamtk : interface graphique pour ClamAV.
- Désinfection d'un PC équipé de Windows : démarrer sur un LiveCD GNU/Linux, exécuter Clam et effectuer un test du disque dur.
- ClamWin - wikipedia
(Windows) -- performant en recherche de virus dans les fichiers et emails mais pas de protection temps réel
- Comodo antivirus pour Linux
Isolation
namespace : pam_namespace (RHEL 5, 6, etc.), SELinux sandbox (RHEL 6, etc.), SystemD (Fedora 17).
Container et cgroups
chroot
IDS (Intrusion Detection Software) et IPS (Intrusion Prevention Software)
- Snort (IDS & IPS)
- Prelude : Security Information Management (SIM) universel
- interfaces à Prelude : Piwi, Prewikka
- Recherche dans les logs d'activité suspecte
- FAM (File Alteration Monitor / pister
les fichiers modifiés), FIM (File Integrity Monitoring)
- Détection de rootkit
Sécurité multi-niveaux
Renforcer la sécurité au niveau authentification
- Fail2ban : analyse les fichiers de log, et - en ajoutant des règles au pare-feu - bannit les adresses
IP des ordinateurs qui échouent un certain nombre de fois au niveau authentification.
Renforcer
la sécurité au sein du s.e. GNU/Linux
Sécuriser le boot
Sécurité au niveau mémoire
Sécuriser le noyau Linux
KernelHardening
/etc/sysctl.d (Ubuntu)
- 10-kernel-hardening.conf
- après modif, exécuter service procps start (ou : invoke-rc.d procps start)
sysctl.conf
Renforcement de la sécurité au niveau des privilèges et des applications
-
-
AppArmor
-
SELinux
- Infos : Wikipédia
- Sécurité multi-niveaux : mélange de TE
(contexte de sécurité au niveau fichier, label), MAC (Mandatory Access Control), RBAC
(Role-Based Access Control) et MIC (Mandatory Integrity Controls).
- - - L'Access Control n'est pas utilisable au niveau du montage de systèmes de fichiers NTFS (car NTFS ne gère pas le security label).
- Utilisé par RHEL, Ubuntu, etc.
- Commandes : getenforce/setenforce (indique/configure le mode en cours), chcon, restorecon, etc.
- Tutos : blog de Dan Walsh, Using
Apache and SELinux Together, Relocating an Apache DocumentRoot under
SELinux
Comparaison AppArmor-SELinux
Sécurité au niveau des exécutables
- Capabilities - au lieu de se voir attribuer tous les privilèges (par le set-user-ID-root), un exécutable peut se voir attribuer des
privilèges spécifiques (le noyau Linux 3.2 en a 36)
- ExecutableBit
- A partir de la version 10.10, Ubuntu n'autorise plus d'exécuter des programmes Windows dans Wine (ce n'était pas le cas jusqu'en Ubuntu 10.04).
Sécuriser l'ordinateur
Avec des mots de passe robustes
Outils
Sécuriser
Sécuriser ses mots de passe avec un logiciel (Infos
fr Ubuntu)
Sécuriser ses données au niveau disque, ou au niveau partition/volume
Sécuriser ses données au niveau partition/volume, ou au niveau
fichier
Sécuriser l'effacement de données (fichier, partition, disque dur)
Sécuriser les fichiers ramenés d'Internet
Shell & terminal sécurisé
Mosh (Mobile shell)
Terminal interactif, qui peut remplacer un terminal SSH.
Freeware pour GNU/Linux, BSD, macOS, Solaris, Android, Chrome, et iOS.
Installable sur les distribs Debian, RHEL, et dérivées. Utilisable avec nginx.
Tuto install, config, et utilisation
Authentification par login et password ou certificat.
- Clé et certificat
- Connexion sécurisée
- Debug
- Port forwarding (permet de s'adresser à machine_distante:port_distant au travers du port local)
- ssh -L port_local:machine_distante:port_distant
- Ce tunnel peut être également réalisé par un logiciel tiers, Putty,
etc.
- Protection
- Dévalider le login SSH des
utilisateurs, ou de root (en
ajoutant "PermitRootLogin no" dans /etc/ssh/ssh_config ou dans /etc/ssh/sshd_config)
- Le programme python denyhosts permet de blacklister automatiquement les adresses IP qui effectuent une attaque brute SSH (tentative de se logguer par essais
successifs de mdp) en ajoutant ces adresses IP dans le fichier /etc/hosts.deny
- Transfert sécurisé : sftp (SSH File Transfer Protocol), scp
- ex : sftp -P num_du_port login@url.com, sftp -o Port=num_du_port login:mdp@url.com, etc.
OpenSSL est une librairie, utilisée par les logiciels serveurs (Apache, etc.)
Liens
Quelques commandes
- $ openssl version -a ; lsof | egrep "libssl|crypto" (version d'OpenSSL, et des libs utilisées)
- $ for i in $(lsof | awk '/openssl/ { print $1 }' | sort | uniq) ; do chkconfig --list | grep $i | awk '{ print $1 }' ; done
- $ netstat -atulp | grep https (pour voir port(s) à l'écoute)
- $ lsof -iTCP:https ; lsof -i TCP:443
Test de connexion
- $ openssl version ; openssl s_client
-connect le_hostname:port -tls1 (ou ssl3, ou rien, etc.)
TLS : à utiliser, la version 1.2 est à préférer, car
c'est la version la plus récente et la plus sécurisée
Guide TLS (serveur et client)
SSL : ne plus l'utiliser.
VPN
WireGuard : multi-plate-formes
Quelques commandes
CPU et BIOS - vérification de la fonctionnalité NX
- # /usr/bin/check-bios-nx --verbose
- retourne 0 si CPU et BIOS ok
- retourne 1 si CPU ok mais NX désactivé au niveau BIOS.
- NX (No-eXecute) permet d'interdire l'exécution de code dans certaines zones
mémoire.
GNU/Linux
- $ sudo
- $ id un_utilisateur
- $ groups un_utilisateur
- $ getent passwd
- $ getent group ; getent group un_utilisateur
- Vérif. des groupes dont fait partie un utilisateur
- # for i in `groups un_utilisateur | awk -F: '{print $2}'` ; do getent group | grep "^$i" ; done
- $ getent initgroups un_utilisateur | tr -s ' ' | cut -d ' ' -f2- | xargs getent group (Ubuntu)
Config GNU/Linux
/etc/nsswitch.conf
/etc/default/nss
Passer root ou exécuter une commande avec les droits root (pour administrer le s.e. il est nécessaire d'être administrateur).
Commandes su, gksudo et sudo
Le compte root est verrouillé par défaut. Pour le déverrouiller (et pour pouvoir utiliser la "recovery console" du menu grub) : sudo passwd
root
Alternatives au déverrouillage du compte root
- su : permet de changer d'utilisateur ou de passer root (utiliser sudo est préférable)
- doc Ubuntu :: su | root
- pour pouvoir devenir root avec su, il faut avoir défini un mot de passe pour root ($ sudo passwd root)
- utiliser le signe - pour devenir root avec son environnement (PATH, etc.) :
- exécuter une commande en tant que root
- $ su -c commande
- $ su -c nautilus
- $ su -c "fdisk -l"
- $ su utilisateur –c commande
- gksudo : permet d'exécuter une application en tant que root (le mot de passe est demandé dans une fenêtre)
- sudo : permet d'exécuter une application en tant que root ou autre
utilisateur
- Config : se fait par la commande visudo, qui édite /etc/sudoers.
- Doc
- Exemples
- $ sudo nautilus
- $ sudo –u utilisateur commande
- Si plusieurs commandes sont à exécuter, deux solutions pour éviter de taper sudo devant chaque commande :
- $ sudo -s
- $ sudo -i
- $ sudo bash
- Attention
- Utiliser : "ssh -t le_hostname sudo la_commande" (car, sans l'option -t, le mot de passe passe en clair dans le réseau)
Pour utiliser nautilus avec les droits root, 2 solutions :
- installer nautilus-gksu, ce qui créera une nouvelle entrée "Ouvrir en tant qu'administrateur" dans le menu contextuel.
- ou créer le shell-script nautilus-root suivant dans "~/.gnome2/nautilus-scripts" et lui donner les droits d'exécution, ensuite click-droit dans
toute fenêtre nautilus et exécuter ce script
- #!/bin/bash
# nautilus-root --- ouvre un nautilus en root.
gksudo -u root -k -m "Exécuter un nautilus en root" "nautilus --no-desktop $NAUTILUS_SCRIPT_CURRENT_URI"
Pb de connexion à distance ?
=> vérifier :
- par les commandes
- $ netstat -anp
- $ iptables -L -v
- le fichier
- si ça ne vient pas de SELinux
Parano, vie privée
Analyser les communications des services par tcpdump
Empêcher certaines communications par iptables
Arrêter les services (démons) inutiles et empêcher leur démarrage automatique
Certains services sont démarrés par les scripts du dossier init.d
Vérif
- # for i in `ls -1 /etc/init.d`; do service $i status ; done
- # service slapd status
Pour les désactiver :
- # chkconfig --del le_service
- ou, par le GUI : System Settings > Server settings > Services
- netstat -ntulp (vérification)
Autre moyen, par ex, pour OpenLDAP
- $ sudo invoke-rc.d slapd stop
- $ sudo update-rc.d -f slapd remove (enlève les liens /etc/rcx.d/xxxslapd vers /etc/init.d/slapd)
D'autres sont démarrés à la demande par xinetd
Pour les désactiver :
- sous /etc/xinetd.d, configurer "disable = yes" dans le fichier de config du service
- # /etc/rc.d/init.d/xinetd reload
- netstat -ntulp (vérification)
Ports
Configuration réseau
IPv6
- /etc/sysctl.d/10-ipv6-privacy.conf (Ubuntu)
- après modif, exécuter service procps start (ou : invoke-rc.d procps start)
Activer le "Reverse Path Filtering" (Filtrage de Chemin inverse) par ce petit script-shell, vu
ici :
Se protéger du spoofing
- /etc/sysctl.d/10-network-security.conf
- net.ipv4.conf.default.rp_filter=1 (vérification
de l'adresse source)
net.ipv4.conf.all.rp_filter=1
Se protéger des attaques par inondation SYN (SYN-flood, TCP-SYN)
Se protéger des dénis de service
Assurer un accès à distance (via ssh) quel que soit l'état du trafic
Vie privée, sécurité - configuration
Chercher dans la fenêtre de recherche de ce site-ci : "vie privée" (ou privacy)
Distributions GNU/Linux - sécuriser
Recommandations de l'ANSSI (gouv.fr) concernant la
sécurité des machines sous GNU/Linux (PDF de fév. 2019)
Arch
Debian, doc
fr Debian
Fedora 22, etc.
Red Hat
SUSE
Ubuntu
|