web-dev-qa-db-fra.com

Que peut-on faire pour sécuriser le serveur Ubuntu?

J'ai un projet de sécuriser Ubuntu Server autant que je peux. Le serveur est un serveur d'hébergement Web. Le serveur exécutera LAMP, Mail et DNS.

35
One Zero

Voici une liste de choses que je fais pour sécuriser mon serveur.

  1. Activez UFW (Sudo ufw enable) et n'autorisez que les ports réellement utilisés. (Sudo ufw allow 80)
  2. Assurez-vous que MySQL n'autorise que les connexions à partir de localhost.
  3. Activer TLS sur les services de messagerie. Même si c'est un cert auto-signé. Vous ne voulez pas que les mots de passe soient envoyés en clair.
  4. Installez les bloqueurs de bruteforce ssh tels que denyhosts ou fail2ban. (Sudo apt-get install denyhosts)
  5. Examinez uniquement les connexions ssh basées sur des clés.
  6. Apprenez AppArmor. Si vous utilisez assez de configurations Vanilla, c'est extrêmement facile. Assurez-vous qu'il est allumé. Cela aidera à réduire les exploits du jour zéro.
  7. En fonction de l'accès physique au serveur, vous pouvez même envisager de chiffrer les données sur le disque dur.
  8. Suivez les autres recommandations sur ce lien. EDIT: J'ai oublié de modifier cela quand je n'avais pas assez de réputation pour ajouter plus de liens. Le lien voulu ici est le dernier lien ci-dessous.
  9. Ne faites jamais confiance à vos utilisateurs. Si vous avez plusieurs utilisateurs ayant accès au système, verrouillez-les. Si vous devez leur donner accès à Sudo, donnez-leur uniquement ce dont ils ont besoin.
  10. Utiliser le bon sens. Réfléchissez bien à ce que vous feriez si vous étiez en lock-out. Puis fermez ces trous.

Un peu plus de choses à considérer. La plupart des gens oublient l'accès physique. Toutes les configurations logicielles dans le monde ne veulent rien dire si je peux physiquement marcher avec un LiveCD et voler vos données. Méfiez-vous de l'ingénierie sociale. Posez des questions pour vérifier qui est au téléphone et assurez-vous qu'ils ont l'autorisation de faire la demande qu'ils font.

Étant donné que je suis toujours un "nouvel" utilisateur, je ne peux pas publier plus de 2 liens. Vous pouvez en savoir plus sur ce sujet ici: https://help.ubuntu.com/12.04/serverguide/index.html et accorder une attention particulière à https: //help.ubuntu .com/12.04/serverguide/security.html

43
Patrick Regan

Mémoire partagée sécurisée

/ dev/shm peut être utilisé dans une attaque contre un service en cours, tel que httpd. Modifiez/etc/fstab pour le rendre plus sécurisé.

Ouvrez une fenêtre de terminal et entrez les informations suivantes:

Sudo vi /etc/fstab

Ajoutez la ligne suivante et enregistrez. Vous devrez redémarrer pour que ce paramètre prenne effet:

tmpfs     /dev/shm     tmpfs     defaults,noexec,nosuid     0     0

Durcir le réseau avec les paramètres sysctl

Le fichier /etc/sysctl.conf contient tous les paramètres sysctl. Empêcher le routage source des paquets entrants et enregistrer les adresses IP mal formées, entrez les informations suivantes dans une fenêtre de terminal

Sudo vi /etc/sysctl.conf

Editez le fichier /etc/sysctl.conf et supprimez le commentaire ou ajoutez les lignes suivantes:

# IP Spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0 
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Ignore ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0 
net.ipv6.conf.default.accept_redirects = 0

# Ignore Directed pings
net.ipv4.icmp_echo_ignore_all = 1

Pour recharger sysctl avec les dernières modifications, entrez:

Sudo sysctl -p

Empêcher l'usurpation d'adresse IP

Ouvrez un terminal et entrez les informations suivantes:

Sudo vi /etc/Host.conf

Ajoutez ou modifiez les lignes suivantes:

