Linux - Problemas con pop3 y SMTP en IPTABLES...?

 
Vista:
Imágen de perfil de Victor Hugo
Val: 11
Ha aumentado su posición en 4 puestos en Linux (en relación al último mes)
Gráfica de Linux

Problemas con pop3 y SMTP en IPTABLES...?

Publicado por Victor Hugo (7 intervenciones) el 07/10/2017 17:42:34
Hola amigos tengo un servidor como puerta de enlace y cortafuegos en debian8. A parte tengo un servidor con windows 2003 server para servir a PC clientes ligeros (Ardence). En el servidor con windows puedo revizar y enviar correos con Foxmail partable accediendo directamente a los servidores pop3 y smtp en la red WAN pero desde los clientes puedo acceder a estos servidores. Sera una configuracion erronea de IPTABLES?.

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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#!/bin/bash
#=============================#
#SCRIPT by YoeT for IPTABLES
 
#MODULOS NECESARIOS (modprobe)
#ip_conntrack_ftp iptable_filter iptable_nat ip_tables ip_conntrack
#-------------------------------------------------------------------
#=====VARIABLES=====
#Binario de IPTABLES
IPTABLES=/sbin/iptables
#-------------------
#INTERFACES
#Interfaz Externa conectada a internet con IP FIJA
EXT_IF=eth0
EXT_IP=10.20.4.72
 
#Interfaz Interna conectada a la LAN con IP FIJA
LAN_IF=eth1
LAN_IP=192.168.1.254
LAN_RED=192.168.1.0/24
 
#interfaz de loopback
LOO_RED=127.0.0.0/8
#cualquier red
ANY_RED=0.0.0.0/0
#-------------------
#COLORES
rojo="\e[31m"
verde="\e[32m"
blanco="\e[37m"
amarillo="\e[33m"
cyan="\e[36m"
rosa="\e[35m"
cierre="\e[0m"
#====================
#modprobe ip_tables
#modprobe iptable_filter
#modprobe ip_conntrack
#modprobe iptable_nat
#modprobe ip_conntrack_irc
#modprobe ip_conntrack_ftp
#modprobe ip_nat_irc
#modprobe ip_nat_ftp
 
