J'ai un projet de sécuriser le serveur Ubuntu autant que je peux. Le serveur est un serveur d'hébergement Web. Le serveur exécutera LAMP, Mail et DNS.
J'ai un projet de sécuriser le serveur Ubuntu autant que je peux. Le serveur est un serveur d'hébergement Web. Le serveur exécutera LAMP, Mail et DNS.
Réponses:
Voici une liste de choses que je fais pour sécuriser mon serveur.
sudo ufw enable
) et n'autorisez que les ports réellement utilisés. ( sudo ufw allow 80
)sudo apt-get install denyhosts
)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
iptables
règles extrêmement spécifiques interdisant l’accès externe à tout service que vous n’allez pas utiliser, si vous avez un problème inhabituel. configuration de la balle qui nécessite un rouing avancé et d'autres choses.
/ 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
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
Ouvrez un terminal et entrez les informations suivantes:
sudo vi /etc/host.conf
Ajoutez ou modifiez les lignes suivantes:
order bind,hosts
nospoof on
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
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’adresse électronique 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 selon vos besoins 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 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, 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 selon les besoins.
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 avec fail2ban 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 en true . C'est ça.
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
Si vous souhaitez recevoir des emails de Fail2Ban si des hôtes sont bannis, remplacez la ligne suivante par votre adresse email.
destemail = root@localhost
et changez la ligne suivante 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
Des instructions sur la façon de configurer fail2ban et créer les différents filtres peuvent être trouvés 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 l'état avec.
sudo fail2ban-client status
Les deux rkhunter et ChkRootKit font essentiellement la même chose - vérifier votre système pour 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
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
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 mail@domaine.com par l'adresse électronique requise. :
sudo logwatch --mailto mail@domain.com --output mail --format html --range 'between -7 days and today'
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.*
magic_quotes_gpc = On
. Magic quotes a d'abord été déconseillé, puis supprimé: php.net/manual/fr/security.magicquotes.whynot.php
Puisque vous avez dit qu'il s'agissait d'un serveur d'hébergement Web ... J'aimerais partager mes meilleures pratiques et mon expérience de 5 longues années dans le secteur de l'hébergement Web.
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é.
Puisque vous rencontrez 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.
Vous pouvez utiliser un travail 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 Notepad ++ pour comparer les résultats cron (téléchargez directement le courrier électronique cron à partir de votre serveur Web et ouvrez-le dans Notepad ++).
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é.
Si vous voulez que quelque chose fonctionne immédiatement, 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. Ceci est leur pile LAMP . Personnellement, j'utilise et préfère cela uniquement.
Si vous partez de zéro, vous pouvez également installer ISPconfig3. Instruction ici .
vous pouvez tester votre sécurité en essayant de pénétrer votre sécurité avec Back-Track-Linux .
conservez des mots de passe complexes, longs et aléatoires. Ne les stockez pas sur le PC. écrivez-les. Utilisez un live CD pour accéder à ces connexions.
Procurez- vous un logiciel de protection contre la force brute comme fail2ban.
Ne lancez pas ces démons dont vous n'avez pas besoin.
Bloquez tous les ports inutiles . soyez extrêmement prudent avec le port SSH (22).
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, ne vous laissez pas émouvoir par l'installation, et appliquer le bon sens vous mènera au-delà.
**My heartiest best wishes to you. good luck.**
brute force attacks
et dictionary attacks
.. Un mot de passe long et aléatoire est le seul moyen de vous protéger de telles attaques.
Utilisez le projet Bastille Linux.
Il fournit un outil interactif pour effectuer 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 afin de 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 Web uniquement via ce lien (plus d' informations ).
Vous pouvez avoir un aperçu de la démo Web (uniquement) ici .
Utilisez-la nmap
sur toutes les interfaces de la machine pour 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 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, sans mot de passe. Cela rendra également les attaques en force brute difficiles / impossibles.
Je consulterais également le document CIS sur les référentiels Debian , qui contient un nombre important de procédures et de processus de renforcement du système d’exploitation qui s’appliqueront à Ubuntu, car c’est un dérivé de Debian. Je voudrais aussi consulter:
La sécurité a toujours un prix. Fixer des limites réalistes vous aidera à atteindre vos objectifs. Je considérerais les aspects suivants:
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.
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/