order bind,hosts
nospoof on

Durcir PHP pour la sécurité

Editez le fichier php.ini:

Sudo vi /etc/php5/Apache2/php.ini

Ajoutez ou modifiez les lignes suivantes:

disable_functions = exec,system,Shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On

Pare-feu d'applications Web - ModSecurity

http://www.thefanclub.co.za/how-to/how-install-Apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server

Protéger des attaques par déni de service (DDOS) - ModEvasive

http://www.thefanclub.co.za/how-to/how-install-Apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server

Analyser les journaux et interdire les hôtes suspects - DenyHosts et Fail2Ban

@DenyHosts

DenyHosts est un programme python qui bloque automatiquement les attaques SSH en ajoutant des entrées à /etc/hosts.deny. DenyHosts informera également les administrateurs Linux des hôtes offensants, des utilisateurs attaqués et des connexions suspectes.

Ouvrez un terminal et entrez les informations suivantes:

Sudo apt-get install denyhosts

Après l’installation, éditez le fichier de configuration /etc/denyhosts.conf et modifiez l’email, ainsi que d’autres paramètres, le cas échéant.

Pour modifier les paramètres de messagerie de l'administrateur, ouvrez une fenêtre de terminal et entrez:

Sudo vi /etc/denyhosts.conf

Modifiez les valeurs suivantes de la manière requise sur votre serveur:

ADMIN_EMAIL = root@localhost
SMTP_Host = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts nobody@localhost
#SYSLOG_REPORT=YES 

@ Fail2Ban

Fail2ban est plus avancé que DenyHosts dans la mesure où il étend la surveillance des journaux à d'autres services, notamment SSH, Apache, Courier, FTP, etc.

Fail2ban analyse les fichiers journaux et interdit les adresses IP présentant les signes malveillants - trop d'échecs de mot de passe, recherche d'exploits, etc.

Généralement, Fail2Ban est ensuite utilisé pour mettre à jour les règles de pare-feu afin de rejeter les adresses IP pour une durée spécifiée, bien que toute autre action arbitraire puisse également être configurée. Prêt à l'emploi, Fail2Ban est fourni avec des filtres pour divers services (Apache, messagerie, FTP, SSH, etc.).

Ouvrez un terminal et entrez les informations suivantes:

Sudo apt-get install fail2ban

Après l'installation, éditez le fichier de configuration /etc/fail2ban/jail.local et créez les règles de filtrage requises.

Pour modifier les paramètres, ouvrez une fenêtre de terminal et entrez:

Sudo vi /etc/fail2ban/jail.conf

Activez tous les services que vous souhaitez que fail2ban surveille en remplaçant enabled = false par * enabled = true *

Par exemple, si vous souhaitez activer la surveillance SSH et l'interdiction de jail, recherchez la ligne ci-dessous et remplacez enabled par false par true . C'est tout.

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3

Si vous souhaitez recevoir des courriels de Fail2Ban si des hôtes sont bannis, remplacez la ligne suivante par votre adresse e-mail.

destemail = root@localhost

et modifiez la ligne suivante de:

action = %(action_)s

à:

action = %(action_mwl)s

Vous pouvez également créer des filtres de règles pour les différents services que vous souhaitez que fail2ban surveille et qui ne soient pas fournis par défaut.

Sudo vi /etc/fail2ban/jail.local

Vous trouverez de bonnes instructions sur la façon de configurer fail2ban et de créer les différents filtres sur HowtoForge - cliquez ici pour obtenir un exemple

Une fois la configuration de Fail2Ban terminée, redémarrez le service avec:

Sudo /etc/init.d/fail2ban restart

Vous pouvez également vérifier l'état avec.

Sudo fail2ban-client status

Recherchez les rootkits - RKHunter et CHKRootKit.

Les deux RKHunter et CHKRootkit font fondamentalement la même chose - vérifiez votre système pour les rootkits. Pas de mal à utiliser les deux.

Ouvrez un terminal et entrez les informations suivantes:

Sudo apt-get install rkhunter chkrootkit

