Subversion Repositories ALCASAR

Rev

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

Rev 362 Rev 401
Line 1... Line 1...
1
#!/bin/sh
1
#!/bin/sh
2
# $Id: alcasar-iptables-bypass.sh 362 2010-12-06 20:18:34Z franck $
2
# $Id: alcasar-iptables-bypass.sh 401 2011-01-02 22:40:57Z 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
6
# version 2.0 - 12/2010
7
# changelog :
7
# changelog :
8
#	+ Prise en compte de regles locales
8
#	+ Prise en compte de regles locales
9
# 	+ prise en compte optionnelle d'un fichier iptables 'personnel' permettant de bloquer certains flux/services
9
# 	+ prise en compte optionnelle d'un fichier iptables 'personnel' permettant de bloquer certains flux/services
10
#	+ suppression log vers syslog
-
 
11
#	+ suppression du broadcast et du multicast sur les interfaces
10
#	+ suppression du broadcast et du multicast sur les interfaces
12
 
11
 
13
IPTABLES="/sbin/iptables"
12
IPTABLES="/sbin/iptables"
14
 
13
 
15
EXTIF="eth0"
14
EXTIF="eth0"
16
INTIF="eth1"
15
INTIF="eth1"
17
PRIVATE_NETWORK_MASK="192.168.182.0/24"
16
PRIVATE_NETWORK_MASK="192.168.182.0/24"
-
 
17
PRIVATE_IP="192.168.182.1"
18
 
18
 
19
# On vide (flush) toutes les règles existantes
19
# On vide (flush) toutes les règles existantes
20
$IPTABLES -F
20
$IPTABLES -F
21
$IPTABLES -t nat -F
21
$IPTABLES -t nat -F
22
$IPTABLES -F INPUT
22
$IPTABLES -F INPUT
Line 39... Line 39...
39
$IPTABLES -A INPUT -i lo -j ACCEPT
39
$IPTABLES -A INPUT -i lo -j ACCEPT
40
 
40
 
41
# on autorise les requêtes dhcp
41
# on autorise les requêtes dhcp
42
$IPTABLES -A INPUT -i $INTIF -p udp -m udp --sport bootpc --dport bootps -j ACCEPT
42
$IPTABLES -A INPUT -i $INTIF -p udp -m udp --sport bootpc --dport bootps -j ACCEPT
43
 
43
 
44
#  On ajoute ici les règles spécifiques de filtrage réseau
-
 
45
if [ -f /usr/local/etc/alcasar-iptables-local.sh ]; then
-
 
46
        . /usr/local/etc/alcasar-iptables-local.sh
-
 
47
fi
-
 
48
 
-
 
49
# Règles d'antispoofing
44
# Règles d'antispoofing
50
$IPTABLES -A INPUT -i $INTIF ! -s $PRIVATE_NETWORK_MASK -j ULOG --ulog-prefix "RULE Antispoof1 -- DENY "
45
$IPTABLES -A INPUT -i $INTIF ! -s $PRIVATE_NETWORK_MASK -j ULOG --ulog-prefix "RULE Antispoof1 -- DENY "
51
$IPTABLES -A INPUT -i $INTIF ! -s $PRIVATE_NETWORK_MASK -j DROP
46
$IPTABLES -A INPUT -i $INTIF ! -s $PRIVATE_NETWORK_MASK -j DROP
52
$IPTABLES -A INPUT -i $EXTIF -s $PRIVATE_NETWORK_MASK -j ULOG --ulog-prefix "RULE Antispoof2 -- DENY "
47
$IPTABLES -A INPUT -i $EXTIF -s $PRIVATE_NETWORK_MASK -j ULOG --ulog-prefix "RULE Antispoof2 -- DENY "
53
$IPTABLES -A INPUT -i $EXTIF -s $PRIVATE_NETWORK_MASK -j DROP
48
$IPTABLES -A INPUT -i $EXTIF -s $PRIVATE_NETWORK_MASK -j DROP
Line 61... Line 56...
61
 
56
 
62
#  On ajoute ici les règles spécifiques de filtrage réseau (accès exterieur ...)
57
#  On ajoute ici les règles spécifiques de filtrage réseau (accès exterieur ...)
63
if [ -f /usr/local/etc/alcasar-iptables-local.sh ]; then
58
if [ -f /usr/local/etc/alcasar-iptables-local.sh ]; then
64
        . /usr/local/etc/alcasar-iptables-local.sh
59
        . /usr/local/etc/alcasar-iptables-local.sh
65
fi
60
fi
66
# On autorise le tranfert des requête DNS (sans LOG)
61
# On interdit le tranfert des requête DNS (sans LOG)
67
$IPTABLES -A FORWARD -i $INTIF -p udp --dport  domain -j ACCEPT
62
$IPTABLES -A FORWARD -i $INTIF -p udp --dport domain -j REJECT --reject-with icmp-port-unreachable
68
$IPTABLES -A FORWARD -i $INTIF -p tcp --dport  domain -j ACCEPT
63
$IPTABLES -A FORWARD -i $INTIF -p tcp --dport domain -j REJECT --reject-with tcp-reset
69
# On autorise les requêtes DNS sur le portail (sans LOG)
-
 
