Line 1... |
Line 1... |
1 |
#!/bin/sh
|
1 |
#!/bin/sh
|
2 |
# $Id: alcasar-iptables.sh 434 2011-01-09 20:43:02Z richard $
|
2 |
# $Id: alcasar-iptables.sh 472 2011-02-02 23:01:55Z 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 |
# Rexy - 3abtux - CPN
|
4 |
# Rexy - 3abtux - CPN
|
5 |
# version 2.0 (10/2010)
|
5 |
# version 2.0 (10/2010)
|
6 |
# changelog :
|
6 |
# changelog :
|
7 |
# + déplacement du fichier firewall 'local' dans /usr/local/etc/alcasar-iptables-local.sh
|
7 |
# + déplacement du fichier firewall 'local' dans /usr/local/etc/alcasar-iptables-local.sh
|
Line 10... |
Line 10... |
10 |
# + suppression log vers syslog
|
10 |
# + suppression log vers syslog
|
11 |
# + suppression des broadcast sur EXTIF et INTIF
|
11 |
# + suppression des broadcast sur EXTIF et INTIF
|
12 |
# + suppression du filtrage par la table "NAT" -> utilisation de la table "MANGLE"
|
12 |
# + suppression du filtrage par la table "NAT" -> utilisation de la table "MANGLE"
|
13 |
|
13 |
|
14 |
IPTABLES="/sbin/iptables"
|
14 |
IPTABLES="/sbin/iptables"
|
15 |
FILTERING="no"
|
15 |
FILTERING="yes"
|
16 |
EXTIF="eth0"
|
16 |
EXTIF="eth0"
|
17 |
INTIF="eth1"
|
17 |
INTIF="eth1"
|
18 |
TUNIF="tun0"
|
18 |
TUNIF="tun0"
|
19 |
PRIVATE_NETWORK_MASK="192.168.182.0/24"
|
19 |
PRIVATE_NETWORK_MASK="192.168.182.0/24"
|
20 |
PRIVATE_IP="192.168.182.1"
|
20 |
PRIVATE_IP="192.168.182.1"
|
Line 40... |
Line 40... |
40 |
$IPTABLES -t nat -X
|
40 |
$IPTABLES -t nat -X
|
41 |
|
41 |
|
42 |
# On autorise tout sur loopback
|
42 |
# On autorise tout sur loopback
|
43 |
$IPTABLES -A INPUT -i lo -j ACCEPT
|
43 |
$IPTABLES -A INPUT -i lo -j ACCEPT
|
44 |
|
44 |
|
- |
|
45 |
#############################
|
- |
|
46 |
# INTIF rules #
|
- |
|
47 |
#############################
|
45 |
# on autorise les requêtes dhcp
|
48 |
# on autorise les requêtes dhcp
|
46 |
$IPTABLES -A INPUT -i $INTIF -p udp -m udp --sport bootpc --dport bootps -j ACCEPT
|
49 |
$IPTABLES -A INPUT -i $INTIF -p udp -m udp --sport bootpc --dport bootps -j ACCEPT
|
47 |
|
- |
|
48 |
# On ferme INTIF (tout passe par TUNIF)
|
50 |
# On ferme INTIF (tout passe par TUNIF)
|
49 |
$IPTABLES -A INPUT -i $INTIF -j ULOG --ulog-prefix "RULE Protect1 -- REJECT "
|
51 |
$IPTABLES -A INPUT -i $INTIF -j ULOG --ulog-prefix "RULE Protect1 -- REJECT "
|
50 |
$IPTABLES -A INPUT -i $INTIF -j REJECT
|
52 |
$IPTABLES -A INPUT -i $INTIF -j REJECT
|
51 |
|
53 |
|
- |
|
54 |
#############################
|
- |
|
55 |
# Local protection rules #
|
- |
|
56 |
#############################
|
52 |
## On drop les scans XMAS et NULL (à voir si utile ...)
|
57 |
# On drop les scans XMAS et NULL
|
53 |
#$IPTABLES -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
|
58 |
$IPTABLES -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
|
54 |
#$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
|
59 |
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
|
55 |
#$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
|
60 |
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
|
56 |
#$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
|
61 |
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
|
57 |
|
- |
|
- |
|
62 |
# On drop le broadcast et le multicast sur les interfaces
|
- |
|
63 |
$IPTABLES -A INPUT -m addrtype --dst-type BROADCAST,MULTICAST -j DROP
|
58 |
# Règles d'antispoofing
|
64 |
# Règles d'antispoofing (avec log)
|
59 |
$IPTABLES -A INPUT -i $TUNIF ! -s $PRIVATE_NETWORK_MASK -j ULOG --ulog-prefix "RULE Antispoof1 -- DENY "
|
65 |
$IPTABLES -A INPUT -i $TUNIF ! -s $PRIVATE_NETWORK_MASK -j ULOG --ulog-prefix "RULE Antispoof1 -- DENY "
|
60 |
$IPTABLES -A INPUT -i $TUNIF ! -s $PRIVATE_NETWORK_MASK -j DROP
|
66 |
$IPTABLES -A INPUT -i $TUNIF ! -s $PRIVATE_NETWORK_MASK -j DROP
|
61 |
$IPTABLES -A INPUT -i $EXTIF -s $PRIVATE_NETWORK_MASK -j ULOG --ulog-prefix "RULE Antispoof2 -- DENY "
|
67 |
$IPTABLES -A INPUT -i $EXTIF -s $PRIVATE_NETWORK_MASK -j ULOG --ulog-prefix "RULE Antispoof2 -- DENY "
|
62 |
$IPTABLES -A INPUT -i $EXTIF -s $PRIVATE_NETWORK_MASK -j DROP
|
68 |
$IPTABLES -A INPUT -i $EXTIF -s $PRIVATE_NETWORK_MASK -j DROP
|
63 |
|
- |
|
64 |
# On drop le broadcast et le multicast sur les interfaces (sans Log)
|
- |
|
65 |
$IPTABLES -A INPUT -m addrtype --dst-type BROADCAST,MULTICAST -j DROP
|
- |
|
66 |
|
- |
|
67 |
# On autorise le ping dans les deux sens (icmp N°0 & 8) en provenance du LAN
|
69 |
# On autorise le ping dans les deux sens (icmp N°0 & 8) en provenance du LAN
|
68 |
$IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -p icmp --icmp-type 0 -j ACCEPT
|
70 |
$IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -p icmp --icmp-type 0 -j ACCEPT
|
69 |
$IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -p icmp --icmp-type 8 -j ACCEPT
|
71 |
$IPTABLES -A INPUT -i $TUNIF -s $PRIVATE_NETWORK_MASK -p icmp --icmp-type 8 -j ACCEPT
|
70 |
|
72 |
|
71 |
# On ajoute ici les règles locales (ssh via Internet par ex.)
|
73 |
# On ajoute ici les règles locales (ssh via Internet par ex.)
|
Line 143... |
Line 145... |
143 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -p tcp ! -d $PRIVATE_IP --dport http -j REDIRECT --to-port 8080
|
145 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -p tcp ! -d $PRIVATE_IP --dport http -j REDIRECT --to-port 8080
|
144 |
# On traite les tentatives de contournement par accès direct à DansGuardian (marquage des paquets)
|
146 |
# On traite les tentatives de contournement par accès direct à DansGuardian (marquage des paquets)
|
145 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -p tcp -d $PRIVATE_IP -m tcp --dport 8080 -j ULOG --ulog-prefix "RULE direct-proxy -- DENY "
|
147 |
$IPTABLES -A PREROUTING -t nat -i $TUNIF -p tcp -d $PRIVATE_IP -m tcp --dport 8080 -j ULOG --ulog-prefix "RULE direct-proxy -- DENY "
|
146 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -p tcp -d $PRIVATE_IP -m tcp --dport 8080 -j MARK --set-mark 1
|
148 |
$IPTABLES -A PREROUTING -t mangle -i $TUNIF -p tcp -d $PRIVATE_IP -m tcp --dport 8080 -j MARK --set-mark 1
|
147 |
|
149 |
|
148 |
# On interdit et on log le reste sur les 2 interfaces d'accès
|
150 |
# On interdit et on log le reste sur l'interface interne
|
149 |
$IPTABLES -A INPUT -i $TUNIF -j ULOG --ulog-prefix "RULE rej-int -- REJECT "
|
151 |
$IPTABLES -A INPUT -i $TUNIF -j ULOG --ulog-prefix "RULE rej-int -- REJECT "
|
150 |
$IPTABLES -A INPUT -i $EXTIF -j ULOG --ulog-prefix "RULE rej-ext -- REJECT "
|
152 |
$IPTABLES -A INPUT -i $TUNIF -p tcp -j REJECT --reject-with tcp-reset
|
151 |
$IPTABLES -A INPUT -p tcp -j REJECT --reject-with tcp-reset
|
153 |
$IPTABLES -A INPUT -i $TUNIF -p udp -j REJECT --reject-with icmp-port-unreachable
|
- |
|
154 |
# Pour EXTIF, étudier l'utilité de logger dans un autre fichier (avec l'option --limit pour éviter les denis de service)
|
152 |
$IPTABLES -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
|
155 |
# $IPTABLES -A INPUT -i $EXTIF -j ULOG --ulog-prefix "RULE rej-ext -- REJECT "
|
- |
|
156 |
# On drop le reste sur l'interface externe
|
- |
|
157 |
$IPTABLES -A INPUT -i $EXTIF -j DROP
|
153 |
|
158 |
|
154 |
# On active le masquage d'adresse par translation (NAT)
|
159 |
# On active le masquage d'adresse par translation (NAT)
|
155 |
$IPTABLES -A POSTROUTING -t nat -o $EXTIF -j MASQUERADE
|
160 |
$IPTABLES -A POSTROUTING -t nat -o $EXTIF -j MASQUERADE
|
156 |
|
161 |
|
157 |
# On sauvegarde les règles
|
162 |
# On sauvegarde les règles
|