Bonjour à tous,

J'ai depuis quelque temps un petit serveur passerelle iptable et squid squidguard avec authentification LDAP.

Tout fonctionnait correctement mais depuis quelque temps , je n'ai plus que le port 80 qui passe.

Je ne comprends pas le problème.

vous trouverez ci-dessous mon squid.conf et le script iptable que j'ai trouvé sur internet et que j'ai essayé d'adapter comme je le pouvais.


Merci d'avance pour votre aide éventuelle.

Morel.l


Squid.conf


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#port sur lequel le proxy écoute les clients Web
http_port 3128
 
#port sur lequel le proxy va dialoguer avec les autres proxy du réseau
#icp_port 3130
#ne pas utiliser le cache pour ? et .cgi
#hierarchy_stoplist cgi-bin ? .cgi
#mémoire RAM allouée au proxy
cache_mem 16 MB
 
#taille maximale des fichiers qui seront enregistrés dans le cache
maximum_object_size 4096 KB
 
#répertoire dans lequel seront stockés les fichiers enregistrés.
#dans cet exemple, la taille maximale de ce répertoire sera de 1Go - il y aura 16 sous #divisions dans /var/spool/squid - et il y aura 256 
 
#divisions dans ces 16 sous divisions
#cache_dir ufs /var/squidcache 100 16 256 
cache_dir ufs /var/spool/squid 1500 16 256
 
#fichiers de log nécessaires pour contrôler le fonctionnement du cache
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_swap_log /var/log/squid/swap.log
 
#localisation de la table MIME de squid
mime_table /etc/squid/mime.conf
 
#informations relatives au processus
pid_filename /var/run/squid.pid
debug_options ALL,1
 
auth_param basic program /usr/lib/squid/squid_ldap_auth -b "dc=lesrimains.org,dc=lan"  -D "cn=root,dc=lesrimains.org,dc=lan" -w "######" -v 3 -f "uid=%s"
 
auth_param basic children 10
auth_param basic realm Squid proxy-caching web server
authenticate_ttl 1 hour
authenticate_ip_ttl 60 seconds
 
#listes d'accès
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl serveur dst 192.168.0.1
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563 10000
acl Safe_ports port 80
acl Safe_ports port 25
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 110
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 389
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 901
acl purge method PURGE
acl CONNECT method CONNECT
acl LocalNet src 192.168.0.0/255.255.255.0
acl Users proxy_auth REQUIRED
 
 
 
 
#autorisation/interdiction des listes définies
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
 
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow serveur
http_access deny !Users
http_access allow LocalNet
http_access deny all
 
 
#email du manager du cache
cache_mgr <a href="mailto:adminserv@lesrimains.org">adminserv@lesrimains.org</a>
 
#nom (virtuel) du cache
visible_hostname rimainsserv.lesrimains.org
 
#rotation des fichiers log
logfile_rotate 4
 
 
#pour exclure du cache l'intranet (local) si vous en avez un 
#mettez ici le nom exact de votre serveur à la place de <a href="http://www.stpierre.fr" target="_blank">www.stpierre.fr</a>
acl web-local dstdomain rimainsserv.lesrimains.org
 
#always_direct allow web-local
 
# Gestion du redirecteur SquidGuard
redirect_program /usr/bin/squidGuard
 
redirect_children 20

Le script firewall.sh


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#!/bin/sh
 
# script /etc/firewall.sh
 
# Firewall d'exemple a but pédagogique
# Arnaud de Bermingham
 
# Activation du forwarding
# C'est pas pour faire joli, on aura des règles
# de forward et il faut bien que les paquets
# traversent la machine, donc on met ce fichier à 1
 
echo 1 > /proc/sys/net/ipv4/ip_forward
 
# Alors la, on va appliquer quelques astuces
# pour empêcher les attaques de type spoofing
# et bloquer les réponses ICMP du firewall,
# comme ça c'est très propre. Attention, le
# fait de bloquer le trafic ICMP sur
# le firewall bloque les pings.
 
# Je veux pas de spoofing
 
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi
 
# pas de icmp
 
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
 
# On va utiliser iptables. Si on l'a compilé en module
# dans le kernel, il faut charger le module ip_tables.
 
modprobe ip_tables
 
# on va charger quelques modules supplémentaires pour
# gérer la translation d'adresse, l'IRC et le FTP
# Tu me fait 4 pompes. Chef oui chef !
 
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe iptable_filter
modprobe iptable_nat
 
# Pour faire bien, on va vider toutes les règles
# avant d'appliquer les nouvelles règles de firewall
 
iptables -F
iptables -X
 
