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

33

J'ai un projet pour sécuriser le serveur Ubuntu autant que possible. Le serveur est un serveur d'hébergement Web. Le serveur exécutera LAMP, Mail et DNS.

    
posée One Zero 05.06.2012 - 14:20
la source

7 réponses

42

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

  1. Activez UFW ( sudo ufw enable ), puis autorisez uniquement les ports réellement utilisés. ( sudo ufw allow 80 )
  2. Assurez-vous que MySQL autorise uniquement les connexions depuis localhost.
  3. Activez TLS sur les services de messagerie. Même si c'est un certificat auto-signé. Vous ne voulez pas que les mots de passe soient envoyés en clair.
  4. Installez les bloqueurs bruteforce ssh comme denyhosts ou fail2ban. ( sudo apt-get install denyhosts )
  5. Examinez uniquement les connexions basées sur des clés ssh.
  6. Apprenez AppArmor. Si vous utilisez des configurations assez vanille, alors c'est extrêmement facile. Assurez-vous simplement qu'il est allumé. Cela aidera à réduire les exploits du jour zéro.
  7. Selon 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 de ce lien. EDIT: J'ai oublié de modifier ceci quand je n'avais pas assez de réputation pour ajouter plus de liens. Le lien ci-dessous est le dernier lien ci-dessous.
  9. Ne faites jamais confiance à vos utilisateurs. Si plusieurs utilisateurs ont accès au système, verrouillez-les. Si vous devez leur donner un accès sudo, ne leur donnez que ce dont ils ont besoin.
  10. Faites preuve de bon sens. Pensez vraiment à la façon dont vous pourriez entrer si vous étiez jamais en lock-out. Fermez ensuite ces trous.

Quelques autres choses à considérer. La plupart des gens oublient l'accès physique. Toutes les configurations logicielles du monde ne signifient rien si je peux physiquement entrer avec un LiveCD et voler vos données. Attention à 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.

Comme je suis toujours un "nouvel" utilisateur, je ne peux pas poster plus de 2 liens. Vous pouvez en savoir plus sur ce sujet ici: lien et portez une attention particulière à lien

    
réponse donnée Patrick Regan 07.06.2012 - 15:19
la source
13

Mémoire partagée sécurisée

/ dev / shm peut être utilisé dans une attaque contre un service en cours d'exécution, 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

Renforcer le réseau avec les paramètres sysctl

Le fichier /etc/sysctl.conf contient tous les paramètres sysctl. Empêchez le routage source des paquets entrants et connectez 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 désélectionnez 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

Renforcer PHP pour la sécurité

Modifiez 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’application Web - ModSecurity

lien

Protège contre les attaques DDOS (déni de service) - ModEvasive

lien

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, des utilisateurs attaqués et des connexions suspectes offensants.

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 et d’autres paramètres si nécessaire.

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

sudo vi /etc/denyhosts.conf

Modifiez les valeurs suivantes sur votre serveur:

ADMIN_EMAIL = [email protected]
SMTP_HOST = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts [email protected]
#SYSLOG_REPORT=YES 

@ Fail2Ban

Fail2ban est plus avancé que DenyHosts car 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 qui affichent les signes malveillants - trop de défaillances de mot de passe, recherche d'exploits, etc.

