C'est mon /etc/sysconfig/iptables
:
Il a deux ports ouverts 80 Apache et 22 pour SSH.
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Pour le port 22 (SSH), je souhaite m'assurer que personne ne peut se connecter à ce port, à l'exception d'une adresse IP spécifique.
exemple ip:
1.2.3.4
Veuillez ne pas tenir compte de tout oubli ou de toute préoccupation concernant ce qui se passe si mon adresse IP change et que je ne peux plus utiliser SSH sur mon serveur.
iptables
inversion avec l’opérateur bang est prise en charge si vous souhaitez effectuer un ciblageDROP
. Exemple:iptables -I INPUT -p tcp ! -s <permittedIP> -j DROP
DROP
ne sont pas vraiment nécessaires, vous pouvez simplement définir la politique par défaut sur le pare-feuiptables -P INPUT DROP
et le laisser aller. Vous voudrez probablement aussi les faire en annexe si vous les faites de cette façon sinon tout le trafic sera attrapé par leDROP
et n'atteindra jamais votreACCEPT
règle.iptables -I INPUT 3 -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
etiptables -I INPUT 3 -p udp -s 0.0.0.0/0 --dport 53 -j DROP
"3" après INPUT signifie insérer en tant que règle INPUT n ° 3 (en supposant que vous insériez deux ACCEPTS, sinon si un seul ACCEPTE, utilisez "2" pour INPUT.-I
insère les nouvelles règles iptables en haut. En tant que tel, vous pourriez finir par installer votre goutte avant votre permission. Je suggère d'utiliser-A
plutôtBien que je recommande d'utiliser des clés SSH, je vais vous donner une explication.
Vous n'avez pas besoin d'utiliser IPtables pour ce que vous essayez d'atteindre, il y a plusieurs façons. C'est la manière d'IPtables:
[YOUR_HOME_IP]
= Votre IP à la maison (assez simple)[SSH_PORT]
= Le port sur lequel vous exécutez SSH (par défaut 22)Cela garantit que personne, à l'exception de votre adresse IP, ne peut se connecter à SSH.
Il existe un autre moyen, qui consiste à ajouter quelque chose au
sshd_config
.Ajouter ce qui suit:
Cela vous permet de vous connecter à SSH en tant
root
qu'utilisateur de votre adresse IP sans demander de mot de passe.S'il vous plaît garder à l'esprit qu'un cronjob avec
peut être intelligent afin de ne pas bloquer votre serveur avec SSH (le travail cronjob réinitialisera IPtables pour que vous ayez à nouveau accès). Si vous y avez toujours accès, vous pouvez supprimer le travail cron et redéfinir vos IPtables.
la source
iptables
en premier lieu? Une certaine forme d'accès hors bande est la méthode habituelle.knockd
est un autre.at
est-ce que.Without-Password
signifie que l'authentification par mot de passe n'est pas autorisée, vous devrez donc utiliser l'authentification par clé SSH. Il s'agit en effet d'un nom peu clair pour cette méthode d'authentification. Mais cela ne signifie pas que vous n’avez pas besoin d’un mot de passe pour vous connecter en tant que root. Néanmoins, une méthode plus sécurisée consiste à définirPermitRootLogin no
et à utiliser un compte sudo différent pour la connexion, car la racine est une cible communeD'autres
iptables -I
exemples utilisent dans leurs exemples, ce qui n'est souvent pas ce que vous devriez utiliser.iptables exécutera la première règle qui correspond, l’ordre des règles est donc très important.
-I
est la commande "insert" et doit être utilisée avec un paramètre d'index pour spécifier à quel emplacement de la liste appartient une règle donnée.-A
est la commande "append", qui ajoutera la règle à la fin de la liste.Dans certaines distributions (peut-être toutes), l'utilisation d'
-I
un paramètre sans index ajoute la règle à celle-ci, ce qui en fait la première règle vérifiée. Dans ce scénario, si la dernière commande que vous exécutez estiptables -I INPUT -s tcp 0.0.0.0/0 -j DROP
alors iptables abandonnera tout le trafic, que vous ayez ou non desACCEPT
règles plus tard dans la chaîne.Voici un exemple de configuration d’une règle qui autorise uniquement SSH à partir d’une seule adresse IP:
Partir sans règles:
Ajoutez une nouvelle règle "autoriser SSH à partir de 1.2.3.4":
#>iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT
Bloquez SSH de toutes les autres adresses IP:
#>iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Maintenant votre chaîne INPUT ressemblera à:
Plus tard, si vous devez ajouter une deuxième adresse à la liste blanche, vous pouvez utiliser le
-I
paramètre pour la placer avant la règle de la liste noire.#>iptables -I INPUT 2 -p tcp -s 4.3.2.1 --dport 22 -j ACCEPT
Notez que l'utilisation de
-I INPUT 2
la nouvelle règle ajoutée en tant que règle 2 et que la règle DROP a été remplacée par le numéro 3.la source