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 ( Installation basiquefiltrer avec des listes d'IP de vilains) |  Vérifier et auditer son système sous Mageia ]
 

Sécuriser son poste Linux

Dernière modification 11 septembre 2021

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.
[Retour haut de la page]

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.
[Retour haut de la page]

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 !!).

[Retour haut de la page]

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 permettant 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.
[Retour haut de la page]

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 OpenSSH.

[Retour haut de la page]

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.
[Retour haut de la page]

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.
[Retour haut de la page]

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 ...).

[Retour haut de la page]

Autres

Parmi 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 œil 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 possibilité 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 existe des mailing-listes à ce sujet qui vous préviendront automatiquement de la parution d'un nouveau patch. Personnellement 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évéler 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.

[Retour haut de la page]

Éliminer les services inutiles

Maintenant que le système est installé et que vous avez patché les packages défectueux, 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.

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




 
[Retour haut de la page]

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.

[Retour haut de la page]

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.

[Retour haut de la page]

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).


[Retour haut de la page]

Installer un firewall avec shorewall

Installation basique

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
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 de configuration d'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]

Filtrer avec des listes d'IP de vilains

Ce chapitre a pour but de vous expliquer comment mettre en place des listes d'adresses IP reconnues comme étant une potentielle menace, il se trouve que certaines entités se chargent de collecter ces listes et de les mettre à disposition de la communauté, il ne reste plus qu'à les faire prendre en compte par le firewall shorewall qui bloquera les adresses IP d'emblée.

La source de ce chapitre est essentiellement le wiki de mageia en anglais à l'adresse https://wiki.mageia.org/en/Firewall on pourra également consulter cette entrée du forum de mageia.

Ce filtrage se base sur shorewall mais également sur l'outil ipset. IPset permet de stocker des listes d'adresses IP, mais également des réseaux, des numéros de port, des adresses MAC ou bien encore des combinaisons de tout cela. Intrinsèquement IPtables sur lequel se base shorewall pourrait faire la même chose, mais IPset est optimisé pour que l'indexation et la recherche dans la liste soit infiniment plus rapide.

Cette page vous explique simplement comment IPset fonctionne.

IPset est lié au noyau linux, il faudra installer sur une mageia les packages suivants

urpmi xtables-addons xtables-geoip xtables-addons-kernel-desktop-latest

Pour voir si IPset est bien intégré il faudra taper

shorewall show capabilities | grep Ipset

Voilà le résultat

  Ipset Match Counters (IPSET_MATCH_COUNTERS): Available
  Ipset Match (IPSET_MATCH): Available
  Ipset Match Nomatch (IPSET_MATCH_NOMATCH): Available

Pour les listes d'adresses IP menaçantes, on utilisera celles des sites abuseipdb et de spamhaus. Maintenant il faudra créer un compte  pour le premier et récupérer une clé qui nous servira pour télécharger la liste.

On créera maintenant le script suivant /usr/bin/shorewall-vilains qui contiendra

#!/bin/bash
# Origine du script
# https://wiki.mageia.org/en/Firewall
#############################
# Définition de plusieurs variables
# pour les listes d'adresses IP
SPAMHAUS_DROP="/usr/local/var/drop.txt"
SPAMHAUS_eDROP="/usr/local/var/edrop.txt"
ABUSE_DROP="/usr/local/var/abuseip.txt"
SPAMURL="https://www.spamhaus.org/drop/drop.txt"
eSPAMURL="https://www.spamhaus.org/drop/edrop.txt"
DROP_ADD_TO_FW="/usr/local/var/DROP2.txt"
eDROP_ADD_TO_FW="/usr/local/var/eDROP2.txt"
ABUSE_ADD_TO_FW="/usr/local/var/abuseipv4.txt"
SAVE_SPAM="/etc/shorewall/spamhaus"
SAVE_SPAME="/etc/shorewall/espamhaus"
SAVE_ABUSE="/etc/shorewall/abuseipdb"
# Nom des listes pour le firewall
ABUSE="abusedrop";
SPAM="spamhausdrop";
SPAME="spamhausedrop";
#
echo ">>"
echo "Début: $(date)"
echo ">"
#
# Purge previous IP
#
echo "Création des règles ipset DROP"
/usr/sbin/ipset -exist create $ABUSE hash:net counters
/usr/sbin/ipset -exist create $SPAM hash:net counters
/usr/sbin/ipset -exist create $SPAME hash:net counters
echo "On purge les anciennes règles ipset DROP"
/usr/sbin/ipset flush $ABUSE
/usr/sbin/ipset flush $SPAM
/usr/sbin/ipset flush $SPAME
#
# ABUSEIPDB.com
echo "Téléchargement liste ABUSEIP et extraction des IP"
curl -G https://api.abuseipdb.com/api/v2/blacklist   -d confidenceMinimum=90   -H "Key: on-indique-ici-la-clé-récupérée-sur-abuseipdb"   -H "Accept: text/plain" > $ABUSE_DROP
#efface les IPv6
sed '/:/d' $ABUSE_DROP > $ABUSE_ADD_TO_FW
echo "Mise à jour ipset avec la liste ABUSE"
while read IP; do
    /usr/sbin/ipset -exist add $ABUSE $IP