start_rules() {
echo -e "${amarillo}Iniciando${cierre}${blanco} IPTABLES FIREWALL${cierre} ..."
# Limpiar reglas existentes
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -t nat -F
#$IPTABLES -t nat -X
 
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP
 
# Bloquear paquetes broadcast de NetBios salientes
#$IPTABLES -A FORWARD -p tcp --sport 137:139 -o $EXT_IF -j DROP
#$IPTABLES -A FORWARD -p udp --sport 137:139 -o $EXT_IF -j DROP
#$IPTABLES -A OUTPUT  -p tcp --sport 137:139 -o $EXT_IF -j DROP
#$IPTABLES -A OUTPUT  -p udp --sport 137:139 -o $EXT_IF -j DROP
 
# Relajamos la politica de salida
#+ Dejamos salir paquetes de LAN_IP por LAN_IF
$IPTABLES -A OUTPUT -o $LAN_IF -s $LAN_IP -j ACCEPT
#+ Dejamos salir paquetes de EXT_IP por EXT_IF
$IPTABLES -A OUTPUT -o $EXT_IF -s $EXT_IP -j ACCEPT
 
# Activamos el forward para el NAT
echo 1 > /proc/sys/net/ipv4/ip_forward
 
# Para evitar el uso del proxy externo
$IPTABLES -A FORWARD -i $LAN_IF -s $LAN_RED -d 201.220.211.68 -j DROP
 
# Enmascaramos la salida de la LAN
$IPTABLES -t nat -A POSTROUTING -s $LAN_RED -o $EXT_IF -j MASQUERADE
 
# Permitimos todas las conexiones del interfaz loopback
$IPTABLES -A INPUT  -i lo -s $LOO_RED -d $LOO_RED -j ACCEPT
$IPTABLES -A OUTPUT -o lo -s $LOO_RED -d $LOO_RED -j ACCEPT
# Permitimos el PostEnrutado de paquetes enviados localmente
$IPTABLES -t nat -A POSTROUTING -o lo -s $LOO_RED -j ACCEPT
 
# Damos acceso desde la red local
$IPTABLES -A INPUT  -s $LAN_RED -i $LAN_IF -j ACCEPT
 
# Aceptamos conexiones DNS
$IPTABLES -A INPUT  -s $ANY_RED -i $EXT_IF -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT
$IPTABLES -A OUTPUT -d $ANY_RED -o $EXT_IF -p udp -m udp --dport 53 --sport 1024:65535 -j ACCEPT
 
# Aceptamos conexiones ntpd
$IPTABLES -A INPUT  -p udp -m udp --dport 123 -i $EXT_IF -s $ANY_RED -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m udp --sport 123 -j ACCEPT
 
# Permitimos paquetes ICMP (ping, traceroute...) 
#+ con limites para evitar ataques de DoS
# Aceptamos ping y pong
#--Bloqueo de ping a mi ip externa-----------------------
#$IPTABLES -A INPUT -p icmp -i $EXT_IF -d $EXT_IP -j DROP
#---------------------------------------------------------
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 2/s -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -m limit --limit 2/s -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-reply -m limit --limit 2/s -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-reply -m limit --limit 2/s -j ACCEPT
# Aceptamos redirecciones
$IPTABLES -A INPUT -p icmp --icmp-type redirect -m limit --limit 2/s -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type redirect -m limit --limit 2/s -j ACCEPT
# Aceptamos tiempo excedido
$IPTABLES -A INPUT -p icmp --icmp-type time-exceeded -m limit --limit 2/s -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type time-exceeded -m limit --limit 2/s -j ACCEPT
# Aceptamos destino inalcanzable
$IPTABLES -A INPUT -p icmp --icmp-type destination-unreachable -m limit --limit 2/s -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type destination-unreachable -m limit --limit 2/s -j ACCEPT
 
# SSH
#$IPTABLES -A INPUT -i $LAN_IF -p tcp --dport 22 -s 10.0.0.1 -m mac --mac-source D0:17:C2:95:2A:29 -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -m tcp --sport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT
 
### Aceptamos conexiones salientes -----------------------------------------------------
 
# Permitimos cualquier salida tcp desde la propia maquina
$IPTABLES -A OUTPUT -o $EXT_IF -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# ...y conexiones entrantes relacionadas
$IPTABLES -A INPUT  -i $EXT_IF -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# Permitimos el reenvio de paquetes enviados desde la LAN
$IPTABLES -A FORWARD -i $LAN_IF -j ACCEPT
# ...y conexiones salientes relacionadas
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
 
# Permitimos el NAT de paquetes enviados desde la LAN
$IPTABLES -t nat -A PREROUTING  -i $LAN_IF -j ACCEPT
# ...y conexiones salientes relacionadas
$IPTABLES -t nat -A PREROUTING  -m state --state RELATED,ESTABLISHED -j ACCEPT
 
# Permitimos el NAT de paquetes enviados desde inet hacia la IP publica
$IPTABLES -t nat -A PREROUTING  -i $EXT_IF -d $EXT_IP -j ACCEPT
# ...y conexiones salientes relacionadas
$IPTABLES -t nat -A PREROUTING  -m state --state RELATED,ESTABLISHED -j ACCEPT
 
# Permitimos el NAT de paquetes enviados desde la IP publica hacia inet
$IPTABLES -t nat -A POSTROUTING -o $EXT_IF -s $EXT_IP -j ACCEPT
# ...y conexiones salientes relacionadas
$IPTABLES -t nat -A POSTROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT
 
# Permitimos el PostEnrutado de paquetes enviados localmente
$IPTABLES -t nat -A POSTROUTING -o $LAN_IF -s $LAN_RED -j ACCEPT
 
#--------------------------------------------------
### Restrigimos el resto
### Reiterativo: para pruebas
#$IPTABLES -A INPUT -p tcp --dport 1:65535 -j DROP
#$IPTABLES -A INPUT -p udp --dport 1:65535 -j DROP
#--------------------------------------------------
 
#--------------------------------------------------
### Reglas utilizadas en debug para detectar
#+ paquetes no tratados todavia
#+ -j LOG --log-prefix "--PR> "
#$IPTABLES -t nat -A PREROUTING  -j LOG --log-prefix "[FW - PR] "
#$IPTABLES -t nat -A POSTROUTING -j LOG --log-prefix "[FW - PO] "
#$IPTABLES -A FORWARD -j LOG --log-prefix "[FW - FW] "
#$IPTABLES -A INPUT  -j LOG --log-prefix "[FW - IN] "
#$IPTABLES -A OUTPUT -j LOG --log-prefix "[FW - OU] "
#--------------------------------------------------
echo -e "[  ${verde}OK${cierre}  ] ${blanco}IPTABLES Iniciado"
echo -e "${cyan}SYSTEMA${verde} PROTEGIDO${cierre}"
echo -e "${verde}   ------------
  |       /    |
  |      /     |
  |    \/      |
  |  -----     |
   ------------ ${cierre}"
}
stop_rules() {
echo -e "${amarillo}Deteniendo${cierre}${blanco} IPTABLES FIREWALL${cierre} ..."
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -t nat -F
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
echo -e "[  ${verde}OK${cierre}  ] ${blanco}IPTABLES Detenido"
echo -e "${cyan}SYSTEMA${cierre} ${rojo}VULNERABLE"
echo -e " ${rojo}  ------------
  |   \   /    |
  |    \ /     |
  |    / \     |
  |   /   \    |
   ------------ ${cierre}"
}
 
case "$1" in
    start)
start_rules
    ;;
 
    stop)
stop_rules
    ;;
	restart)
echo -e "${amarillo}Restarting${cierre}${blanco} IPTABLES FIREWALL ..."
stop_rules
start_rules
	;;
    *)
echo -e "${rojo}Uso:${cierre} IPTABLES ${cyan}start/stop/restart${cierre}"
    ;;
 
esac
:
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder