Exemples de configurations
From Deimos.fr / Bloc Notes Informatique
1 Introduction
Iptables n'étant pas très intuitif, et les exemples quasiments indispensable pour monter sa configuration, voici quelques exemples allant du plus simple au plus complexe.
2 Exemple 1
#!/bin/sh ################################################ # # # Script de Firewall de base # # # ################################################ ############# # Variables # ############ IPTABLES=/sbin/iptables IF_EXT=eth0 IP_SSH=xx.xx.xx.xx ################### # Vide les tables # ################## ${IPTABLES} -t mangle -F ${IPTABLES} -t nat -F ${IPTABLES} -F ${IPTABLES} -t mangle -X ${IPTABLES} -t nat -X ${IPTABLES} -X ${IPTABLES} -Z ##################### # Regles par defaut # #################### ## ignore_echo_broadcasts, TCP Syncookies, ip_forward echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ## Police par defaut ${IPTABLES} -P INPUT DROP ${IPTABLES} -P OUTPUT DROP ${IPTABLES} -P FORWARD DROP ## Loopback accepte ${IPTABLES} -A FORWARD -i lo -o lo -j ACCEPT ${IPTABLES} -A INPUT -i lo -j ACCEPT ${IPTABLES} -A OUTPUT -o lo -j ACCEPT ## REJECT les fausses connex pretendues s'initialiser et sans syn ${IPTABLES} -A INPUT -p tcp ! --syn -m state --state NEW,INVALID -j REJECT #################### # Regles speciales # ################### ### Creation des chaines ${IPTABLES} -N SPOOFED ${IPTABLES} -N SERVICES ### Interdit les paquets spoofés ${IPTABLES} -A SPOOFED -s 127.0.0.0/8 -j DROP ${IPTABLES} -A SPOOFED -s 169.254.0.0/12 -j DROP ${IPTABLES} -A SPOOFED -s 172.16.0.0/12 -j DROP ${IPTABLES} -A SPOOFED -s 192.168.0.0/16 -j DROP ${IPTABLES} -A SPOOFED -s 10.0.0.0/8 -j DROP ### INPUT autorisés ### ICMP ## Ping (*) ${IPTABLES} -A INPUT -p icmp --icmp-type echo-request -j ACCEPT ### TCP ## SSH (*) ${IPTABLES} -A SERVICES -p tcp -d ${IP_SSH} --dport 22 -j ACCEPT ## MAIL (*) ${IPTABLES} -A SERVICES -p tcp -d ${IP_SSH} --dport 25 -j ACCEPT ################################# # Ports ouverts sur le firewall # ################################ ${IPTABLES} -A OUTPUT -j ACCEPT ${IPTABLES} -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT ${IPTABLES} -A INPUT -j SPOOFED ${IPTABLES} -A INPUT -i ${IF_EXT} -j SERVICES
3 Exemple 2
#!/bin/bash echo Setting firewall rules... ###### Debut Initialisation ###### # Interdire toute connexion entrante iptables -t filter -P INPUT DROP iptables -t filter -P FORWARD DROP echo - Interdire toute connexion entrante : [OK] # Interdire toute connexion sortante iptables -t filter -P OUTPUT DROP echo - Interdire toute connexion sortante : [OK] # Vider les tables actuelles iptables -t filter -F iptables -t filter -X echo - Vidage : [OK] # Autoriser SSH iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT echo - Autoriser SSH : [OK] # Ne pas casser les connexions etablies iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT echo - Ne pas casser les connexions établies : [OK] ###### Fin Inialisation ###### ##### Debut Regles ###### # Autoriser les requetes DNS, FTP, HTTP, NTP iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT echo - Autoriser les requetes DNS, FTP, HTTP, NTP : [OK] # Autoriser loopback iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT echo - Autoriser loopback : [OK] # Autoriser ping iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A OUTPUT -p icmp -j ACCEPT echo - Autoriser ping : [OK] # HTTP 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 INPUT -p tcp --dport 8443 -j ACCEPT echo - Autoriser serveur Apache : [OK] # FTP modprobe ip_conntrack_ftp iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT echo - Autoriser serveur FTP : [OK] # Mail iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT echo - Autoriser serveur Mail : [OK] ###### Fin Regles ###### echo Firewall mis a jour avec succes !
4 Exemple 3
# description: Regles de pare-feu avec masquerading # probe : true # ### BEGIN INIT INFO # Provides: firewall_passerelle # Required-Start: $network # Required-Stop: $network # Default-Start: 3 5 # Default-Stop: # Description: Regles de pare-feu avec masquerading (configurable) ### END INIT INFO #################################################################### # INTRODUCTION #################################################################### ## Make sure we are root if [ ! "`id 2>&1 | egrep 'uid=0' | cut -d '(' -f1`" = "uid=0" ]; then echo "Ce script doit etre lance par l'utilisateur 'root'" exit 1 ## On sort du script fi # Si l'utilitaire iptables n'est pas installe on sort en erreur # Attention, le chemin de l'utilitaire IPTABLES peut varier d'un # syst?me ? l'autre IPT="/sbin/iptables" [ -x ${IPT} ] || { echo "Impossible de trouver le chemin pour iptables" exit 1 } # Interface connexion internet # Cette variable est obligatoire OUT="ppp0" # Si la ligne suivante est mise en commentaire, la machine # n'est pas configuree en mode passerelle et fait uniquement # office de parefeu IN="eth0" # interface reseau prive si applicable # Decommentez la ligne suivante pour activer le filtrage par # protocole dans le cas d'une utilisation en mode passerelle #FILTRAGE="-p tcp -m multiport --destination-port 6667,5190" # regardons comment nous avons ete appele case "$1" in start) ;; stop) ${IPT} -t filter -F ${IPT} -t nat -F ${IPT} -t filter -X ${IPT} -t filter -Z ${IPT} -t filter -P INPUT ACCEPT ${IPT} -t filter -P OUTPUT ACCEPT ${IPT} -t filter -P FORWARD ACCEPT /bin/echo "0" > /proc/sys/net/ipv4/ip_forward exit 0 ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac # On charge les modules modprobe ip_tables modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_conntrack_irc modprobe ip_conntrack_h323 # On vide toutes les regles et les chaines ${IPT} -t filter -F ${IPT} -t nat -F ${IPT} -t filter -X ${IPT} -t filter -Z # On configure le comportement par defaut (Policy) ${IPT} -P INPUT DROP ${IPT} -P OUTPUT DROP ${IPT} -P FORWARD DROP #################################################################### # Flags pour le kernel #################################################################### # On active la protection TCP SYN Cookie (demandes de # connexion repetes) #/bin/echo "1" > /proc/sys/net/ipv4/tcp_syncookies # On ignore la reponse au ping #/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all # On desactive la reponse aux broadcasts ICMP /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Don't accept source routed packets. Attackers can use source # routing to generate traffic pretending to be from inside your # network, but which is routed back along the path which it came, # namely outside, so attackers can compromise your network. # Source routing is rarely used for legetimate purposes. /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route # Disable ICMP Redirect Acceptance /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects # Enable bad error message protection /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # Pour eviter l'IP SPOOFING, on check l'adresse source sur toutes # les interfaces - peut poser des soucis en cas de routage # asymetrique (les paquets ne prennent pas le meme chemin a l'aller # qu'au retour) for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do /bin/echo "1" > ${interface} done # Log Spoofed Packets, Source Routed Packets, Redirect Packets for interface in /proc/sys/net/ipv4/conf/*/log_martians; do /bin/echo "1" > ${interface} done # Dans le cas d'une adresse IP dynamique echo "1" > /proc/sys/net/ipv4/ip_dynaddr # On active le routage des paquets IP # C'est la commande principale autorisant la fonction passerelle if [ ${IN} ]; then /bin/echo "1" > /proc/sys/net/ipv4/ip_forward else /bin/echo "0" > /proc/sys/net/ipv4/ip_forward fi #################################################################### # Regles #################################################################### # Trafic illimite sur l'adresse de loopback ${IPT} -A INPUT -i lo -j ACCEPT ${IPT} -A OUTPUT -o lo -j ACCEPT # Trafic illimite sur les autres interfaces Ethernet # On evite de toucher a l'interface du reseau public # (connecte a Internet) for interface in /proc/sys/net/ipv4/conf/eth*; do VAL=`echo ${interface} | cut -c 25-` if [ ${VAL} != ${OUT} ]; then ${IPT} -A INPUT -i ${VAL} -j ACCEPT ${IPT} -A OUTPUT -o ${VAL} -j ACCEPT fi done # proxy transparent : regle de redirection vers le proxy # on considere que eth0 est l'interface du reseau prive # et que 3128 est le port du serveur proxy-cache #${IPT} -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-port 3128 # Si la fonction passerelle est activee if [ ${IN} ]; then # On accepte de forwarder les paquets sur l'interface interne ${IPT} -A FORWARD -i ${IN} ${FILTRAGE} -j ACCEPT ${IPT} -A FORWARD -o ${IN} -j ACCEPT # On active le masquerading pour le trafic en provenance du # sous-reseau prive (Dans le cas d'une adresse IP fixe, il vaut # mieux utilise SNAT) ${IPT} -t nat -A POSTROUTING -o ${OUT} -j MASQUERADE fi # On accepte les connexions sortantes en provenance du # sous-reseau prive ${IPT} -A OUTPUT -o ${OUT} -j ACCEPT # # Ajout de regles pour autoriser certains ports # Decommentez les lignes qui vous interesse # ## Acces simultane a un serveur web et FTP #${IPT} -A INPUT -i ${OUT} -p tcp -m state --state NEW -m multiport --destination-port 80,20,21 -j ACCEPT ## Acces uniquement a un serveur web #${IPT} -A INPUT -i ${OUT} -p tcp -m state --state NEW --destination-port 80 -j ACCEPT ## gtk-gnutella #${IPT} -A INPUT -i ${OUT} -p tcp -m state --state NEW --destination-port 23934 -j ACCEPT #${IPT} -A INPUT -i ${OUT} -p udp -m state --state NEW --destination-port 23934 -j ACCEPT ## SSH ${IPT} -A INPUT -i ${OUT} -p tcp --destination-port 22 -j ACCEPT ## HTTP ${IPT} -A INPUT -i ${OUT} -p tcp --destination-port 80 -j ACCEPT # Mldonkey ${IPT} -A INPUT -i ${OUT} -p tcp --destination-port 6666 -j ACCEPT ${IPT} -A INPUT -i ${OUT} -p tcp --destination-port 6682 -j ACCEPT ${IPT} -A INPUT -i ${OUT} -p tcp --destination-port 8155 -j ACCEPT ## Jabber transfert de fichiers #${IPT} -A INPUT -i ${OUT} -p udp --destination-port 8010 -j ACCEPT # # Fin de l'ajout de regles # # On accepte les connexions rentrantes deja etablies ${IPT} -A INPUT -i ${OUT} -m state --state ESTABLISHED,RELATED -j ACCEPT # Si la fonction passerelle est activee if [ ${IN} ]; then # Trace des paquets refuses sur la chaine FORWARD ${IPT} -N LOG_FWD ${IPT} -A LOG_FWD -j LOG --log-level info --log-ip-options --log-prefix "Pare-feu FWD:" ${IPT} -A LOG_FWD -j DROP # On logue les paquets refuses sur la chaine FORWARD ${IPT} -A FORWARD -j LOG_FWD fi # On initialise la trace pour les paquets refuses en entree sur # l'interface externe ${IPT} -N LOG_EXT ${IPT} -A LOG_EXT -j LOG --log-level info --log-ip-options --log-prefix "Pare-feu IN:" ${IPT} -A LOG_EXT -j DROP # On logue les paquets refuses en entree sur l'interface externe ${IPT} -A INPUT -i ${OUT} -j LOG_EXT exit 0
5 Exemple 4
#!/bin/bash ################################################### ## ARCHITECTURE POUR UN FIREWALL A 4 INTERFACES ## ## ## ## INTERNET ## ## | ## ## DMZ--------FIREWALL--------ZONE SERVEURS ## ## | ## ## LAN ## ## ## ################################################### ################################################### ## MODULES IPTABLES NECESSAIRES ## ################################################### MODULES_IPTABLES="ip_tables \ ipt_string \ ip_conntrack \ ip_conntrack_ftp \ ip_nat_ftp" # Modules iptables charges au demarrage INTERNET="ppp0" # Device Internet (plusieurs devices possibles) INTERNET_NAT="ppp0" # Device Internet utilise pour le NAT (1 seul device possible) DMZ="" # Device DMZ (IP publiques, serveurs accessible depuis internet) ZONE_SERVEURS="eth2" # Device SMZ (IP privees, serveurs accessible en interne) LAN="eth1 eth3" # Device intranet (plusieurs devices possibles) PAQUETS_ICMP_AUTHORISES="0 3 4 5 8 11 12" # Paquets ICMP authorises a circuler entres les differents reseaux PING_FLOOD="1/s" # Nombre de PING authorises par seconde LOG_FLOOD="1/s" PROTOCOLES_AUTHORISES="47" # Protocoles authorises a circuler via le firewall MASQ_LAN="YES" # Masquerade le Lan MASQ_DMZ="NO" # Masquerade la DMZ MASQ_ZONE_SERVEURS="YES" # Masquerade la zone serveurs PORTS_TCP_INTERNET_AUTHORISES="53" # Ports TCP du firewall accessible de l'internet PORTS_UDP_INTERNET_AUTHORISES="53" # Ports UDP du firewall accessible de l'internet PORTS_TCP_DMZ_AUTHORISES="" # Ports TCP du firewall accessible de la DMZ PORTS_UDP_DMZ_AUTHORISES="" # Ports UDP du firewall accessible de la DMZ PORTS_TCP_ZONE_SERVEURS_AUTHORISES="53 113" # Ports TCP du firewall accessible de la zone serveurs PORTS_UDP_ZONE_SERVEURS_AUTHORISES="53 113" # Ports UDP du firewall accessible de la zone serveurs PORTS_TCP_LAN_AUTHORISES="53 113 22" # Ports TCP du firewall accessible du LAN PORTS_UDP_LAN_AUTHORISES="53 113 22" # Ports UDP du firewall accessible du LAN PORTS_TCP_SORTIE_REFUSES="6346 \ 7777 \ 8888 \ 6699 \ 6000" # Ports TCP interdit en sortie du firewall PORTS_UDP_SORTIE_REFUSES="6346 \ 7777 \ 8888 \ 6699 \ 6000" # Ports UDP interdit en sortie du firewall RESEAUX_LAN="192.168.10.0/24 \ 192.168.30.0/24" # Reseaux composants le LAN RESEAUX_DMZ="" # Reseaux composants la DMZ RESEAUX_ZONE_SERVEURS="192.168.50.0/24" # Reseaux composants la zone serveurs NAT_TCP_NET=" 80.13.192.105:80>192.168.50.100:8080 " # NAT => IP_FIREWALL:PORT_FIREWALL>IP_INTERNE:PORT_INTERNE NAT_UDP_NET="" # NAT => IP_FIREWALL:PORT_FIREWALL>IP_INTERNE:PORT_INTERNE MOTS_CLES="root admin" # Mots cles a loguer MOTS_CLES_INTERDITS="mp3>192.168.10.117 \ MP3>192.168.10.117 \ ogg>192.168.10.117 \ OGG>192.168.10.117" # Mots cles interdit de passage ;-) MOT_CLE>IP_DESTINATAIRE IP_INTERDITES=" 66.28.48.0/24 \ 66.28.49.0/24" # Adresses interdites d'entree ################################################### ## VARIABLES PROPRES AU SCRIPT (NE PAS EDITER) ## ################################################### IPTABLES=`which iptables` MODPROBE=`which modprobe` VERT="\033[32m" JAUNE="\033[33m" GRAS="\033[1m" NORMAL="\033[m" ROUGE="\033[31m" ################################################### ## VERIFICATION DE LA PRESENCE DE IPTABLES ## ################################################### echo -en "${GRAS}Verification de la presence de IPTABLES :${NORMAL}" if [ -z ${IPTABLES} ] ;then echo -e "\t\t${ROUGE}FAILED${NORMAL}\n" exit 1 else echo -e "\t\t${VERT}OK${NORMAL}" fi ################################################### ## VERIFICATION DE LA PRESENCE DE MODPROBE ## ################################################### echo -en "${GRAS}Verification de la presence de MODPROBE :${NORMAL}" if [ -z ${MODPROBE} ] ;then echo -e "\t\t${ROUGE}FAILED${NORMAL}\n" exit 1 else echo -e "\t\t${VERT}OK${NORMAL}\n" fi ################################################### ## CHARGEMENT DES MODULES PROPRES A IPTABLES ## ################################################### for module in ${MODULES_IPTABLES} ;do echo -e "${GRAS}Chargement du module ${module} :${NORMAL}\t\t\t${VERT}OK${NORMAL}" ${MODPROBE} ${module} done echo -e "\n" ################################################### ## CONFIGURATION DE BASE DU FIREWALL GRACE AU ## ## SYSTEME DE FICHIER /proc ## ################################################### ################################################### ## ACTIVATION DE L'IP FORWARDING (routage) ## ################################################### echo -en "${GRAS}${JAUNE}Activation de l'ip forwarding :${NORMAL}" if [ -e /proc/sys/net/ipv4/ip_forward ] ; then echo 1 > /proc/sys/net/ipv4/ip_forward echo -e "\t\t\t\t${VERT}OK${NORMAL}" else echo -e "\t\t\t\t${ROUGE}FAILED${NORMAL}\n" exit 1 fi ################################################### ## Protection contre les SYN FLOOD ## ################################################### echo -en "${GRAS}${JAUNE}Protection contre les SYN/FLOOD :${NORMAL}" if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ; then echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo -e "\t\t\t${VERT}OK${NORMAL}" else echo -e "\t\t\t${ROUGE}FAILED${NORMAL}" fi ################################################### ## Defragmente les paquets avant des les reenvoyer# ## Utile pour le masquerading ## ################################################### echo -en "${GRAS}${JAUNE}Refragmentation des paquets :${NORMAL}" if [ -e /proc/sys/net/ipv4/ip_always_defrag ] ; then echo 1 > /proc/sys/net/ipv4/ip_always_defrag echo -e "\t\t\t\t${VERT}OK${NORMAL}" else echo -e "\t\t\t\t${ROUGE}FAILED${NORMAL}" fi ################################################### ## Permet de ne pas repondre aux paquets ICMP ## ## emis sur le broadcast ## ################################################### echo -en "${GRAS}${JAUNE}Insensibilite aux paquets ICMP emis sur le brodcast :${NORMAL}" if [ -e /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ] ; then echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo -e "\t${VERT}OK${NORMAL}" else echo -e "\t${ROUGE}FAILED${NORMAL}" fi ################################################### ## Permet d'ignorer les erreurs ICMP provenant ## ## des hotes du reseau reagissant mal aux trames ## ## envoyees vers ce qu'ils percoivent comme ## ## l'addresse de diffusion ## ################################################### if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ] ; then echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses fi ################################################### ## Reverse Path Filtering ## ## Permet de ne router que les paquets appartenant# ## a nos reseaux ## ################################################### echo -e "${GRAS}${JAUNE}Activation du Reverse Path Filtering :${NORMAL}\t\t\t${VERT}OK${NORMAL}\n" for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done ################################################### ## EFFACEMENT DES ANCIENNES REGLES ## ################################################### echo -en "${GRAS}${JAUNE}Effacement des anciennes regles :${NORMAL}" ${IPTABLES} -t filter -F INPUT ${IPTABLES} -t filter -F OUTPUT ${IPTABLES} -t filter -F FORWARD ${IPTABLES} -t nat -F PREROUTING ${IPTABLES} -t nat -F OUTPUT ${IPTABLES} -t nat -F POSTROUTING ${IPTABLES} -t mangle -F PREROUTING ${IPTABLES} -t mangle -F OUTPUT echo -e "\t\t\t${VERT}OK${NORMAL}" ################################################### ## REMISE A ZERO DES CHAINES ## ################################################### echo -en "${GRAS}${JAUNE}Remise a zero des chaines :${NORMAL}" ${IPTABLES} -t filter -Z ${IPTABLES} -t nat -Z ${IPTABLES} -t mangle -Z echo -e "\t\t\t\t${VERT}OK${NORMAL}" ################################################### ## MISE EN PLACE DE LA POLITIQUE PAR DEFAUT ## ################################################### echo -en "${GRAS}${JAUNE}Mise en place de la polique par defaut :${NORMAL}" ${IPTABLES} -t filter -P INPUT DROP ${IPTABLES} -t filter -P OUTPUT ACCEPT ${IPTABLES} -t filter -P FORWARD DROP echo -e "\t\t${VERT}OK${NORMAL}\n" ################################################### ## MOTS CLES A LOGUER ## ################################################### if [ "${MOTS_CLES}" != "" ] ;then echo -ne "${GRAS}${JAUNE}Activation du systeme de logs par mots cles :${NORMAL}" for mot in ${MOTS_CLES} ;do ${IPTABLES} -A INPUT -m string --string "${mot}" -j LOG --log-level info --log-prefix "${mot} : " ${IPTABLES} -A FORWARD -m string --string "${mot}" -j LOG --log-level info --log-prefix "${mot} : " done echo -e "\t\t${VERT}OK${NORMAL}" fi ################################################### ## Interdiction d'entree de certaines adresses ## ## via le firewall en tcp et en udp ## ################################################### if [ "${IP_INTERDITES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Interdiction d'entree de certaines adresses :${NORMAL}\t\t${VERT}OK${NORMAL}" for adr in ${IP_INTERDITES} ;do ${IPTABLES} -t filter -A FORWARD -p tcp -s ${adr} -j DROP ${IPTABLES} -t filter -A FORWARD -p udp -s ${adr} -j DROP done fi ################################################### ## Interdiction de sortie de certains ports via ## ## le firewall en tcp ## ################################################### if [ "${PORTS_TCP_SORTIE_REFUSES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Interdiction de sortie de certains ports TCP :${NORMAL}\t\t${VERT}OK${NORMAL}" for port_no in ${PORTS_TCP_SORTIE_REFUSES} ;do ${IPTABLES} -t filter -A FORWARD -p tcp --dport ${port_no} -j DROP ${IPTABLES} -t filter -A OUTPUT -p tcp -o ${INTERNET} --dport ${port_no} -j DROP done fi ################################################### ## Interdiction de sortie de certains ports via ## ## le firewall en udp ## ################################################### if [ "${PORTS_TCP_SORTIE_REFUSES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Interdiction de sortie de certains ports UDP :${NORMAL}\t\t${VERT}OK${NORMAL}" for port_no in ${PORTS_TCP_SORTIE_REFUSES} ;do ${IPTABLES} -t filter -A FORWARD -p udp --dport ${port_no} -j DROP ${IPTABLES} -t filter -A OUTPUT -p udp -o ${INTERNET} --dport ${port_no} -j DROP done fi ################################################### ## Interdiction de passage de certains mots cles ## ################################################### if [ "${MOTS_CLES_INTERDITS}" != "" ] ;then echo -e "${GRAS}${JAUNE}Interdiction de passage de certains mots cles :${NORMAL}\t\t${VERT}OK${NORMAL}" for mot_cles in ${MOTS_CLES_INTERDITS} ;do mot=`echo ${mot_cles} | sed 's/>.*//g'` ip=`echo ${mot_cles} | sed 's/.*>//g'` ${IPTABLES} -A INPUT -m string --string "${mot}" -d ${ip} -j DROP ${IPTABLES} -A FORWARD -m string --string "${mot}" -d ${ip} -j DROP done fi ################################################### ## Autorisation des paquets ICMP ## ################################################### if [ "${PAQUETS_ICMP_AUTHORISES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Authorisation de certains paquets ICMP :${NORMAL}\t\t${VERT}OK${NORMAL}" for icmp_no in ${PAQUETS_ICMP_AUTHORISES} ;do ${IPTABLES} -t filter -A INPUT -p icmp --icmp-type ${icmp_no} -m limit --limit ${PING_FLOOD} -j ACCEPT ${IPTABLES} -t filter -A FORWARD -p icmp --icmp-type ${icmp_no} -m limit --limit ${PING_FLOOD} -j ACCEPT ${IPTABLES} -t filter -A OUTPUT -p icmp --icmp-type ${icmp_no} -m limit --limit ${PING_FLOOD} -j ACCEPT done fi ################################################### ## Autorise certains protocoles a circuler ## ################################################### if [ "${PROTOCOLES_AUTHORISES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Authorisation de certains protocoles :${NORMAL}\t\t\t${VERT}OK${NORMAL}" for protocole_no in ${PROTOCOLES_AUTHORISES} ;do ${IPTABLES} -t filter -A INPUT -p ${protocole_no} -j ACCEPT ${IPTABLES} -t filter -A FORWARD -p ${protocole_no} -j ACCEPT done fi ################################################### ## Autorise les connections deja etablie avant le## ## lancement de ce script ## ################################################### echo -e "${GRAS}${JAUNE}Autorisation des connections deja etablies :${NORMAL}\t\t${VERT}OK${NORMAL}" ${IPTABLES} -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ${IPTABLES} -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ${IPTABLES} -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ################################################### ## Autorise les connections LocalHost ## ################################################### echo -e "${GRAS}${JAUNE}Autorisation des connections propres au localhost :${NORMAL}\t${VERT}OK${NORMAL}" ${IPTABLES} -t filter -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT ${IPTABLES} -t filter -A FORWARD -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT ${IPTABLES} -t filter -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT ################################################### ## Autorisation des connections TCP sur le ## ## device internet ## ################################################### if [ "${INTERNET}" != "" ] ;then for internet_device in ${INTERNET} ;do if [ "${PORTS_TCP_INTERNET_AUTHORISES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Connections TCP sur l'interface internet ${internet_device}:${NORMAL}\t\t${VERT}OK${NORMAL}" for port_no in ${PORTS_TCP_INTERNET_AUTHORISES} ;do ${IPTABLES} -t filter -A INPUT -p tcp -i ${internet_device} --dport ${port_no} -j ACCEPT if [ "0${port_no}" == "021" ] ;then ${IPTABLES} -t filter -A INPUT -p tcp -i ${internet_device} --sport 20 --dport 1024:65535 ! --syn -j ACCEPT fi done fi done fi ################################################### ## Autorisation des connections UDP sur le ## ## device internet ## ################################################### if [ "${INTERNET}" != "" ] ;then for internet_device in ${INTERNET} ;do if [ "${PORTS_UDP_INTERNET_AUTHORISES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Connections UDP sur l'interface internet ${internet_device}:${NORMAL}\t\t${VERT}OK${NORMAL}" for port_no in ${PORTS_UDP_INTERNET_AUTHORISES} ;do ${IPTABLES} -t filter -A INPUT -p udp -i ${internet_device} --dport ${port_no} -j ACCEPT done fi done fi ################################################### ## Autorisation des connections TCP sur le ## ## device DMZ ## ################################################### if [ "${DMZ}" != "" ] ;then for dmz_device in ${DMZ} ;do if [ "${PORTS_TCP_DMZ_AUTHORISES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Connections TCP sur l'interface DMZ ${dmz_device}:${NORMAL}\t\t${VERT}OK${NORMAL}" for port_no in ${PORTS_TCP_DMZ_AUTHORISES} ;do ${IPTABLES} -t filter -A INPUT -p tcp -i ${dmz_device} --dport ${port_no} -j ACCEPT if [ "0${port_no}" == "021" ] ;then ${IPTABLES} -t filter -A INPUT -p tcp -i ${dmz_device} --sport 20 --dport 1024:65535 ! --syn -j ACCEPT fi done fi done fi ################################################### ## Autorisation des connections UDP sur le ## ## device DMZ ## ################################################### if [ "${DMZ}" != "" ] ;then for dmz_device in ${DMZ} ;do if [ "${PORTS_UDP_DMZ_AUTHORISES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Connections UDP sur l'interface DMZ ${dmz_device}:${NORMAL}\t\t${VERT}OK${NORMAL}" for port_no in ${PORTS_UDP_DMZ_AUTHORISES} ;do ${IPTABLES} -t filter -A INPUT -p udp -i ${dmz_device} --dport ${port_no} -j ACCEPT done fi done fi ################################################### ## Autorisation des connections TCP sur le ## ## device de la zone serveurs ## ################################################### if [ "${ZONE_SERVEURS}" != "" ] ;then for zone_serveurs_device in ${ZONE_SERVEURS} ;do if [ "${PORTS_TCP_ZONE_SERVEURS_AUTHORISES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Connections TCP sur l'interface zone serveurs ${zone_serveurs_device}:${NORMAL}\t${VERT}OK${NORMAL}" for port_no in ${PORTS_TCP_ZONE_SERVEURS_AUTHORISES} ;do ${IPTABLES} -t filter -A INPUT -p tcp -i ${zone_serveurs_device} --dport ${port_no} -j ACCEPT if [ "0${port_no}" == "021" ] ;then ${IPTABLES} -t filter -A INPUT -p tcp -i ${zone_serveurs_device} --sport 20 --dport 1024:65535 ! --syn -j ACCEPT fi done fi done fi ################################################### ## Autorisation des connections UDP sur le ## ## device de la zone serveurs ## ################################################### if [ "${ZONE_SERVEURS}" != "" ] ;then for zone_serveurs_device in ${ZONE_SERVEURS} ;do if [ "${PORTS_UDP_ZONE_SERVEURS_AUTHORISES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Connections UDP sur l'interface zone serveurs ${zone_serveurs_device}:${NORMAL}\t${VERT}OK${NORMAL}" for port_no in ${PORTS_UDP_ZONE_SERVEURS_AUTHORISES} ;do ${IPTABLES} -t filter -A INPUT -p udp -i ${zone_serveurs_device} --dport ${port_no} -j ACCEPT done fi done fi ################################################### ## Autorisation des connections TCP sur le ## ## device du LAN ## ################################################### if [ "${LAN}" != "" ] ;then for lan_device in ${LAN} ;do if [ "${PORTS_TCP_LAN_AUTHORISES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Connections TCP sur l'interface LAN ${lan_device}:${NORMAL}\t\t${VERT}OK${NORMAL}" for port_no in ${PORTS_TCP_LAN_AUTHORISES} ;do ${IPTABLES} -t filter -A INPUT -p tcp -i ${lan_device} --dport ${port_no} -j ACCEPT if [ "0${port_no}" == "021" ] ;then ${IPTABLES} -t filter -A INPUT -p tcp -i ${lan_device} --sport 20 --dport 1024:65535 ! --syn -j ACCEPT fi done fi done fi ################################################### ## Autorisation des connections UDP sur le ## ## device du LAN ## ################################################### if [ "${LAN}" != "" ] ;then for lan_device in ${LAN} ;do if [ "${PORTS_UDP_LAN_AUTHORISES}" != "" ] ;then echo -e "${GRAS}${JAUNE}Connections UDP sur l'interface LAN ${lan_device}:${NORMAL}\t\t${VERT}OK${NORMAL}" for port_no in ${PORTS_UDP_LAN_AUTHORISES} ;do ${IPTABLES} -t filter -A INPUT -p udp -i ${lan_device} --dport ${port_no} -j ACCEPT done fi done fi echo -e "" ################################################### ## Masquerade le LAN ## ################################################### if [ "${MASQ_LAN}" = "YES" -o "${MASQ_LAN}" = "yes" ] ;then echo -e "${GRAS}${JAUNE}Activation du Masquerading pour le LAN :${NORMAL}\t\t${VERT}OK${NORMAL}" for reseau in ${RESEAUX_LAN} ;do ${IPTABLES} -t nat -A POSTROUTING -s ${reseau} -o ${INTERNET} -j MASQUERADE ${IPTABLES} -t filter -A FORWARD -s ${reseau} -j ACCEPT done fi ################################################### ## Masquerade la DMZ ## ################################################### if [ "${MASQ_DMZ}" = "YES" -o "${MASQ_DMZ}" = "yes" ] ;then echo -e "${GRAS}${JAUNE}Activation du Masquerading pour la DMZ :${NORMAL}\t\t${VERT}OK${NORMAL}" for reseau in ${RESEAUX_DMZ} ;do ${IPTABLES} -t nat -A POSTROUTING -s ${reseau} -o ${INTERNET} -j MASQUERADE ${IPTABLES} -t filter -A FORWARD -s ${reseau} -j ACCEPT done fi ################################################### ## Masquerade la zone serveurs ## ################################################### if [ "${MASQ_ZONE_SERVEURS}" = "YES" -o "${MASQ_ZONE_SERVEURS}" = "yes" ] ;then echo -e "${GRAS}${JAUNE}Activation du Masquerading pour la zone serveurs :${NORMAL}\t${VERT}OK${NORMAL}" for reseau in ${RESEAUX_ZONE_SERVEURS} ;do ${IPTABLES} -t nat -A POSTROUTING -s ${reseau} -o ${INTERNET} -j MASQUERADE ${IPTABLES} -t filter -A FORWARD -s ${reseau} -j ACCEPT done fi ################################################### ## Activation du NAT en TCP ## ################################################### if [ "${NAT_TCP_NET}" != "" ] ;then echo -e "${GRAS}${JAUNE}Activation du TCP network address translation :${NORMAL}\t\t${VERT}OK${NORMAL}" for translation in ${NAT_TCP_NET} ;do srcport=`echo ${translation} | sed 's/>.*//g'|cut -d : -f 2` srchost=`echo ${translation} | sed 's/:.*//g'` desthost=`echo ${translation} | sed 's/.*>//g'| cut -d : -f 1` destport=`echo ${translation} | sed 's/.*://g'` ${IPTABLES} -t nat -A PREROUTING -p tcp -i ${INTERNET_NAT} -d ${srchost} --dport ${srcport} -j DNAT --to ${desthost}:${destport} ${IPTABLES} -A FORWARD -p tcp -i ${INTERNET_NAT} -d ${desthost} --dport ${destport} -j ACCEPT done fi ################################################### ## Activation du NAT en UDP ## ################################################### if [ "${NAT_UDP_NET}" != "" ] ;then echo -e "${GRAS}${JAUNE}Activation du UDP network address translation :${NORMAL}\t\t${VERT}OK${NORMAL}" for translation in ${NAT_UDP_NET} ;do srcport=`echo ${translation} | sed 's/>.*//g'|cut -d : -f 2` srchost=`echo ${translation} | sed 's/:.*//g'` desthost=`echo ${translation} | sed 's/.*>//g'| cut -d : -f 1` destport=`echo ${translation} | sed 's/.*://g'` ${IPTABLES} -t nat -A PREROUTING -p udp -i ${INTERNET_NAT} -d ${srchost} --dport ${srcport} -j DNAT --to ${desthost}:${destport} ${IPTABLES} -A FORWARD -p udp -i ${INTERNET_NAT} -d ${desthost} --dport ${destport} -j ACCEPT done fi ################################################### ## FUCK nimda and codered :) ## ################################################### echo -e "${GRAS}${JAUNE}Protection contre Nimda et codered :${NORMAL}\t\t\t${VERT}OK${NORMAL}" ${IPTABLES} -I INPUT -j DROP -m string -p tcp -s 0.0.0.0/0 --string "c+dir" ${IPTABLES} -I INPUT -j DROP -m string -p tcp -s 0.0.0.0/0 --string "c+tftp" ${IPTABLES} -I INPUT -j DROP -m string -p tcp -s 0.0.0.0/0 --string "cmd.exe" ${IPTABLES} -I INPUT -j DROP -m string -p tcp -s 0.0.0.0/0 --string "default.ida" ${IPTABLES} -I FORWARD -j DROP -m string -p tcp -s 0.0.0.0/0 --string "c+dir" ${IPTABLES} -I FORWARD -j DROP -m string -p tcp -s 0.0.0.0/0 --string "c+tftp" ${IPTABLES} -I FORWARD -j DROP -m string -p tcp -s 0.0.0.0/0 --string "cmd.exe" ${IPTABLES} -I FORWARD -j DROP -m string -p tcp -s 0.0.0.0/0 --string "default.ida" ################################################### ## Activation des logs ## ################################################### echo -ne "${GRAS}${JAUNE}Activation du systeme de logs :${NORMAL}" ${IPTABLES} -t filter -A INPUT -p tcp -m limit --limit ${LOG_FLOOD} -j LOG --log-level info --log-prefix "INPUT TCP DROPPED : " ${IPTABLES} -t filter -A INPUT -p udp -m limit --limit ${LOG_FLOOD} -j LOG --log-level info --log-prefix "INPUT UDP DROPPED : " ${IPTABLES} -t filter -A INPUT -p icmp -m limit --limit ${LOG_FLOOD} -j LOG --log-level info --log-prefix "INPUT ICMP DROPPED : " ${IPTABLES} -t filter -A INPUT -f -m limit --limit ${LOG_FLOOD} -j LOG --log-level info --log-prefix "INPUT FRAGMENT DROPPED : " ${IPTABLES} -t filter -A INPUT -p all -m limit --limit ${LOG_FLOOD} -j LOG --log-level info --log-prefix "INPUT PROTOCOL DROPPED : " ${IPTABLES} -t filter -A FORWARD -p tcp -m limit --limit ${LOG_FLOOD} -j LOG --log-level info --log-prefix "FORWARD TCP DROPPED : " ${IPTABLES} -t filter -A FORWARD -p udp -m limit --limit ${LOG_FLOOD} -j LOG --log-level info --log-prefix "FORWARD UDP DROPPED : " ${IPTABLES} -t filter -A FORWARD -p icmp -m limit --limit ${LOG_FLOOD} -j LOG --log-level info --log-prefix "FORWARD ICMP DROPPED : " ${IPTABLES} -t filter -A FORWARD -f -m limit --limit ${LOG_FLOOD} -j LOG --log-level info --log-prefix "FORWARD FRAGMENT DROPPED : " ${IPTABLES} -t filter -A FORWARD -p all -m limit --limit ${LOG_FLOOD} -j LOG --log-level info --log-prefix "FORWARD PROTOCOL DROPPED : " echo -e "\t\t\t\t${VERT}OK${NORMAL}"
6 Exemple 5
#!/bin/bash #------------------------------------------------------------------------- # Essentials #------------------------------------------------------------------------- IPTABLES='/sbin/iptables'; modprobe nf_conntrack_ftp #------------------------------------------------------------------------- # Physical and virtual interfaces definitions #------------------------------------------------------------------------- # Interfaces wan_if="eth0"; vpn_if="tap0"; #------------------------------------------------------------------------- # Networks definitions #------------------------------------------------------------------------- # Networks wan_ip="x.x.x.x"; lan_net="192.168.90.0/24"; vpn_net="192.168.20.0/24"; # IPs ed_ip="192.168.90.1"; banzai_ip="192.168.90.2"; #------------------------------------------------------------------------- # Global Rules input / output / forward #------------------------------------------------------------------------- # Flushing tables $IPTABLES -F $IPTABLES -X $IPTABLES -t nat -F # Define default policy $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -A INPUT -j ACCEPT -d $lan_net; $IPTABLES -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED #------------------------------------------------------------------------- # Allow masquerading for VE #------------------------------------------------------------------------- # Activating masquerade to get Internet from VE $IPTABLES -t nat -A POSTROUTING -o $wan_if -s $lan_net -j MASQUERADE # Activating masquerade to get VPN access from VE $IPTABLES -t nat -A POSTROUTING -o tap0 -j MASQUERADE #------------------------------------------------------------------------- # Allow ports on CT #------------------------------------------------------------------------- # Allow ICMP $IPTABLES -A INPUT -j ACCEPT -p icmp # SSH access $IPTABLES -A INPUT -j ACCEPT -p tcp --dport 22 #------------------------------------------------------------------------- # Redirections for incoming connections (wan) #------------------------------------------------------------------------- # HTTP access $IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -d $wan_ip -j DNAT --to-destination $ed_ip:80 # HTTPS access $IPTABLES -t nat -A PREROUTING -p tcp --dport 443 -d $wan_ip -j DNAT --to-destination $ed_ip:443
7 Exemple 6
#!/bin/bash clear echo "############################## Regles Firewall ###################################" # Activation du routage echo 1 > /proc/sys/net/ipv4/ip_forward echo "Initialisation des regles" # on purge toutes les regles iptables -F iptables -t nat -F # On applique des politiques de bases # on laisse le traffic en interne iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT # on empeche toute entree et sortie iptables -t nat -P PREROUTING DROP iptables -t nat -P POSTROUTING DROP # Traffic en interne accepte echo "Traffic interne" iptables -t nat -I POSTROUTING -o lo -j ACCEPT iptables -t nat -I PREROUTING -i lo -j ACCEPT # Definition des cartes reseaux WEB="ppp0" DMZ="eth2" COM="eth1" STA="eth0" PPP="ppp0" # Definition des reseaux IP NET_COM="10.0.0.0/8" NET_STA="192.168.2.0/24" NET_DMZ="172.16.1.0/24" # Definition des serveurs pour la connexion externe vers les serveurs REMOTE="192.168.2.8:81" FICS="172.16.1.6/32" EXC="172.16.1.3/32" DC="172.16.1.1/32" MAIL="172.16.1.3:25" HTTP="172.16.1.4:80" EMULE="172.16.1.4:5555" RDP="172.16.1.4:3389" PPTP="172.16.1.1" VUE="192.168.2.8/32" MAILWEB="172.16.1.3/32" LINUX2="172.16.1.7/32" LINUX="192.168.2.5/32" YONI="192.168.2.62/32" WIFI="192.168.2.7/32" # Regles Communes # ====================== >>>> On masquerade tous les reseaux vers le net echo "Application des regles communes" # Tout le traffic sortant vers Internet est masqueradÈ iptables -t nat -I POSTROUTING -s $NET_STA -d $NET_DMZ -j MASQUERADE # Squid doit toujours sortir vers les clients interne iptables -t nat -I POSTROUTING -p tcp --sport 3128 -d $NET_STA -j ACCEPT iptables -t nat -I POSTROUTING -o $WEB -j MASQUERADE iptables -t nat -I POSTROUTING -o $COM -j MASQUERADE iptables -t nat -A POSTROUTING -s $NET_STA -o $COM -j DROP iptables -t nat -A POSTROUTING -s $NET_DMZ -o $COM -j DROP iptables -I INPUT -i $WEB -m state --state ESTABLISHED -j ACCEPT iptables -I OUTPUT -m state --state ESTABLISHED -j ACCEPT iptables -I INPUT -i $COM -m state --state ESTABLISHED -j ACCEPT # on laisse le routage std en interne # ====================== >>>> DHCP echo "Autorisation du traffic de DHCP" iptables -t nat -A PREROUTING -p udp --dport 67:68 -j ACCEPT iptables -t nat -A POSTROUTING -p udp --sport 67:68 -j ACCEPT echo "DNS Local vers SRV-DC" iptables -t nat -A PREROUTING -p udp --sport 53 -i $DMZ -s "172.16.1.1/32" -j ACCEPT iptables -t nat -A POSTROUTING -p udp --dport 53 -o $DMZ -d "172.16.1.1/32" -j ACCEPT iptables -t nat -A PREROUTING -p tcp --sport 53 -i $DMZ -s "172.16.1.1/32" -j ACCEPT iptables -t nat -A POSTROUTING -p tcp --dport 53 -o $DMZ -d "172.16.1.1/32" -j ACCEPT # regles d'acces resaux a reseaux # 1 --> DMZ echo "====================== >>>> Regles pour les machines commerciales" echo "Regles de la journee" echo "Acces en fonction des heures" iptables -t nat -I PREROUTING -i $DMZ -m time --timestart 08:45 --timestop 17:45 \ --days Mon,Tue,Wed,Thu,Fri -p tcp -m multiport --ports 20,21,80,3128,1863,110,119,25,8080,9000 -j ACCEPT echo "Regles de la nuit" iptables -t nat -I PREROUTING -i $DMZ -m time --timestart 17:46 --timestop 23:59 \ --days Mon,Tue,Wed,Thu -p tcp -j ACCEPT iptables -t nat -I PREROUTING -i $DMZ -m time --timestart 00:00 --timestop 08:44 \ --days Mon,Tue,Wed,Thu,Fri -p tcp -j ACCEPT # Pas de limite le WE echo "Pas de limite le WE" iptables -t nat -I PREROUTING -i $DMZ -m time --timestart 17:46 --timestop 23:59 \ --days Fri -p tcp -j ACCEPT iptables -t nat -I PREROUTING -i $DMZ -m time --timestart 00:00 --timestop 23:59 \ --days Sat,Sun -p tcp -j ACCEPT iptables -t nat -I PREROUTING -i $DMZ -p udp --dport 53 -j ACCEPT #====>>>>>>> Proxy transparent pour les comerciaux iptables -t nat -I PREROUTING -p tcp -i $DMZ --dport 80 -j REDIRECT --to-port 3128 iptables -t nat -A PREROUTING -p tcp -i $DMZ --dport 443 -j ACCEPT # iptables -t nat -A PREROUTING -p tcp -i $DMZ --dport 443 -j REDIRECT --to-port 3128 echo "====================== >>>> Regles pour les salles de cours" # 2 --> Salle <-> DMZ # A - FICS2 echo " Salle -> SRV-FICS2" iptables -t nat -A PREROUTING -p tcp -d $FICS -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 80 -d $MAILWEB -j ACCEPT iptables -t nat -A POSTROUTING -s $NET_DMZ -d $NET_STA -j ACCEPT # 3 --> Salle <-> Internet # A - HTTP echo " Salle -> Internet avec Squid" iptables -t nat -A PREROUTING -p tcp -i $STA --dport 80 -j REDIRECT --to-port 3128 iptables -t nat -A PREROUTING -p tcp -i $STA --dport 443 -j ACCEPT # C - DNS iptables -t nat -A PREROUTING -p udp -i $STA --dport 53 -j ACCEPT # iptables -t nat -A PREROUTING -p tcp -i $STA --dport 53 -j ACCEPT echo "====================== >>>> Regles pour Internet vers le reseau interne" # 5 --> Internet <--> DMZ # A - SMTP echo " SMTP" iptables -t nat -I PREROUTING -i $WEB -p tcp --dport 25 -j DNAT --to-destination $MAIL iptables -t nat -I POSTROUTING -o $DMZ -d $EXC -p tcp --dport 25 -j ACCEPT # B - WEB echo " WEB" iptables -t nat -A PREROUTING -i $WEB -p tcp --dport 80 -j DNAT --to-destination $HTTP iptables -t nat -A POSTROUTING -o $DMZ -d "172.16.1.4/32" -p tcp --dport 80 -j MASQUERADE # B' - EMULE iptables -t nat -A PREROUTING -i $WEB -p tcp --dport 5555 -j DNAT --to-destination $EMULE iptables -t nat -A POSTROUTING -o $DMZ -d "172.16.1.4/32" -p tcp --dport 5555 -j MASQUERADE iptables -t nat -A PREROUTING -i $WEB -p udp --dport 5555 -j DNAT --to-destination $HTTP iptables -t nat -A POSTROUTING -o $DMZ -d "172.16.1.4/32" -p udp --dport 5555 -j MASQUERADE # C - PPTP echo " PPTP" iptables -t nat -A PREROUTING -i $WEB -p 47 -j DNAT --to-destination $PPTP iptables -t nat -A POSTROUTING -o $DMZ -p 47 -j MASQUERADE iptables -t nat -A PREROUTING -i $WEB -p tcp --dport 1723 -j DNAT --to-destination $PPTP iptables -t nat -A POSTROUTING -o $DMZ -p tcp --dport 1723 -j MASQUERADE # D - SSH depuis l'exterieur ou seulement pour les machines de l'interieur autorisees echo " SSH depuis Internet" iptables -t nat -A PREROUTING -s 172.16.1.0/24 -p tcp --dport 22 -j ACCEPT # E - FTP echo " FTP EST DESACTIVE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" #iptables -t nat -A PREROUTING -i $WEB -p tcp --dport 20 -j DNAT --to-destination "172.16.1.4:20" #iptables -t nat -A PREROUTING -i $WEB -p tcp --dport 21 -j DNAT --to-destination "172.16.1.4:21" #iptables -t nat -A POSTROUTING -o $DMZ -d "172.16.1.4/32" -p tcp --dport 21 -j MASQUERADE #iptables -t nat -A POSTROUTING -o $DMZ -d "172.16.1.4/32" -p tcp --dport 20 -j MASQUERADE # F - RDP echo " RDP" iptables -t nat -A PREROUTING -i $WEB -p tcp --dport 3389 -j DNAT --to-destination $RDP iptables -t nat -A POSTROUTING -o $DMZ -d "172.16.1.4/32" -p tcp --dport 3389 -j MASQUERADE # G - SNMP echo " SNMP" iptables -t nat -A POSTROUTING -p tcp --dport 161 -j ACCEPT iptables -t nat -A POSTROUTING -p udp --dport 161 -j ACCEPT iptables -t nat -A POSTROUTING -p udp --dport 162 -j ACCEPT # 6 --> Acces Selon adresse MAC echo "====================== >>>> Regles speciales pour les internes" echo " Yoni" # A - Yoni iptables -t nat -I PREROUTING -m mac --mac-source '00:00:F0:82:58:AF' -j ACCEPT iptables -t nat -I PREROUTING -m mac --mac-source '00:04:23:76:63:10' -j ACCEPT # A' - OlivierG iptables -t nat -I PREROUTING -s 192.168.2.69/32 -m mac --mac-source '00:0d:60:75:b8:75' -j ACCEPT iptables -t nat -I PREROUTING -s 192.168.2.39/32 -m mac --mac-source '00:0C:F1:43:14:05' -j ACCEPT # B - Olivier tout echo " OlivierC" iptables -t nat -I PREROUTING -s 192.168.2.63/32 -m mac --mac-source '00:90:F5:1E:51:A1' -j ACCEPT iptables -t nat -I PREROUTING -s 172.16.1.63/32 -m mac --mac-source '00:90:F5:1E:51:A1' -j ACCEPT # Wifi Olivier iptables -t nat -I PREROUTING -m mac --mac-source '00:A0:C5:B1:DD:15' -j ACCEPT # C - Steeve tout echo " Steeve" iptables -t nat -I PREROUTING -s 192.168.2.64/32 -m mac --mac-source '00:08:02:04:fa:d7' -j ACCEPT iptables -t nat -I PREROUTING -m mac --mac-source '00:08:02:04:fa:d7' -j ACCEPT # D - Portable Compaq echo " Portable Compaq" iptables -t nat -I PREROUTING -s 192.168.2.65/32 -m mac --mac-source '00:50:8B:FA:B9:5B' \ -p tcp -m multiport --ports 443,110,25,119 -j ACCEPT iptables -t nat -I PREROUTING -s 192.168.2.65/32 -m mac --mac-source '00:50:8B:FA:B9:5B' \ -p udp --dport 53 -j ACCEPT iptables -t nat -I PREROUTING -s 192.168.2.65/32 -m mac --mac-source '00:50:8B:FA:B9:5B' \ -d $NET_DMZ -j ACCEPT # D' Portable Toshiba echo " Portable Toshiba" iptables -t nat -I PREROUTING -s 192.168.2.67/32 -m mac --mac-source '00:01:02:E7:36:E3' \ -p tcp -m multiport --ports 443,110,25,119 -j ACCEPT iptables -t nat -I PREROUTING -s 192.168.2.67/32 -m mac --mac-source '00:01:02:E7:36:E3' \ -p udp --dport 53 -j ACCEPT iptables -t nat -I PREROUTING -s 192.168.2.67/32 -m mac --mac-source '00:01:02:E7:36:E3' \ -d $NET_DMZ -j ACCEPT # E - Serveur Vue echo " Serveur VUE" iptables -t nat -I PREROUTING -s $VUE -m mac --mac-source '00:0c:6e:c5:42:6c' -j ACCEPT iptables -t nat -I PREROUTING -i $DMZ -d $VUE -j ACCEPT # F- Serveur Linux du RDC echo " Serveur Linux" iptables -t nat -I PREROUTING -i $DMZ -d $LINUX -j ACCEPT # F - Quentin Portable echo " Quentin" iptables -t nat -I PREROUTING -s 172.16.1.65/32 -m mac --mac-source '00:0b:db:a1:c2:a5' -j ACCEPT iptables -t nat -I PREROUTING -s 192.168.2.65/32 -m mac --mac-source '00:0b:db:a1:c2:a5' -j ACCEPT iptables -t nat -I PREROUTING -s 192.168.2.65/32 -m mac --mac-source '00:a0:c5:b1:da:f8' -j ACCEPT # F - Eva Portable echo " Eva est punie" #iptables -t nat -I PREROUTING -m mac --mac-source '00:02:3f:13:bb:21' -j ACCEPT # G - Lionel Portable echo " Lionel" iptables -t nat -I PREROUTING \ -m mac --mac-source '00:0D:60:2C:12:95' -j ACCEPT # H - ROUTEUR WIFI echo " ROUTEUR WIFI" iptables -t nat -I PREROUTING \ -m mac --mac-source '00:0F:66:33:20:12' -j ACCEPT echo "############################## FIN ==> Regles Firewall ###################################" iptables -t nat -I PREROUTING -s $LINUX -j ACCEPT iptables -t nat -I PREROUTING -s $LINUX2 -j ACCEPT iptables -t nat -I PREROUTING -s 172.16.1.1/32 -j ACCEPT iptables -t nat -I PREROUTING -s 172.16.1.2/32 -j ACCEPT iptables -t nat -I PREROUTING -s 172.16.1.3/32 -j ACCEPT iptables -t nat -I PREROUTING -s 172.16.1.4/32 -j ACCEPT iptables -t nat -I PREROUTING -s 172.16.1.5/32 -j ACCEPT iptables -t nat -I PREROUTING -s 192.168.2.95/32 -j ACCEPT