70
$IPTABLES -A INPUT -i $INTIF -p udp --dport  domain -j ACCEPT
-
 
71
$IPTABLES -A INPUT -i $INTIF -p tcp --dport  domain -j ACCEPT
-
 
72
 
64
 
73
# On autorise le flux dans les deux sens (avec Log sur les demandes de connexion).
65
# On autorise le flux dans les deux sens (avec Log sur les demandes de connexion).
74
$IPTABLES -A FORWARD -i $INTIF -m state --state NEW -j ULOG --ulog-prefix "RULE Transfert -- ACCEPT "
66
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
75
$IPTABLES -A FORWARD -i $INTIF -m state --state NEW -j ACCEPT
67
$IPTABLES -A FORWARD -o $INTIF -m state --state NEW -j ULOG --ulog-prefix "RULE Transfert -- ACCEPT "
76
$IPTABLES -A FORWARD -i $INTIF -m state --state RELATED,ESTABLISHED -j ACCEPT
68
$IPTABLES -A FORWARD -j ACCEPT
77
$IPTABLES -A FORWARD -o $INTIF -m state --state RELATED,ESTABLISHED -j ACCEPT
69
#$IPTABLES -A FORWARD -i $INTIF -m state --state NEW -j ACCEPT
78
 
70
 
79
# On autorise les flux entrant ntp et ssh via INTIF
71
# On autorise les flux entrant ntp, dns et ssh via INTIF
-
 
72
$IPTABLES -A INPUT -i $INTIF -d $PRIVATE_IP -p udp --dport domain -j ACCEPT
80
$IPTABLES -A INPUT -i $INTIF -p udp --dport ntp -j ACCEPT
73
$IPTABLES -A INPUT -i $INTIF -d $PRIVATE_IP -p udp --dport ntp -j ACCEPT
81
$IPTABLES -A INPUT -i $INTIF -p tcp --dport ssh -j ACCEPT
74
$IPTABLES -A INPUT -i $INTIF -d $PRIVATE_IP -p tcp --dport ssh -j ACCEPT
82
 
75
 
83
# On autorise les flux entrant des connexions déjà établies (ping à partir du portail par exemple)
76
# On autorise le retour des connexions entrante déjà acceptées
84
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
77
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
85
 
78
 
86
# On interdit et on log le reste sur les 2 interfaces d'accès
79
# On interdit et on log le reste sur les 2 interfaces d'accès
87
$IPTABLES -A INPUT -i $INTIF -j ULOG --ulog-prefix "RULE rej-int -- REJECT "
80
$IPTABLES -A INPUT -i $INTIF -j ULOG --ulog-prefix "RULE rej-int -- REJECT "
88
$IPTABLES -A INPUT -i $EXTIF -j ULOG --ulog-prefix "RULE rej-ext -- REJECT "
81
$IPTABLES -A INPUT -i $EXTIF -j ULOG --ulog-prefix "RULE rej-ext -- REJECT "
89
$IPTABLES -A INPUT -p tcp -j REJECT --reject-with tcp-reset
82
$IPTABLES -A INPUT -p tcp -j REJECT --reject-with tcp-reset
90
$IPTABLES -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
83
$IPTABLES -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
91
 
84
 
92
# On redirige les requêtes DNS sortantes sur BIND local
-
 
93
# log DNS query present dans log du service BIND query.log --> pas de log dans firewall.log
-
 
94
#$IPTABLES -A PREROUTING -t nat -i $TUNIF -p udp ! -d $PRIVATE_IP -m udp --dport domain -j ULOG --ulog-prefix "RULE direct-DNS -- REDIRECT "
-
 
95
$IPTABLES -A PREROUTING -t nat -i $TUNIF -p udp ! -d $PRIVATE_IP --dport domain -j REDIRECT --to-port domain
-
 
96
#$IPTABLES -A PREROUTING -t nat -i $TUNIF -p tcp ! -d $PRIVATE_IP -m tcp --dport domain -j ULOG --ulog-prefix "RULE direct-DNS -- REDIRECT "
-
 
97
$IPTABLES -A PREROUTING -t nat -i $TUNIF -p tcp ! -d $PRIVATE_IP --dport domain -j REDIRECT --to-port domain
-
 
98
 
-
 
99
# On active le masquage d'adresse par translation (NAT)
85
# On active le masquage d'adresse par translation (NAT)
100
$IPTABLES -A POSTROUTING -t nat -o $EXTIF -j MASQUERADE
86
$IPTABLES -A POSTROUTING -t nat -o $EXTIF -j MASQUERADE
101
 
87
 
102
/etc/init.d/iptables save
88
/etc/init.d/iptables save
103
# Fin du script des regles du parefeu
89
# Fin du script des regles du parefeu