web-dev-qa-db-fra.com

VPS Security Meilleures pratiques

Je viens de vous inscrire à un VPS Linux pour accueillir un site Web que j'ai créé et j'ai besoin de conseils sur la meilleure approche pour la sécuriser.

Je l'ai déjà hébergé A VM à la Chambre, mais je veux me débarrasser de cela. La sécurité a donc été traitée par le fait que je suis Nat'd et seulement certains Les ports ouverts/transmis à la machine.

Maintenant, je me trouve dans une situation où la machine est essentiellement complètement ouverte sur Internet. Je pense donc que je dois commencer à faire quelque chose avec des tables IP? C'est quelque chose de complètement nouveau pour moi.

Je pensais qu'il pourrait y avoir une solution plus élégante, impliquant de la connecter à mon VPN sur une interface distincte pour se connecter à travers cela, mais pas sûr d'où commencer avec cela.

J'ai besoin de:

  1. Accès SSH de n'importe où (à l'aide d'un port non standard déjà configuré)
  2. Postgres accès à partir d'un seul endroit
  3. Accès Web (http/https) de n'importe où
  4. Accès FTP d'un seul endroit

Des questions:

  1. Quelle est la meilleure pratique pour sécuriser une machine Linux comme celle-ci? est-ce iptable?
  2. Pouvez-vous me signaler dans la direction des ressources (celles décentes) pour apprendre comment cela.

Mon niveau Linux est relativement élevé, je peux écrire/déboguer des scripts Bash, modifier des configurations à partir de zéro, etc., et je comprends un peu juste sur l'architecture, mais je ne suis pas gourou.

15
Martin
  • Limiter l'accès aux services. IPTABLES est un bon moyen de gérer cela. Configuration Connectez des règles qui appliquent ce que vous avez décrit pour chaque service et supprimez tout le reste.
  • Limitez vos démons à travers une configuration appropriée. Si vous ne vous authentifiez que avec une clé publique sur SSH (et que vous êtes assez confiant, vous ne le perdrez pas et ne vous niez pas l'accès), désactivez le mot de passe et le clavier. Fail2Ban est pratique pour les tentatives de force brute, mais le rejet instantané est plutôt satisfaisant aussi. Configurez votre serveur FTP pour uniquement exporter l'arborescence de répertoire associée.
  • Supposons que chacun de vos démons est compromis maintenant ... sauf peut-être ssh parce que c'est juste une de ces choses. Utilisez des installations externes pour limiter ce que le démon peut faire sur votre hôte.

Je suis un grand fan d'Apparmor sur Linux car la configuration est quelque chose qui peut être raisonnablement compris et il est très puissant pour les applications de boxe de sable. Par exemple, vous pouvez limiter les postgres et tout ce qui est déjà exécuté par celui-ci pour affecter uniquement le champ de stockage de la base de données. Il en va de même pour les serveurs Web et FTP - ils n'ont jamais besoin de lire toutes les données en dehors de leurs répertoires d'exploitation et n'ont jamais besoin d'ouvrir un autre port réseau. Obtenez une alerte email à toute violation de ces ensembles de règles.

Isoler vos services comme celui-ci vous donnera confiance à l'intégrité de la machine dans son ensemble, même si un service individuel est compromis.

9
Jeff Ferland

Vous traiterez cette boîte comme n'importe quelle boîte physique qui a une adresse IP publique. Vous devez suivre les directives de durcissement de la Linux de base telles que:

  1. Gardez la mise à jour de la boîte.
  2. Supprimer des programmes inutiles.
  3. Avoir des iptables en cours d'exécution et enfermés aussi serrés que possible.
    • Vous pouvez effectuer toutes les règles de source spécifiques que vous souhaitez avec celles-ci telles que votre exigence FTP et Postgres.
  4. Exécutez SSH sur un port non standard et n'autorise pas les connexions racines.
    • Vous pouvez également faire une authentification basée sur la clé pour le sécuriser.
    • Je recommanderais également d'exécuter Denyhosts et/ou Fail2Ban afin que vous puissiez suivre vos journaux pour les tentatives de connexion infructueuses, puis bloquez instantanément IPS via /etc/hosts.deny. C'est juste une autre couche qui vous fera sentir beaucoup mieux sur SSH étant ouverte.
  5. Exécutez une cache sur la boîte. Je recommanderais OSCEC pour une certaine alerte de dysfonctionnements sur votre boîte, vos attaques potentielles, ainsi qu'une intégrité de fichiers et une détection de kit de racine.
  6. Surveillez vos services pour vous assurer qu'ils sont tous opérationnels et fonctionnent correctement. En utilisant un programme tel que Nagios.
  7. Etc.

Vous pouvez également configurer un VPN, tel que l'utilisation OpenVPN pour entrer dans la case. De cette façon, vous pouvez exécuter OpenVPN sur un port non standard, puis vous pouvez la configurer pour une authentification basée sur la clé et basée sur le mot de passe avant de vous le permet.

Vous trouverez ci-dessous 2 sites que je recommande vivement à regarder.

http://www.sans.org/score/checklists/linuxchecklist.pdf

http://www.ycyberciti.biz/tips/linux-security.html

3
Eric