FUNIX

Mettez un manchot dans votre PC



Sécuriser son poste linux
Présentation  |  Attaques possibles ( Compte utilisateurLes outils "r" (rsh, rlogin, ...) , FTP  , Les outils de stats  ,  NFS , Serveur web  , Serveurs mail  , Autres )  |  Sécuriser son posteInstallation de la distrib   ,  Eliminer les services inutiles  ,  Sécuriser /etc/passwd  ,   Sécuriser les fichiers et systèmes de fichiers ) | Installer un firewall avec shorewall | Vérifier et auditer son système sous Mageia ]
 

Sécuriser son poste linux

Dernière modification 14.11.15

Sécurité

Présentation

Le but de cette page est de présenter le moyen de sécuriser son poste linux, il n'a pour vocation de présenter une configuration sécurisée à 100% mais suffisamment protégée pour affronter le "chaos" d'internet.

Attaques possibles

Présentation

Avant de sécuriser votre poste, voici une liste non exhaustive des méthodes les plus classiques pour pénétrer un système, les détails pour exécuter ses attaques ne sont pas exposés, pour cela vous trouverez un tas de sites sur le net qui explique ça très bien.

Compte utilisateur

La première étape pour essayer de pénétrer sur un système est tout simplement de se loguer comme un simple utilisateur, pour cela il faut connaître un login, anciennement beaucoup de systèmes UNIX disposait de comptes génériques par défaut, du style "guest" pour invité, un hacker essayera toujours ses comptes par défaut.
Pour éviter cela, vérifiez votre fichier /etc/passwd et supprimer tous vos comptes génériques utilisateurs (pas les comptes systèmes !!).

Veillez à ce qu'aucun utilisateur n'ait pas de password et encore moins un password identique au login (très courant !!).

Les outils "r" (rsh, rlogin, ...)

Attention à ses outils, ils utilisent un système d'authentification relativement rudimentaire et sont connues pour constituer une faille de sécurité. Qui plus est avec ces outils on peut mettre en place des relations de "confiance" entre les machines, c'est à dire qu'on pourra accèder à une machine en utilisant les r-outils sans avoir à entrer de mot de passe, par conséquent si un système est hacké, cela signifie que tous les autres tomberont aussi. Sachez aussi que les r-outils ne disposent pour la plupart d'aucun mécanisme de loging, donc aucun moyen d'avoir l'historique de leur utilisateur. Les fichiers permettants d'établir les relations de confiance sont .rhosts ou /etc/hosts.equiv.
Les outils r principaux sont:
- rsh ouvre un shell à distance (pour lancer une commande par exemple), si vous voulez un outil équivalent sécurisé, tournez vous vers SSH.
- rlogin, équivalent à telnet, si un utilisateur place un fichier .rhosts dans sa homedirectory contenant obelix, n'importe qui sur la machine obelix pourra se connecter sur son compte sans avoir à donner de mot de passe. Si vous possèdez un /etc/hosts.equiv contenant un +, n'importe qui aura accès à votre machine.
- rexecd, c'est le serveur pour accepter des requêtes de rexec, permet de lancer des commandes à distance. Le serveur ne logue aucun échec de connexion, par conséquent vous pouvez essayer une tonne de mot de passe sans que l'administrateur de la machine visée sans s'en rende compte.

FTP

Ne faites pas tourner un serveur FTP anonyme à moins que vous sachiez ce que vous faîtes, sachez que les daemons FTP sont connus pour présenter pas mal de problèmes de sécurité, un serveur FTP mal configuré peut très bien servir de passerelle à un hacker pour attaquer votre machine bien sûr mais aussi d'autres machines.

TFTP (Trivial File Transfer Protocol) est un service FTP simplifié, il est utilisé notamment pour le boot des terminaux X. Il ne demande aucune authentification, n'importe qui peut se connecter et lire ce qu'il veut.

Je vous conseille donc de désactiver tout ce qui tourne autour de FTP et de privilégier SFTP fourni avec OpenSHH.

Outils de stats

Des outils comme finger, systat, netstat, rusersd, rwhod, ... servent à avoir des informations sur le système (sur les utilisateurs, stats de réseau, process qui tournent, ...). Pour la plupart ce sont des daemons qu'on peut interroger de l'extérieur, il devient alors très facile pour un hacker d'obtenir un max d'info sur votre système, qui lui permettront de mieux cibler ses attaques.
Par exemple avec systat et netstat qui tournent sur votre système, un hacker peut visualiser vos process actifs ainsi que la configuration réseau. Des outils comme rusersd et rstatd permettent à un hacker de visualiser les gens qui sont logués à un moment donné. Finger permet de connaître les logins existants sur la machine.

NFS