Pour exécuter chkrootkit, ouvrez une fenêtre de terminal et entrez:

Sudo chkrootkit

Pour mettre à jour et exécuter RKHunter. Ouvrez un terminal et entrez les informations suivantes

Sudo rkhunter --update
Sudo rkhunter --propupd
Sudo rkhunter --check

Analyser les ports ouverts - Nmap

Nmap ("Network Mapper") est un utilitaire gratuit et à source ouverte pour la découverte de réseaux et l'audit de sécurité.

Ouvrez un terminal et entrez les informations suivantes:

Sudo apt-get install nmap

Analysez votre système pour les ports ouverts avec:

nmap -v -sT localhost

SYN scanning avec les éléments suivants:

Sudo nmap -v -sS localhost

Analyser les fichiers journaux du système - LogWatch

Logwatch est un système d'analyse de journal personnalisable. Logwatch analyse les journaux de votre système et crée un rapport analysant les zones que vous spécifiez. Logwatch est facile à utiliser et fonctionnera dès la livraison sur la plupart des systèmes.

Ouvrez un terminal et entrez les informations suivantes:

Sudo apt-get install logwatch libdate-manip-Perl

Pour afficher la sortie de logwatch, utilisez moins:

Sudo logwatch | less

Pour envoyer par courrier électronique un rapport de surveillance des journaux des 7 derniers jours à une adresse électronique, entrez ce qui suit et remplacez [email protected] par l'adresse électronique requise. :

Sudo logwatch --mailto [email protected] --output mail --format html --range 'between -7 days and today' 

Auditez la sécurité de votre système - Tiger.

Tiger est un outil de sécurité qui peut être utilisé à la fois comme audit de sécurité et comme système de détection d’intrusion.

Ouvrez un terminal et entrez les informations suivantes:

Sudo apt-get install tiger

Pour courir tigre entrez:

Sudo tiger

Toutes les sorties de Tiger se trouvent dans/var/log/tiger

Pour afficher les rapports de sécurité du tigre, ouvrez un terminal et entrez les informations suivantes:

Sudo less /var/log/tiger/security.report.*

pour plus d'aide

13
One Zero

Puisque vous avez dit que ceci est serveur d’hébergement Web ... je voudrais partager mes meilleures pratiques et mon expérience de 5 longues années dans la ligne d’hébergement Web.

  1. D'après mes expériences passées, plutôt que d'entrer dans la configuration de l'enfer tout de suite, vous devez d'abord assembler les grappes basses de sécurité comme indiqué sur l'article donné.

  2. Puisque vous avez LAMP, vous devez donc faire très attention à PHP et à ses paramètres php.ini. C'est un bon lien pour sécuriser PHP. PHP possède des super pouvoirs qui peuvent devenir une boucle de sécurité s’ils ne sont pas configurés correctement.

  3. Vous pouvez utiliser un travail cron pour vérifier quand vos fichiers ont été modifiés sans votre permission et éventuellement piratés; using ce travail cron . Je préfère Notepad ++ pour comparer les résultats de cron (téléchargez directement le courrier électronique de votre serveur Web et ouvrez-le dans Notepad ++).

  4. Si vous souhaitez installer des SEM, cPanel est préférable (bien que payé). Webmin et zpanel sont de très bonnes alternatives gratuites. Webmin est préférable car il utilise au moins des certificats auto-signés et renforce la sécurité.

  5. Si vous voulez que quelque chose fonctionne, alors vous pouvez opter pour Linux clé en main. Il est basé sur Ubuntu, extrêmement facile à mettre en œuvre et flexible pour répondre à vos besoins. Avec très peu d'effort, vous obtenez la sécurité hors de la boîte. C'est leur pile LAMP . Personnellement, j'utilise et préfère cela uniquement.

  6. Si vous partez de zéro, vous pouvez également installer ISPconfig3. Instruction ici .

  7. vous pouvez tester votre sécurité en essayant de la pénétrer en utilisant Back-Track-Linux .

  8. gardez les mots de passe longs et complexes et aléatoires. Ne les stockez pas sur un PC. écrivez-les. Utilisez un live CD pour accéder à ces connexions.

  9. obtenez un logiciel de protection contre la force brute tel que fail2ban.

  10. Ne lancez pas les démons dont vous n'avez pas besoin.

  11. Bloquez tous les ports inutiles . soyez extrêmement prudent avec le port SSH (22).

  12. Procurez-vous une adresse IP statique sur le système à travers lequel vous allez gérer le serveur. Bloquez la plupart des éléments IP et autorisez uniquement votre adresse IP à accéder à des emplacements de configuration tels que le port 22.

