Je dois configurer un serveur avec une adresse IP publique pour les tests de bande passante et je dispose déjà d'un script pour supprimer tout le trafic entrant, à l'exception des ports dont j'ai besoin. J'ai changé le port ssh de default (22) en un autre (appelons-le XXXXX; désolée pour la paranoïa mais nous venons de nous faire pirater la semaine dernière).
Ma question est donc la suivante: comment autoriser une plage d'adresses IP à ssh sur le serveur via ce port spécifique?
Le script que j'ai mentionné plus tôt:
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o em1 -p tcp --sport XXXXX -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i em1 -p tcp --sport XXXXX -m state --state ESTABLISHED -j ACCEPT
Il me suffit donc d’ajouter la plage ip pour pouvoir ssh à distance.
Utilisez l'option -s
de iptables
. Il accepte une adresse IP de la forme nnn.nnn.nnn.nnn
ou avec un masque (nnn.nnn.nnn.nnn/nnn.nnn.nnn.nnn
ou nnn.nnn.nnn.nnn/nn
). Donc, pour autoriser par exemple les connexions de nnn.nnn.nnn. *, Vous pouvez écrire
iptables -A INPUT -s nnn.nnn.nnn.0/255.255.255.0 -i em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT
ou
iptables -A INPUT -s nnn.nnn.nnn.0/24 -i em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT
(voir par exemple ici pour le calcul du masque de réseau)
Si vous ne pouvez pas créer de masque de réseau, je crains fort que vous deviez dupliquer la règle pour chacune des adresses IP que vous souhaitez autoriser à vous connecter à votre serveur.
En général, cependant, je n'ai jamais trouvé travailler directement avec iptables très agréable, on peut rapidement perdre la vue d'ensemble. J'irais probablement quelque chose comme shorewall .