J'ai un serveur qui n'autorise pas les connexions à mysql à partir de sources externes - toutes mes bases de données et connexions ont lieu sur localhost. La politique par défaut d'iptables est de supprimer les connexions pour tous les ports que je ne spécifie pas (actuellement, je n'ai pas le port 3306 spécifié dans mes règles iptable, donc toutes les connexions à ce port sont abandonnées).
C'est bien, mais maintenant je voudrais me connecter à une base de données mysql située en externe sur Amazon RDS.
Le port 3306 peut être ouvert au monde extérieur comme suit:
iptables -t filter -A INPUT -p tcp --sport 3306 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
Cela me permet de me connecter à la base de données sur Amazon RDS, mais cela permet également des connexions à distance aux bases de données sur mon serveur.
Que dois-je faire pour permettre à mon serveur de se connecter à la base de données sur Amazon, mais restreindre les connexions externes aux bases de données sur mon serveur?
Gardez également à l'esprit que l'adresse IP de mon instance Amazon RDS peut changer périodiquement, je crois.
Réponses:
Profitez du moteur d'état:
ou dans des versions ultérieures d'iptables
C'est exactement ce que le moteur d'état existe: autoriser le trafic qui répond à divers critères (par exemple, protocole, port source) mais fait également partie d'une connexion existante (car il définit la connexion ). Le résultat est que le
TCP SYN
paquet sortant vers une adresse IP externe particulière sur le port de destination 3306, à partir d'un port éphémère local, créera une entrée de table d'état pour cette combinaison particulière d'adresses IP et de numéros de port, et ne renverra du trafic qu'avec la même combinaison de les adresses et les ports seront autorisés via et uniquement pour la durée de cette connexion.la source