Subversion Repositories ALCASAR

Rev

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

Rev 519 Rev 604
Line 1... Line 1...
1
#!/bin/sh
1
#!/bin/sh
2
# $Id: alcasar-iptables-bypass.sh 519 2011-03-25 16:30:32Z stephane $
2
# $Id: alcasar-iptables-bypass.sh 604 2011-05-15 21:23:10Z richard $
3
 
3
 
4
# script d'initialisation des regles du parefeu en mode ByPass
4
# script d'initialisation des regles du parefeu en mode ByPass
5
# Rexy - 3abtux
5
# Rexy - 3abtux
6
# version 2.0 - 12/2010
-
 
7
# changelog :
-
 
8
#	+ Prise en compte de regles locales
-
 
9
# 	+ prise en compte optionnelle d'un fichier iptables 'personnel' permettant de bloquer certains flux/services
-
 
10
#	+ suppression du broadcast et du multicast sur les interfaces
-
 
11
#	+ adaptation dnsmasq
-
 
12
 
6
 
-
 
7
private_ip_mask=`grep PRIVATE_IP /usr/local/etc/alcasar-network|cut -d"=" -f2`
-
 
8
private_network=`/bin/ipcalc -n $private_ip_mask|cut -d"=" -f2`		# LAN IP address (ie.: 192.168.182.0)
-
 
9
private_prefix=`/bin/ipcalc -p $private_ip_mask|cut -d"=" -f2`		# LAN prefix (ie. 24)
13
 
10
 
14
IPTABLES="/sbin/iptables"
11
IPTABLES="/sbin/iptables"
15
 
-
 
16
EXTIF="eth0"
12
EXTIF="eth0"
17
INTIF="eth1"
13
INTIF="eth1"
18
PRIVATE_NETWORK_MASK="192.168.182.0/24"
14
PRIVATE_NETWORK_MASK=$private_network/$private_prefix			# Lan IP address + prefix (192.168.182.0/24)
19
PRIVATE_IP="192.168.182.1"
15
PRIVATE_IP=`echo $private_ip_mask | cut -d"/" -f1`			# ALCASAR LAN IP address
20
 
16
 
21
# On vide (flush) toutes les règles existantes
17
# On vide (flush) toutes les règles existantes
-
 
18
# Flush all existing rules
22
$IPTABLES -F
19
$IPTABLES -F
23
$IPTABLES -t nat -F
20
$IPTABLES -t nat -F
24
$IPTABLES -F INPUT
21
$IPTABLES -F INPUT
25
$IPTABLES -F FORWARD
22
$IPTABLES -F FORWARD
26
$IPTABLES -F OUTPUT
23
$IPTABLES -F OUTPUT
27
 
24
 
28
# On indique les politiques par défaut
25
# On indique les politiques par défaut
-
 
26
# Default policies
29
$IPTABLES -P INPUT DROP
27
$IPTABLES -P INPUT DROP
30
$IPTABLES -P FORWARD DROP
28
$IPTABLES -P FORWARD DROP
31
$IPTABLES -P OUTPUT ACCEPT
29
$IPTABLES -P OUTPUT ACCEPT
32
$IPTABLES -t nat -P PREROUTING ACCEPT
30
$IPTABLES -t nat -P PREROUTING ACCEPT
33
$IPTABLES -t nat -P POSTROUTING ACCEPT
31
$IPTABLES -t nat -P POSTROUTING ACCEPT
34
$IPTABLES -t nat -P OUTPUT ACCEPT
32
$IPTABLES -t nat -P OUTPUT ACCEPT
35
 
33
 
36
# On efface toutes les chaînes qui ne sont pas par défaut dans les tables filter et nat
34
# On efface toutes les chaînes qui ne sont pas par défaut dans les tables filter et nat
-
 
35
# Flush non default rules on filter and nat tables
37
$IPTABLES -X
36
$IPTABLES -X
38
$IPTABLES -t nat -X
37
$IPTABLES -t nat -X
39
 
38
 
40
# On autorise tout sur loopback
39
# On autorise tout sur loopback
-
 