done < "$ABUSE_ADD_TO_FW"
echo "Sauvegarde ipset de la liste ABUSE"
/usr/sbin/ipset save $ABUSE > $SAVE_ABUSE
# "The Spamhaus Project" - https://www.spamhaus.org
#
echo ">"
echo "Téléchargement liste SPAMHAUS DROP et extraction des IP"
wget -q -O - "$SPAMURL" > $SPAMHAUS_DROP
grep -v '^;' $SPAMHAUS_DROP | cut -d ' ' -f 1 > $DROP_ADD_TO_FW
echo "Mise à jour ipset avec la liste SPAMHAUS DROP"
while read IP; do
    /usr/sbin/ipset -exist add $SPAM $IP
done < "$DROP_ADD_TO_FW"
echo "Sauvegarde ipset liste SPAMHAUS"
/usr/sbin/ipset save $SPAM > $SAVE_SPAM
#
# "The Spamhaus Project" - https://www.spamhaus.org
#
echo ">"
echo "Téléchargement liste SPAMHAUS eDROP et extraction des IP"
wget -q -O - "$eSPAMURL" > $SPAMHAUS_eDROP
grep -v '^;' $SPAMHAUS_eDROP | cut -d ' ' -f 1 > $eDROP_ADD_TO_FW
echo "Mise à jour ipset avec la liste SPAMHAUS eDROP"
while read IP; do
    /usr/sbin/ipset -exist add $SPAME $IP
done < "$eDROP_ADD_TO_FW"
echo "Sauvegarde ipset avec la liste eSPAMHAUS"
/usr/sbin/ipset save $SPAME > $SAVE_SPAME
#
# Activation des nouvelles listes
# en relançant le firewall
#
echo ">"
echo "Relance du firewall"
echo "--------------- "
/usr/sbin/shorewall restart
#
# Contrôles
#
echo " "
/usr/bin/systemctl status --no-pager shorewall
echo " "
/usr/sbin/shorewall show bl
echo " "
echo "Nombre ligne liste spamhausDrop"
/usr/sbin/ipset list "$SPAM" | wc -l
echo "Nombre ligne liste spamhauseDrop"
/usr/sbin/ipset list "$SPAME" | wc -l
echo "Nombre ligne liste abusedrop"
/usr/sbin/ipset list "$ABUSE" | wc -l
echo ">"
echo Fin: $(date)
echo ">>"

on lui donne les droits d'exécution

chmod 755 /usr/bin/shorewall-vilains

[Retour haut de la page]

voilà ce que ça donne quand on le lance

