Merci pour ta réponse.
Coté box non je n'ai rien à faire de plus. J'ai déjà ajouter les routes qui vont bien, j'avais déjà un forward qui fonctionnait bien mais j'avais envie de limiter les protocoles.
Par exemple :
- Autorisation HTTP eth1 --> eth0
- Autorisation DNS eth1 --> eth0
- Bloquer tout le reste
Hier soir en allant de site en site, j'ai remodifier mon script et pour le moment il est comme ça :
#!/bin/bash
#########################################################
# Script iptables pour un firewall a deux interfaces #
# #
# Les variables de ce script, que vous devez configurer #
# pour correspondre a votre systeme sont : #
# #
# NETIF, LANIF et SSH #
# #
# D'autres regles sont définies dans le script mais #
# desactivees par defaut. #
#########################################################
#
# Definition des interfaces
#
# Internet
NETIF="eth0"
# Reseau local
LANIF="eth1"
LXCIF="br0"
#
# Acces SSH *toujours* autorise depuis cette ip
#
SSH="192.168.2.20"
#
# Calcul des differentes valeurs dont le script a besoin
#
LANG="C"
function calcsubnet {
# Calcul de l'adresse du reseau
ip=$1
nm=$2
ip4="${ip##*.}" ; x="${ip%.*}"
ip3="${x##*.}" ; x="${x%.*}"
ip2="${x##*.}" ; x="${x%.*}"
ip1="${x##*.}"
nm4="${nm##*.}" ; x="${nm%.*}"
nm3="${x##*.}" ; x="${x%.*}"
nm2="${x##*.}" ; x="${x%.*}"
nm1="${x##*.}"
let sn1="$ip1&$nm1"
let sn2="$ip2&$nm2"
let sn3="$ip3&$nm3"
let sn4="$ip1&$nm4"
subnet=$sn1.$sn2.$sn3.$sn4
echo $subnet
}
#
# Extraction des adresses IP
#
NETIP=`ifconfig ${NETIF} | grep "inet addr" | awk '{print $2}' | sed 's/addr://'`
NETMK=`ifconfig ${NETIF} | grep "inet addr" | awk '{print $4}' | sed 's/Mask://'`
NETSN=`calcsubnet ${NETIP} ${NETMK}`
LANIP=`ifconfig ${LANIF} | grep "inet addr" | awk '{print $2}' | sed 's/addr://'`
LANMK=`ifconfig ${LANIF} | grep "inet addr" | awk '{print $4}' | sed 's/Mask://'`
LANSN=`calcsubnet ${LANIP} ${LANMK}`
LXCIP=`ifconfig ${LXCIF} | grep "inet addr" | awk '{print $2}' | sed 's/addr://'`
LXCMK=`ifconfig ${LXCIF} | grep "inet addr" | awk '{print $4}' | sed 's/Mask://'`
LXCSN=`calcsubnet ${LXCIP} ${LXCMK}`
#
# Affichage des parametres
#
echo "[Firewall] Enumeration des parametres"
echo ""
echo " Internet :"
echo " Interface : ${NETIF}"
echo " Ip : ${NETIP}"
echo " Subnet : ${NETSN}"
echo " Mask : ${NETMK}"
echo ""
echo " Reseau Bureautique :"
echo " Interface : ${LANIF}"
echo " Ip : ${LANIP}"
echo " Subnet : ${LANSN}"
echo " Mask : ${LANMK}"
echo ""
echo " Reseau LXC :"
echo " Interface : ${LXCIF}"
echo " Ip : ${LXCIP}"
echo " Subnet : ${LXCSN}"
echo " Mask : ${LXCMK}"
echo ""
echo " Adresse d'administration SSH :"
echo " Ip : ${SSH}"
echo ""
echo "--------------------------------------"
echo ""
#########################
# Politiques par défaut #
#########################
# Initialisation de la table FILTER
echo "[Firewall] Nettoyage de la table FILTER"
iptables -t filter -F
iptables -t filter -X
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
iptables -A FORWARD -o ${$LXCIF} -j DROP
# Initialisation de la table NAT
echo "[Firewall] Nettoyage de la table NAT"
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
# Initialisation de la table MANGLE
echo "[Firewall] Nettoyage de la table MANGLE"
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
# Log paquets acceptes
echo "[Firewall] Creation des regles pour logguer les paquets ACCEPTES"
iptables -N INPACCP
iptables -A INPACCP -j LOG --log-prefix "[INPUT_ACCEPT ] "
iptables -A INPACCP -j ACCEPT
iptables -N FWDACCP
iptables -A FWDACCP -j LOG --log-prefix "[FORWARD_ACCEPT] "
iptables -A FWDACCP -j ACCEPT
iptables -N OUTACCP
iptables -A OUTACCP -j LOG --log-prefix "[OUTPUT_ACCEPT ] "
iptables -A OUTACCP -j ACCEPT
# Log paquets refuses
echo "[Firewall] Creation des regles pour logguer les paquets DROPPES"
iptables -N INPDROP
iptables -A INPDROP -j LOG --log-prefix "[INPUT_DROP ] "
iptables -A INPDROP -j DROP
iptables -N FWDDROP
iptables -A FWDDROP -j LOG --log-prefix "[FORWARD_DROP ] "
iptables -A FWDDROP -j DROP
iptables -N OUTDROP
iptables -A OUTDROP -j LOG --log-prefix "[OUTPUT_DROP ] "
iptables -A OUTDROP -j DROP
# Initialisation de la boucle locale
echo "[Firewall] Configuration de la boucle locale (lo)"
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Accepte les connection relatives et etablies
echo "[Firewall] Configuration des connexions RELATIVES et ETABLIES"
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# NAT Reseau
echo "[Firewall] Configuration de la translation d'adresses (NAT) vers (${NETIP})"
iptables -t nat -A POSTROUTING -o ${NETIF} -s ${LANSN}/${LANMK} -j SNAT --to-source ${NETIP}
# Autorise les connexions sortantes du serveur
echo "[Firewall] Autorisation des paquets sortants"
iptables -A OUTPUT -m state --state NEW -j OUTACCP
# Autorise les connexions SSH depuis le reseau local
echo "[Firewall] Autorisation du SSH depuis le reseau local (${LANIF}, ${LANSN}/${LANMK})"
iptables -A INPUT -i ${LANIF} -s ${LANSN}/${LANMK} -p tcp --dport 22 -m state --state NEW -j INPACCP
# Autorisation des nouvelles connexions
#echo "[Firewall] Autorisation des paquets entrants depuis le reseau local (${LANIF}, ${LANSN}/${LANMK})"
#iptables -A INPUT -i ${LANIF} -s ${LANSN}/${LANMK} -m state --state NEW -j INPACCP
# Log des connexions refusees en FORWARD
#echo "[Firewall] Bloquage des protocoles devant passer par le proxy"
#iptables -A FORWARD -i ${LANIF} -p tcp --dport 21 -j FWDDROP # FTP
#iptables -A FORWARD -i ${LANIF} -p tcp --dport 80 -j FWDDROP # HTTP
#iptables -A FORWARD -i ${LANIF} -p tcp --dport 443 -j FWDDROP # HTTPS
###############
# Forward eth0#
###############
# Autorise le forwarding de eth1 vers eth0
echo "[Firewall] Autorisation du forwarding depuis le reseau local (${LANIF}, ${LANSN}/${LANMK}) vers l'internet (${NETIF})"
iptables -A FORWARD -i ${LANIF} -s ${LANSN}/${LANMK} -o ${NETIF} -m state --state NEW -j FWDACCP
###############
# Forward br0 #
###############
# On autorise le Forward HTTP HTTPS LXC WWW
iptables -I FORWARD -p tcp -d ${LXCSN}/${LXCMK} --dport 80 -j FWDACCP
iptables -I FORWARD -p tcp -d ${LXCSN}/${LXCMK} --dport 443 -j FWDACCP
iptables -I FORWARD -p tcp -d ${LXCSN}/${LXCMK} --dport 4949 -j FWDACCP
# On interdit le forwarding de br0
iptables -A FORWARD -o ${$LXCIF} -j DROP
###########
# NAT LXC #
###########
## 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
# Log des connexions refusees en INPUT
echo "[Firewall] Log et bloquage de tout le reste"
iptables -A INPUT -j INPDROP
iptables -A FORWARD -j FWDDROP
iptables -A OUTPUT -j OUTDROP
echo ""
J'ai arrêter hier assez tard, mais il me semble que j'avais l'accès internet depuis le réseau eth1
Les postes en wifi (coté eth0) n'ont pas accès à l'interface de configu du switch (sur le réseau eth1) donc c'est bon.
Au niveau des conteneurs LXC, on à bien accès au HTTP uniquement je penses, d'ou le problème d'update.
A mon avis, cela doit être à ce niveau la que je dois apporter des modifications :
# Autorise le forwarding de eth1 vers eth0
echo "[Firewall] Autorisation du forwarding depuis le reseau local (${LANIF}, ${LANSN}/${LANMK}) vers l'internet (${NETIF})"
iptables -A FORWARD -i ${LANIF} -s ${LANSN}/${LANMK} -o ${NETIF} -m state --state NEW -j FWDACCP
Si je ne dis pas trop de connerie, cette règle permet de laisser passer toutes les requêtes à l'état NEW de eth1 vers eth0
La règle suivante :
# Accepte les connection relatives et etablies
echo "[Firewall] Configuration des connexions RELATIVES et ETABLIES"
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Nous indique qu'on autorise le retour d'une requêtes établie.
Je ne suis pas sur mon serveur, donc la syntaxe ne sera pas exacte, mais il ne faudrait pas que je fasse quelque chose du style
# Autorise le forwarding de eth1 vers eth0
echo "[Firewall] Autorisation du forwarding depuis le reseau local (${LANIF}, ${LANSN}/${LANMK}) vers l'internet (${NETIF})"
iptables -A FORWARD -i ${LANIF} -s ${LANSN}/${LANMK} -o ${NETIF} -p tcp --dport 80,443,53 -m state --state NEW -j FWDACCP
iptables -A FORWARD -i ${LANIF} -j DROP
ou encore peut être
iptables -A FORWARD -p tcp -d ${LXCSN}/${LXCMK} --dport 80,443,53 -j FWDACCP
Cela ne devrait pas dans l'ordre regarder si la requêtes est HTTP / HTTPS on autorise le FORWARD, sinon on le drop ?
Dernière modification par totof68 (24-11-2015 12:43:13)