Line 1... |
Line 1... |
1 |
#!/bin/bash
|
1 |
#!/bin/bash
|
2 |
# $Id: alcasar-iptables.sh 1472 2014-11-03 17:56:00Z richard $
|
2 |
# $Id: alcasar-iptables.sh 1484 2014-11-11 23:14:36Z richard $
|
3 |
# Script de mise en place des regles du parefeu d'Alcasar (mode normal)
|
3 |
# Script de mise en place des regles du parefeu d'Alcasar (mode normal)
|
4 |
# This script writes the netfilter rules for ALCASAR
|
4 |
# This script writes the netfilter rules for ALCASAR
|
5 |
# Rexy - 3abtux - CPN
|
5 |
# Rexy - 3abtux - CPN
|
6 |
#
|
6 |
#
|
7 |
# Reminders
|
7 |
# Reminders
|
Line 85... |
Line 85... |
85 |
$IPTABLES -P OUTPUT DROP
|
85 |
$IPTABLES -P OUTPUT DROP
|
86 |
$IPTABLES -t nat -P PREROUTING ACCEPT
|
86 |
$IPTABLES -t nat -P PREROUTING ACCEPT
|
87 |
$IPTABLES -t nat -P POSTROUTING ACCEPT
|
87 |
$IPTABLES -t nat -P POSTROUTING ACCEPT
|
88 |
$IPTABLES -t nat -P OUTPUT ACCEPT
|
88 |
$IPTABLES -t nat -P OUTPUT ACCEPT
|
89 |
|
89 |
|
- |
|
90 |
|
- |
|
91 |
#############################
|
- |
|
92 |
# IPSET #
|
- |
|
93 |
#############################
|
- |
|
94 |
|
90 |
# destruction de tous les SET
|
95 |
# destruction de tous les SET
|
91 |
# destroy all SET
|
96 |
# destroy all SET
|
92 |
ipset destroy
|
97 |
ipset destroy
|
93 |
|
98 |
|
94 |
# Calcul de la taille du set de la blacklist
|
99 |
###### BL set ###########
|
95 |
# Compute the blacklist set length
|
100 |
# Calcul de la taille / Compute the length
|
96 |
bl_set_length=$(($(wc -l $BL_IP_CAT/* | awk '{print $1}' | tail -n 1)+$(wc -l $BL_IP_OSSI | awk '{print $1}')))
|
101 |
bl_set_length=$(($(wc -l $BL_IP_CAT/* | awk '{print $1}' | tail -n 1)+$(wc -l $BL_IP_OSSI | awk '{print $1}')))
|
97 |
|
- |
|
98 |
# Création du fichier set temporaire, remplissage, chargement et suppression
|
- |
|
99 |
# Creating the temporary set file, filling, loading and deleting
|
102 |
# Chargement / loading
|
100 |
echo "create blacklist_ip_blocked hash:net family inet hashsize 1024 maxelem $bl_set_length" > $TMP_set_save
|
103 |
echo "create blacklist_ip_blocked hash:net family inet hashsize 1024 maxelem $bl_set_length" > $TMP_set_save
|
101 |
for category in `ls -1 $BL_IP_CAT | cut -d '@' -f1`
|
104 |
for category in `ls -1 $BL_IP_CAT | cut -d '@' -f1`
|
102 |
do
|
105 |
do
|
103 |
cat $BL_IP_CAT/$category >> $TMP_set_save
|
106 |
cat $BL_IP_CAT/$category >> $TMP_set_save
|
104 |
done
|
107 |
done
|
105 |
cat $BL_IP_OSSI >> $TMP_set_save
|
108 |
cat $BL_IP_OSSI >> $TMP_set_save
|
106 |
ipset -! restore < $TMP_set_save
|
109 |
ipset -! restore < $TMP_set_save
|
107 |
rm -f $TMP_set_save
|
110 |
rm -f $TMP_set_save
|
108 |
|
- |
|
109 |
# Extraction des ip réhabilitées
|
111 |
# Suppression des ip réhabilitées / Removing of rehabilitated ip
|
110 |
# Extracting rehabilitated ip
|
- |
|
111 |
for ip in $(cat $IP_REHABILITEES)
|
112 |
for ip in $(cat $IP_REHABILITEES)
|
112 |
do
|
113 |
do
|
113 |
ipset del blacklist_ip_blocked $ip
|
114 |
ipset del blacklist_ip_blocked $ip
|
114 |
done
|
115 |
done
|
115 |
|
116 |
|
116 |
# Calcul de la taille du set de la whitelist
|
117 |
###### WL set ###########
|
117 |
# Compute the whitelist set length
|
118 |
# Calcul de la taille / Compute the length
|
118 |
wl_set_length=$(($(wc -l $DNSMASQ_WL_ENABLED/* | awk '{print $1}' | tail -n 1)*3))
|
119 |
wl_set_length=$(($(wc -l $DNSMASQ_WL_ENABLED/* | awk '{print $1}' | tail -n 1)*3))
|
119 |
|
- |
|
120 |
# Création du fichier set temporaire, remplissage, chargement et suppression
|
- |
|
121 |
# Creating the temporary set file, filling, loading and deleting
|
120 |
# Chargement Loading
|
122 |
echo "create whitelist_ip_allowed hash:net family inet hashsize 1024 maxelem $wl_set_length" > $TMP_set_save
|
121 |
echo "create whitelist_ip_allowed hash:net family inet hashsize 1024 maxelem $wl_set_length" > $TMP_set_save
|
123 |
cat $WL_IP_OSSI >> $TMP_set_save
|
122 |
cat $WL_IP_OSSI >> $TMP_set_save
|
124 |
ipset -! restore < $TMP_set_save
|
123 |
ipset -! restore < $TMP_set_save
|
125 |
rm -f $TMP_set_save
|
124 |
rm -f $TMP_set_save
|
126 |
|
125 |
|
Line 147... |
Line 146... |
147 |
# Marquage (et journalisation) des paquets qui tentent d'accéder directement à DansGuardian pour pouvoir les rejeter en INPUT
|
146 |
# Marquage (et journalisation) des paquets qui tentent d'accéder directement à DansGuardian pour pouvoir les rejeter en INPUT
|
148 |
# mark (and log) the dansguardian bypass attempts in order to DROP them in INPUT rules
|
147 |
# mark (and log) the dansguardian bypass attempts in order to DROP them in INPUT rules
|
149 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -p tcp -d $PRIVATE_IP -m tcp --dport 8080 -j ULOG --ulog-prefix "RULE direct-proxy -- DENY "
|
148 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -p tcp -d $PRIVATE_IP -m tcp --dport 8080 -j ULOG --ulog-prefix "RULE direct-proxy -- DENY "
|
150 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp -m tcp --dport 8080 -j MARK --set-mark 1
|
149 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp -m tcp --dport 8080 -j MARK --set-mark 1
|
151 |
|
150 |
|
152 |
# Marquage (et journalisation) des paquets qui tentent d'accéder directement au port udp 54 (DNS-blacklist) pour pouvoir les rejeter en INPUT
|
151 |
# Marquage des paquets qui tentent d'accéder directement au port udp 54 (DNS-blacklist) pour pouvoir les rejeter en INPUT
|
153 |
# Mark (and log) the udp 54 direct attempts (DNS-blacklist) to REJECT them in INPUT rules
|
152 |
# Mark the udp 54 direct attempts (DNS-blacklist) to REJECT them in INPUT rules
|
154 |
# $IPTABLES -A PREROUTING -t nat -i $TUNIF -p udp -d $PRIVATE_IP -m udp --dport 54 -j ULOG --ulog-prefix "RULE DNS-proxy -- DENY "
|
- |
|
155 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp --dport 54 -j MARK --set-mark 2
|
153 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp --dport 54 -j MARK --set-mark 2
|
156 |
|
154 |
|
157 |
# Marquage (et journalisation) des paquets qui tentent d'accéder directement au port udp 55 (DNS-Whitelist) pour pouvoir les rejeter en INPUT
|
155 |
# Marquage des paquets qui tentent d'accéder directement au port udp 55 (DNS-Whitelist) pour pouvoir les rejeter en INPUT
|
158 |
# Mark (and log) the udp 55 direct attempts (DNS-whitelist) to REJECT them in INPUT rules
|
156 |
# Mark the udp 55 direct attempts (DNS-whitelist) to REJECT them in INPUT rules
|
159 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp --dport 55 -j MARK --set-mark 3
|
157 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp --dport 55 -j MARK --set-mark 3
|
160 |
|
158 |
|
161 |
# Marquage (et journalisation) des paquets qui tentent d'accéder directement au port udp 56 (DNS-Blackhole) pour pouvoir les rejeter en INPUT
|
159 |
# Marquage des paquets qui tentent d'accéder directement au port udp 56 (DNS-Blackhole) pour pouvoir les rejeter en INPUT
|
162 |
# Mark (and log) the udp 55 direct attempts (DNS-whitelist) to REJECT them in INPUT rules
|
160 |
# Mark the udp 56 direct attempts (DNS-blackhole) to REJECT them in INPUT rules
|
163 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp --dport 56 -j MARK --set-mark 4
|
161 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp --dport 56 -j MARK --set-mark 4
|
164 |
|
162 |
|
165 |
# Marquage (et journalisation) des paquets qui tentent d'accéder directement au port 8090 pour pouvoir les rejeter en INPUT
|
163 |
# Marquage des paquets qui tentent d'accéder directement au port 8090 (HAVP) pour pouvoir les rejeter en INPUT
|
166 |
# Mark (and log) the 8090 direct attempts to REJECT them in INPUT rules
|
164 |
# Mark (and log) the 8090 direct attempts to REJECT them in INPUT rules
|
167 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp -m tcp --dport 8090 -j MARK --set-mark 5
|
165 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp -m tcp --dport 8090 -j MARK --set-mark 5
|
168 |
|
166 |
|
169 |
# Marquage (et journalisation) des paquets qui tentent d'accéder directement au port 8091 pour pouvoir les rejeter en INPUT
|
167 |
# Marquage des paquets qui tentent d'accéder directement au port 8091 pour pouvoir les rejeter en INPUT
|
170 |
# Mark (and log) the 8091 direct attempts to REJECT them in INPUT rules
|
168 |
# Mark (and log) the 8091 direct attempts to REJECT them in INPUT rules
|
171 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp -m tcp --dport 8091 -j MARK --set-mark 6
|
169 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -d $PRIVATE_IP -p tcp -m tcp --dport 8091 -j MARK --set-mark 6
|
172 |
|
170 |
|
173 |
# havp_bl_set --> redirection vers le port 54
|
171 |
# havp_bl_set --> redirection vers le port 54
|
174 |
# havp_bl_set --> redirect to port 54
|
172 |
# havp_bl_set --> redirect to port 54
|
Line 180... |
Line 178... |
180 |
|
178 |
|
181 |
# Redirection des requêtes HTTP des IP de la blacklist vers ALCASAR (page 'accès interdit') pour le set havp_bl_set
|
179 |
# Redirection des requêtes HTTP des IP de la blacklist vers ALCASAR (page 'accès interdit') pour le set havp_bl_set
|
182 |
# Redirect outbound HTTP requests from blacklist IP to ALCASAR ('access denied' page) for the set havp_bl_set
|
180 |
# Redirect outbound HTTP requests from blacklist IP to ALCASAR ('access denied' page) for the set havp_bl_set
|
183 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_bl_set src -m set --match-set blacklist_ip_blocked dst -p tcp --dport http -j REDIRECT --to-port 80
|
181 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_bl_set src -m set --match-set blacklist_ip_blocked dst -p tcp --dport http -j REDIRECT --to-port 80
|
184 |
|
182 |
|
185 |
# Redirection des requêtes HTTP des IP qui ne sont pas dans la whitelist vers ALCASAR (page 'accès interdit') pour le set havp_wl_set
|
183 |
# Bloquage des requêtes HTTP vers les IP qui ne sont pas dans la WL. Redirection vers ALCASAR : page 'accès interdit'
|
186 |
# Redirect outbound HTTP requests from IP which are not in the whitelist to ALCASAR ('access denied' page) for the set havp_wl_set
|
184 |
# Redirect outbound HTTP requests to IP which are not in the WL. Redirection to ALCASAR : 'access denied' paae
|
187 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_wl_set src -m set ! --match-set whitelist_ip_allowed dst -p tcp --dport http -j REDIRECT --to-port 80
|
185 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_wl_set src -m set ! --match-set whitelist_ip_allowed dst -p tcp --dport http -j REDIRECT --to-port 80
|
188 |
|
186 |
|
189 |
# Journalisation des requètes HTTP vers Internet (seulement les paquets SYN) - Les autres protocoles sont journalisés en FORWARD par netflow
|
187 |
# Journalisation des requètes HTTP sortante des usagers "BL" (seulement les paquets SYN) - Les autres protocoles sont journalisés en FORWARD par netflow
|
190 |
## Log HTTP requests to Internet (only syn packets) - Other protocols are log in FORWARD by netflow
|
188 |
# Log HTTP requests to Internet of "BL users" (only syn packets) - Other protocols are logged in FORWARD by netflow
|
191 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -s $PRIVATE_NETWORK_MASK ! -d $PRIVATE_IP -p tcp --dport http -m state --state NEW -j ULOG --ulog-prefix "RULE F_http -- ACCEPT "
|
189 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_bl_set src ! -d $PRIVATE_IP -p tcp --dport http -m state --state NEW -j ULOG --ulog-prefix "RULE F_http -- ACCEPT "
|
- |
|
190 |
|
- |
|
191 |
# Redirection des requêtes HTTP sortantes des usagers "BL" vers DansGuardian (proxy transparent)
|
- |
|
192 |
# Redirect outbound HTTP requests of "BL" users to DansGuardian (transparent proxy)
|
- |
|
193 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_bl_set src ! -d $PRIVATE_IP -p tcp --dport http -j REDIRECT --to-port 8080
|
192 |
|
194 |
|
193 |
# Redirection des requêtes HTTP sortantes vers HAVP (8091) pour le set havp_set
|
195 |
# Redirection des requêtes HTTP sortantes vers HAVP (8091) pour le set havp_set
|
194 |
# Redirect outbound HTTP requests to HAVP (8091) for the set havp_set
|
196 |
# Redirect outbound HTTP requests to HAVP (8091) for the set havp_set
|
195 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_set src ! -d $PRIVATE_IP -p tcp --dport http -j REDIRECT --to-port 8091
|
197 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_set src ! -d $PRIVATE_IP -p tcp --dport http -j REDIRECT --to-port 8091
|
196 |
|
198 |
|
197 |
# Redirection des requêtes HTTP sortantes vers DansGuardian (proxy transparent) pour le set havp_bl_set
|
- |
|
198 |
# Redirect outbound HTTP requests to DansGuardian (transparent proxy) for the set havp_bl_set
|
- |
|
199 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_bl_set src ! -d $PRIVATE_IP -p tcp --dport http -j REDIRECT --to-port 8080
|
- |
|
200 |
|
- |
|
201 |
# Redirection des requêtes HTTP sortantes vers HAVP pour le set havp_wl_set
|
199 |
# Redirection des requêtes HTTP sortantes vers HAVP pour le set havp_wl_set
|
202 |
# Redirect outbound HTTP requests to HAVP for the set havp_wl_set
|
200 |
# Redirect outbound HTTP requests to HAVP for the set havp_wl_set
|
203 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_wl_set src ! -d $PRIVATE_IP -p tcp --dport http -j REDIRECT --to-port 8091
|
201 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -m set --match-set havp_wl_set src ! -d $PRIVATE_IP -p tcp --dport http -j REDIRECT --to-port 8090
|
204 |
|
202 |
|
205 |
# Redirection des requêtes NTP vers le serveur NTP local
|
203 |
# Redirection des requêtes NTP vers le serveur NTP local
|
206 |
# Redirect NTP request in local NTP server
|
204 |
# Redirect NTP request in local NTP server
|
207 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -s $PRIVATE_NETWORK_MASK ! -d $PRIVATE_IP -p udp --dport ntp -j REDIRECT --to-port 123
|
205 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -s $PRIVATE_NETWORK_MASK ! -d $PRIVATE_IP -p udp --dport ntp -j REDIRECT --to-port 123
|
208 |
|
206 |
|