>>
Début: dim. sept.  5 08:10:50 CEST 2021
>
Création des règles ipset DROP
On purge les anciennes règles ipset DROP
Téléchargement liste ABUSEIP et extraction des IP
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  139k    0  139k    0     0   185k      0 --:--:-- --:--:-- --:--:--  185k
Mise à jour ipset avec la liste ABUSE
Mise à jour du firewall avec règles ABUSE
Sauvegarde ipset de la liste ABUSE
>
Téléchargement liste SPAMHAUS DROP et extraction des IP
Mise à jour ipset avec la liste SPAMHAUS DROP
Sauvegarde ipset liste SPAMHAUS
>
Téléchargement liste SPAMHAUS eDROP et extraction des IP
Mise à jour ipset avec la liste SPAMHAUS eDROP
Sauvegarde ipset avec la liste eSPAMHAUS
>
Relance du firewall
---------------
Compiling using Shorewall 5.2.3.3...
Processing /etc/shorewall/params ...
Processing /etc/shorewall/shorewall.conf...
Loading Modules...
Compiling /etc/shorewall/zones...
Compiling /etc/shorewall/interfaces...
Determining Hosts in Zones...
Locating Action Files...
Compiling /etc/shorewall/policy...
Running /etc/shorewall/initdone...
Compiling TCP Flags filtering...
Compiling Kernel Route Filtering...
Compiling Martian Logging...
Compiling MAC Filtration -- Phase 1...
Compiling /etc/shorewall/blrules...
Compiling /etc/shorewall/rules...
Compiling /etc/shorewall/conntrack...
Compiling /etc/shorewall/tunnels...
Compiling MAC Filtration -- Phase 2...
Applying Policies...
Generating Rule Matrix...
Creating iptables-restore input...
Shorewall configuration compiled to /var/lib/shorewall/.restart
Stopping Shorewall....
Processing /etc/shorewall/stop ...
Processing /etc/shorewall/tcclear ...
Preparing iptables-restore input...
Running /sbin/iptables-restore --wait 60...
Processing /etc/shorewall/stopped ...
done.
Starting Shorewall....
Initializing...
Processing /etc/shorewall/init ...
Processing /etc/shorewall/tcclear ...
Setting up Route Filtering...
Setting up Martian Logging...
Setting up Proxy ARP...
Preparing iptables-restore input...
Running /sbin/iptables-restore --wait 60...
Processing /etc/shorewall/start ...
Processing /etc/shorewall/started ...
done.
 
● shorewall.service - Shorewall IPv4 firewall
   Loaded: loaded (/usr/lib/systemd/system/shorewall.service; disabled; vendor preset: enabled)
   Active: active (exited) since Sat 2021-09-04 20:00:07 CEST; 12h ago
  Process: 5834 ExecStart=/sbin/shorewall $OPTIONS start $STARTOPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 5834 (code=exited, status=0/SUCCESS)

sept. 04 20:00:07 mana.kervao.fr shorewall[5834]: Setting up Martian Logging...
sept. 04 20:00:07 mana.kervao.fr shorewall[5834]: Setting up Proxy ARP...
sept. 04 20:00:07 mana.kervao.fr shorewall[5834]: Preparing iptables-restore input...
sept. 04 20:00:07 mana.kervao.fr shorewall[5834]: Running /sbin/iptables-restore --wait 60...
sept. 04 20:00:07 mana.kervao.fr shorewall[5834]: Processing /etc/shorewall/start ...
sept. 04 20:00:07 mana.kervao.fr shorewall[5834]: ipset v7.10: Set cannot be created: set with the same name already exists
sept. 04 20:00:07 mana.kervao.fr shorewall[5834]: ipset v7.10: Set cannot be created: set with the same name already exists
sept. 04 20:00:07 mana.kervao.fr shorewall[5834]: Processing /etc/shorewall/started ...
sept. 04 20:00:07 mana.kervao.fr shorewall[5834]: done.
sept. 04 20:00:07 mana.kervao.fr systemd[1]: Started Shorewall IPv4 firewall.
 
Shorewall 5.2.3.3 blacklist chains at mana.kervao.fr - dim. sept.  5 08:11:15 CEST 2021

Chain dynamic (4 references)
 pkts bytes target     prot opt in     out     source               destination        

Chain lan-fw~ (1 references)
 pkts bytes target     prot opt in     out     source               destination        
    0     0 ~log0      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set abusedrop src
    0     0 ~log2      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set spamhausdrop src
    0     0 ~log4      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set spamhausedrop src