40
# accept all on loopback
41
$IPTABLES -A INPUT -i lo -j ACCEPT
41
$IPTABLES -A INPUT -i lo -j ACCEPT
42
 
42
 
43
# on autorise les requêtes dhcp
43
# on autorise les requêtes dhcp
-
 
44
# accept dhcp
44
$IPTABLES -A INPUT -i $INTIF -p udp -m udp --sport bootpc --dport bootps -j ACCEPT
45
$IPTABLES -A INPUT -i $INTIF -p udp -m udp --sport bootpc --dport bootps -j ACCEPT
45
 
46
 
46
# Règles d'antispoofing
-
 
47
$IPTABLES -A INPUT -i $INTIF ! -s $PRIVATE_NETWORK_MASK -j ULOG --ulog-prefix "RULE Antispoof1 -- DENY "
-
 
48
$IPTABLES -A INPUT -i $INTIF ! -s $PRIVATE_NETWORK_MASK -j DROP
-
 
49
$IPTABLES -A INPUT -i $EXTIF -s $PRIVATE_NETWORK_MASK -j ULOG --ulog-prefix "RULE Antispoof2 -- DENY "
-
 
50
$IPTABLES -A INPUT -i $EXTIF -s $PRIVATE_NETWORK_MASK -j DROP
-
 
51
 
-
 
52
# On drop le broadcast et le multicasat sur les interfaces (sans Log)
47
# On drop le broadcast et le multicast sur les interfaces (sans Log)
-
 
48
# Drop broadcast & multicast
53
$IPTABLES -A INPUT -m addrtype --dst-type BROADCAST,MULTICAST -j DROP
49
$IPTABLES -A INPUT -m addrtype --dst-type BROADCAST,MULTICAST -j DROP
54
 
50
 
55
# On autorise le ping dans les deux sens (icmp N°0 & 8) en provenance du LAN
51
# On laisse passer les ICMP echo-request et echo-reply en provenance du LAN
-
 
52
# Allow ping (icmp N°0 & 8) from LAN
56
$IPTABLES -A INPUT -i $INTIF -s $PRIVATE_NETWORK_MASK -p icmp --icmp-type 0 -j ACCEPT
53
$IPTABLES -A INPUT -i $INTIF -s $PRIVATE_NETWORK_MASK -p icmp --icmp-type 0 -j ACCEPT
57
$IPTABLES -A INPUT -i $INTIF -s $PRIVATE_NETWORK_MASK -p icmp --icmp-type 8 -j ACCEPT
54
$IPTABLES -A INPUT -i $INTIF -s $PRIVATE_NETWORK_MASK -p icmp --icmp-type 8 -j ACCEPT
58
 
55
 
59
#  On ajoute ici les règles spécifiques de filtrage réseau (accès exterieur ...)
56
#  On ajoute ici les règles spécifiques de filtrage réseau (accès exterieur ...)
60
if [ -f /usr/local/etc/alcasar-iptables-local.sh ]; then
57
if [ -f /usr/local/etc/alcasar-iptables-local.sh ]; then
61
        . /usr/local/etc/alcasar-iptables-local.sh
58
        . /usr/local/etc/alcasar-iptables-local.sh
62
fi
59
fi
63
 
60
 
64
# On autorise en FORWARD les connexions déjà établies
61
# On autorise les retours de connexions légitimes par FORWARD
-
 
62
# Conntrack on forward
65
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
63
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
66
 
64
 
67
# On autorise les demandes de connexions sortantes
65
# On autorise les demandes de connexions sortantes
68
$IPTABLES -A FORWARD -i $INTIF -m state --state NEW -j ULOG --ulog-prefix "RULE Transfert -- ACCEPT "
66
$IPTABLES -A FORWARD -i $INTIF -m state --state NEW -j ULOG --ulog-prefix "RULE Transfert -- ACCEPT "
69
$IPTABLES -A FORWARD -i $INTIF -m state --state NEW -j ACCEPT
67
$IPTABLES -A FORWARD -i $INTIF -m state --state NEW -j ACCEPT