À la fin de la journée ... travaillez avec l'esprit en paix, ne vous émeutez pas avec l'installation et l'application du bon sens vous mènera bien au-delà .

**My heartiest best wishes to you. good luck.**
13
Bhavesh Diwan

Utilisez le projet Bastille Linux.

Il fournit un outil interactif pour appliquer des mesures de renforcement de la sécurité supplémentaires afin d'accroître la sécurité globale et de réduire les risques de compromission de votre système Ubuntu (à partir de Bastille Linux ).

Il offre une fonctionnalité d'évaluation et de création de rapports, de sorte qu'il puisse vous indiquer quelles parties du système ne sont pas verrouillées. Il examine le système en lecture seule et rend compte de l'état de chacun de ses éléments de renforcement. Par exemple, Bastille peut vérifier si le serveur DNS est verrouillé dans une prison chroot, si telnet est désactivé ou même si les mots de passe doivent être d'une longueur correcte. Vous pouvez jeter un coup d'œil à une démonstration de ce site uniquement sur le Web via ce lien (plus info ).

Vous pouvez avoir un aperçu de la démo Web (uniquement) ici .

BastillleLinux

6
pl1nk

Utilisez nmap sur toutes les interfaces de la machine afin de connaître les services que vous exécutez sur votre machine. C'est un outil essentiel pour la sécurité.

Supprimez tous les services dont vous n'avez pas besoin sur vos interfaces externes. Vous pouvez configurer MySQL pour n’écouter que sur des interfaces spécifiques, telles que localhost.

Utilisez ufw pour protéger votre service SSH (et d’autres éventuels) afin qu’il ne permette pas un trop grand nombre de connexions (en échec) par minute à partir du même ordinateur. Cela rendra les attaques par force brute plus difficiles. Changer le numéro de port n’est pas très utile, c’est de l’obscurité, pas de sécurité.

Soyez restrictif avec le nombre de comptes sur votre machine. De même, n'installez pas plus de packages/programmes que vous n'en utilisez réellement. Installez uniquement les clients X11, pas un serveur X11.

N'autorisez que ssh-login sur la machine avec des certificats numériques, non mot de passe. Cela rendra également les attaques en force brute difficiles/impossibles.

3
Anders

Je voudrais également consulter le document CIS Debian Benchmarks et il contient un nombre important de procédures et de processus de renforcement du système d'exploitation qui s'appliqueront à Ubuntu puisqu'il s'agit d'un dérivé de Debian. Je voudrais aussi consulter:

2
Justin Andrusk

La sécurité a toujours un prix. Fixer des limites réalistes vous aidera à atteindre vos objectifs. Je considérerais les aspects suivants:

  • Contre quoi vous protégez-vous (quel type de méchant, quel est son budget)?
  • Quels sont vos vecteurs d'attaque?

En vérifiant tous les liens affichés ici, je pense que celui-ci devrait être ajouté. Il explique en détail non seulement comment configurer votre logiciel, mais aussi pour réfléchir au plan de sécurité. En plus, chaque commande à exécuter est expliquée avec une source.

Sécurisation d'un serveur Web Ubuntu sur Xenial 16.04

0
Daan

J'ai récemment publié un article à ce sujet sur la sécurisation d'ubuntu 16.04-18.04. Ces étapes comprennent:

Remplacer le mot de passe de connexion par des clés autorisées Installer un pare-feu sur votre serveur Linux

et quelques autres. https://hostup.org/blog/how-to-secure-a-ubuntu-linux-server-in-3-simple-steps/

0
Davh