Différences entre versions de « Iptables »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
 
(3 versions intermédiaires par le même utilisateur non affichées)
Ligne 26 : Ligne 26 :
 
= Translation d’adresses =
 
= Translation d’adresses =
  
Pour les machines sur le LAN, il faut faire du camouflage (MASQUERADE en anglais), c'est-à-dire que les adresses du LAN (privées et donc non routables sur Internet)seront remplacées "à la volée" par l'adresse publique de la passerelle.
+
Pour les machines sur le LAN, il faut faire du camouflage (MASQUERADE en anglais), c'est-à-dire que les adresses du LAN (privées et donc non routables sur Internet) seront remplacées "à la volée" par l'adresse publique de la passerelle.
 
Pour cela il faut:
 
Pour cela il faut:
 
* Faire du NAT sur les paquets en provenance du LAN (réseau source 192.168.1.0/24):
 
* Faire du NAT sur les paquets en provenance du LAN (réseau source 192.168.1.0/24):
 
<pre>
 
<pre>
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
+
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 
</pre>
 
</pre>
 
* Vider la table ''FORWARD''
 
* Vider la table ''FORWARD''
Ligne 54 : Ligne 54 :
 
</pre>
 
</pre>
  
= Modification d'entête =
+
= Mapping de réseau =
 +
 
 +
''NETMAP est une nouvelle implémentation des cibles SNAT et DNAT où la partie hôte de l'adresse IP n'est pas changée. Elle procure une fonction NAT 1:1 pour l'ensemble des réseaux qui n'ont pas de fonctions SNAT et DNAT standard''.
 +
 
 +
