Subversion Repositories ALCASAR

Rev

Rev 1472 | Rev 1486 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 1472 Rev 1484
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