J'ai essayé de mettre en place un script iptables de serveur de base qui fonctionnera pour la plupart des sites exécutant simplement un serveur Web de base en utilisant HTTP (S) et SSH (ports 80, 443 et 22). Après tout, la plupart des VPS n'ont besoin que de ces règles de ports de démarrage et peuvent ajouter des ports de messagerie ou de jeu plus tard selon les besoins.
Jusqu'à présent, j'ai le jeu de règles suivant et je me demandais si quelqu'un connaissait un meilleur script ou des améliorations qui pourraient être ajoutées.
*filter
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allows all outbound traffic
# You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
iptables est l'une des parties les plus importantes de la sécurisation de votre box (voir aussi fail2ban) et pourtant il y a beaucoup de gens comme moi qui ont du mal à comprendre tout ce qui est nécessaire pour créer un pare-feu de base sécurisé pour nos serveurs.
Quel est le moyen le plus sûr d'ouvrir uniquement les ports de base nécessaires à un serveur Web?
Mise à jour: cyberciti.biz a un autre script iptables qui semble assez bon.
De plus, plutôt que d'utiliser Denyhosts ou fail2ban, vous pouvez utiliser iptables lui-même pour bloquer les mauvaises tentatives répétées de SSH .
modprobe
n'est pas installé (ou s'il y a une autre erreur avant d'ouvrir le port 22), vous vous verrouillerez hors du serveur.