Les versions précédentes de NFS comportaient des trous de sécurité, vous devez veiller à possèder la dernière version. Vous ne devez en aucun cas exporter vos systèmes de fichiers vers le monde entier, vous devez toujours restreindre l'accès à un nombre limité de machines et préféré toujours la lecture seule que la lecture/écriture. N'exportez pas plus que nécessaire, c'est à dire exporter /usr/local/public plutôt que / tout entier. Vous pouvez faire en sorte que le root de la machine distante qui monte votre répertoire puisse avoir les mêmes droits que celui de la machine locale, c'est à éviter (ce n'est pas le cas par défaut). Enfin NFS doit être utilisé strictement en interne sur un réseau local et en aucun cas entre des machines sur internet.

Serveur web

Faites très attention à vos scripts cgi-bin, un défaut dans l'un d'entre eux et c'est la porte ouverte à votre système. Si vous mettez un serveur web en place, supprimez donc tout ce qui se trouve sous le répertoire des cgi-bin et mettez y que vos scripts CGI dont vous soyez absolument sûrs. Ne faites pas confiance aux script CGI que vous récupérez sur internet.
En plus des scripts CGI, il y a bien d'autres failles dans un serveur HTTP, que ce soit au niveau d'une mauvaise configuration, des serveurs bogués, ... même les logs peuvent être un problème, s'ils sont visibles d'internet, notamment ceux contenant les erreurs (page 404), qui peuvent contenir les informations sensibles comme les login des utilisateurs.

Serveurs Mail

Attention aux serveurs SMTP, il y a eu par le passé pas mal d'attaques dues à des failles dans sendmail, smail et d'autres, veillez à toujours faire tourner la dernière version et n'hésitez pas à appliquer les patchs. Désactivez tout serveur SMTP si vous ne vous en servez pas.
Pour les serveurs POP/IMAP, sachez qu'il y a eu sur ces serveurs un bogue (buffer overun) qui faisait qu'on pouvait lancer des commandes en tant que root à distance. Faites une mise à jour, ou désactivez les. Certaines serveurs POP ne loguent pas les erreurs de logins, donc n'importe qui peut essayer une tonne de password sans que vous vous rendiez compte. Enfin POP/IMAP manipule les mots de passe en clair, on peut très bien sur le réseau intercepter une requête POP (par sniffing) et récupérer le login et le mot de passe. Préférez les serveurs POP sécurisés (APOP, POP3s ...).

Autres

Parmis les outils réputés potentiellement peu sûrs, même si les nouvelles versions tendent à corriger petit à petit les défauts, citons DNS, Samba, services RPC, portmapper, et j'en oublie.

Sécuriser son poste

Installation de la distrib

La sécurisation du poste commence à l'install, je vous déconseille de choisir les configs standards proposés dans les distribs comme RedHat ou Mageia avec WorkStation (Station de travail), Server (Serveur), le mieux est de choisir Custom (personnalisé) pour avoir un oeil sur les outils qui seront installés sur votre système. L'idée est d'installer le minimum d'outils, la règle la première si vous ne voyez pas à quoi peut servir un outil est de ne pas le choisir, il faut vous dire que de toute manière vous aurez toujours la possibililité de l'installer plus tard. En résumé moins vous avez d'outils, moins vous avez de trous potentiels de sécurité.
Au moment d'arriver au partitionnement du système, je vous conseille de créer plusieurs partitions pour bien séparer le système, des données, par exemple:

/         10 Go
/usr    10 Go au moins
/var     5Go
/home    10 Go par utilisateurs au moins
swap    2*taille de la RAM au moins
/usr/local au moins 10 Go (pour stocker vos applis)

Une fois l'installation terminée, activer automatiquement ou pas la mise à jour du système, ces mises à jour corrigent les trous de sécurité. Ces patchs sont indispensables pour sécuriser correctement un système, si vous n'avez pas activé la mise à jour automatique, vous devez surveiller régulièrement leur parution. Sachez qu'il existee des mailing-listes à ce sujet qui vous préviendront automatiquement de la parution d'un nouveau patch. Perwonnellement je n'ai pas activé la mise à jour automatique car je préfère maîtriser l'installation des packages certains pouvant causer des régressions, il faut analyse au cas pas cas.

Je vous conseille de tenir à jour un cahier d'administrateur où vous noterez chacune de vos manips systèmes, ça peut se révéler un brin écolier, voire fastidieux, mais ça peut se réléver extrèmement utile dans certains cas. Un simple fichier texte (droit 400 proprio root) avec un copier coller des commandes (et les résultats qui vont avec), et quelques annotations devrait faire l'affaire.

Eliminer les services inutiles

Maintenant que le système est installé et que vous avez patché les packages defectueux, passons maintenant à la sécurisation propre du système. Dans un premier temps on va désactiver tous les services inutiles qui tournent sur la machine.

Si vous utilisez systemd

Systemd est un super daemon qui permet à lui tout seul de lancer tout un tas d'autres daemons (ou services). Il se base sur ce qu'on appelle des unités (units), il y en a des plusieurs sortes

automount : pour les systèmes de fichier montés avec automount
device : pour les périphériques (fichiers spéciaux)
mount : pour les systèmes de fichiers montés (en utilisant /etc/fstab ou à la volée (clé USB, ...)
path : pour les scripts et exe indiqués par leur chemin (path)
service : pour les daemons
socket : pour les sockets
swap: pour la swap
target: pour les groupes de plusieurs unités (par exemple network.target gère tous mes services liés au réseau)

la commande systemctl list-units permet de lister l'ensemble des unités et leur état, voilà le résultat

UNIT                                                                                        LOAD   ACTIVE SUB       DESCRIPTION
  proc-sys-fs-binfmt_misc.automount                                                           loaded active waiting   Arbitrary Executable File Formats File System Automount Point
  sys-devices-pci0000:00-0000:00:01.0-0000:01:00.1-sound-card1.device                         loaded active plugged   GK104 HDMI Audio Controller
  sys-devices-pci0000:00-0000:00:14.0-usb3-3\x2d2-3\x2d2:1.2-sound-card2.device               loaded active plugged   LifeCam HD-3000
  sys-devices-pci0000:00-0000:00:19.0-net-eno1.device                                         loaded active plugged   Ethernet Connection I217-V
  sys-devices-pci0000:00-0000:00:1a.0-usb1-1\x2d1-1\x2d1.5-1\x2d1.5:1.0-bluetooth-hci0-rfkill0.device loaded active plugged   /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.5/1-1.5:1.0/bluetooth/hci0/rfkill0
  sys-devices-pci0000:00-0000:00:1a.0-usb1-1\x2d1-1\x2d1.5-1\x2d1.5:1.0-bluetooth-hci0.device loaded active plugged   /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.5/1-1.5:1.0/bluetooth/hci0
  sys-devices-pci0000:00-0000:00:1b.0-sound-card0.device                                      loaded active plugged   8 Series/C220 Series Chipset High Definition Audio Controller
  sys-devices-pci0000:00-0000:00:1c.7-0000:03:00.0-ieee80211-phy0-rfkill1.device              loaded active plugged   /sys/devices/pci0000:00/0000:00:1c.7/0000:03:00.0/ieee80211/phy0/rfkill1
  sys-devices-pci0000:00-0000:00:1c.7-0000:03:00.0-net-wlp3s0.device                          loaded active plugged   RTL8821AE 802.11ac PCIe Wireless Network Adapter
  sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda1.device    loaded active plugged   LITEON_IT_LMT-256L9M 1
  sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda2.device    loaded active plugged   LITEON_IT_LMT-256L9M 2
  sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda3.device    loaded active plugged   LITEON_IT_LMT-256L9M 3
  sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda4.device    loaded active plugged   LITEON_IT_LMT-256L9M 4
  sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda5.device    loaded active plugged   LITEON_IT_LMT-256L9M 5
  sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda-sda6.device    loaded active plugged   LITEON_IT_LMT-256L9M 6
  sys-devices-pci0000:00-0000:00:1f.2-ata1-host0-target0:0:0-0:0:0:0-block-sda.device         loaded active plugged   LITEON_IT_LMT-256L9M
  sys-devices-pci0000:00-0000:00:1f.2-ata2-host1-target1:0:0-1:0:0:0-block-sdb-sdb1.device    loaded active plugged   WDC_WD10EZEX-21M2NA0 1
  sys-devices-pci0000:00-0000:00:1f.2-ata2-host1-target1:0:0-1:0:0:0-block-sdb.device         loaded active plugged   WDC_WD10EZEX-21M2NA0
  sys-devices-pci0000:00-0000:00:1f.2-ata4-host3-target3:0:0-3:0:0:0-block-sr0.device         loaded active plugged   MATSHITADVD-RAM_UJ8E0
  sys-devices-platform-serial8250-tty-ttyS0.device                                            loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS0
  sys-devices-platform-serial8250-tty-ttyS1.device                                            loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS1
  sys-devices-platform-serial8250-tty-ttyS2.device                                            loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS2
  sys-devices-platform-serial8250-tty-ttyS3.device                                            loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS3
  sys-subsystem-bluetooth-devices-hci0.device                                                 loaded active plugged   /sys/subsystem/bluetooth/devices/hci0
  sys-subsystem-net-devices-eno1.device                                                       loaded active plugged   Ethernet Connection I217-V
  sys-subsystem-net-devices-wlp3s0.device                                                     loaded active plugged   RTL8821AE 802.11ac PCIe Wireless Network Adapter
  -.mount                                                                                     loaded active mounted   /
  dev-hugepages.mount                                                                         loaded active mounted   Huge Pages File System
  dev-mqueue.mount                                                                            loaded active mounted   POSIX Message Queue File System
  export-home.mount                                                                           loaded active mounted   /export/home
  home.mount                                                                                  loaded active mounted   /home
  lucien.mount                                                                                loaded active mounted   /lucien
  mana-data.mount                                                                             loaded active mounted   /mana/data
  run-user-5001.mount                                                                         loaded active mounted   /run/user/5001
  sys-kernel-debug.mount                                                                      loaded active mounted   Debug File System
  tmp.mount                                                                                   loaded active mounted   Temporary Directory
  usr-local.mount                                                                             loaded active mounted   /usr/local
  usr.mount                                                                                   loaded active mounted   /usr
  var-lib-nfs-rpc_pipefs.mount                                                                loaded active mounted   RPC Pipe File System
  var.mount                                                                                   loaded active mounted   /var
  cups.path                                                                                   loaded active running   CUPS Scheduler
  systemd-ask-password-plymouth.path                                                          loaded active waiting   Forward Password Requests to Plymouth Directory Watch
  systemd-ask-password-wall.path                                                              loaded active waiting   Forward Password Requests to Wall Directory Watch
  session-c1.scope                                                                            loaded active running   Session c1 of user olivier
  acpid.service                                                                               loaded active running   ACPI Event Daemon
  alsa-state.service                                                                          loaded active running   Manage Sound Card State (restore and store)
  atd.service                                                                                 loaded active running   Job spooling tools
  autofs.service                                                                              loaded active running   Automounts filesystems on demand
  avahi-daemon.service                                                                        loaded active running   Avahi mDNS/DNS-SD Stack
  bluetooth.service                                                                           loaded active running   Bluetooth service
  chronyd.service                                                                             loaded active running   NTP client/server
  colord.service                                                                              loaded active running   Manage, Install and Generate Color Profiles
  cpupower.service                                                                            loaded active exited    Configure CPU power related settings
  crond.service                                                                               loaded active running   Command Scheduler
  cups-browsed.service                                                                        loaded active running   Make remote CUPS printers available locally
  cups.service                                                                                loaded active running   CUPS Scheduler
  dbus.service                                                                                loaded active running   D-Bus System Message Bus
  fedora-loadmodules.service                                                                  loaded active exited    Load legacy module configuration
  fedora-readonly.service                                                                     loaded active exited    Configure read-only root support
  fedora-wait-storage.service                                                                 loaded active exited    Wait for storage scan
  ip6tables.service                                                                           loaded active exited    ip6tables Firewall for IPv6
  iptables.service                                                                            loaded active exited    iptables Firewall for IPv4
  irqbalance.service                                                                          loaded active running   irqbalance daemon
  kmod-static-nodes.service                                                                   loaded active exited    Create list of required static device nodes for the current kernel
  mandi.service                                                                               loaded active running   Network monitoring daemon (Interactive Firewall and wireless)
  mandriva-everytime.service                                                                  loaded active exited    Reconfigure the system on administrator request
  mandriva-save-dmesg.service                                                                 loaded active exited    Save boot dmesg content
  ModemManager.service                                                                        loaded active running   Modem Manager
  msec.service                                                                                loaded active exited    LSB: Enables MSEC security policy on boot
  network-up.service                                                                          loaded active exited    LSB: Wait for the hotplugged network to be up
  network.service                                                                             loaded active running   LSB: Bring up/down networking
  nfs-idmap.service                                                                           loaded active running   NFSv4 ID-name mapping daemon
  nfs-lock.service                                                                            loaded active running   NFS file locking service.
● nscd.service                                                                                loaded failed failed    Name Service Cache Daemon
  nslcd.service                                                                               loaded active running   Naming services LDAP client daemon
  partmon.service                                                                             loaded active exited    LSB: Checks if a partition is close to full up
  polkit.service                                                                              loaded active running   Authorization Manager
  prefdm.service                                                                              loaded active running   Display Manager
  preload.service                                                                             loaded active running   LSB: Adaptive readahead daemon
  resolvconf.service                                                                          loaded active exited    LSB: Nameserver information manager
  rpcbind.service                                                                             loaded active running   RPC bind service
  rtkit-daemon.service                                                                        loaded active running   RealtimeKit Scheduling Policy Service
  shorewall.service                                                                           loaded active exited    Shorewall IPv4 firewall
  sshd.service                                                                                loaded active running   OpenSSH server daemon
  systemd-fsck@dev-disk-by\x2duuid-048c9b12\x2d91c9\x2d43b5\x2db663\x2df5efa3a193c9.service   loaded active exited    File System Check on /dev/disk/by-uuid/048c9b12-91c9-43b5-b663-f5efa3a193c9
  systemd-fsck@dev-disk-by\x2duuid-8b3cee2c\x2dbae2\x2d4e59\x2db210\x2d9fb4c16368f7.service   loaded active exited    File System Check on /dev/disk/by-uuid/8b3cee2c-bae2-4e59-b210-9fb4c16368f7
  systemd-fsck@dev-disk-by\x2duuid-8f5f173b\x2db9c6\x2d45ff\x2d85f8\x2dfdeab49bc328.service   loaded active exited    File System Check on /dev/disk/by-uuid/8f5f173b-b9c6-45ff-85f8-fdeab49bc328
  systemd-fsck@dev-disk-by\x2duuid-dc68a9c3\x2d4f39\x2d460d\x2d89c9\x2d56df20e750b3.service   loaded active exited    File System Check on /dev/disk/by-uuid/dc68a9c3-4f39-460d-89c9-56df20e750b3
  systemd-fsck@dev-disk-by\x2duuid-eafcd3f8\x2d62df\x2d4670\x2d8312\x2d1ffcacefdc1a.service   loaded active exited    File System Check on /dev/disk/by-uuid/eafcd3f8-62df-4670-8312-1ffcacefdc1a
  systemd-journal-flush.service                                                               loaded active exited    Trigger Flushing of Journal to Persistent Storage
  systemd-journald.service                                                                    loaded active running   Journal Service
  systemd-logind.service                                                                      loaded active running   Login Service
  systemd-modules-load.service                                                                loaded active exited    Load Kernel Modules
  systemd-networkd.service                                                                    loaded active running   Network Service
  systemd-random-seed.service                                                                 loaded active exited    Load/Save Random Seed
  systemd-remount-fs.service                                                                  loaded active exited    Remount Root and Kernel File Systems
  systemd-resolved.service                                                                    loaded active running   Network Name Resolution
  systemd-rfkill@rfkill0.service                                                              loaded active exited    Load/Save RF Kill Switch Status of rfkill0
  systemd-rfkill@rfkill1.service                                                              loaded active exited    Load/Save RF Kill Switch Status of rfkill1
  systemd-sysctl.service                                                                      loaded active exited    Apply Kernel Variables
  systemd-timesyncd.service                                                                   loaded active running   Network Time Synchronization
  systemd-tmpfiles-setup-dev.service                                                          loaded active exited    Create Static Device Nodes in /dev
  systemd-tmpfiles-setup.service                                                              loaded active exited    Create Volatile Files and Directories
  systemd-udev-settle.service                                                                 loaded active exited    udev Wait for Complete Device Initialization
  systemd-udev-trigger.service                                                                loaded active exited    udev Coldplug all Devices
  systemd-udevd.service                                                                       loaded active running   udev Kernel Device Manager
  systemd-update-utmp.service                                                                 loaded active exited    Update UTMP about System Boot/Shutdown
  systemd-user-sessions.service                                                               loaded active exited    Permit User Sessions
  systemd-vconsole-setup.service                                                              loaded active exited    Setup Virtual Console
  udisks2.service                                                                             loaded active running   Disk Manager
  upower.service                                                                              loaded active running   Daemon for power management
  user@5001.service                                                                           loaded active running   User Manager for UID 5001
  -.slice                                                                                     loaded active active    Root Slice
  system-getty.slice                                                                          loaded active active    system-getty.slice
  system-systemd\x2dfsck.slice                                                                loaded active active    system-systemd\x2dfsck.slice
  system-systemd\x2drfkill.slice                                                              loaded active active    system-systemd\x2drfkill.slice
  system.slice                                                                                loaded active active    System Slice
  user-5001.slice                                                                             loaded active active    user-5001.slice
  user.slice                                                                                  loaded active active    User and Session Slice
  avahi-daemon.socket                                                                         loaded active running   Avahi mDNS/DNS-SD Stack Activation Socket
  cups.socket                                                                                 loaded active running   CUPS Scheduler
  dbus.socket                                                                                 loaded active running   D-Bus System Message Bus Socket
  nscd.socket                                                                                 loaded active listening Name Service Cache Daemon Socket
  rpcbind.socket                                                                              loaded active running   RPCbind Server Activation Socket
  systemd-initctl.socket                                                                      loaded active listening /dev/initctl Compatibility Named Pipe
  systemd-journald-dev-log.socket                                                             loaded active running   Journal Socket (/dev/log)
  systemd-journald.socket                                                                     loaded active running   Journal Socket
  systemd-shutdownd.socket                                                                    loaded active listening Delayed Shutdown Socket
  systemd-udevd-control.socket                                                                loaded active running   udev Control Socket
  systemd-udevd-kernel.socket                                                                 loaded active running   udev Kernel Socket
  dev-disk-by\x2duuid-b1fada73\x2d7ba6\x2d4692\x2d836b\x2d3b355d1b3fa7.swap                   loaded active active    /dev/disk/by-uuid/b1fada73-7ba6-4692-836b-3b355d1b3fa7
  basic.target                                                                                loaded active active    Basic System
  bluetooth.target                                                                            loaded active active    Bluetooth
  cryptsetup.target                                                                           loaded active active    Encrypted Volumes
  getty.target                                                                                loaded active active    Login Prompts
  graphical.target                                                                            loaded active active    Graphical Interface
  local-fs-pre.target                                                                         loaded active active    Local File Systems (Pre)
  local-fs.target                                                                             loaded active active    Local File Systems
  multi-user.target                                                                           loaded active active    Multi-User System
  network-online.target                                                                       loaded active active    Network is Online
  network.target                                                                              loaded active active    Network
  nfs.target                                                                                  loaded active active    Network File System Client and Server Support
  nss-lookup.target                                                                           loaded active active    Host and Network Name Lookups
  paths.target                                                                                loaded active active    Paths
  remote-fs.target                                                                            loaded active active    Remote File Systems
  rpcbind.target                                                                              loaded active active    RPC Port Mapper
  slices.target                                                                               loaded active active    Slices
  sockets.target                                                                              loaded active active    Sockets
  sound.target                                                                                loaded active active    Sound Card
  swap.target                                                                                 loaded active active    Swap
  sysinit.target                                                                              loaded active active    System Initialization
  time-sync.target                                                                            loaded active active    System Time Synchronized
  timers.target                                                                               loaded active active    Timers
  systemd-tmpfiles-clean.timer                                                                loaded active waiting   Daily Cleanup of Temporary Directories

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

154 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

pour  stopper une unité il faudra taper

systemctl stop nom-du-service

et pour le désactiver (c'est à dire qu'il ne se lancera plus au prochain démarrage) il faudra taper

systemctl disable nom-du-service

il existe des outils graphiques plus sympathiques pour pouvoir faire cela comme le centre de contrôle de Mageia


ou bien encore via webmin plus universel




Si vous utilisez xinetd
Si vous utilisez xinetd, pour les services inutiles se trouvant sous /etc/xinetd.d il suffira de rajouter le paramètre disable=yes, exemple avec daytime

service daytime
{
    type    = INTERNAL
    id        = daytime-stream
    socket_type= stream
    protocol    = tcp
    user    =    root
    wait    =    no
    disable    =    yes
}

Relancez xinetd

/etc/rc.d/init.d/xinetd restart

Maintenant on va aller jetter un coup d'oeil dans les répertoires /etc/rc.d/rcX.d qui contiennent des liens vers les scripts de lancement de services, on va désactiver les services inutiles. Si vous démarrez à l'état de marche 5, voici ce que vous pourriez trouver dans le répertoire /etc/rc.d/rc5.d

S05apmd    Utile uniquement pour les portables, sert à gérer l'autonomie d'une batterie, à virer si vous avez un poste de bureau
S09pcmcia pour activer les services liés au PCMCIA, à virer si pas de PCMCIA
S10network active les interfaces réseau (eth0, ...)
S11portmap Utile si vous utilisez des services RPC comme NFS ou NIS
S15netfs lance le service NFS client, à désactiver si vous ne montez jamais de file systems d'un serveur NFS
S16ypserv pour lancer le serveur NIS, à désactiver si non utilisé
S20random ce n'est pas un daemon, mais un truc qui permet de générer bazar aléatoire, je vois pas trop son utilité mais vous pouvez le laisser, il n'y aucun risque niveau sécurité
S20rstatd service "r", à désactiver
S20rwhod idem, à désactiver
S20rusersd idem, à désactiver
S20bootparamd, idem tftp, sert pour les terminaux X ou autres clients "diskless", à désactiver
S30syslog permet de loguer l'activité des daemons lancés par inetd, à conserver
S34yppasswd si vous êtes un serveur NIS pour pouvoir changer de mot de passe, à désactiver si non utilisé (très vulnérable)
S35dhcp daemon DHCP sert pour obtenir une adresse IP, sert pour les câblés entre autres, à désactiver si non nécessaire
S40atd  utile pour le service at (similaire à cron), vous pouvez désactiver si vous vous en servez pas
S40crond  pour lancer le daemon cron qui permet de programmer des tâches à lancer, à virer si vous ne l'utilisez pas
S50inet    pour lancer le réseau,
S50snmpd pour lancer le daemon SNMP, permet de donner à des utilisateurs distants des informations détaillées sur votre système, à désactiver
S55named pour lancer le serveur DNS, à désactiver si vous ça ne sert à rien
S55routed pour router selon le protocole RIP, à désactiver
S57diald permet de lancer le daemon diald pour lancer une connexion internet automatiquement (du serveur ou d'un client du réseau local), à désactiver si vous vous en servez pas
S60lpd système d'impression
S60nfs pour lancer le serveur NFS, à désactiver si vous n'exportez pas vos systèmes de fichiers
S60mars-nwe pour lancer un serveur Netware de Novell, à désactiver si non nécessaire
S72autofs pour lancer l'automontage (peut s'appeller aussi S72amd), à virer si vous ne l'utilisez pas
S75keytable pour activer le clavier qui va bien (claver français azerty)
S75gated pour lancer d'autres protocoles de routage comme OSPF, à désactiver
S80sendmail pour lancer sendmail, à désactiver si vous ne l'utilisez pas
S85sound pour activer le son
S85gpm permet d'avoir la souris sur des applis textes comme Midnight Commander, à désactiver si inutile
S85http pour lancer le serveur Web (Apache), à désactiver si non utilisé
S86ypbind si vous êtes un client NIS, à désactiver sinon
S90squid pour lancer le proxy squid, pour partager la connexion internet, à désactiver si poste isolé
S90xfs pour activer le serveur de fonts X, nécessaire
S91smb pour lancer le serveur samba, si vous partager des file système ou des imprimantes vers des postes Windows, à désactiver sinon
S94ntpd pour lancer le serveur NTP (network time protocol) à désactiver (ancienne version S94xntp)
S95innd pour lancer le serveur de news innd, si non utilisé à désactiver
S99linuxconf permet à quelqu'un sur internet de faire de la maintenance sur votre système à travers une interface web, à désactiver
S99local c'est un lien vers /etc/rc.d/rc.local, où vous pouvez rajouter vos petits trucs

C'est une liste non exhaustive, d'un système à l'autre, le numéro de lancement peut changer. Pour désactiver le service SNMP il suffit de taper :

chkconfig --level 0123456 snmpd off

Un autre moyen est de supprimer les liens vers /etc/rc.d/init.d/snmpd se trouvant sous /etc/rc.d/rcX.d (remplacer X par 0, 1, 2, 3, 4, 5 et 6)
 

Sécuriser /etc/passwd

Tout d'abord on va mettre en place les shadow password, comme ça tous les mots de passe seront contenus dans un fichier distinct de /etc/passwd, ce fichier /etc/shadow est en lecture seule pour root (droit 400 proprio root). La première chose qu'un hacker cherche à faire est de lire /etc/passwd, le fait de mettre les password ailleurs apportent une protection supplémentaire.
Pour activer les shadows password, c'est très simple en tant que root, vous devez taper:

pwconv

Dans le champ password de /etc/passwd (le deuxième) vous devriez trouver un x, un fichier /etc/shadow a été créé contenant les mots de passe crypté.
Maintenant on va supprimer autant que possible tous les comptes systèmes inutiles, si vous en avez pas besoin, supprimez les, car ce sont autant de portes d'entrée pour les hackers. Les comptes systèmes suivants sont nécessaires:
root, bin, daemon, adm, lp (si vous avez un système d'impression), mail (si serveur mail), news (si serveur de news), uucp (si vous utilisez UUCP), nobody
Ceux-ci sont facultatifs:
games, gopher, halt, sync, shutdown, operator, ftp (si serveur FTP anonyme), lists, xfs.

Root et utilisateurs privilégiés

Maintenant vous pouvez faire en sorte que seuls certains utilisateurs aient le droit d'utiliser certaines commande "puissantes" comme su. En limitant le nombre de personnes pouvant utiliser ces commandes vous améliorez la sécurité de votre site. Pour cela vous allez créer un groupe d'utilisateur privilégié, généralement il est appelé wheel, mais libre à vous de l'appeler comme vous voulez, choisissez quand même un nom discret, passe partout, pour ne pas éveiller les soupçons.
Maintenant pour que su soit lancé uniquement par les membres du groupe wheel, vous devrez taper:

chgrp wheel /bin/su
chmod 4750 /bin/su

Faites de même pour les autres commandes.
NOTES: - N'oubliez pas qu'un utilisateur peut très bien appartenir à deux groupes
                   - N'oubliez pas sudo pour donner des droits privilégiés à certains utilisateurs.

Pour ce qui concerne root, vous devez prendre quelques précautions:
- vous ne devez en aucun rajouter le . (répertoire courant) dans le PATH de root, car si par malheur quelqu'un crée un script avec droits exécutables dans /tmp qui s'appelle rm contenant:

#!/bin/bash
rm -Rf /

Si root a le malheur de taper rm alors qu'il se trouve dans /tmp, c'est le script qui peut être appelé (suivant l'ordre des chemins dans le PATH) et pouf ! plus de système.

Sécuriser les fichiers et systèmes de fichiers

1) SUID et GUID

Evitez d'avoir recours aux SUID et SGID, ils comportent certains risques au niveau de la sécurité, ils permettent à n'importe qui  de lancer un programme avec les droits du propriétaire du programme. Les fichiers SUID sont une des principales cibles des hackers, à éviter donc, préferez amplement sudo.
Pour trouver les fichiers avec SUID ou SGID, tapez en tant que root:
find / -type f  \( -perm 04000 -o -perm 02000 \)

2) Fichiers .rhosts et hosts.equiv

On a vu plus haut qu'il fallait éviter d'avoir des fichiers .rhosts ou hosts.equiv, on va donc bloquer ces deux fichiers pour que personne ne puisse les recréer. Pour bloquer les fichiers, il suffit de taper les commandes:

touch /.rhosts /etc/hosts.equiv
chmod 0 /.rhosts /etc/hosts.equiv

Pour trouver les .rhosts dans les homedirectories des utilisateurs, taper:

find /home -name .rhosts -print

3) Umask

On peut définir les droits de création par défaut d'un fichier ou de répertoire avec la commande umask, on va faire en sorte d'éviter de créer des répertoires avec les droits 777.
Pour définir l'umask pour tous les utilisateurs du système, vous devez éditer le fichier /etc/profile et modifiez la ligne concernant umask, vous pouvez fixer 022, 027 ou même  077 qui est le masque le plus restrictif (voir mon cours unix pour voir comment marche les umask).



Installer un firewall avec shorewall

On trouve de nombreuses pages sur internet qui explique comment monter un firewall basé sur netfilter (iptables) en utilisant Shoreline Firewall plus connu sous le terme shorewall. Cette page ne présente pas l'installation de shorewall qui est installée de base sur une Mageia même s'il n'est pas activé. La plupart des configurations qu'on trouve sur internet sont basées sur des machines standalone ou avec plusieurs cartes réseau avec dmz et fonction routeur. Or même si j’aurais bien voulu mettre en place ce type de topologie, l’emplacement physique de ma box et de mes machines me l’interdit. De fait la topologie de mon réseau local ressemble à ça:

personal-network

Autour de ma box j’ai monté un réseau local via le courant électrique et 4 prises CPL situées dans plusieurs pièces différentes. On retrouve le serveur pour tous les autres clients qu’ils soient branchés en RJ45/CPL ou en wifi.

Bien que le serveur dispose de deux interfaces réseau, je me sers que d’une seule interface, ça serait trop lourd de doubler le réseau pour qu’il fasse office de firewall pour les autres PC clients. Du coup je ne protège que le serveur et non pas les postes clients qui bénéficient de leur protection propre et de celle apportée par la box. L’idée est donc que seules les machines de mon réseau local puisse accéder aux services de mon serveur et on rejette tout le reste.

Niveau configuration de shorewall, cela donne cela, tous les fichiers se trouvent sous /etc/shorewall, voilà en ce qui concerne le fichier zones

# Shorewall version 4 – Zones File
#
# For information about this file, type « man shorewall-zones »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-zones.html
#
###############################################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
lan ipv4

la zone fw correspond au serveur qui fait office de firewall, la zone lan correspond indifféremment à internet et au réseau local. Voilà maintenant le fichier interfaces

# Shorewall version 4 – Interfaces File
#
# For information about entries in this file, type « man shorewall-interfaces »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-interfaces.html
#
###############################################################################
###############################################################################
#ZONE INTERFACE OPTIONS
lan eno2 –

ma carte réseau utilisée est définie par eno2, ma carte eno1 est non utilisée, la commande ifconfig -a permet de connaître le nom de ses interfaces réseau. le fichier hosts est quant à lui vide (ou presque)

# Shorewall version 4 – Hosts file
#
# For information about entries in this file, type « man shorewall-hosts »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-hosts.html
#
###############################################################################
#ZONE HOST(S) OPTIONS

le fichier policy définit les règles par défaut

# Shorewall version 4 – Policy File
#
# For information about entries in this file, type « man shorewall-policy »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-policy.html
#
###############################################################################
#SOURCE DEST POLICY LOG LIMIT: CONNLIMIT:
fw lan ACCEPT
lan all DROP info
all all REJECT info

en gros toutes les trames du serveur vers internet sont acceptées et toutes les autres sont rejetées, il faut donc définir quelques exceptions avec le fichier rules que voici

# Shorewall version 4 – Rules File
#
# For information on the settings in this file, type « man shorewall-rules »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-rules.html
#
######################################################################################################################################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER
# PORT(S) PORT(S) DEST LIMIT GROUP
ACCEPT fw lan icmp
ACCEPT lan:192.168.1.0/24 fw tcp 22,25,80,111,389,995,2049,3306,10000
ACCEPT lan:192.168.1.0/24 fw udp 111,2049
ACCEPT lan:192.168.1.0/24 fw icmp
DNS(ACCEPT) fw lan

On autorise les machines du réseau local qui ont pour adresse 192.168.1.X à accéder au serveur sur le port 22 (OpenSSH), 25 (SMTP), 80 (Apache/httpd), 111 (portmapper), 389 (OpenLDAP), 995 (POP3s), 2049 (NFS), 3306 (MySQL) et 10000 (Webmin). On autorise également les requêtes DNS du serveur vers internet et on autorise également les ping.

Maintenant le serveur peut être encore atteint via les postes clients et ceux-ci doivent également être protégés. J’ai limité au strict minimum le trafic de et vers internet toujours avec shorewall. Exemple avec un client connecté via une interface RJ45 qui peut être pinguée, fichier zones

# Shorewall version 4 – Zones File
#
# For information about this file, type « man shorewall-zones »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-zones.html
#
###############################################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
net ipv4
fw firewall

fichier interfaces

# Shorewall version 4 – Interfaces File
#
# For information about entries in this file, type « man shorewall-interfaces »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-interfaces.html
#
###############################################################################
###############################################################################
#ZONE INTERFACE OPTIONS
net eno1 detect

fichier hosts vide, fichier policy

# Shorewall version 4 – Policy File
#
# For information about entries in this file, type « man shorewall-policy »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-policy.html
#
###############################################################################
#SOURCE DEST POLICY LOG LIMIT: CONNLIMIT:
fw net ACCEPT
net all DROP info
all all REJECT info

et fichier rules

# Shorewall version 4 – Rules File
#
# For information on the settings in this file, type « man shorewall-rules »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-rules.html
#
######################################################################################################################################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER
# PORT(S) PORT(S) DEST LIMIT GROUP
ACCEPT net fw icmp 8 –

[Retour haut de la page]

Vérifier et auditer son système sous Mageia

Il est utile également de faire une photographie de son système et de faire une vérification régulière pour voir si rien n'a évolué, MSEC fait cela très bien sous Mageia, pour la petite histoire MSEC signifie Mandriva Security Settings, on y accède via le centre de contrôle de Mageia (CCM). A partir de cette page on a accès aux rapports, ceux-ci peuvent être également envoyés sur un email.

on le configure à partir de l'onglet Paramètres de sécurité. Dans le premier onglet on va défnir le niveau de sécurité que vous souhaitez avoir, généralement on se contentera de standard


Dans l'onglet Sécurité du système vous avez un certain de nombre de paramètres par défaut, vous pouvez les modifier en double cliquant dessus.
Dans l'onglet Sécurité du réseau vous avez d'autres paramètres mais qui concernent cette fois-ci le réseau.
Dans l'onglet Vérifications périodiques vous avez la fréquence de vérification par thème.

Dans l'onglet Exceptions on peut définir des exceptions aux vérifications périodiques (par défaut il y en a pas)
Dans l'onglet Permissions vous définissez les permissions des fichiers et répertoires importants, en cas de changement vous êtes prévenu et le système peut forcer le retour aux valeurs initiales.


Pour aller plus loin je vous renvoie vers cette excellente page. Pour les afficionados de la ligne de commande, on peut passer également par le shell pour le configurer, tout se trouve sous /etc/security/msec

 
[Retour page d'accueil FUNIX] [Retour haut de la page]