Non. Ce n'est pas suffisant pour assurer votre sécurité.
Cela vous gardera probablement en sécurité un certain temps, mais la sécurité est complexe et rapide, donc votre approche n'est vraiment pas bonne assez pour une sécurité à long terme . Si tout le monde faisait les mêmes suppositions que celles que vous faites dans votre question, Internet ne serait plus qu'un gros botnet.
Donc non, ne limitons pas cette question aux paquets. Regardons la sécurité du serveur de manière holistique afin que quiconque lisant ceci ait une idée du nombre de pièces en mouvement qu'il y a réellement.
-
APT (par exemple les dépôts d'Ubuntu) ne couvre qu'une partie de votre pile logicielle. Si vous utilisez (par exemple) Wordpress ou une autre bibliothèque PHP populaire et que celle-ci n'est pas contrôlée par dépôt, vous devez également la mettre à jour. Les plus gros frameworks ont des mécanismes pour automatiser cela, mais assurez-vous de prendre des sauvegardes et de surveiller l'état du service, car ils ne fonctionnent pas toujours bien.
-
Vous avez tout écrit vous-même, donc vous pensez-vous que vous êtes à l'abri des enfants de script? Il y a des robots d'injection SQL automatisés et d'exploit XSS qui tournent partout, poussant toutes les chaînes de requêtes et toutes les formes.
C'est en fait l'un des endroits où un bon cadre aide à se protéger contre les programmeurs inadéquats qui n'apprécient pas les nuances de ceux-ci attaques. Faire auditer le code par un programmeur compétent aide également à apaiser les craintes ici.
-
Est-ce que PHP (ou Python, ou tout ce que vous utilisez) a vraiment besoin de pouvoir écrire partout? Renforcez votre configuration et vous atténuerez de nombreuses attaques. Idéalement, les seuls endroits où une application Web est capable d'écrire sont une base de données, et les endroits où le script ne sera jamais exécuté (par exemple, une règle nginx qui permet uniquement de servir des fichiers statiques).
Le Les valeurs par défaut de PHP (du moins comment les gens les utilisent) permettent à PHP de lire et d'écrire PHP n'importe où dans la racine Web. Cela a de sérieuses implications si votre site Web est exploité.
Remarque: si vous bloquez l'accès en écriture, des choses comme WordPress ne pourront pas se mettre à jour automatiquement. Recherchez des outils comme wp-cli
et faites-les fonctionner de manière planifiée.
-
Et votre calendrier de mise à jour est activement dangereux. Qu'est-ce que c'est que "de temps en temps"? Les bogues critiques de sécurité à distance ont une demi-vie courte, mais il y a déjà un délai entre 0 jour et la disponibilité des correctifs, et certains exploits sont également inversés à partir de correctifs (pour attraper les pokes lents).
Si vous N'appliquez des mises à jour qu'une fois par mois, il y a de fortes chances que vous exécutiez des logiciels exploitables dans la nature. TL; DR: utilisez les mises à jour automatiques.
-
Les versions des distributions ne durent pas éternellement. Si vous avez été sensé et avez choisi une version LTS d'Ubuntu, vous avez 5 ans à compter de la sortie initiale. Deux autres versions de LTS sortiront dans ce délai et cela vous donne des options.
Si vous étiez sur un déchaînement "NEWER IS BETTER" et que vous êtes allé avec 16.10 lorsque vous avez configuré votre serveur, vous avez 9 mois . Ouais. Ensuite, vous devez mettre à niveau vers 17.04, 17.10 avant de pouvoir vous détendre sur 18.04 LTS.
Si votre version d'Ubuntu expire, vous pouvez dist-upgrade toute la journée, vous n'obtiendrez cependant aucune mise à niveau de sécurité .
-
Et la pile LAMP elle-même n'est pas le seul vecteur d'attaque d'un serveur Web standard.
- Vous vous devez renforcer votre configuration SSH: utilisez uniquement les clés SSH, désactivez les mots de passe, dérivez le port, désactivez les connexions root, surveillez les tentatives brutes et bloquez-les avec
fail2ban
. - Pare-feu hors de tout autre service avec
ufw
(et alii). - N'exposez jamais la base de données (sauf si vous avez besoin de , puis verrouillez l'adresse IP entrante dans le pare-feu).
- Ne laissez pas les scripts PHP aléatoires installés ou vous les oublierez et ils être piraté.
-
Il n'y a pas de surveillance dans votre description. Vous êtes aveugle. Si quelque chose se produit là-bas et commence à envoyer du spam, à infecter vos pages Web, etc., comment pouvez-vous savoir que quelque chose de grave s'est produit? Comparaison de fichiers planifiée avec git (assurez-vous qu'il s'agit d'un accès en lecture seule depuis le serveur).
-
Considérez la sécurité (physique et distante) de votre FAI. Les «hôtes» à la douzaine de dollars (alias les pirates de CPanel) - qui offrent des plans d'hébergement illimités à 2 $ / mois - investissent-ils les mêmes ressources dans la sécurité qu'un serveur dédié? Renseignez-vous et examinez l'historique des violations.
Remarque: Une violation publiée n'est pas nécessairement une mauvaise chose. Les petits hôtes ont tendance à ne pas avoir de dossier et lorsque des choses sont introduites par effraction, il n'y a pas les "post-mortems" publics que de nombreux hôtes et services réputés effectuent.
-
Et puis il y a vous . La sécurité de l'ordinateur sur lequel vous codez tous ces éléments est presque aussi importante que le serveur. Si vous utilisez les mêmes mots de passe, vous êtes une responsabilité. Sécurisez vos clés SSH avec une clé physique FIDO-UF2.
Je fais des devops depuis ~ 15 ans et c'est quelque chose que vous pouvez apprendre sur le tas, mais il suffit d'une seule brèche - un adolescent, un robot - pour ruiner un serveur entier et causer des semaines de travail de désinfection du produit de travail.
Simplement être conscient sur ce qui fonctionne et ce qui est exposé, vous aide à prendre de meilleures décisions sur ce que vous faites. J'espère juste que cela aidera quelqu'un à démarrer le processus d'audit de son serveur.
Mais si vous - le programmeur moyen d'applications Web - ne voulez pas vous plonger dans ce genre de choses, devriez-vous même utiliser un serveur? C'est une question sérieuse. Je ne vais pas vous dire que vous ne devriez absolument pas, mais que vous arrive-t-il lorsque vous ignorez tout cela, votre serveur est piraté, votre client perd de l'argent et vous exposez des informations personnelles sur le client (par exemple, des données de facturation) et vous êtes poursuivi en justice ? Êtes-vous assuré pour ce niveau de perte et de responsabilité civile?
Mais oui, c'est pourquoi les services gérés coûtent tellement plus cher que les serveurs stupides.
Sur la vertu de sauvegardes ...
Une sauvegarde complète du système est probablement la pire chose que vous puissiez conserver - pour la sécurité - car vous serez tenté de l'utiliser si vous êtes piraté. Leur seul endroit est la récupération après une panne matérielle.
Le problème avec leur utilisation dans des hacks est que vous vous réinitialisez à un moment encore plus ancien. Pourtant, plus de défauts dans votre pile sont apparents maintenant, encore plus d'exploits existent pour le trou qui vous a eu. Si vous remettez ce serveur en ligne, vous pourriez être piraté instantanément. Vous pouvez bloquer le trafic entrant et effectuer une mise à niveau du package, ce qui pourrait vous aider, mais à ce stade, vous Je ne sais toujours pas ce qui vous a eu, ni quand cela vous a eu. Vous basez toutes vos hypothèses sur un symptôme que vous avez vu (injection d'annonces sur vos pages, spam rebondi dans votre mailq). Le piratage aurait pu avoir lieu des mois avant cela.
Ils sont évidemment mieux que rien, et bien dans le cas d'un disque en train de mourir, mais encore une fois, ils sont inutiles pour la sécurité .
Les bonnes sauvegardes sont des recettes Vous voulez quelque chose - juste un document en langage simple ou quelque chose de technique comme une routine Ansible / Puppet / Chef - qui peut guider quelqu'un à travers la restauration de l'ensemble site vers un tout nouveau serveur. Éléments à prendre en compte:
- Une liste de packages à installer
- Une liste de modifications de configuration à apporter
- Comment restaurer la source du site Web à partir du contrôle de version .
- Comment restaurer le vidage de la base de données * et tous les autres fichiers statiques dont vous ne pouvez pas contrôler la version.
Plus vous pouvez être détaillé ici, mieux c'est parce que sert de sauvegarde personnelle . Mes clients savent que si je meurs, ils ont un plan testé pour restaurer leurs sites sur du matériel qu’ils contrôlent directement.
Une bonne restauration scriptée devrait prendre pas plus de 5 minutes. Ainsi, même le délai entre une restauration scriptée et la restauration d'une image disque est minime.
* Remarque : les vidages de base de données doivent également être vérifiés. Assurez-vous qu'il n'y a pas de nouveaux utilisateurs administrateurs dans votre système ou de blocs de script aléatoires. C'est aussi important que de vérifier les fichiers source ou vous serez simplement piraté à nouveau.