Iptables

Bien le bonjour / bonsoir,

Alors je venais voir si quelqu’un aurais des conseils sur la mise en place d’iptables.

Pour le moment je dispose d’un serveur qui est relié sur la box par eth0, sur eth1 est brancher mon réseau local. Il y a aussi le réseau br0 qui contient le réseau des machines virtuelles.

Box (1.254) --> Serveur eth1 (2.254) --> Réseau Local (192.168.2.0/24)
br0 (3.1) --> Réseau LXC (192.168.3.0/24)

Pour le moment j’ai fais ça comme ça :

#!/bin/sh

iptables -t filter -F
iptables -L
iptables -Z

# Vider les règles personnelles
iptables -t filter -X
echo - Vidage : [OK]

iptables-restore -c < iptables_svg

# Interdire toute connexion entrante et sortante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
echo - Interdire toutes connexions : [OK]

# On garde les connexions etablies
iptables -t filter  -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter  -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo - Connexion actuelle : [OK]

# Autoriser le loopback (reseau local)
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo - LOOPBACK : [OK]

########## Regles ##########
# On accepte la boucle locale en entrée.
/sbin/iptables -A INPUT -i lo -j ACCEPT

# Autoriser le ping
/sbin/iptables -A INPUT -p icmp -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp -j ACCEPT

# On accept le FORWARD
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -o eth0 -j ACCEPT

iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT

iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

iptables -t filter -A OUTPUT -p tcp --dport 953 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 953 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 953 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 953 -j ACCEPT
echo - BIND : [OK]

# APACHE : HTTP + HTTPS
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT

iptables -t filter -A OUTPUT -p tcp --dport 8080 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8080 -j ACCEPT
echo - web : [OK]

# Mail SMTP:25 - Pour acces gmail ajouter 587
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT
echo - SMTP : [OK]

# NTP Horloge synchro
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
echo - NTP : [OK]

# SSH numeros de Port a changer en rapport avec : : /etc/ssh/sshd_config  REMPLACER les XXXX
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
#echo - Autoriser SSH : [OK]

# Autorisation monit
iptables -t filter -A OUTPUT -p tcp --dport 4949 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 4949 -j ACCEPT
echo - monit : [OK]

# Autorisation MYSQL
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 3306 -j ACCEPT
echo - mysql : [OK]

# Autorisation xmpp
iptables -t filter -A OUTPUT -p tcp --dport 5222 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 5222 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 9000 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 9000 -j ACCEPT
echo - xmpp : [OK]

# Autorisation SAMBA
iptables -t filter -A OUTPUT -p tcp --dport 445 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 445 -j ACCEPT
echo - samba : [OK]

#Autorisation LXC WUI
iptables -t filter -A OUTPUT -p tcp --dport 5000 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 5000 -j ACCEPT
echo - lxc-wui : [OK]

########## ROUTAGE #################################################################################################################################

## Règles LXC WWW prod
iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.254 -p tcp -m tcp --dport 80 -m comment --comment http -j DNAT --to-destination 192.168.3.2
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.253 -p tcp -m tcp --dport 80 -m comment --comment http -j DNAT --to-destination 192.168.3.2

iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.254 -p tcp -m tcp --dport 443 -m comment --comment https -j DNAT --to-destination 192.168.3.2
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.253 -p tcp -m tcp --dport 443 -m comment --comment https -j DNAT --to-destination 192.168.3.2

## Munin
iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.254 -p tcp -m tcp --dport 4949 -m comment --comment munin-node -j DNAT --to-destination 192.168.3.2

## Règles LXC openfire
iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.254 -p tcp -m tcp --dport 7443 -m comment --comment meeting-openfire -j DNAT --to-destination 192.168.3.5
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.253 -p tcp -m tcp --dport 7443 -m comment --comment meeting-openfire -j DNAT --to-destination 192.168.3.5

iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.254 -p tcp -m tcp --dport 7070 -m comment --comment meeting-openfire -j DNAT --to-destination 192.168.3.5
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.253 -p tcp -m tcp --dport 7070 -m comment --comment meeting-openfire -j DNAT --to-destination 192.168.3.5

## Règles LXC WWW dev
iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.254 -p tcp -m tcp --dport 8080 -m comment --comment http-dev -j DNAT --to-destination 192.168.3.3
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.253 -p tcp -m tcp --dport 8080 -m comment --comment http-dev -j DNAT --to-destination 192.168.3.3

## Règles LXC XMPP
iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.254 -p tcp -m tcp --dport 9090 -m comment --comment openfire-adm -j DNAT --to-destination 192.168.3.5
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.253 -p tcp -m tcp --dport 9090 -m comment --comment openfire-adm -j DNAT --to-destination 192.168.3.5

iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.254 -p tcp -m tcp --dport 5222 -m comment --comment openfire-client -j DNAT --to-destination 192.168.3.5
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.253 -p tcp -m tcp --dport 5222 -m comment --comment openfire-client -j DNAT --to-destination 192.168.3.5

## SAMBA
iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.254 -p tcp -m tcp --dport 445 -m comment --comment samba -j DNAT --to-destination 192.168.3.4

Je penses qu’il y a beaucoup a amélioré

Pour le moment je le recommence comme ceci :

#########################
# Politiques par défaut #
#########################

# On vire tout
iptables -t filter -F
iptables -L
iptables -Z

# Vider les règles personnelles
iptables -t filter -X
echo - Vidage : [OK]

# Interdire toute connexion entrante et sortante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
echo - Interdire toutes connexions : [OK]

# On garde les connexions etablies
iptables -t filter  -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter  -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo - Connexion actuelle : [OK]

# Autoriser le loopback (reseau local)
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo - LOOPBACK : [OK]


######################
# Règles de filtrage #
######################

# On accepte la boucle locale en entrée.
iptables -t filter -A INPUT -i lo -j ACCEPT

# trafic routé vers internet autorisé
iptables -A FORWARD ! -i eth0 -o eth0 -j ACCEPT

# trafic retour d'internet routé autorisé
iptables -A FORWARD -i eth0 ! -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING  -j MASQUERADE

# Autoriser le ping
iptables -t filter -A INPUT -i eth1 -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
echo - ICMP : [OK]

#Autorisation SSH uniquement sur l'interface ETH1
iptables -t filter -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT

Avec celui ci mes machines du réseau 192.168.2.0/24 on bien accès a la configuration web du switch et les machines d’un autre réseau n’y a pas accès. Internet passe bien sur le réseau 2.0/24 mais tout passe, j’aimerais autoriser les ports qui peuvent passer ou pas.

Je bloque un peut pour le moment, quelqu’un aurait des conseils ou une piste ?

Marchiii