| 872 | 
           richard | 
           1 | 
           #!/bin/bash
  | 
        
        
           | 64 | 
           franck | 
           2 | 
           # $Id: alcasar-iptables.sh 2187 2017-04-27 22:18:45Z richard $
  | 
        
        
           | 675 | 
           richard | 
           3 | 
           # Script de mise en place des regles du parefeu d'Alcasar (mode normal)
  | 
        
        
           | 1339 | 
           richard | 
           4 | 
           # This script writes the netfilter rules for ALCASAR
  | 
        
        
           | 675 | 
           richard | 
           5 | 
           # Rexy - 3abtux - CPN
  | 
        
        
            | 
            | 
           6 | 
           #
  | 
        
        
            | 
            | 
           7 | 
           # Reminders
  | 
        
        
           | 1221 | 
           richard | 
           8 | 
           # There are four channels for log :
  | 
        
        
           | 1294 | 
           richard | 
           9 | 
           #	1 tracability of the consultation equipment with The 'Netflow' kernel module (iptables target = NETFLOW);
  | 
        
        
           | 1221 | 
           richard | 
           10 | 
           #	2 protection of ALCASAR with the Ulog group 1 (default group) 
  | 
        
        
           | 1294 | 
           richard | 
           11 | 
           #	3 SSH on ALCASAR with the Ulog group 2;
  | 
        
        
            | 
            | 
           12 | 
           #	4 extern access attempts on ALCASAR with the Ulog group 3.
  | 
        
        
           | 1469 | 
           richard | 
           13 | 
           # The bootps/dhcp (67) port is always open on tun0/INTIF by coova 
  | 
        
        
            | 
            | 
           14 | 
           CONF_FILE="/usr/local/etc/alcasar.conf"
  | 
        
        
           | 1587 | 
           richard | 
           15 | 
           EXTIF=`grep ^EXTIF= $CONF_FILE|cut -d"=" -f2`				# EXTernal InterFace
  | 
        
        
            | 
            | 
           16 | 
           INTIF=`grep ^INTIF= $CONF_FILE|cut -d"=" -f2`				# INTernal InterFace
  | 
        
        
            | 
            | 
           17 | 
           TUNIF="tun0"								# listen device for chilli daemon
  | 
        
        
           | 1469 | 
           richard | 
           18 | 
           private_ip_mask=`grep ^PRIVATE_IP= $CONF_FILE|cut -d"=" -f2`
  | 
        
        
           | 615 | 
           richard | 
           19 | 
           private_ip_mask=${private_ip_mask:=192.168.182.1/24}
  | 
        
        
           | 783 | 
           richard | 
           20 | 
           PRIVATE_IP=`echo $private_ip_mask | cut -d"/" -f1`			# ALCASAR LAN IP address
  | 
        
        
           | 604 | 
           richard | 
           21 | 
           private_network=`/bin/ipcalc -n $private_ip_mask|cut -d"=" -f2`		# LAN IP address (ie.: 192.168.182.0)
  | 
        
        
            | 
            | 
           22 | 
           private_prefix=`/bin/ipcalc -p $private_ip_mask|cut -d"=" -f2`		# LAN prefix (ie. 24)
  | 
        
        
           | 783 | 
           richard | 
           23 | 
           PRIVATE_NETWORK_MASK=$private_network/$private_prefix			# Lan IP address + prefix (192.168.182.0/24)
  | 
        
        
           | 1469 | 
           richard | 
           24 | 
           public_ip_mask=`grep ^PUBLIC_IP= $CONF_FILE|cut -d"=" -f2`		# ALCASAR WAN IP address
  | 
        
        
           | 1585 | 
           richard | 
           25 | 
           if [[ "$public_ip_mask" == "dhcp" ]]
  | 
        
        
            | 
            | 
           26 | 
           then
  | 
        
        
            | 
            | 
           27 | 
           	PTN="\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/([012]?[0-9]|3[0-2])\b"
  | 
        
        
           | 1587 | 
           richard | 
           28 | 
           	public_ip_mask=`ip addr show $EXTIF | egrep -o $PTN`
  | 
        
        
           | 1585 | 
           richard | 
           29 | 
           fi
  | 
        
        
           | 783 | 
           richard | 
           30 | 
           PUBLIC_IP=`echo $public_ip_mask | cut -d"/" -f1`
  | 
        
        
           | 1588 | 
           richard | 
           31 | 
           dns1=`grep ^DNS1= $CONF_FILE|cut -d"=" -f2`
  | 
        
        
            | 
            | 
           32 | 
           dns2=`grep ^DNS2= $CONF_FILE|cut -d"=" -f2`
  | 
        
        
           | 615 | 
           richard | 
           33 | 
           dns1=${dns1:=208.67.220.220}
  | 
        
        
            | 
            | 
           34 | 
           dns2=${dns2:=208.67.222.222}
  | 
        
        
           | 1585 | 
           richard | 
           35 | 
           DNSSERVERS="$dns1,$dns2"						# first and second public DNS servers
  | 
        
        
           | 1332 | 
           richard | 
           36 | 
           BL_IP_CAT="/usr/local/share/iptables-bl-enabled"			# categories files of the BlackListed IP
  | 
        
        
           | 1932 | 
           richard | 
           37 | 
           WL_IP_CAT="/usr/local/share/iptables-wl-enabled"			# categories files of the WhiteListed IP
  | 
        
        
           | 1364 | 
           richard | 
           38 | 
           TMP_users_set_save="/tmp/users_set_save"				# tmp file for backup users set 
  | 
        
        
            | 
            | 
           39 | 
           TMP_set_save="/tmp/ipset_save"						# tmp file for blacklist and whitelist creation
  | 
        
        
           | 1469 | 
           richard | 
           40 | 
           SSH=`grep ^SSH= $CONF_FILE|cut -d"=" -f2`				# sshd active (on/off)
  | 
        
        
           | 615 | 
           richard | 
           41 | 
           SSH=${SSH:=off}
  | 
        
        
           | 1469 | 
           richard | 
           42 | 
           SSH_ADMIN_FROM=`grep ^SSH_ADMIN_FROM= $CONF_FILE|cut -d"=" -f2`
  | 
        
        
           | 1063 | 
           richard | 
           43 | 
           SSH_ADMIN_FROM=${SSH_ADMIN_FROM:="0.0.0.0/0.0.0.0"}			# WAN IP address to reduce ssh access (all ip allowed on LAN side)
  | 
        
        
           | 1469 | 
           richard | 
           44 | 
           LDAP=`grep ^LDAP= $CONF_FILE|cut -d"=" -f2`				# LDAP external server active (on/off)
  | 
        
        
           | 615 | 
           richard | 
           45 | 
           LDAP=${LDAP:=off}
  | 
        
        
           | 1469 | 
           richard | 
           46 | 
           LDAP_IP=`grep ^LDAP_IP= $CONF_FILE|cut -d"=" -f2`			# WAN IP address to reduce LDAP WAN access (all ip allowed on LAN side)
  | 
        
        
           | 768 | 
           richard | 
           47 | 
           LDAP_IP=${LDAP_IP:="0.0.0.0/0.0.0.0"}
  | 
        
        
           | 612 | 
           richard | 
           48 | 
           IPTABLES="/sbin/iptables"
  | 
        
        
           | 1339 | 
           richard | 
           49 | 
           IP_REHABILITEES="/etc/dansguardian/lists/exceptioniplist"		# Rehabilitated IP
  | 
        
        
           | 1364 | 
           richard | 
           50 | 
           SAVE_DIR="/etc/sysconfig"						# Saving path
  | 
        
        
           | 1 | 
           root | 
           51 | 
              | 
        
        
           | 1364 | 
           richard | 
           52 | 
           # Sauvegarde des SET des utilisateurs connectés si ils existent
  | 
        
        
            | 
            | 
           53 | 
           # Saving SET of connected users if it exists
  | 
        
        
           | 1867 | 
           raphael.pi | 
           54 | 
           ipset list not_filtered 1>/dev/null 2>&1
  | 
        
        
           | 1364 | 
           richard | 
           55 | 
           if [ $? -eq 0 ];
  | 
        
        
            | 
            | 
           56 | 
           then
  | 
        
        
           | 1867 | 
           raphael.pi | 
           57 | 
           	ipset save not_filtered > $TMP_users_set_save
  | 
        
        
           | 1872 | 
           richard | 
           58 | 
           	ipset save havp >> $TMP_users_set_save
  | 
        
        
            | 
            | 
           59 | 
           	ipset save havp_bl >> $TMP_users_set_save
  | 
        
        
            | 
            | 
           60 | 
           	ipset save havp_wl >> $TMP_users_set_save
  | 
        
        
           | 1867 | 
           raphael.pi | 
           61 | 
           	ipset save not_auth_yet >> $TMP_users_set_save
  | 
        
        
            | 
            | 
           62 | 
           	ipset save users_list >> $TMP_users_set_save
  | 
        
        
           | 2006 | 
           raphael.pi | 
           63 | 
           	ipset save proto_0 >> $TMP_users_set_save
  | 
        
        
            | 
            | 
           64 | 
           	ipset save proto_1 >> $TMP_users_set_save
  | 
        
        
            | 
            | 
           65 | 
           	ipset save proto_2 >> $TMP_users_set_save
  | 
        
        
            | 
            | 
           66 | 
           	ipset save proto_3 >> $TMP_users_set_save
  | 
        
        
           | 1364 | 
           richard | 
           67 | 
           fi
  | 
        
        
            | 
            | 
           68 | 
              | 
        
        
           | 1291 | 
           richard | 
           69 | 
           # loading of NetFlow probe (ipt_NETFLOW kernel module)
  | 
        
        
           | 1159 | 
           crox53 | 
           70 | 
           modprobe ipt_NETFLOW destination=127.0.0.1:2055
  | 
        
        
            | 
            | 
           71 | 
              | 
        
        
           | 498 | 
           richard | 
           72 | 
           # Effacement des règles existantes
  | 
        
        
           | 476 | 
           richard | 
           73 | 
           # Flush all existing rules
  | 
        
        
           | 1 | 
           root | 
           74 | 
           $IPTABLES -F
  | 
        
        
            | 
            | 
           75 | 
           $IPTABLES -t nat -F
  | 
        
        
            | 
            | 
           76 | 
           $IPTABLES -t mangle -F
  | 
        
        
            | 
            | 
           77 | 
           $IPTABLES -F INPUT
  | 
        
        
            | 
            | 
           78 | 
           $IPTABLES -F FORWARD
  | 
        
        
            | 
            | 
           79 | 
           $IPTABLES -F OUTPUT
  | 
        
        
            | 
            | 
           80 | 
              | 
        
        
           | 498 | 
           richard | 
           81 | 
           # Suppression des chaines utilisateurs sur les tables filter et nat
  | 
        
        
            | 
            | 
           82 | 
           # Flush non default rules on filter and nat tables
  | 
        
        
            | 
            | 
           83 | 
           $IPTABLES -X
  | 
        
        
            | 
            | 
           84 | 
           $IPTABLES -t nat -X
  | 
        
        
            | 
            | 
           85 | 
              | 
        
        
            | 
            | 
           86 | 
           # Stratégies par défaut
  | 
        
        
           | 476 | 
           richard | 
           87 | 
           # Default policies
  | 
        
        
           | 1 | 
           root | 
           88 | 
           $IPTABLES -P INPUT DROP
  | 
        
        
            | 
            | 
           89 | 
           $IPTABLES -P FORWARD DROP
  | 
        
        
           | 498 | 
           richard | 
           90 | 
           $IPTABLES -P OUTPUT DROP
  | 
        
        
           | 1 | 
           root | 
           91 | 
           $IPTABLES -t nat -P PREROUTING ACCEPT
  | 
        
        
            | 
            | 
           92 | 
           $IPTABLES -t nat -P POSTROUTING ACCEPT
  | 
        
        
            | 
            | 
           93 | 
           $IPTABLES -t nat -P OUTPUT ACCEPT
  | 
        
        
            | 
            | 
           94 | 
              | 
        
        
           | 1484 | 
           richard | 
           95 | 
              | 
        
        
            | 
            | 
           96 | 
           #############################
  | 
        
        
            | 
            | 
           97 | 
           #          IPSET            #
  | 
        
        
            | 
            | 
           98 | 
           #############################
  | 
        
        
            | 
            | 
           99 | 
              | 
        
        
           | 1291 | 
           richard | 
           100 | 
           # destruction de tous les SET
  | 
        
        
           | 1332 | 
           richard | 
           101 | 
           # destroy all SET
  | 
        
        
           | 1876 | 
           raphael.pi | 
           102 | 
           ipset flush
  | 
        
        
           | 1291 | 
           richard | 
           103 | 
           ipset destroy
  | 
        
        
           | 1855 | 
           raphael.pi | 
           104 | 
              | 
        
        
           | 1484 | 
           richard | 
           105 | 
           ###### BL set  ###########
  | 
        
        
            | 
            | 
           106 | 
           # Calcul de la taille / Compute the length
  | 
        
        
           | 1932 | 
           richard | 
           107 | 
           bl_set_length=$(wc -l $BL_IP_CAT/* | awk '{print $1}' | tail -n 1)
  | 
        
        
           | 1484 | 
           richard | 
           108 | 
           # Chargement / loading
  | 
        
        
           | 1867 | 
           raphael.pi | 
           109 | 
           echo "create bl_ip_blocked hash:net family inet hashsize 1024 maxelem $bl_set_length" > $TMP_set_save
  | 
        
        
           | 1393 | 
           richard | 
           110 | 
           for category in `ls -1 $BL_IP_CAT | cut -d '@' -f1`
  | 
        
        
           | 1332 | 
           richard | 
           111 | 
           do
  | 
        
        
           | 1364 | 
           richard | 
           112 | 
           	cat $BL_IP_CAT/$category >> $TMP_set_save
  | 
        
        
           | 1332 | 
           richard | 
           113 | 
           done
  | 
        
        
           | 1364 | 
           richard | 
           114 | 
           ipset -! restore < $TMP_set_save
  | 
        
        
            | 
            | 
           115 | 
           rm -f $TMP_set_save
  | 
        
        
           | 1484 | 
           richard | 
           116 | 
           # Suppression des ip réhabilitées / Removing of rehabilitated ip
  | 
        
        
           | 1339 | 
           richard | 
           117 | 
           for ip in $(cat $IP_REHABILITEES)
  | 
        
        
            | 
            | 
           118 | 
           do
  | 
        
        
           | 1867 | 
           raphael.pi | 
           119 | 
           	ipset del bl_ip_blocked $ip
  | 
        
        
           | 1339 | 
           richard | 
           120 | 
           done
  | 
        
        
            | 
            | 
           121 | 
              | 
        
        
           | 1484 | 
           richard | 
           122 | 
           ###### WL set  ###########
  | 
        
        
           | 1932 | 
           richard | 
           123 | 
           # taille fixe, car peupler par dnsmasq / fixe length due to dnsmasq dynamic loading
  | 
        
        
           | 1896 | 
           raphael.pi | 
           124 | 
           wl_set_length=65536
  | 
        
        
           | 1484 | 
           richard | 
           125 | 
           # Chargement Loading
  | 
        
        
           | 1867 | 
           raphael.pi | 
           126 | 
           echo "create wl_ip_allowed hash:net family inet hashsize 1024 maxelem $wl_set_length" > $TMP_set_save
  | 
        
        
           | 1852 | 
           raphael.pi | 
           127 | 
           #get ip-wl files from ACC
  | 
        
        
           | 1932 | 
           richard | 
           128 | 
           for category in `ls -1 $WL_IP_CAT |cut -d '@' -f1`
  | 
        
        
           | 1852 | 
           raphael.pi | 
           129 | 
           do
  | 
        
        
           | 1932 | 
           richard | 
           130 | 
           	cat $WL_IP_CAT/$category >> $TMP_set_save
  | 
        
        
           | 1852 | 
           raphael.pi | 
           131 | 
           done
  | 
        
        
           | 1364 | 
           richard | 
           132 | 
           ipset -! restore < $TMP_set_save
  | 
        
        
            | 
            | 
           133 | 
           rm -f $TMP_set_save
  | 
        
        
            | 
            | 
           134 | 
              | 
        
        
            | 
            | 
           135 | 
           # Restoration des SET des utilisateurs connectés si ils existent sinon création des SET 
  | 
        
        
           | 1377 | 
           richard | 
           136 | 
           # Restoring the connected users SETs if available, otherwise creating SETs
  | 
        
        
           | 1364 | 
           richard | 
           137 | 
           if [ -e $TMP_users_set_save ];
  | 
        
        
            | 
            | 
           138 | 
           then
  | 
        
        
            | 
            | 
           139 | 
           	ipset -! restore < $TMP_users_set_save
  | 
        
        
            | 
            | 
           140 | 
           	rm -f $TMP_users_set_save
  | 
        
        
            | 
            | 
           141 | 
           else
  | 
        
        
           | 1867 | 
           raphael.pi | 
           142 | 
           	ipset create not_filtered hash:net hashsize 1024
  | 
        
        
           | 1872 | 
           richard | 
           143 | 
           	ipset create havp hash:net hashsize 1024
  | 
        
        
            | 
            | 
           144 | 
           	ipset create havp_bl hash:net hashsize 1024
  | 
        
        
            | 
            | 
           145 | 
           	ipset create havp_wl hash:net hashsize 1024
  | 
        
        
           | 1818 | 
           raphael.pi | 
           146 | 
           	#utilisé pour l'interception des utilisateurs non authentifiés au réseau
  | 
        
        
            | 
            | 
           147 | 
           	#used for intercepting users not connected to the network
  | 
        
        
           | 1867 | 
           raphael.pi | 
           148 | 
           	ipset create not_auth_yet hash:net hashsize 1024
  | 
        
        
            | 
            | 
           149 | 
           	ipset create users_list list:set
  | 
        
        
           | 1872 | 
           richard | 
           150 | 
           	ipset add users_list havp
  | 
        
        
            | 
            | 
           151 | 
           	ipset add users_list havp_wl
  | 
        
        
            | 
            | 
           152 | 
           	ipset add users_list havp_bl
  | 
        
        
           | 1867 | 
           raphael.pi | 
           153 | 
           	ipset add users_list not_filtered
  | 
        
        
            | 
            | 
           154 | 
           	ipset add users_list not_auth_yet
  | 
        
        
           | 2006 | 
           raphael.pi | 
           155 | 
           	#pour les filtrages de protocole par utilisateur
  | 
        
        
            | 
            | 
           156 | 
           	ipset create proto_0 hash:net hashsize 1024
  | 
        
        
            | 
            | 
           157 | 
           	ipset create proto_1 hash:net hashsize 1024
  | 
        
        
            | 
            | 
           158 | 
           	ipset create proto_2 hash:net hashsize 1024
  | 
        
        
            | 
            | 
           159 | 
           	ipset create proto_3 hash:net hashsize 1024
  | 
        
        
           | 1364 | 
           richard | 
           160 | 
           fi
  | 
        
        
            | 
            | 
           161 | 
              | 
        
        
           | 472 | 
           richard | 
           162 | 
           #############################
  | 
        
        
           | 783 | 
           richard | 
           163 | 
           #       PREROUTING          #
  | 
        
        
           | 472 | 
           richard | 
           164 | 
           #############################
  | 
        
        
           | 1827 | 
           raphael.pi | 
           165 | 
              | 
        
        
            | 
            | 
           166 | 
           # Redirection des requetes DNS des utilisateurs non connectés dans le DNS-Blackhole
  | 
        
        
            | 
            | 
           167 | 
           # Redirect users not connected DNS requests in DNS-Blackhole
  | 
        
        
           | 1867 | 
           raphael.pi | 
           168 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -m set ! --match-set users_list src -d $PRIVATE_IP -p tcp --dport domain -j REDIRECT --to-port 56
  | 
        
        
            | 
            | 
           169 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -m set ! --match-set users_list src -d $PRIVATE_IP -p udp --dport domain -j REDIRECT --to-port 56
  | 
        
        
           | 1827 | 
           raphael.pi | 
           170 | 
              | 
        
        
           | 1453 | 
           franck | 
           171 | 
           # Marquage des paquets qui tentent d'accéder directement à un serveur sans authentification en mode proxy pour pouvoir les rejeter en INPUT
  | 
        
        
            | 
            | 
           172 | 
           # Mark packets that attempt to directly access a server without authentication with proxy client to reject them in INPUT rules
  | 
        
        
           | 1459 | 
           franck | 
           173 | 
           #$IPTABLES -A PREROUTING -t mangle -i $TUNIF -s $PRIVATE_NETWORK_MASK -p tcp -m tcp --dport 80 -m string --string 'GET http' --algo bm --from 50 --to 70 -j MARK --set-mark 10
  | 
        
        
           | 1453 | 
           franck | 
           174 | 
              | 
        
        
           | 1486 | 
           richard | 
           175 | 
           # Marquage (et journalisation) des paquets qui tentent d'accéder directement au 8080 (DansGuardian) pour pouvoir les rejeter en INPUT
  | 
        
        
           | 1962 | 
           richard | 
           176 | 
           # Mark (and log) the direct attempts to TCP port 8090 (dansguardian) in order to REJECT them in INPUT rules
  | 
        
        
           | 1731 | 
           richard | 
           177 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -p tcp -d $PRIVATE_IP -m tcp --dport 8080 -j NFLOG --nflog-prefix "RULE direct-proxy -- DENY "
  | 
        
        
           | 783 | 
           richard | 
           178 | 
           $IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp -m tcp --dport 8080 -j MARK --set-mark 1
  | 
        
        
           | 1 | 
           root | 
           179 | 
              | 
        
        
           | 1486 | 
           richard | 
           180 | 
           # Marquage (et journalisation) des paquets qui tentent d'accéder directement au port 8090 (tinyproxy) pour pouvoir les rejeter en INPUT
  | 
        
        
           | 1962 | 
           richard | 
           181 | 
           # Mark (and log) the direct attempts to TCP port 8090 (tinyproxy) in order to REJECT them in INPUT rules
  | 
        
        
           | 1704 | 
           richard | 
           182 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -p tcp -d $PRIVATE_IP -m tcp --dport 8090 -j NFLOG --nflog-prefix "RULE direct-proxy -- DENY "
  | 
        
        
           | 1486 | 
           richard | 
           183 | 
           $IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp -m tcp --dport 8090 -j MARK --set-mark 2
  | 
        
        
            | 
            | 
           184 | 
              | 
        
        
           | 1962 | 
           richard | 
           185 | 
           # Marquage des paquets qui tentent d'accéder directement au port 54 (DNS-blacklist) pour pouvoir les rejeter en INPUT
  | 
        
        
            | 
            | 
           186 | 
           # Mark the direct attempts to port 54 (DNS-blacklist) in order to REJECT them in INPUT rules
  | 
        
        
           | 1486 | 
           richard | 
           187 | 
           $IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp --dport 54 -j MARK --set-mark 3
  | 
        
        
           | 1962 | 
           richard | 
           188 | 
           $IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p udp --dport 54 -j MARK --set-mark 3
  | 
        
        
           | 783 | 
           richard | 
           189 | 
              | 
        
        
           | 1962 | 
           richard | 
           190 | 
           # Marquage des paquets qui tentent d'accéder directement au port 55 (DNS-Whitelist) pour pouvoir les rejeter en INPUT
  | 
        
        
            | 
            | 
           191 | 
           # Mark the direct attempts to port 55 (DNS-whitelist) in order to REJECT them in INPUT rules
  | 
        
        
           | 1486 | 
           richard | 
           192 | 
           $IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp --dport 55 -j MARK --set-mark 4
  | 
        
        
           | 1962 | 
           richard | 
           193 | 
           $IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p udp --dport 55 -j MARK --set-mark 4
  | 
        
        
           | 783 | 
           richard | 
           194 | 
              | 
        
        
           | 1962 | 
           richard | 
           195 | 
           # Marquage des paquets qui tentent d'accéder directement au port 56 (DNS-Blackhole) pour pouvoir les rejeter en INPUT
  | 
        
        
            | 
            | 
           196 | 
           # Mark the direct attempts to port 56 (DNS-blackhole) in order to REJECT them in INPUT rules
  | 
        
        
           | 1486 | 
           richard | 
           197 | 
           $IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp --dport 56 -j MARK --set-mark 5
  | 
        
        
           | 1962 | 
           richard | 
           198 | 
           $IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p udp --dport 56 -j MARK --set-mark 5
  | 
        
        
           | 1472 | 
           richard | 
           199 | 
              | 
        
        
           | 1544 | 
           richard | 
           200 | 
           # redirection DNS des usagers 'havp_bl' vers le port 54
  | 
        
        
            | 
            | 
           201 | 
           # redirect DNS of 'havp_bl' users to port 54
  | 
        
        
           | 1872 | 
           richard | 
           202 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_bl src -d $PRIVATE_IP -p udp --dport domain -j REDIRECT --to-port 54
  | 
        
        
           | 1393 | 
           richard | 
           203 | 
              | 
        
        
           | 1544 | 
           richard | 
           204 | 
           # redirection DNS des usagers 'havp_wl' vers le port 55
  | 
        
        
           | 1872 | 
           richard | 
           205 | 
           # redirect DNS of 'havp_wl' users to port 55
  | 
        
        
            | 
            | 
           206 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_wl src -d $PRIVATE_IP -p udp --dport domain -j REDIRECT --to-port 55
  | 
        
        
           | 1364 | 
           richard | 
           207 | 
              | 
        
        
           | 1544 | 
           richard | 
           208 | 
           # Journalisation HTTP_Internet des usagers 'havp_bl' (paquets SYN uniquement). Les autres protocoles sont journalisés en FORWARD par netflow. 
  | 
        
        
            | 
            | 
           209 | 
           # Log Internet HTTP of 'havp_bl' users" (only syn packets). Other protocols are logged in FORWARD by netflow
  | 
        
        
           | 1872 | 
           richard | 
           210 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_bl src ! -d $PRIVATE_IP -p tcp --dport http -m state --state NEW -j NFLOG --nflog-prefix "RULE F_http -- ACCEPT "
  | 
        
        
           | 1544 | 
           richard | 
           211 | 
              | 
        
        
            | 
            | 
           212 | 
           # Redirection HTTP des usagers 'havp_bl' cherchant à joindre les IP de la blacklist vers ALCASAR (page 'accès interdit')
  | 
        
        
            | 
            | 
           213 | 
           # Redirect HTTP of 'havp_bl' users who want blacklist IP to ALCASAR ('access denied' page)
  | 
        
        
           | 1872 | 
           richard | 
           214 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_bl src -m set --match-set bl_ip_blocked dst -p tcp --dport http -j REDIRECT --to-port 80
  | 
        
        
           | 1364 | 
           richard | 
           215 | 
              | 
        
        
           | 1544 | 
           richard | 
           216 | 
           # Redirection HTTP des usagers 'havp_wl' cherchant à joindre les IP qui ne sont pas dans la WL vers ALCASAR (page 'accès interdit')
  | 
        
        
            | 
            | 
           217 | 
           # Redirect HTTP of 'havp_wl' users who want IP not in the WL to ALCASAR ('access denied' page)
  | 
        
        
           | 1872 | 
           richard | 
           218 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_wl src -m set ! --match-set wl_ip_allowed dst -p tcp --dport http -j REDIRECT --to-port 80
  | 
        
        
           | 1393 | 
           richard | 
           219 | 
              | 
        
        
           | 1544 | 
           richard | 
           220 | 
           # Redirection des requêtes HTTP sortantes des usagers 'havp_bl' vers DansGuardian
  | 
        
        
           | 1484 | 
           richard | 
           221 | 
           # Redirect outbound HTTP requests of "BL" users to DansGuardian (transparent proxy)
  | 
        
        
           | 1872 | 
           richard | 
           222 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_bl src ! -d $PRIVATE_IP -p tcp --dport http -j REDIRECT --to-port 8080
  | 
        
        
           | 1484 | 
           richard | 
           223 | 
              | 
        
        
           | 1544 | 
           richard | 
           224 | 
           # Redirection des requêtes HTTP sortantes des usager 'havp_wl' et 'havp' vers Tinyproxy
  | 
        
        
           | 1486 | 
           richard | 
           225 | 
           # Redirect outbound HTTP requests for "WL-antivirus" users to Tinyproxy
  | 
        
        
           | 1872 | 
           richard | 
           226 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_wl src ! -d $PRIVATE_IP -p tcp --dport http -j REDIRECT --to-port 8090
  | 
        
        
            | 
            | 
           227 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp src ! -d $PRIVATE_IP -p tcp --dport http -j REDIRECT --to-port 8090
  | 
        
        
           | 1364 | 
           richard | 
           228 | 
              | 
        
        
           | 783 | 
           richard | 
           229 | 
           # Redirection des requêtes NTP vers le serveur NTP local
  | 
        
        
            | 
            | 
           230 | 
           # Redirect NTP request in local NTP server
  | 
        
        
            | 
            | 
           231 | 
           $IPTABLES -A PREROUTING -t nat -i $TUNIF -s $PRIVATE_NETWORK_MASK ! -d $PRIVATE_IP -p udp --dport ntp -j REDIRECT --to-port 123
  | 
        
        
            | 
            | 
           232 | 
              | 
        
        
           | 472 | 
           richard | 
           233 | 
           #############################
  | 
        
        
           | 783 | 
           richard | 
           234 | 
           #         INPUT             #
  | 
        
        
           | 472 | 
           richard | 
           235 | 
           #############################
  | 
        
        
           | 871 | 
           richard | 
           236 | 
              | 
        
        
           | 783 | 
           richard | 
           237 | 
           # Tout passe sur loopback
  | 
        
        
            | 
            | 
           238 | 
           # accept all on loopback
  | 
        
        
            | 
            | 
           239 | 
           $IPTABLES -A INPUT -i lo -j ACCEPT
  | 
        
        
           | 990 | 
           franck | 
           240 | 
           $IPTABLES -A OUTPUT -o lo -j ACCEPT
  | 
        
        
           | 783 | 
           richard | 
           241 | 
              | 
        
        
            | 
            | 
           242 | 
           # Rejet des demandes de connexions non conformes (FIN-URG-PUSH, XMAS, NullScan, SYN-RST et NEW not SYN)
  | 
        
        
            | 
            | 
           243 | 
           # Drop non standard connexions (FIN-URG-PUSH, XMAS, NullScan, SYN-RST et NEW not SYN)
  | 
        
        
           | 472 | 
           richard | 
           244 | 
           $IPTABLES -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
  | 
        
        
            | 
            | 
           245 | 
           $IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
  | 
        
        
            | 
            | 
           246 | 
           $IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
  | 
        
        
            | 
            | 
           247 | 
           $IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
  | 
        
        
           | 675 | 
           richard | 
           248 | 
           $IPTABLES -A INPUT -p tcp -m tcp ! --syn -m state --state NEW -j DROP
  | 
        
        
           | 498 | 
           richard | 
           249 | 
              | 
        
        
           | 1587 | 
           richard | 
           250 | 
           # Si configéré, on autorise les réponses DHCP 
  | 
        
        
            | 
            | 
           251 | 
           # Allow DHCP answers if configured
  | 
        
        
            | 
            | 
           252 | 
           public_ip_mask=`grep ^PUBLIC_IP= $CONF_FILE|cut -d"=" -f2`		# ALCASAR WAN IP address
  | 
        
        
            | 
            | 
           253 | 
           if [[ "$public_ip_mask" == "dhcp" ]]
  | 
        
        
            | 
            | 
           254 | 
           then
  | 
        
        
            | 
            | 
           255 | 
           	$IPTABLES -A OUTPUT -o $EXTIF -p tcp --dport 68 -j ACCEPT
  | 
        
        
            | 
            | 
           256 | 
           	$IPTABLES -A OUTPUT -o $EXTIF -p udp --dport 68 -j ACCEPT
  | 
        
        
            | 
            | 
           257 | 
           fi
  | 
        
        
           | 871 | 
           richard | 
           258 | 
           # On rejette les trame en broadcast et en multicast sur EXTIF (évite leur journalisation)
  | 
        
        
            | 
            | 
           259 | 
           # Drop broadcast & multicast on EXTIF to avoid log 
  | 
        
        
           | 1629 | 
           richard | 
           260 | 
           $IPTABLES -A INPUT -m addrtype --dst-type BROADCAST,MULTICAST -j DROP
  | 
        
        
           | 498 | 
           richard | 
           261 | 
              | 
        
        
           | 783 | 
           richard | 
           262 | 
           # On autorise les retours de connexions légitimes par INPUT
  | 
        
        
            | 
            | 
           263 | 
           # Conntrack on INPUT
  | 
        
        
            | 
            | 
           264 | 
           $IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  | 
        
        
           | 373 | 
           richard | 
           265 | 
              | 
        
        
           | 1221 | 
           richard | 
           266 | 
           # On interdit les connexions directes au port utilisé par DansGuardian (8080). Les packets concernés ont été marqués et loggués dans la table mangle (PREROUTING)
  | 
        
        
           | 1486 | 
           richard | 
           267 | 
           # Deny direct connections on DansGuardian port (8080). The concerned paquets have been marked and logged in mangle table (PREROUTING)
  | 
        
        
           | 783 | 
           richard | 
           268 | 
           $IPTABLES -A INPUT -i $TUNIF -p tcp --dport 8080 -m mark --mark 1 -j REJECT --reject-with tcp-reset
  | 
        
        
           | 791 | 
           richard | 
           269 | 
              | 
        
        
           | 783 | 
           richard | 
           270 | 
           # Autorisation des connexions légitimes à DansGuardian 
  | 
        
        
            | 
            | 
           271 | 
           # Allow connections for DansGuardian
  | 
        
        
            | 
            | 
           272 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -p tcp --dport 8080 -m state --state NEW --syn -j ACCEPT
  | 
        
        
           | 373 | 
           richard | 
           273 | 
              | 
        
        
           | 1486 | 
           richard | 
           274 | 
           # On interdit les connexions directes au port utilisé par tinyproxy (8090). Les packets concernés ont été marqués et loggués dans la table mangle (PREROUTING)
  | 
        
        
            | 
            | 
           275 | 
           # Deny direct connections on tinyproxy port (8090). The concerned paquets have been marked in mangle table (PREROUTING)
  | 
        
        
            | 
            | 
           276 | 
           $IPTABLES -A INPUT -i $TUNIF -p tcp --dport 8090 -m mark --mark 2 -j REJECT --reject-with tcp-reset
  | 
        
        
            | 
            | 
           277 | 
              | 
        
        
            | 
            | 
           278 | 
           # Autorisation des connexions légitimes vers tinyproxy 
  | 
        
        
            | 
            | 
           279 | 
           # Allow connections to tinyproxy
  | 
        
        
            | 
            | 
           280 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -p tcp --dport 8090 -m state --state NEW --syn -j ACCEPT
  | 
        
        
            | 
            | 
           281 | 
              | 
        
        
           | 1962 | 
           richard | 
           282 | 
           # On interdit les connexions directes au port 54 (DNS-blacklist). Les packets concernés ont été marqués dans la table mangle (PREROUTING)
  | 
        
        
            | 
            | 
           283 | 
           # Deny direct connections on port 54 (DNS-blacklist). The concerned paquets are marked in mangle table (PREROUTING)
  | 
        
        
            | 
            | 
           284 | 
           $IPTABLES -A INPUT -i $TUNIF -p udp --dport 54 -m mark --mark 3 -j REJECT --reject-with icmp-port-unreachable
  | 
        
        
            | 
            | 
           285 | 
           $IPTABLES -A INPUT -i $TUNIF -p tcp --dport 54 -m mark --mark 3 -j REJECT --reject-with tcp-reset
  | 
        
        
           | 791 | 
           richard | 
           286 | 
              | 
        
        
           | 1962 | 
           richard | 
           287 | 
           # On interdit les connexions directes au port 55 (DNS-whitelist). Les packets concernés ont été marqués dans la table mangle (PREROUTING)
  | 
        
        
            | 
            | 
           288 | 
           # Deny direct connections on port 55 (DNS-whitelist). The concerned paquets are marked in mangle table (PREROUTING)
  | 
        
        
            | 
            | 
           289 | 
           $IPTABLES -A INPUT -i $TUNIF -p udp --dport 55 -m mark --mark 4 -j REJECT --reject-with icmp-port-unreachable
  | 
        
        
            | 
            | 
           290 | 
           $IPTABLES -A INPUT -i $TUNIF -p tcp --dport 55 -m mark --mark 3 -j REJECT --reject-with tcp-reset
  | 
        
        
           | 1364 | 
           richard | 
           291 | 
              | 
        
        
           | 1962 | 
           richard | 
           292 | 
           # On interdit les connexions directes au port 56 (DNS-Blackhole). Les packets concernés ont été marqués dans la table mangle (PREROUTING)
  | 
        
        
            | 
            | 
           293 | 
           # Deny direct connections on port 56 (DNS-blackhole). The concerned paquets are marked in mangle table (PREROUTING)
  | 
        
        
            | 
            | 
           294 | 
           $IPTABLES -A INPUT -i $TUNIF -p udp --dport 56 -m mark --mark 5 -j REJECT --reject-with icmp-port-unreachable
  | 
        
        
            | 
            | 
           295 | 
           $IPTABLES -A INPUT -i $TUNIF -p tcp --dport 56 -m mark --mark 3 -j REJECT --reject-with tcp-reset
  | 
        
        
           | 1472 | 
           richard | 
           296 | 
              | 
        
        
           | 1364 | 
           richard | 
           297 | 
           # autorisation des connexion légitime à DNSMASQ (avec blacklist)
  | 
        
        
            | 
            | 
           298 | 
           # Allow connections for DNSMASQ (with blacklist)
  | 
        
        
           | 783 | 
           richard | 
           299 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p udp --dport 54 -j ACCEPT
  | 
        
        
           | 1962 | 
           richard | 
           300 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p tcp --dport 54 -j ACCEPT
  | 
        
        
           | 783 | 
           richard | 
           301 | 
              | 
        
        
           | 1364 | 
           richard | 
           302 | 
           # autorisation des connexion légitime à DNSMASQ (avec whitelist)
  | 
        
        
            | 
            | 
           303 | 
           # Allow connections for DNSMASQ (with whitelist)
  | 
        
        
            | 
            | 
           304 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p udp --dport 55 -j ACCEPT
  | 
        
        
           | 1962 | 
           richard | 
           305 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p tcp --dport 55 -j ACCEPT
  | 
        
        
           | 1364 | 
           richard | 
           306 | 
              | 
        
        
           | 1472 | 
           richard | 
           307 | 
           # autorisation des connexion légitime à DNSMASQ (mode blackhole)
  | 
        
        
            | 
            | 
           308 | 
           # Allow connections for DNSMASQ (blackhole mode)
  | 
        
        
            | 
            | 
           309 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p udp --dport 56 -j ACCEPT
  | 
        
        
           | 1962 | 
           richard | 
           310 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p tcp --dport 56 -j ACCEPT
  | 
        
        
           | 1472 | 
           richard | 
           311 | 
              | 
        
        
           | 783 | 
           richard | 
           312 | 
           # Accès direct aux services internes
  | 
        
        
            | 
            | 
           313 | 
           # Internal services access
  | 
        
        
           | 1962 | 
           richard | 
           314 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p udp --dport domain -j ACCEPT	# DNS 
  | 
        
        
            | 
            | 
           315 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p tcp --dport domain -j ACCEPT	# DNS
  | 
        
        
           | 786 | 
           richard | 
           316 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p icmp --icmp-type 8 -j ACCEPT	# Réponse ping # ping responce
  | 
        
        
            | 
            | 
           317 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p icmp --icmp-type 0 -j ACCEPT	# Requête  ping # ping request
  | 
        
        
            | 
            | 
           318 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p tcp --dport https -j ACCEPT	# Pages d'authentification et MCC # authentication pages and MCC
  | 
        
        
            | 
            | 
           319 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p tcp --dport http -j ACCEPT	# Page d'avertissement filtrage # Filtering warning pages
  | 
        
        
            | 
            | 
           320 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p tcp --dport 3990 -j ACCEPT	# Requêtes de deconnexion usagers # Users logout requests
  | 
        
        
            | 
            | 
           321 | 
           $IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p udp --dport ntp -j ACCEPT	# Serveur local de temps # local time server
  | 
        
        
           | 783 | 
           richard | 
           322 | 
              | 
        
        
            | 
            | 
           323 | 
           # SSHD rules if activate 
  | 
        
        
            | 
            | 
           324 | 
           if [ $SSH = on ]
  | 
        
        
           | 520 | 
           richard | 
           325 | 
           	then
  | 
        
        
           | 1731 | 
           richard | 
           326 | 
           	$IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p tcp --dport ssh -m state --state NEW -j NFLOG --nflog-group 2 --nflog-prefix "RULE ssh-from-LAN -- ACCEPT"
  | 
        
        
           | 783 | 
           richard | 
           327 | 
           	$IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -d $PRIVATE_IP -p tcp --dport ssh -j ACCEPT
  | 
        
        
           | 1731 | 
           richard | 
           328 | 
           	$IPTABLES -A INPUT -i $EXTIF -s $SSH_ADMIN_FROM -d $PUBLIC_IP -p tcp --dport ssh -m state --state NEW --syn -j NFLOG --nflog-group 2 --nflog-prefix "RULE ssh-from-WAN -- ACCEPT"
  | 
        
        
           | 1161 | 
           richard | 
           329 | 
           	$IPTABLES -A INPUT -i $EXTIF -s $SSH_ADMIN_FROM -d $PUBLIC_IP -p tcp --dport ssh -m state --state NEW -j ACCEPT
  | 
        
        
           | 520 | 
           richard | 
           330 | 
           fi
  | 
        
        
           | 783 | 
           richard | 
           331 | 
              | 
        
        
            | 
            | 
           332 | 
           # Insertion de règles locales
  | 
        
        
            | 
            | 
           333 | 
           # Here, we add local rules (i.e. VPN from Internet)
  | 
        
        
            | 
            | 
           334 | 
           if [ -f /usr/local/etc/alcasar-iptables-local.sh ]; then
  | 
        
        
            | 
            | 
           335 | 
                   . /usr/local/etc/alcasar-iptables-local.sh
  | 
        
        
            | 
            | 
           336 | 
           fi
  | 
        
        
            | 
            | 
           337 | 
              | 
        
        
            | 
            | 
           338 | 
           # Journalisation et rejet des connexions (autres que celles autorisées) effectuées depuis le LAN
  | 
        
        
            | 
            | 
           339 | 
           # Deny and log on INPUT from the LAN
  | 
        
        
           | 1704 | 
           richard | 
           340 | 
           $IPTABLES -A INPUT -i $TUNIF -m state --state NEW -j NFLOG --nflog-prefix "RULE rej-int -- REJECT "
  | 
        
        
           | 783 | 
           richard | 
           341 | 
           $IPTABLES -A INPUT -i $TUNIF -p tcp -j REJECT --reject-with tcp-reset
  | 
        
        
            | 
            | 
           342 | 
           $IPTABLES -A INPUT -i $TUNIF -p udp -j REJECT --reject-with icmp-port-unreachable
  | 
        
        
            | 
            | 
           343 | 
              | 
        
        
           | 1393 | 
           richard | 
           344 | 
           # Interdiction d'accès à INTIF (n'est utile que lorsque chilli est arrêté).
  | 
        
        
           | 783 | 
           richard | 
           345 | 
           # Reject INTIF access (only when chilli is down)
  | 
        
        
           | 1704 | 
           richard | 
           346 | 
           $IPTABLES -A INPUT -i $INTIF -j NFLOG --nflog-prefix "RULE Protect1 -- REJECT "
  | 
        
        
           | 783 | 
           richard | 
           347 | 
           $IPTABLES -A INPUT -i $INTIF -j REJECT
  | 
        
        
            | 
            | 
           348 | 
              | 
        
        
            | 
            | 
           349 | 
           # Journalisation et rejet des connexions initiées depuis le réseau extérieur (test des effets du paramètre --limit en cours)
  | 
        
        
            | 
            | 
           350 | 
           # On EXTIF, the access attempts are log in channel 2 (we should test --limit option to avoid deny of service)
  | 
        
        
           | 1731 | 
           richard | 
           351 | 
           $IPTABLES -A INPUT -i $EXTIF -m state --state NEW -j NFLOG --nflog-group 3 --nflog-threshold 10 --nflog-prefix "RULE rej-ext -- DROP"
  | 
        
        
           | 783 | 
           richard | 
           352 | 
              | 
        
        
            | 
            | 
           353 | 
           #############################
  | 
        
        
            | 
            | 
           354 | 
           #        FORWARD            #
  | 
        
        
            | 
            | 
           355 | 
           #############################
  | 
        
        
            | 
            | 
           356 | 
              | 
        
        
           | 1872 | 
           richard | 
           357 | 
           # Blocage des IPs du SET bl_ip_blocked pour le SET havp_bl
  | 
        
        
            | 
            | 
           358 | 
           # Deny IPs of the SET bl_ip_blocked for the set havp_bl
  | 
        
        
           | 2187 | 
           richard | 
           359 | 
           $IPTABLES -A FORWARD -i $TUNIF -m set --match-set havp_bl src -m set --match-set bl_ip_blocked dst -p icmp -j REJECT --reject-with icmp-host-prohibited
  | 
        
        
            | 
            | 
           360 | 
           $IPTABLES -A FORWARD -i $TUNIF -m set --match-set havp_bl src -m set --match-set bl_ip_blocked dst -p udp -j REJECT --reject-with icmp-host-prohibited
  | 
        
        
           | 1872 | 
           richard | 
           361 | 
           $IPTABLES -A FORWARD -i $TUNIF -m set --match-set havp_bl src -m set --match-set bl_ip_blocked dst -p tcp -j REJECT --reject-with tcp-reset
  | 
        
        
           | 1364 | 
           richard | 
           362 | 
              | 
        
        
           | 783 | 
           richard | 
           363 | 
           # Rejet des requêtes DNS vers Internet
  | 
        
        
            | 
            | 
           364 | 
           # Deny forward DNS
  | 
        
        
            | 
            | 
           365 | 
           $IPTABLES -A FORWARD -i $TUNIF -p udp --dport domain -j REJECT --reject-with icmp-port-unreachable
  | 
        
        
            | 
            | 
           366 | 
           $IPTABLES -A FORWARD -i $TUNIF -p tcp --dport domain -j REJECT --reject-with tcp-reset
  | 
        
        
            | 
            | 
           367 | 
              | 
        
        
           | 2184 | 
           richard | 
           368 | 
           # Active le suivi de session
  | 
        
        
            | 
            | 
           369 | 
           # Allow Conntrack
  | 
        
        
           | 815 | 
           richard | 
           370 | 
           $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  | 
        
        
           | 790 | 
           richard | 
           371 | 
              | 
        
        
           | 2006 | 
           raphael.pi | 
           372 | 
           # Compute uamallowed IP (IP address of equipments connected between ALCASAR and Internet (DMZ, own servers, ...) 
  | 
        
        
            | 
            | 
           373 | 
           nb_uamallowed=`wc -l /usr/local/etc/alcasar-uamallowed | cut -d" "  -f1`
  | 
        
        
            | 
            | 
           374 | 
           if [ $nb_uamallowed != "0" ]
  | 
        
        
            | 
            | 
           375 | 
           then
  | 
        
        
            | 
            | 
           376 | 
           	while read ip_allowed_line 
  | 
        
        
           | 1488 | 
           richard | 
           377 | 
           	do
  | 
        
        
           | 2006 | 
           raphael.pi | 
           378 | 
           		ip_allowed=`echo $ip_allowed_line|cut -d"\"" -f2`
  | 
        
        
            | 
            | 
           379 | 
           		$IPTABLES -A FORWARD -i $TUNIF -d $ip_allowed -m state --state NEW -j NETFLOW
  | 
        
        
            | 
            | 
           380 | 
           		$IPTABLES -A FORWARD -i $TUNIF -d $ip_allowed -m state --state NEW -j ACCEPT
  | 
        
        
            | 
            | 
           381 | 
           	done < /usr/local/etc/alcasar-uamallowed
  | 
        
        
            | 
            | 
           382 | 
           fi
  | 
        
        
           | 492 | 
           franck | 
           383 | 
              | 
        
        
           | 2184 | 
           richard | 
           384 | 
           # filtrage protocole par utilisateur (profile 1 : http, https)
  | 
        
        
            | 
            | 
           385 | 
           # protocols filtering for users (profil 1 : http, https)
  | 
        
        
            | 
            | 
           386 | 
           	$IPTABLES -A FORWARD -i $TUNIF -m set --match-set proto_1 src -s $PRIVATE_NETWORK_MASK -p tcp -m multiport ! --dports http,https -m state --state NEW -j REJECT --reject-with tcp-reset
  | 
        
        
            | 
            | 
           387 | 
           	$IPTABLES -A FORWARD -i $TUNIF -m set --match-set proto_1 src -s $PRIVATE_NETWORK_MASK -p udp -m multiport ! --dports http,https -m state --state NEW -j REJECT --reject-with icmp-port-unreachable
  | 
        
        
           | 2006 | 
           raphael.pi | 
           388 | 
              | 
        
        
           | 2184 | 
           richard | 
           389 | 
           # filtrage protocole par utilisateur (profile 2 : http https pop3 pop3s imap imaps ftp sftp ssh)
  | 
        
        
            | 
            | 
           390 | 
           # protocols filtering for users (profil 2 : http https pop3 pop3s imap imaps ftp sftp ssh)
  | 
        
        
           | 2006 | 
           raphael.pi | 
           391 | 
              | 
        
        
           | 2184 | 
           richard | 
           392 | 
           	$IPTABLES -A FORWARD -i $TUNIF -m set --match-set proto_2 src -s $PRIVATE_NETWORK_MASK -p tcp -m multiport ! --dports http,https,pop3,pop3s,imap,imaps,ftp,ftp-data,sftp,ssh -m state --state NEW -j REJECT --reject-with tcp-reset
  | 
        
        
            | 
            | 
           393 | 
           	$IPTABLES -A FORWARD -i $TUNIF -m set --match-set proto_2 src -s $PRIVATE_NETWORK_MASK -p udp -m multiport ! --dports http,https,pop3,pop3s,imap,imaps,ssh -m state --state NEW -j REJECT --reject-with icmp-port-unreachable
  | 
        
        
           | 2006 | 
           raphael.pi | 
           394 | 
              | 
        
        
           | 2184 | 
           richard | 
           395 | 
           # filtrage protocole par utilisateur (profile 3 : personnalisable via l'ACC)
  | 
        
        
            | 
            | 
           396 | 
           # protocols filtering for users (profil 3 : customized with ACC)
  | 
        
        
           | 2006 | 
           raphael.pi | 
           397 | 
           #profile 3 personalisables via l'ACC
  | 
        
        
           | 2184 | 
           richard | 
           398 | 
           custom_tcp_protocols_list='';custom_udp_protocols_list=''
  | 
        
        
           | 2006 | 
           raphael.pi | 
           399 | 
           while read svc_line
  | 
        
        
            | 
            | 
           400 | 
           do
  | 
        
        
            | 
            | 
           401 | 
           	svc_on=`echo $svc_line|cut -b1`
  | 
        
        
            | 
            | 
           402 | 
           	if [ $svc_on != "#" ]
  | 
        
        
            | 
            | 
           403 | 
           	then	
  | 
        
        
            | 
            | 
           404 | 
           		svc_name=`echo $svc_line|cut -d" " -f1`
  | 
        
        
            | 
            | 
           405 | 
           		svc_port=`echo $svc_line|cut -d" " -f2`
  | 
        
        
            | 
            | 
           406 | 
           		if [ $svc_name = "icmp" ]
  | 
        
        
            | 
            | 
           407 | 
           		then
  | 
        
        
           | 2184 | 
           richard | 
           408 | 
           			svc_icmp="on"
  | 
        
        
           | 2006 | 
           raphael.pi | 
           409 | 
           		else
  | 
        
        
           | 2184 | 
           richard | 
           410 | 
           			if [ "$custom_tcp_protocols_list" == "" ]
  | 
        
        
            | 
            | 
           411 | 
           			then
  | 
        
        
            | 
            | 
           412 | 
           				custom_tcp_protocols_list=$svc_port
  | 
        
        
            | 
            | 
           413 | 
           			else
  | 
        
        
            | 
            | 
           414 | 
           				custom_tcp_protocols_list=`echo $custom_tcp_protocols_list","$svc_port`
  | 
        
        
            | 
            | 
           415 | 
           			fi
  | 
        
        
            | 
            | 
           416 | 
           			udp_svc=`egrep "[[:space:]]$svc_port/udp" /etc/services|wc -l`
  | 
        
        
            | 
            | 
           417 | 
           			if [ $udp_svc = "1" ] # udp service exist
  | 
        
        
            | 
            | 
           418 | 
           			then
  | 
        
        
            | 
            | 
           419 | 
           				if [ "$custom_udp_protocols_list" == "" ]
  | 
        
        
            | 
            | 
           420 | 
           				then
  | 
        
        
            | 
            | 
           421 | 
           					custom_udp_protocols_list=$svc_port
  | 
        
        
            | 
            | 
           422 | 
           				else
  | 
        
        
            | 
            | 
           423 | 
           					custom_udp_protocols_list=`echo $custom_udp_protocols_list","$svc_port`
  | 
        
        
            | 
            | 
           424 | 
           				fi
  | 
        
        
            | 
            | 
           425 | 
           			fi
  | 
        
        
           | 1488 | 
           richard | 
           426 | 
           		fi
  | 
        
        
           | 2006 | 
           raphael.pi | 
           427 | 
           	fi
  | 
        
        
            | 
            | 
           428 | 
           done < /usr/local/etc/alcasar-services
  | 
        
        
           | 2184 | 
           richard | 
           429 | 
           	if [ "$custom_tcp_protocols_list" == "" ]
  | 
        
        
            | 
            | 
           430 | 
           	then
  | 
        
        
            | 
            | 
           431 | 
           		$IPTABLES -A FORWARD -i $TUNIF -m set --match-set proto_3 src -s $PRIVATE_NETWORK_MASK -j REJECT
  | 
        
        
            | 
            | 
           432 | 
           	else
  | 
        
        
            | 
            | 
           433 | 
           		if [ "$svc_icmp" != "on" ]
  | 
        
        
            | 
            | 
           434 | 
           		then
  | 
        
        
            | 
            | 
           435 | 
           			$IPTABLES -A FORWARD -i $TUNIF -m set --match-set proto_3 src -s $PRIVATE_NETWORK_MASK -p icmp -j REJECT --reject-with icmp-proto-unreachable
  | 
        
        
            | 
            | 
           436 | 
           		fi
  | 
        
        
            | 
            | 
           437 | 
           		$IPTABLES -A FORWARD -i $TUNIF -m set --match-set proto_3 src -s $PRIVATE_NETWORK_MASK -p tcp -m multiport ! --dports $custom_tcp_protocols_list -m state --state NEW -j REJECT --reject-with tcp-reset
  | 
        
        
            | 
            | 
           438 | 
           		$IPTABLES -A FORWARD -i $TUNIF -m set --match-set proto_3 src -s $PRIVATE_NETWORK_MASK -p udp -m multiport ! --dports $custom_udp_protocols_list -m state --state NEW -j REJECT --reject-with icmp-port-unreachable
  | 
        
        
            | 
            | 
           439 | 
           	fi
  | 
        
        
           | 1488 | 
           richard | 
           440 | 
              | 
        
        
           | 2184 | 
           richard | 
           441 | 
           # journalisation et autorisation des connections sortant du LAN  
  | 
        
        
           | 476 | 
           richard | 
           442 | 
           # Allow forward connections with log
  | 
        
        
           | 1159 | 
           crox53 | 
           443 | 
           $IPTABLES -A FORWARD -i $TUNIF -s $PRIVATE_NETWORK_MASK -m state --state NEW -j NETFLOW
  | 
        
        
           | 859 | 
           richard | 
           444 | 
           $IPTABLES -A FORWARD -i $TUNIF -s $PRIVATE_NETWORK_MASK -m state --state NEW -j ACCEPT
  | 
        
        
           | 1 | 
           root | 
           445 | 
              | 
        
        
           | 783 | 
           richard | 
           446 | 
           #############################
  | 
        
        
            | 
            | 
           447 | 
           #         OUTPUT            #
  | 
        
        
            | 
            | 
           448 | 
           #############################
  | 
        
        
           | 1159 | 
           crox53 | 
           449 | 
           # On laisse tout sortir sur toutes les cartes sauf celle qui est connectée sur l'extérieur
  | 
        
        
            | 
            | 
           450 | 
           # Everything is allowed but traffic through outside network interface
  | 
        
        
           | 2184 | 
           richard | 
           451 | 
           #$IPTABLES -A OUTPUT ! -o $EXTIF -j ACCEPT
  | 
        
        
            | 
            | 
           452 | 
           $IPTABLES -A OUTPUT -j ACCEPT
  | 
        
        
           | 520 | 
           richard | 
           453 | 
              | 
        
        
           | 1587 | 
           richard | 
           454 | 
           # Si configéré, on autorise les requêtes DHCP 
  | 
        
        
            | 
            | 
           455 | 
           # Allow DHCP requests if configured
  | 
        
        
            | 
            | 
           456 | 
           public_ip_mask=`grep ^PUBLIC_IP= $CONF_FILE|cut -d"=" -f2`		# ALCASAR WAN IP address
  | 
        
        
            | 
            | 
           457 | 
           if [[ "$public_ip_mask" == "dhcp" ]]
  | 
        
        
            | 
            | 
           458 | 
           then
  | 
        
        
            | 
            | 
           459 | 
           	$IPTABLES -A OUTPUT -o $EXTIF -p tcp --dport 67 -j ACCEPT
  | 
        
        
            | 
            | 
           460 | 
           	$IPTABLES -A OUTPUT -o $EXTIF -p udp --dport 67 -j ACCEPT
  | 
        
        
            | 
            | 
           461 | 
           fi
  | 
        
        
            | 
            | 
           462 | 
              | 
        
        
           | 503 | 
           richard | 
           463 | 
           # On autorise les requêtes DNS vers les serveurs DNS identifiés 
  | 
        
        
           | 498 | 
           richard | 
           464 | 
           # Allow DNS requests to identified DNS servers
  | 
        
        
            | 
            | 
           465 | 
           $IPTABLES -A OUTPUT -o $EXTIF -d $DNSSERVERS -p udp --dport domain -m state --state NEW -j ACCEPT
  | 
        
        
           | 783 | 
           richard | 
           466 | 
              | 
        
        
           | 615 | 
           richard | 
           467 | 
           # On autorise les requêtes HTTP sortantes
  | 
        
        
           | 498 | 
           richard | 
           468 | 
           # HTTP requests are allowed
  | 
        
        
           | 1159 | 
           crox53 | 
           469 | 
           $IPTABLES -A OUTPUT -o $EXTIF -p tcp --dport http -j NETFLOW
  | 
        
        
           | 498 | 
           richard | 
           470 | 
           $IPTABLES -A OUTPUT -o $EXTIF -p tcp --dport http -j ACCEPT
  | 
        
        
           | 783 | 
           richard | 
           471 | 
              | 
        
        
           | 1862 | 
           raphael.pi | 
           472 | 
           # On autorise les requêtes RSYNC sortantes (maj BL de Toulouse)
  | 
        
        
            | 
            | 
           473 | 
           # RSYNC requests are allowed (to update BL of Toulouse)
  | 
        
        
            | 
            | 
           474 | 
           $IPTABLES -A OUTPUT -o $EXTIF -p tcp --dport rsync -j ACCEPT
  | 
        
        
            | 
            | 
           475 | 
              | 
        
        
           | 784 | 
           richard | 
           476 | 
           # On autorise les requêtes FTP 
  | 
        
        
            | 
            | 
           477 | 
           # FTP requests are allowed
  | 
        
        
           | 1705 | 
           richard | 
           478 | 
           modprobe nf_conntrack_ftp
  | 
        
        
           | 784 | 
           richard | 
           479 | 
           $IPTABLES -A OUTPUT -o $EXTIF -p tcp --dport ftp -j ACCEPT
  | 
        
        
           | 1159 | 
           crox53 | 
           480 | 
           $IPTABLES -A OUTPUT -o $EXTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
  | 
        
        
           | 784 | 
           richard | 
           481 | 
              | 
        
        
           | 615 | 
           richard | 
           482 | 
           # On autorise les requêtes NTP 
  | 
        
        
           | 498 | 
           richard | 
           483 | 
           # NTP requests are allowed
  | 
        
        
            | 
            | 
           484 | 
           $IPTABLES -A OUTPUT -o $EXTIF -p udp --dport ntp -j ACCEPT
  | 
        
        
           | 783 | 
           richard | 
           485 | 
              | 
        
        
           | 503 | 
           richard | 
           486 | 
           # On autorise les requêtes ICMP (ping) 
  | 
        
        
            | 
            | 
           487 | 
           # ICMP (ping) requests are allowed
  | 
        
        
            | 
            | 
           488 | 
           $IPTABLES -A OUTPUT -o $EXTIF -p icmp --icmp-type 8 -j ACCEPT
  | 
        
        
           | 783 | 
           richard | 
           489 | 
              | 
        
        
           | 615 | 
           richard | 
           490 | 
           # On autorise les requêtes LDAP si un serveur externe est configué
  | 
        
        
            | 
            | 
           491 | 
           # LDAP requests are allowed if an external server is declared
  | 
        
        
            | 
            | 
           492 | 
           if [ $LDAP = on ]
  | 
        
        
            | 
            | 
           493 | 
           	then
  | 
        
        
           | 694 | 
           franck | 
           494 | 
           	$IPTABLES -A OUTPUT -p tcp -d $LDAP_IP -m multiport --dports ldap,ldaps -m state --state NEW,ESTABLISHED -j ACCEPT
  | 
        
        
            | 
            | 
           495 | 
           	$IPTABLES -A OUTPUT -p udp -d $LDAP_IP -m multiport --dports ldap,ldaps -m state --state NEW,ESTABLISHED -j ACCEPT
  | 
        
        
           | 615 | 
           richard | 
           496 | 
           fi
  | 
        
        
           | 783 | 
           richard | 
           497 | 
              | 
        
        
            | 
            | 
           498 | 
           #############################
  | 
        
        
            | 
            | 
           499 | 
           #       POSTROUTING         #
  | 
        
        
            | 
            | 
           500 | 
           #############################
  | 
        
        
           | 498 | 
           richard | 
           501 | 
           # Traduction dynamique d'adresse en sortie
  | 
        
        
           | 476 | 
           richard | 
           502 | 
           # Dynamic NAT on EXTIF
  | 
        
        
           | 1 | 
           root | 
           503 | 
           $IPTABLES -A POSTROUTING -t nat -o $EXTIF -j MASQUERADE
  | 
        
        
            | 
            | 
           504 | 
              | 
        
        
           | 476 | 
           richard | 
           505 | 
           # End of script
  | 
        
        
           | 1 | 
           root | 
           506 | 
              |