Chain lan-vpn~ (1 references)
 pkts bytes target     prot opt in     out     source               destination        
    0     0 ~log1      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set abusedrop src
    0     0 ~log3      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set spamhausdrop src
    0     0 ~log5      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set spamhausedrop src

 
Nombre ligne liste spamhausDrop
1054
Nombre ligne liste spamhauseDrop
78
Nombre ligne liste abusedrop
10007
>
Fin: dim. sept. 5 08:11:15 CEST 2021
>>

Maintenant pour que les listes soient mises à jour quotidiennement, il suffira de créer un lien sous /etc/cron.daily

ln -s /usr/bin/shorewall-vilains /etc/cron.daily/

Les lignes "contrôles" du script permettent de vérifier que tout marche bien, on retrouve notamment la commande

shorewall show bl

qui donne

Shorewall 5.2.3.3 blacklist chains at mana.kervao.fr - sam. sept.  4 20:04:25 CEST 2021

Chain dynamic (4 references)
 pkts bytes target     prot opt in     out     source               destination        

Chain lan-fw~ (1 references)
 pkts bytes target     prot opt in     out     source               destination        
    0     0 ~log0      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set abusedrop src
    0     0 ~log2      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set spamhausdrop src
    0     0 ~log4      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set spamhausedrop src

Chain lan-vpn~ (1 references)
 pkts bytes target     prot opt in     out     source               destination        
    0     0 ~log1      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set abusedrop src
    0     0 ~log3      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set spamhausdrop src
    0     0 ~log5      all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto]  match-set spamhausedrop src

 

et la commande ipset list dresse la liste des adresses IP bannies, cela donne

Name: abusedrop
Type: hash:net
Revision: 6
Header: family inet hashsize 4096 maxelem 65536
Size in memory: 268360
References: 2
Number of entries: 9998
Members:
42.193.0.6
192.241.221.234
98.214.176.181
43.128.89.158
167.99.132.148

(...)

Name: spamhausdrop
Type: hash:net
Revision: 6
Header: family inet hashsize 1024 maxelem 65536 counters
Size in memory: 86848
References: 2
Number of entries: 1046
Members:
102.212.224.0/19 packets 0 bytes 0
204.87.136.0/24 packets 0 bytes 0
206.197.29.0/24 packets 0 bytes 0
168.151.0.0/22 packets 0 bytes 0
199.26.207.0/24 packets 0 bytes 0

(...)

Name: spamhausedrop
Type: hash:net
Revision: 6
Header: family inet hashsize 1024 maxelem 65536 counters
Size in memory: 9280
References: 2
Number of entries: 70
Members:
43.57.0.0/16 packets 0 bytes 0
120.64.0.0/16 packets 0 bytes 0
46.148.120.0/24 packets 0 bytes 0
120.67.0.0/16 packets 0 bytes 0
204.141.204.0/24 packets 0 bytes 0
91.208.245.0/24 packets 0 bytes 0
45.143.136.0/22 packets 0 bytes 0
91.243.93.0/24 packets 0 bytes 0

(...)

Name: ifw_wl
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 200
References: 1
Number of entries: 0
Members:

Name: ifw_bl
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536 timeout 3600
Size in memory: 200
References: 1
Number of entries: 0
Members:

Pour qu'au reboot ces listes soient maintenues il faudra modifier le fichier /etc/shorewall/init en rajoutant

# Restaurer les listes Abuseipdb et Spamhauss
if [ -f /etc/shorewall/abuseipdb ]; then
  ipset destroy abusedrop
  ipset -file /etc/shorewall/abuseipdb restore
fi
if [ -f /etc/shorewall/spamhaus ]; then
  ipset destroy spamhausdrop
  ipset -file /etc/shorewall/spamhaus restore
fi
if [ -f /etc/shorewall/espamhaus ]; then
  ipset destroy spamhausedrop
  ipset -file /etc/shorewall/espamhaus restore
fi

Vous pouvez rajouter manuellement une adresse IP en tapant (il faudra préciser le nom d'une liste)

ipset add spamhaus adresse-IP

et enlevez une adresse

ipset del spamhaus adresse-IP

[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 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]