Iptables
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 -s 192.168.1.0/24 -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
Modification d'entête
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 ]
Remy le BG
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>