Généralement, Fail2Ban était utilisé pour mettre à jour les règles de pare-feu afin de rejeter les adresses IP pendant une durée spécifiée, même si toute autre action arbitraire pouvait également être configurée. Fail2Ban est livré avec des filtres pour différents services (apache, courrier, 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 surveiller par fail2ban en modifiant enabled = false à * enabled = true *

Par exemple, si vous souhaitez activer la surveillance et l’interdiction SSH, recherchez la ligne ci-dessous et modifiez-la de false à true . Thats it.

[ssh]

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

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

destemail = [email protected]

et modifiez la ligne suivante à partir de:

action = %(action_)s

à

action = %(action_mwl)s

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

sudo vi /etc/fail2ban/jail.local

De bonnes instructions sur la configuration de fail2ban et la création des différents filtres sont disponibles sur HowtoForge - cliquez ici pour 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 le statut avec.

sudo fail2ban-client status

Vérifiez les rootkits - RKHunter et CHKRootKit.

En principe, RKHunter et CHKRootkit Faites la même chose - vérifiez votre système à la recherche de rootkits. Pas de mal à utiliser les deux.

Ouvrez un terminal et entrez les informations suivantes:

sudo apt-get install rkhunter chkrootkit

Pour lancer 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 open source pour la découverte du réseau et l'audit de sécurité.

Ouvrez un terminal et entrez les informations suivantes:

sudo apt-get install nmap

Recherchez dans votre système les ports ouverts avec:

nmap -v -sT localhost

Analyse SYN 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 sortie du package 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 logwatch, utilisez moins:

sudo logwatch | less

Pour envoyer par courrier électronique un rapport Logwatch pour les 7 derniers jours à une adresse e-mail, entrez ce qui suit et remplacez [email protected] par l'e-mail requis. :

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

Audit de 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 lancer tiger enter:

sudo tiger

Toutes les sorties Tiger peuvent être trouvées 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

    
réponse donnée One Zero 15.06.2012 - 16:51
la source
13

Étant donné que vous avez dit que c'était serveur d'hébergement Web ... J'aimerais partager mes meilleures pratiques et mon expérience de 5 longues années dans la ligne d'hébergement Web .

  1. De mes expériences passées, plutôt que de passer directement à la configuration, vous devez d'abord assembler les grappes de sécurité les plus basses comme indiqué sur l'article donné.

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

  3. Vous pouvez utiliser un job cron pour vérifier si vos fichiers ont été modifiés sans votre permission et éventuellement piratés. en utilisant ce travail cron . Je préfère que Notepad ++ compare les résultats de la recherche (téléchargez directement l’e-mail cron à partir de votre serveur Web et ouvrez-le dans Notepad ++).

  4. Si vous souhaitez installer un SEM, cPanel est préférable (quel que soit le mode de paiement). Webmin et zpanel sont de très bonnes alternatives gratuites . Webmin est mieux pour cela au moins utilise des certificats auto-signés et ajoute de la sécurité.

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

  6. Si vous commencez à partir de rayures, vous pouvez également installer ISPconfig3. Instruction Ici .

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

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

  9. obtenir un logiciel de protection contre la brutalité comme fail2ban.

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

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

  12. Obtenez une adresse IP statique sur le système via lequel vous allez gérer le serveur. Faites le maximum sur le blocage IP et autorisez uniquement votre adresse IP particulière à accéder aux emplacements de configuration tels que le port 22.

À la fin de la journée ... travaillez en toute sérénité, ne vous énervez pas avec l’installation et le bon sens va bien au-delà.

**My heartiest best wishes to you. good luck.**
    
réponse donnée Z9iT 10.06.2012 - 01:55
la source
6

Utilisez le projet Linux Bastille.

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

Il offre une fonctionnalité d’évaluation et de génération de rapports afin de vous indiquer quelles parties du système ne sont pas verrouillées. Il examine le système en lecture seule, en indiquant 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 suffisamment longs. Vous pouvez jeter un oeil à une démo Web uniquement à travers ce lien (plus info ).

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

    
réponse donnée pl1nk 09.06.2012 - 01:45
la source
3

Utilisez nmap sur toutes les interfaces de la machine, afin de savoir quels services 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 qu'il n'écoute que sur des interfaces spécifiques, comme localhost.

Utilisez ufw pour protéger votre service SSH (et d’autres personnes) afin qu’il ne permette pas trop de connexions (échouées) par minute à partir du même ordinateur. Cela rendra les attaques par force brute plus difficiles. Changer de numéro de port n’est pas utile, mais simplement obscur, pas de sécurité.

Soyez restrictif quant au nombre de comptes sur votre machine. De même, n'installez pas plus de packages / programmes que vous n'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, no mot de passe. Cela rendra aussi les attaques en force brutale / impossible.

    
réponse donnée Anders 06.06.2012 - 22:48
la source
0

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

  • Par rapport à ce que vous vous protégez (quel type de méchant, quel est son budget)?
  • Quels sont vos vecteurs d’attaque?

En vérifiant tous les liens postés ici, je pense que celui-ci devrait être ajouté. Il décrit en détail non seulement la configuration de votre logiciel, mais aussi le plan de sécurité. De plus, chaque commande à exécuter est expliquée avec une source.

Sécuriser un serveur Web Ubuntu sur Xenial 16.04

    
réponse donnée Daan 03.05.2018 - 15:10
la source

Lire d'autres questions sur les étiquettes