# On va rajouter 2 nouvelles chaînes.
# Ceci permettra d'ajouter des nouvelles cibles qui
# auront la possibilité de loguer ce qui se passe.
 
# La on logue et on refuse le paquet,
# on rajoute un préfixe pour pouvoir
# s'y retrouver dans les logs
iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG \
--log-prefix '[IPTABLES DROP] : '
iptables -A LOG_DROP -j DROP
 
# ici, on logue et on accepte le paquet,
# on rajoute un préfixe pour pouvoir
# s'y retrouver dans les logs
iptables -N LOG_ACCEPT
iptables -A LOG_ACCEPT -j LOG \
--log-prefix '[IPTABLES ACCEPT] : '
iptables -A LOG_ACCEPT -j ACCEPT
 
# On veut faire un firewall efficace,
# donc la politique a appliquer est de tout
# refuser par défaut et rajouter une a une
# les règles que l'on autorise.
# Bien sur, on a RTFM un peu et on a vu que
# l'option -P permet de définir
# la cible par défaut
 
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
 
# Pour éviter les problèmes, on va tout accepter sur
# la machine en local (interface lo).
# Je déconseille de retirer cette règle car
# ça pose pas mal de problèmes et ça peut
# faire perdre la main sur la machine
 
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
 
# Bon, la partie initialisation et préparation est
# terminée, passons aux choses sérieuses
 
# Comme on l'a dit dans la présentation de
# l'architecture réseau, le firewall fait
# également office de proxy grâce par exemple
# à un squid installé dessus. On va donc
# accepter que le proxy ait une connexion
# internet directe. Tant qu'à faire, on va
# mettre des états pour que ça soit bien sécurisé
 
iptables -A OUTPUT -o eth0 -m state \
--state NEW,ESTABLISHED -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -m state \
--state ESTABLISHED -p tcp --sport 80 -j ACCEPT
 
# Maintenant, on va faire en sorte que le
# proxy soit totalement transparent pour le LAN
# bénéficiant de la connexion internet.
# L'astuce consiste a rediriger toutes les
# requêtes ayant un port de destination 80
# vers le port 3128 du proxy, ici c'est le
# firewall (qui est sur le firewall et qui
# a l'adresse IP 192.168.0.1 ).
# Une règle de NAT suffira largement pour faire ça.
 
iptables -t nat -A PREROUTING -i eth1 -p tcp \
--dport 80 -j DNAT --to-destination 192.168.0.1:3128
 
 
# C'est bien tout ça ! mais le problème c'est
# que les chaînes de la table FILTER sont toutes
# à DENY, donc tout ceci ne fait rien du tout.
# On va donc passer a la configuration du
# firewall proprement dit.
 
# On va quand même accepter les connexions ssh
# (port 22) provenant d'une machine (la votre en
# l'occurrence, on va dire 192.168.2.42) vers le
# firewall pour pouvoir modifier les règles
# facilement pour bien surveiller, on vas quand
# même loguer les connexions provenant de mon IP
# et à destination du ssh du firewall
 
iptables -A INPUT -i eth1 -s 192.168.0.5 -m state \
--state NEW,ESTABLISHED -p tcp --dport 22 -j LOG_ACCEPT
iptables -A OUTPUT -o eth1 -d 192.168.0.5 -m state \
--state ESTABLISHED -p tcp --sport 22 -j LOG_ACCEPT
 
# On veut que le LAN connecté à l'interface
# eth1 ait un accès complet à internet.
# La règle de NAT qui permettait d'avoir
# un proxy transparent sera automatiquement
# appliqué. L'interface correspondant
# à la connexion internet est ici eth0
 
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT
 
 
# Maintenant on donne le droit au LAN de
# consulter les pages web du serveur de la DMZ
 
iptables -A FORWARD -i eth1 -o eth0 -p tcp \
--dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp \
--sport 20 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp \
--dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp \
--sport 21 -m state --state ESTABLISHED -j ACCEPT
 
 
# Maintenant il ne reste plus grand chose à faire !
 
# Il faut permettre à l'ensemble du LAN de dialoguer
# sur internet avec la même adresse IP sinon, bien
# évidemment ça ne marchera pas (à moins que vous
# ayez 30 adresses ip !).
# Une petite règle de NAT avec un -j MASQUERADE
# suffira (masquerade = dialoguer avec l'adresse
# IP publique sur firewall)
 
iptables -t nat -A POSTROUTING \
-s 192.168.1.0/24 -j MASQUERADE
 
 
# Toutes les règles qui n'ont pas passé les
# règles du firewall seront refusées et loguées...
# facile :
 
iptables -A FORWARD -j LOG_DROP
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP
 
# Pour faire zoli
echo " [Termine]"
 
# c'est enfin fini