Filtrado por dirección mac solo para accesos externos

8 envíos / 0 nuevos
Último envío
#1 Mié, 02/05/2018 - 11:01
meisok
Imagen de meisok
Desconectado/a
se unió: 02/05/18

Filtrado por dirección mac solo para accesos externos

Estado: 
[ACTIVO]

Hola a todos.
Tengo un servidor web sobre apache y debían 9 en casa, para acceder remotamente a los archivos uso SSH, tanto desde la red local como externamente, pero luego para poder acceder a la web,me gustaría restringir el acceso externo por dirección Mac, únicamente el externo. A ver si alguien me puede indicar si esto es posible con IPtables o alguna otra aplicación y orientarme un poco con este tema.
Un saludo.

Jue, 03/05/2018 - 15:03
rockyiii
Imagen de rockyiii
Desconectado/a
administrator
se unió: 11/01/16

¿Cómo tenes armada tu red ? Modem_internet -->Router/wifi-->Pc1_Server
                                                                                          -->Pc2_Cliente
                                                                                          -->Etc.

 

Sáb, 05/05/2018 - 06:08 (Responder a #2)
meisok
Imagen de meisok
Desconectado/a
se unió: 02/05/18

Hola rockyiii, gracias por responder.

El servidor lo uso para programar aplicaciones web(php, maria-db, html,lo típico) como hobby, no me dedico profesionalmente a esto, pero me gusta practicar e ir aprendiendo en mi escaso tiempo libre.

La red local es doméstica, está tras un router-modem Huawei 4g (bastante parco en opciones de configuración, el router está configurado para que los accesos desde el exterior apunten a la máquina con el servidor), tengo el servidor, un par de PC de sobremesa y varios dispositivos inalámbricos (smartphones, tv, tablet...). La idea es mantener el acceso desde la red local sin ningún tipo de restricción como hasta ahora, y cuando estoy fuera de casa poder acceder a la web para poder comprobar los cambios que he realizado en el código a través de ssh, pero que solo se pueda acceder desde mi smartphone. Si abro el puerto 80 en mi router ahora mismo, cualquiera podría acceder al servidor web, con los consiguientes riesgos de que encuentren algún fallo de programación en mi código o en la configuración del servidor, por eso he pensado que si se puede restringir el acceso exterior al puerto 80 por dirección mac solucionaría todo de un plumazo.

Dom, 06/05/2018 - 16:45
rockyiii
Imagen de rockyiii
Desconectado/a
administrator
se unió: 11/01/16

Primero hay que tener en cuenta que los proveedores de internet nos da una dirección ip dinámica, con lo cual la misma, va cambiando, por lo tanto tendrías que acceder a algún servicio que te pueda ofrecer una dirección ip estática, de lo contrario antes de salir de tu casa deberías consultar la ip que ese día te asigno tu isp.
Segundo, sobre el tema del filtrado por mac, entendería que si decides hacer esto, tanto las conexiones de tu red local como la externas tendrían que estar habilitadas por mac, ya que no creo que iptables pueda distinguir lo que es la red local de la externa, solo va a bloquear las conexiones entrantes que no provengan de x, y o z mac.

A su vez el bloqueo por mac tampoco es una gran solución ya que las direcciones mac se pueden cambiar temporalmente por software.

 

Estas son algunas sugerencias o ideas para que emplees en la seguridad de tu servidor casero, no lo tomes como algo experto ni nada.

 

* Para ssh

- Le cambies el puerto 22 por uno alto por ejemplo 2222,

- impidas que se pueda iniciar sesión como root,

- y utilices certificados para conectarte.

- Limtes el acceso a ssh a determinados usuarios

- También que instales fail2ban habilitando reglas para bloquear a cualquiera que trate de conectarse via ssh con 3 intentos fallidos. También agregaría las reglas de protección que da este programa tanto para apache (en caso que uses apache) como para la base de datos (creo que también lo cubre).

 

https://raiolanetworks.es/blog/cambiar-puerto-ssh-en-linux-centos-debian-ubuntu/
https://www.redeszone.net/seguridad-informatica/servidor-ssh-en-linux-manual-de-configuracion-para-maxima-seguridad/
https://programarivm.com/protegiendo-con-fail2ban-los-servicios-http-https-y-ssh-de-los-ataques-ddos/

 

* para apache

configurarlo para que no se comunique por el puerto 80, que lo haga por otro puerto. De esta forma para acceder a la pagina web, por ejemplo, seria: 192.158.11.23:954

También podrías hacer que se comunique por puerto http para la red local y https para la salida al exterior y solo cambiar el puerto para https

 

https://www.solvetic.com/tutoriales/article/5012-como-cambiar-puerto-http-apache-en-linux/
 

* para iptables
- Cerrar todos los puertos de entrada

Como estas dentro de una red local puede que no necesites tener una política muy agresiva de iptables y enfocarte en habilitar y proteger solo los puertos asignados para http y ssh

Este es un script que te podria ser de utilidad para que armes tus reglas para iptables, es básico y seguro en la web vas a encontrar cosas mucho mejores.

#!/bin/bash

# Dirección IP del servidor
IP="localhost"

# Vaciar todas las cadenas y contadores
iptables -F
iptables -X
iptables -Z

# Por defecto, bloquear todo en las cadenas INPUT y FORWARD
iptables -P INPUT DROP
iptables -P FORWARD DROP

# Permitir todo el tráfico saliente
iptables -P OUTPUT ACCEPT

# Permitir ping
iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT

# Permitir conexiones hacia el puerto 2222 (SSH)
iptables -A INPUT -p tcp -d $IP --sport 1024:65535 --dport 2222 -m state --state NEW -j ACCEPT

# Permitir conexiones hacia el puerto 2222 (SSH) a la dirección MAC 00:00:21:54:B5:10:A1
#iptables -A INPUT -p tcp -d $IP --dport 2222 -m mac --mac-source 00:0F:EA:91:04:07 -m state --state NEW -j ACCEPT


# Permitir conexiones hacia el puerto 80 y 954 (HTTP y HTTPS)
iptables -A INPUT -p tcp -d $IP --sport 1024:65535 --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -d $IP --sport 1024:65535 --dport 954 -m state --state NEW -j ACCEPT


# Loguear y rechazar el resto
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
iptables -A INPUT -j DROP

Para activar el filtrado por mac

....

# Permitir conexiones hacia el puerto 2222 (SSH)
#iptables -A INPUT -p tcp -d $IP --sport 1024:65535 --dport 2222 -m state --state NEW -j ACCEPT
# Permitir conexiones hacia el puerto 2222 (SSH) a la dirección MAC 00:00:21:54:B5:10:A1
iptables -A INPUT -p tcp -d $IP --dport 2222 -m mac --mac-source 00:0F:EA:91:04:07 -m state --state NEW -j ACCEPT

....

Aclaración: 954, 2222, 00:0F:EA:91:04:07 son ejemplos

Sobre el tema de poner o no el ping al servidor

https://www.redeszone.net/2017/01/12/deberia-bloquear-ping-protocolo-icmp-servidor-router/

 

Este script le das permisos de ejecución 

chmod +x myiptebles.sh

y colocarlo en /usr/local/sbin

su
mv myiptables.sh /usr/local/sbin/myiptables.sh

Para que inicie con cada arranque lo podes agregar a crontab

su
crontab -e

con el siguiente texto:

@reboot root /usr/local/sbin/myiptables.sh

 

* Router/wifi

- Asignar una determinada dirección ip a una mac de tu pc servidor.
- Abrir la entrada a los puertos (http o https) y el (shh) al exterior

Lun, 07/05/2018 - 12:14
caliban
Imagen de caliban
Conectado
moderador
se unió: 14/01/16

Al loopbac tenes que darle acceso, 

iptables -A INPUT -i lo -j ACCEPT

Yo diria que si vas a comenzar con unas reglas de denegar todo lo entrante, vas a tener qeu ser muy cuidadoso luego sobre a cuales servicios necesitas permitirle acceso.

Edito:quizá el camino mas sencillo sea configurar apache para permitir acceso con password , 

http://httpd.apache.org/docs/trunk/es/howto/auth.html

o un acceso general , o podes algo mas sencillo ponerle contraseña al acceso de determinados directorios (htaccess htpassword ) 

 

Mar, 08/05/2018 - 06:21 (Responder a #5)
meisok
Imagen de meisok
Desconectado/a
se unió: 02/05/18

Bueno, ahora toca ir viendo todo con calma e ir realizando pruebas, con esto tengo un punto de partida estupendo para saber por donde tirar.

Muchísimas gracias por la respuesta tan completa, y sobre todo por tu tiempo rockyiii, un saludo!

 

Mar, 08/05/2018 - 06:23 (Responder a #6)
meisok
Imagen de meisok
Desconectado/a
se unió: 02/05/18

Hola caliban, me parece una opción interesante a tener en cuenta, me leeré la documentación y realizaré las pruebas pertinentes, ya os contaré por qué opción me decanto finalmente y cómo lo he resuelto.

Muchas gracias por responder, un saludo!

Sáb, 19/05/2018 - 21:39 (Responder a #7)
EtHome
Imagen de EtHome
Desconectado/a
se unió: 09/04/16

Concuerdo con Rocky, pero para todos esos problemas hay soluciones muy buenas y a costo 0
Rocky te dice que los proveedores te dan Ip dinámicas, esto se soluciona con un Dominio propio apuntado a zoneedit (Cuenta gratuita) y con ddclient que refresque cada 300 segundos solucionaste el problema de que sea dinámico.

El control sobre los puestos con fail2ban solucionas control de reintentos fallidos de ataques en casi todos los servicios y te libras de los posibles DoS yo los dejo customizado por servicio y que bloquee con ban cualquier intento consecutivo, fallido de autenticar servicios a las 3 veces y bloqueo de la Ip por 5 días

rockyiii wrote:

Primero hay que tener en cuenta que los proveedores de internet nos da una dirección ip dinámica, con lo cual la misma, va cambiando, por lo tanto tendrías que acceder a algún servicio que te pueda ofrecer una dirección ip estática, de lo contrario antes de salir de tu casa deberías consultar la ip que ese día te asigno tu isp.
Segundo, sobre el tema del filtrado por mac, entendería que si decides hacer esto, tanto las conexiones de tu red local como la externas tendrían que estar habilitadas por mac, ya que no creo que iptables pueda distinguir lo que es la red local de la externa, solo va a bloquear las conexiones entrantes que no provengan de x, y o z mac.

....

 

Igual creo que no es la forma correcta, el dice que tienen un Modem router apuntando los servicios al servidor, esto es un grave error ya que si el firmware no esta actualizado y mantenido es un posible hueco de seguridad y forma de acceder a tu red saltando todas las formas de seguridad que pusimos.

En mi caso siempre paso los Cablemodem a Bridge desabilitando wifi y demas y lo controlo con el server denegando todo y colocando solo lo que voy a usar de ahi lo uso como gateway y proxy para la red interna. En el caso de ADSL XDSL tambien a Bridge y con ppp lo manejo.

En el próximos pasteo configuraciones de como lo hago