[https://www.inetdoc.net/guides/iptables-tutorial/netmaptarget.html inetdoc.net]
 +
 
 +
Prenons le cas de figure d'un client VPN se trouvant sur un réseau avec le même plan d'adressage que celui destination: 192.168.1.0/24
 +
[[Fichier:Netmap_vpn_diagram.png|centré]]
 +
 
 +
Il est impossible pour un ordinateur de l'entreprise 1 de joindre un ordinateur de l'entreprise 2 car, comme les adresses IP sont dans le même réseau, les requêtes ne seront pas adressées à la passerelle VPN.
 +
 +
L'idée est de mapper le réseau de l'entreprise 2 sur un autre plan d'adressage grâce a la cible NETMAP. Dans ce cas de figure on peut utiliser le réseau 192.168.2.0/24 qui n'est pas utilisé dans l'entreprise 1 pour faire ce mapping :
 +
 
 +
<pre>
 +
#iptables -t nat -A PREROUTING -d 192.168.2.0/24 -j NETMAP --to 192.168.1.0/24
 +
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j NETMAP --to 192.168.2.0/24
 +
</pre>
 +
 
 +
*La première règle dit à la passerelle de convertir les adresses du réseau 192.168.2.0/24 en 192.168.1.0/24.
 +
*La deuxième règle dit à la passerelle de convertir dans l'autre sens les messages qui reviennent.
 +
 
 +
Maintenant, pour joindre un ordinateur de l'entreprise 2, il faut utiliser les adresses du réseau 192.168.2.0/24 !
 +
 
 +
= Un peu de sécurité =
 +
On peut limiter le nombre de requêtes pour ne pas se succomber à un déni de service (DoS) :
 +
<pre>
 +
# iptables -I INPUT 2 -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT
 +
</pre>
 +
On peut également limiter le scan de port :
 +
<pre>
 +
# iptables -I INPUT 2 -p tcp —tcp-flags SYN,ACK,FIN,RST RST -m limit —limit 1/s -j RETURN
 +
</pre>
  
 
= Sauvegarde =
 
= Sauvegarde =
Ligne 61 : Ligne 92 :
 
# service iptables save
 
# service iptables save
 
iptables : Sauvegarde des règles du pare-feu dans /etc/sysconfig/iptables : [  OK  ]
 
iptables : Sauvegarde des règles du pare-feu dans /etc/sysconfig/iptables : [  OK  ]
</pre>
 
 
=Remy le BG=
 
<pre>
 
client
 
remote 91.160.17.103 17000
 
proto tcp-client
 
nobind
 
dev-type tap
 
 
pull
 
dev tap0
 
auth-user-pass
 
auth-retry interact
 
cipher AES-128-CBC
 
remote-cert-tls server
 
verify-x509-name "C=FR, O=Freebox SA, CN=Freebox OpenVPN server 27304730d6094e4a55499509e843c0a4"
 
# use tls-remote instead of verify-x509-name for deprecated openssl
 
# tls-remote "/C=FR/O=Freebox_SA/CN=Freebox_OpenVPN_server_27304730d6094e4a55499509e843c0a4"
 
<ca>
 
-----BEGIN CERTIFICATE-----
 
MIIDvDCCAqSgAwIBAgIJAOP+lWOEk5cgMA0GCSqGSIb3DQEBCwUAMGsxCzAJBgNV
 
BAYTAkZSMRMwEQYDVQQKDApGcmVlYm94IFNBMUcwRQYDVQQDDD5GcmVlYm94IE9w
 
ZW5WUE4gc2VydmVyIENBIGZvciAyNzMwNDczMGQ2MDk0ZTRhNTU0OTk1MDllODQz
 
YzBhNDAeFw0xNjEyMjYwMDA2MzhaFw00NjEyMTkwMDA2MzhaMGsxCzAJBgNVBAYT
 
AkZSMRMwEQYDVQQKDApGcmVlYm94IFNBMUcwRQYDVQQDDD5GcmVlYm94IE9wZW5W
 
UE4gc2VydmVyIENBIGZvciAyNzMwNDczMGQ2MDk0ZTRhNTU0OTk1MDllODQzYzBh
 
NDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMoEq1742mtU67+ENBuf
 
CYuPFG7KlNy9DiGIElDFvQgLqevPVQ1jzEo7lUWkjIhcUolJV1lEiMt5TNikqy6c
 
axGWm5nyq0XICpcXZxErN8JJT2ys4mPOxMJla1djtl6OMJC+lGwlrdVF9EqsY4qm
 
YD5DuLTVbArLBonffX7h3z+YfMLWZzW9CQwjMsWbiEFZTPpETC0mr8nIfNET+7EJ
 
drT5Thzu+dvULQamGLUTQu1zfkEjiGBgXaxHQoScpnanNVLDboBNlA/9b0YlWhtL
 
H1Y1jywlc0pFbPPpa8CAZi24Voqti616azfHT3kC7k2FIFUhD6eozOkyZlXHZTYJ
 
ookCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
 
VR0OBBYEFGTgVzQ+VEiRZDVLfOaFcmVffm4QMB8GA1UdIwQYMBaAFGTgVzQ+VEiR
 
ZDVLfOaFcmVffm4QMA0GCSqGSIb3DQEBCwUAA4IBAQB0oHPLWZTA/v03rB3N+JQm
 
NPo4WftKrFsbVBqLl05oFDgJbBetuy/qlnOMM+yXE8S7FjRYJ2E4q9xK3aFRUCFU
 
7rgaIxagrsSMS8+LMOrzX+eip1mQQ6RWX4aVWggVD1PDnqvsbc2eErfliQSKc49R
 
mRz4LY0ZqeIdDxtIQNH+w0wJMnr+34hSxy6Vh/8/Z2raRM6trdqmmb4mucAdtss4
 
nF9oNOyVEqpgvwi2lFtqejbAURxVolGE4Cyfl1Kw+bcI3ZJ8fTIRCd+ODCngayhe
 
I42hLKatqDlXSo5kMHjO0JZBPzk9t33oo1wzXja/fbWC8mYSSkjJ9p/hU+Ur4dfw
 
-----END CERTIFICATE-----
 
</ca>
 
<cert>
 
-----BEGIN CERTIFICATE-----
 
MIIETzCCAzegAwIBAgIJAI9dIUybUABlMA0GCSqGSIb3DQEBCwUAMGsxCzAJBgNV
 
BAYTAkZSMRMwEQYDVQQKDApGcmVlYm94IFNBMUcwRQYDVQQDDD5GcmVlYm94IE9w
 
ZW5WUE4gY2xpZW50IENBIGZvciAyNzMwNDczMGQ2MDk0ZTRhNTU0OTk1MDllODQz
 
YzBhNDAeFw0xNzAxMTMyMDAzNDZaFw00NzAxMDYyMDAzNDZaMGgxCzAJBgNVBAYT
 
AkZSMRMwEQYDVQQKDApGcmVlYm94IFNBMQ0wCwYDVQQDDARyZW15MTUwMwYKCZIm
 
iZPyLGQBAQwlcmVteS01NDA3ODZkZjRkYTVjNDM4MTQ2MTY3MzI5YzFiYTRkOTCC
 
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNr0jbAyzolq/auL/HiLIuZ
 
t4O/9mt6G0CSEtoylNCa4W1o8kXpkw2wt93qwBlfei/+hp6Sm4Kt6/TxTJes5Z5P
 
qo1khh6XzSXom1nFHq2Zwkf8ZLwD+ExXXxZ8LbQ40xje3NRctik+ug90JaLv83AR
 
kkuHyxFti5YvIfD8pSGEaC+xwgVvZ4pD+VUGHZokpolZG+oFSJ5NVEJTStM3fIpJ
 
CTqMIHK8wJRF3KaHW9DicfmvqPV0tACHX7OrMoY9hyz+P0A0MAt1sSRssdcYKZOh
 
yQCk3psoIhT8ga+cuoH16pnJQ8VtQ+LP9M65IXBPG1kWGM6zdmW7sovOa6FXWgUC
 
AwEAAaOB+DCB9TAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIDiDAWBgNVHSUB
 
Af8EDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUnttQd9CV5bVUzDE99ut6U8qWbbUw
 
gZ0GA1UdIwSBlTCBkoAUfpkvshHmCN0BNN0yLTOyjEyEcIWhb6RtMGsxCzAJBgNV
 
BAYTAkZSMRMwEQYDVQQKDApGcmVlYm94IFNBMUcwRQYDVQQDDD5GcmVlYm94IE9w
 
ZW5WUE4gY2xpZW50IENBIGZvciAyNzMwNDczMGQ2MDk0ZTRhNTU0OTk1MDllODQz
 
YzBhNIIJAJdeiq0yW7PWMA0GCSqGSIb3DQEBCwUAA4IBAQAh5al0ubT6R3K/2Wfz
 
fEVMNUMQT1FiYIbT++cB9PxMg8gzx3VEegXqXwO0CH/68MGCrQBUa8mqFQF+IeyK
 
kRwGE9R0wgqhr/9oRSjWC8LQsiqyKgmjh9W95pI5ETGQz+BgFgh4ISzH/GIW3Po7
 
ppiq17OwtLFU+VT4LyLB6lFYFbEMkfAaphKNp70ic8ZXzMf39F0AODn558unj80p
 
HC7BDvpaPi4bff2wUNO/c1lhamOISStPBLUej/GMBKjjsgzVvleMJf0KzkmLMN1Z
 
rC639N0XwasWAH3OVjW54GKWskCQu7TRft6Ne8gOAB0+vbX9fX7YgfefhAcpHaia
 
CHJL
 
-----END CERTIFICATE-----
 
</cert>
 
<extra-certs>
 
-----BEGIN CERTIFICATE-----
 
MIIDvDCCAqSgAwIBAgIJAJdeiq0yW7PWMA0GCSqGSIb3DQEBCwUAMGsxCzAJBgNV
 
BAYTAkZSMRMwEQYDVQQKDApGcmVlYm94IFNBMUcwRQYDVQQDDD5GcmVlYm94IE9w
 
ZW5WUE4gY2xpZW50IENBIGZvciAyNzMwNDczMGQ2MDk0ZTRhNTU0OTk1MDllODQz
 
YzBhNDAeFw0xNjEyMjYwMDA2MzhaFw00NjEyMTkwMDA2MzhaMGsxCzAJBgNVBAYT
 
AkZSMRMwEQYDVQQKDApGcmVlYm94IFNBMUcwRQYDVQQDDD5GcmVlYm94IE9wZW5W
 
UE4gY2xpZW50IENBIGZvciAyNzMwNDczMGQ2MDk0ZTRhNTU0OTk1MDllODQzYzBh
 
NDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOJAPTj5rYKAStPoZcoo
 
pLcHAwsotoU2VmG+NkakmAMUS/C2a4SGenSKKgwRoc2YefPFoAHZ4qwKJ3w3CGs8
 
NDtU8KHM0ObHnAIpcCS6VIrdu+hdMXwUqIb3QAMx2EaFDk+u32YqZg+E2YjdAfrb
 
B7spkr5/7xElhXmnbUtbgSwjs0/erU3ZwQVbl6K5AKir3XDL6z3MCH/nvpOxfwaE
 
Fu4Jt1fogKi7+9BSq2Czcq8K34P2rSDN6LfdC2ZNx8zKTx8/SccVXE9UDDsRHOnD
 
AqF/j8Nn0Jl9LlxnNPj3bJHblUHDAeOJRYBYtDCNBbF84CnJ5gFnI6xys7F2uo2Q
 
HUMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
 
VR0OBBYEFH6ZL7IR5gjdATTdMi0zsoxMhHCFMB8GA1UdIwQYMBaAFH6ZL7IR5gjd
 
ATTdMi0zsoxMhHCFMA0GCSqGSIb3DQEBCwUAA4IBAQAt0DiYh8Uxg5vZ01KEmLz0
 
aiK7ph0vbJOUpLUtJyx7o1gBRhzqDr8PwzsfaGmCbPh1xvd2WwlxoypHHMoJ44oz
 
bgC2cq/FqXB0m5g60V19DrOzVBnh1WrD5cmGDM7hhOoQq0mUdB57Y+yRzmw5E/TJ
 
0Lb5EWW4wrlSrydZ6+qcMLO+jWaQxglKYrqD07Emzlq96FnYDo8oWzMRQYQacv2P
 
kXlmP/y7cZNpUFb66YZk3sdArlej78A7JyuvHkwGzIsXDUh+SrKDPtv5FCiRsDYx
 
NmYTDde8YLeHzyZdX5nvtJ1uZBFoWnQJ/K0qkh/PcetydYIZkSAefzVZROgKPMBO
 
-----END CERTIFICATE-----
 
</extra-certs>
 
<key>
 
-----BEGIN PRIVATE KEY-----
 
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCza9I2wMs6Jav2
 
ri/x4iyLmbeDv/ZrehtAkhLaMpTQmuFtaPJF6ZMNsLfd6sAZX3ov/oaekpuCrev0
 
8UyXrOWeT6qNZIYel80l6JtZxR6tmcJH/GS8A/hMV18WfC20ONMY3tzUXLYpProP
 
dCWi7/NwEZJLh8sRbYuWLyHw/KUhhGgvscIFb2eKQ/lVBh2aJKaJWRvqBUieTVRC
 
U0rTN3yKSQk6jCByvMCURdymh1vQ4nH5r6j1dLQAh1+zqzKGPYcs/j9ANDALdbEk
 
bLHXGCmTockApN6bKCIU/IGvnLqB9eqZyUPFbUPiz/TOuSFwTxtZFhjOs3Zlu7KL
 
zmuhV1oFAgMBAAECggEAXFIslpPZfpAHziSO8w2IEkUEUryh1We9QhpnrPK99CDd
 
wehwUV0Al9jIo125ftTMEIoNRub1MebANQc8fAcxF6aygZKqGG/P1aO83BI72OP3
 
Pgc25i+8wbtraCx5b/SVWoTCaFtUOCDYqD8BZrfFMXM5Lbgv20Xcv2h9NH0rkvSr
 
gsbfQJ/Vol97pnxaeui/5b6C59OxIJui3kuLfPVAj9mIAFADsZ5SrGBCzzGudTji
 
2l1GqQ/Gy9YSgmqjYtBHnBDqqErZuJx+Zr+9wWm3L1nHXd64pzaWcKh+fWMSaRiX
 
YSb6WKwuWiX7jDciiT7MPas9Mb9r/PnW/+VootMVwQKBgQDlIUtqnet9hLgShzMU
 
79jyjM6wnOFtJqFKekyWM12OyflzWN0L3/4ApU/X0VDmP2Z4z6C+txOjMmzB9wQ5
 
nDo9/f6hwLLX8s9qyi73hJm77kVbOz7rMJdhNzq07d1l6F7rvLj3RwdYA4cqKG21
 
A3PKVYEx8M7ZCxKI9ZiCL0srPQKBgQDIdjfOLz0su+pyG6MUJi3sU6RsMc5il/Xc
 
nM/1Gkf2nBVnzW4BkSK2UTu3AlUxNS1DpHZdLRj+QSOCwMnZXjnOAGXh17Tzb/Mv
 
HPYqqtzcoBXSks7Ur7rIT8YmDHs0vqyY6W9g21Q9mYA6F0+608G4zRvuvT62X2Yw
 
yRXq1y72aQKBgQC2sKtPIQcIl2+k5kOmZ+6Uxgxu6UccHnbvyT+TavUnyoaon6vv
 
sfL2VNiqfWyBiP+NSA8kwRhZQPVSWj/2J0iQ8Rm7osd2Q1V6EicMl590JnEKYtyx
 
7ZZlnwGiDR5ACNzWHS1ljC6g0H9O79k5QL1sEGzogtaKW7e1mAy3kDnhCQKBgCUe
 
NrEX8CTjWsLsOSMW+rPivPRHuKZq6tyBsMP6rM6OEiyZTkA+BoZpvjvh07J73TjE
 
MCKKojEaEKA6YGW+W8e4LSVHUrssxIO5wh8eaizz+3Z1NpUNQPGsS81pzDp0//KE
 
btopYozRanvXKy013o4AdKadJgqQ2ZQ497T3STvZAoGAMvNiEU+iBFWYfF/6C+ML
 
vBrCvEcRUIlk/YcNUtY2txaP/YTWVdftCnQycMxaIcBnk5pba62MvkU6uFZ3Hi9+
 
ZxbW0TZAP2ymKV6ttXcx+vC1ZnnPaey1sTcfCjkxyLnmAfHX9/kZc4RpATURara9
 
x7Xk8mkL1VfxirzyIIwnR68=
 
-----END PRIVATE KEY-----
 
</key>
 
 
</pre>
 
</pre>

Version actuelle datée du 12 octobre 2023 à 16:35

Introduction

Soit une passerelle entre un LAN et Internet. Le LAN a le plan d'adressage 192.168.1.0/24 (192.168.1.254 pour la passerelle) et la passerelle a l'adresse publique 1.2.3.4.

Sur le LAN, il y a également un serveur Web à l'adresse 192.168.1.253.

Filtrage

Sur le serveur Web, on voudra autoriser le service HTTP (TCP/80)

# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT

Pourquoi insérer à la deuxième ligne (-I INPUT 2) plutôt que d'ajouter à la fin ?? Si vous regardez bien les règles d'un pare-feu Iptables sur une CentOS:

# iptables -nvL INPUT

On s'aperçoit que:

  • la première règle autorise tout le trafic initié depuis la machine;
  • la dernière règle drop tous les paquets

Il faut donc insérer notre règle entre les deux règles précédentes (e.g. en deuxième position).

Translation d’adresses

Pour les machines sur le LAN, il faut faire du camouflage (MASQUERADE en anglais), c'est-à-dire que les adresses du LAN (privées et donc non routables sur Internet) seront remplacées "à la volée" par l'adresse publique de la passerelle. Pour cela il faut:

  • Faire du NAT sur les paquets en provenance du LAN (réseau source 192.168.1.0/24):
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • Vider la table FORWARD
# iptables -F FORWARD
  • Activer le routage sur la machine...

... en positionnant le paramètre ip_forward à 1...

# vi /etc/sysctl.conf

... et en rechargant les paramètres du noyau.

# sysctl -p

Translation de port

Pour que les clients sur Internet puissent joindre le serveur Web, il faut rediriger le port TCP/80 de la passerelle sur le port TCP/80 du serveur Web (eth0 est l'interface WAN)

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.253

Mapping de réseau

NETMAP est une nouvelle implémentation des cibles SNAT et DNAT où la partie hôte de l'adresse IP n'est pas changée. Elle procure une fonction NAT 1:1 pour l'ensemble des réseaux qui n'ont pas de fonctions SNAT et DNAT standard.

inetdoc.net

Prenons le cas de figure d'un client VPN se trouvant sur un réseau avec le même plan d'adressage que celui destination: 192.168.1.0/24

Netmap vpn diagram.png

Il est impossible pour un ordinateur de l'entreprise 1 de joindre un ordinateur de l'entreprise 2 car, comme les adresses IP sont dans le même réseau, les requêtes ne seront pas adressées à la passerelle VPN.

L'idée est de mapper le réseau de l'entreprise 2 sur un autre plan d'adressage grâce a la cible NETMAP. Dans ce cas de figure on peut utiliser le réseau 192.168.2.0/24 qui n'est pas utilisé dans l'entreprise 1 pour faire ce mapping :

#iptables -t nat -A PREROUTING -d 192.168.2.0/24 -j NETMAP --to 192.168.1.0/24
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j NETMAP --to 192.168.2.0/24
  • La première règle dit à la passerelle de convertir les adresses du réseau 192.168.2.0/24 en 192.168.1.0/24.
  • La deuxième règle dit à la passerelle de convertir dans l'autre sens les messages qui reviennent.

Maintenant, pour joindre un ordinateur de l'entreprise 2, il faut utiliser les adresses du réseau 192.168.2.0/24 !

Un peu de sécurité

On peut limiter le nombre de requêtes pour ne pas se succomber à un déni de service (DoS) :

# iptables -I INPUT 2 -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT

On peut également limiter le scan de port :

# iptables -I INPUT 2 -p tcp —tcp-flags SYN,ACK,FIN,RST RST -m limit —limit 1/s -j RETURN

Sauvegarde

Pour rendre les règles que vous venez de rentrer persistentes, n'oubliez pas de les sauvegarder:

# service iptables save
iptables : Sauvegarde des règles du pare-feu dans /etc/sysconfig/iptables : [  OK  ]