Home Hacking y Seguridad Protecciones Seguridad en /proc I

Ultimos Mensajes del Foro

Manual Aleatorio

Manual practico de netcat / nc sobre windows
Un texto que nos explica entre otras cosas, como transferir ficheros, escanear puertos, hacer un "chat", conectar al irc y algunas otras cosas usando netcat.
Leer más...
Seguridad en /proc I Imprimir E-mail
Hacking y Seguridad - Protecciones
/proc es un pseudo-sistema de archivos, ya que en realidad ni l ni ninguno de los archivos y directorios contenidos en su interior existen realmente. /proc nos facilita una interfaz para acceder y, en algunos casos, modificar, algunas estructuras de datos del ncleo del sistema operativo.

Texto Completo:
                                    [logo]                                                                
                                                                                                          
                              Seguridad en /proc                                                          
                                                                                                          
                                                                                                          
Opciones de seguridad en Linux a través de /proc (I)                                                      
                                                                                                          
                                                                                                          
----------------------------------------------------                                                      
                                                                                                          
Diversos parámetros de seguridad de las máquinas que ejecuten Linux pueden ser                            
controlados a través del sistema de archivos virtual /proc.                                               
                                                                                                          
/proc es un pseudo-sistema de archivos, ya que en realidad ni él ni ninguno de                            
los archivos y directorios contenidos en su interior existen realmente. /proc                             
nos facilita una interfaz para acceder y, en algunos casos, modificar, algunas                            
estructuras de datos del núcleo del sistema operativo.                                                    
                                                                                                          
/proc está disponible en el sistema operativo Linux cuando el núcleo se ha                                
compilado con la opción CONFIG_PROC_FS=Y. También deberemos seleccionar la                                
opción CONFIG_SYSCTL=Y para poder modificar el valor de determinados                                      
parámetros, como veremos más adelante. La mayoría de distribuciones incluyen                              
núcleos compilados con esta opción y, como regla general, es aconsejable                                  
seleccionarla en el momento de recompilar el núcleo.                                                      
                                                                                                          
El sistema de archivos /proc puede montarse automáticamente en el momento de                              
iniciar el sistema (si así se indica en el archivo /etc/fstab). En el caso de                             
que sea necesario montarlo manualmente, debe utilizarse la siguiente orden:                               
                                                                                                          
mount -t proc proc /proc                                                                                  
                                                                                                          
Es aconsejable que /proc sea montado automáticamente al sistema y que el núcleo                           
siempre se compile para dar soporte a este pseudo- sistema de archivos. En caso                           
de no disponer del soporte, muchos programas de utilidad no funcionarán y no                              
podremos modificar en tiempo de ejecución algunos parámetros del núcleo del                               
sistema operativo. Muchos de estos parámetros que nos pueden interesar                                    
modificar son muy importantes desde el punto de vista de seguridad.                                       
                                                                                                          
Contenido de /proc:                                                                                       
                                                                                                          
Dentro del directorio /proc encontramos dos tipos básicos de información. En                              
primer lugar, para cada proceso activo existe un directorio. Dentro del                                   
directorio de cada proceso hay diversos archivos así como un subdirectorio con                            
información específica del proceso (parámetros pasado en la línea de órdenes,                             
enlace al directorio actual del proceso, las variables de entorno dentro del                              
contexto del proceso, los descriptores de los archivos abiertos en el proceso,                            
mapa e información acerca de la utilización de la memoria...).                                            
                                                                                                          
Adicionalmente, existen una serie de directorios con información acerca de los                            
diferentes módulos del sistema operativo. En el archivo proc.txt (disponible en                           
el directorio Documentation/filesystems del código fuente del núcleo de Linux)                            
hay información detallada de todo lo que podemos encontrar dentro de /proc.                               
Otro documento de interés es ip-sysctl.txt, disponible en el directorio                                   
Documentation/networking del código fuente del núcleo de Linux.                                           
                                                                                                          
No todos los parámetros existentes en /proc son modificables directamente por                             
el usuario. De hecho, la mayoría son valores de sólo lectura y otros son mucho                            
mejor controlados por el núcleo o mediante la utilización de los diversos                                 
mandatos y herramientas existentes en el sistema.                                                         
                                                                                                          
/proc/sys/net/ipv4                                                                                        
                                                                                                          
Dentro de este directorio disponemos de una serie de archivos con los valores y                           
parámetros para el protocolo IPv4. Se trata de los valores directamente                                   
utilizados por el núcleo del sistema operativo en las comunicaciones TCP/IP                               
basadas en el protocolo IPv4.                                                                             
                                                                                                          
Para determinar el valor de uno de estos parámetros lo único que tenemos que                              
hacer es mirar su contenido. Por ejemplo:                                                                 
                                                                                                          
$cat /proc/sys/net/ipv4/icmp_echo_ignore_all                                                              
0                                                                                                         
                                                                                                          
nos muestra que actualmente el sistema operativo tiene asignado el valor 0                                
(desactivado) al parámetro ICMP_ECHO_IGNORE_ALL.                                                          
                                                                                                          
El usuario root del sistema tiene el privilegio de modificar el valor de estas                            
variables:                                                                                                
                                                                                                          
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all                                                        
# cat /proc/sys/net/ipv4/icmp_echo_ignore_all                                                             
1                                                                                                         
                                                                                                          
Otra forma de configurar los valores es utilizando la utilidad sysctl.                                    
Utilizando el ejemplo anterior, para determinar el valor debemos                                          
utilizar:                                                                                                 
                                                                                                          
$ sysctl net.ipv4.icmp_echo_ignore_all                                                                    
net.ipv4.icmp_echo_ignore_all = 0                                                                         
                                                                                                          
y para establecer el valor:                                                                               
                                                                                                          
# sysctl -w net.ipv4.icmp_echo_ignore_all=1                                                               
net.ipv4.icmp_echo_ignore_all = 0                                                                         
                                                                                                          
Ambas formas son equivalentes y podemos utilizar aquella con la que nos                                   
encontremos más cómodos.                                                                                  
                                                                                                          
Una última forma de modificar los valores de los parámetros, de forma que estos                           
se mantengan incluso después de reiniciar el sistema es a través del archivo /                            
etc/sysctl.conf. Podemos obtener más detalles del formato de este archivo                                 
ejecutando                                                                                                
                                                                                                          
man systcl.conf                                                                                           
                                                                                                          
Si se modifica el archivo /etc/sysctl.conf, los parámetros sólo se activarán la                           
próxima vez que se reinicie la máquina o bien después de reiniciar el soporte                             
de red, ejectuando                                                                                        
                                                                                                          
/etc/rc.d/init.d/network restart                                                                          
                                                                                                          
Continuamos con la descripción de los parámetros de seguridad de las máquinas                             
que ejecutan Linux con el sistema de archivos virtual /proc. Los parámetros que                           
vamos a ver a continuación muestran como podemos controlar la forma en que un                             
sistema actúa en determinadas circunstancias. Estos parámetros nos van a ayudar                           
a fortalecer la seguridad del sistema operativo. Estos parámetros son un                                  
complemento a las medidas de protección perimétricas, como pueden ser los                                 
cortafuegos.                                                                                              
                                                                                                          
Mediante /proc no sólo podemos cambiar estos parámetros. Hay otras muchas cosas                           
interesantes que podemos hacer, como por ejemplo mejorar el rendimiento del                               
sistema de archivos, modificar la forma en que el sistema gestiona la memoria                             
virtual, incrementar el número máximo de archivos abiertos de forma simultánea                            
y otros cambios. Los lectoresinteresados pueden encontrar información al                                  
respecto en la documentación que acompaña al código fuente del núcleo de Linux.                           
                                                                                                          
Todos los mandatos que indicamos a continuación deben ser ejecutados por el                               
usuario root.                                                                                             
                                                                                                          
                                                                                                          
Control del protocolo ICMP                                                                                
                                                                                                          
- -Ignorar las peticiones de repuesta a ping                                                              
                                                                                                          
Dependiendo de la configuración de la red, puede ser interesante configurar el                            
sistema para que éste no responda cuando recibe un ping (mensaje ECHO del                                 
protocolo ICMP). De esta forma, puede ser un poco más difícil que un atacante                             
descubra si el sistema está conectado a la red.                                                           
                                                                                                          
Para desactivar las respuesta de forma temporal:                                                          
                                                                                                          
# sysctl -w net.ipv4.icmp_echo_ignore_all=1                                                               
                                                                                                          
y para desactivarla de forma permanente, editar el archivo /etc/sysctl.conf y                             
añadir las líneas                                                                                         
                                                                                                          
net.ipv4.icmp_echo_ignore_all = 1                                                                         
                                                                                                          
(Nota= En los siguientes parámetros, si se desea realizar el cambio de forma                              
permanente deberá modificarse igualmente el archivo /etc/sysctl.conf, tal como                            
hemos hecho para este parámetro).                                                                         
                                                                                                          
                                                                                                          
No atender a las peticiones enviadas mediante broadcast                                                   
                                                                                                          
Cuando una máquina envía un paquete a la dirección de broadcast (por ejemplo,                             
192.168.1.255), éste es entregado a todas las máquinas existentes en la red                               
local. A continuación, todas las máquinas deben enviar un mensaje ECHO del                                
protocolo ICMP. Esto puede provocar una congestión de la red, a la vez que                                
permite determinar que sistemas están activos en la red.                                                  
                                                                                                          
Para desactivar la recepción de paquetes enviados a la dirección de broadcast:                            
                                                                                                          
# sysctl -w net.ipv4.icmp_echo_ignore_broadcasts = 1                                                      
                                                                                                          
                                                                                                          
Protección ante mensajes de error mal formateados                                                         
                                                                                                          
Es posible que una red se transmitan mensajes de error mal formateados. Para                              
evitar que éstos sean procesados por el sistema:                                                          
                                                                                                          
# sysctl -w net.ipv4.icmp_ignore_bogus_error_responses = 1                                                
                                                                                                          
                                                                                                          
Deshabilitar la aceptación de redirecciones                                                               
                                                                                                          
Cuando el ordenador utiliza una ruta extinta o no-óptima para enviar un paquete                           
a un destino particular, los routers por donde circula el paquete envían al                               
origen un mensaje de redirección del protocolo ICMP para informar de la ruta                              
correcta a utilizar en el futuro.                                                                         
                                                                                                          
Si un atacante tiene la capacidad de enviar mensajes de redirección puede                                 
modificar las tablas de direccionamiento del ordenador, haciendo por ejemplo                              
que todo el tráfico fluya a través de una vía concreta.                                                   
                                                                                                          
Para evitar el proceso de estos mensajes en el sistema:                                                   
                                                                                                          
# sysctl -w net.ipv4.conf.all.accept_redirects = 0                                                        
# sysctl -w net.ipv4.conf.default.accept_redirects = 0                                                    
                                                                                                          
                                                                                                          
Protección contra ataques DoS de inundación SYN                                                           
                                                                                                          
El ataque de denegación de servicio (DoS) por inundación SYN ("SYN Flood")                                
consigue consumir todos los recursos de la máquina, haciendo que sea necesario                            
reiniciarla para volver a funcionar con normalidad.                                                       
                                                                                                          
Cada vez que se realiza una conexión TCP/IP existe una negociación de tres                                
pasos:                                                                                                    
                                                                                                          
1. El cliente envía un paquete (paquete 1) al servidor con el bit SYN activado                            
y permanece a la escucha.                                                                                 
2. El servidor responde al cliente con un paquete de confirmación (paquete 2) y                           
permanece a la escucha.                                                                                   
3. El cliente envía un tercer paquete (paquete 3) que consolida la conexión.                              
                                                                                                          
                                                                                                          
La información recibida en el paquete 1 se conserva dentro de una cola para que                           
pueda ser comparada con los datos recibidos en el paquete 3 y dar por                                     
establecida la conexión. Esta cola es de un tamaño limitado y tiene un tiempo                             
de latencia muy elevado.                                                                                  
                                                                                                          
                                                                                                          
El ataque de inundación SYN consiste en llenar esa cola, mediante el envío de                             
un gran número de paquetes 1 y nunca respondiendo con un paquete 3. En el                                 
momento en que se llena la cola, el sistema es incapaz de atender cualquier                               
otra petición de conexión que reciba.                                                                     
                                                                                                          
La protección contra este ataque consiste en añadir información en el paquete                             
2, de forma que no sea necesaria conservar en el servidor ningún dato sobre el                            
cliente.                                                                                                  
                                                                                                          
Para activar esta protección:                                                                             
                                                                                                          
# sysctl -w net.ipv4.tcp_syncookies = 1                                                                   
                                                                                                          
Con este valor, el sistema utilizará el método de incluir la información en el                            
paquete 2 siempre que la cola de paquetes por procesar esté saturada.                                     
                                                                                                          
                                                                                                          
Protección contra direcciones IP no válidas                                                               
                                                                                                          
Esta protección permite que la máquina no pueda utilizarse para el envío de                               
paquetes con direcciones IP no válidas. Este tipo de paquetes son habitualmente                           
enviados cuando la máquina está intentando realizar una acción potencialmente                             
ilegítima, como puede ser la suplantación de una conexión o el envío de                                   
paquetes en un ataque de denegación de servicio.                                                          
Para activar esta protección:                                                                             
                                                                                                          
# sysctl -w net.ipv4.conf.all.rp_filter = 2                                                               
# sysctl -w net.ipv4.conf.default.rp_filter = 2                                                           
                                                                                                          
El valor de los parámetros puede ser 0 (valor por omisión, no realizar ninguna                            
comprobación), 1 (rechazar únicamente las suplantaciones                                                  
evidentes) y 2 (realizar una comprobación exhaustiva). Aconsejamos seleccionar                            
la opción de comprobación exhaustiva.                                                                     
                                                                                                          
Esta opción no debe utilizarse en aquellos sistemas que actúen como cortafuegos                           
o routers.                                                                                                
                                                                                                          
                                                                                                          
Redireccionamiento IP                                                                                     
                                                                                                          
El redireccionamiento IP es que en un sistema con diversos interfaces activos,                            
se acepten paquetes en un interfaz con destino al otro. Si la opción de                                   
rediccionamiento está activa, la máquina podrá actuar como un router para el                              
tráfico entre las redes existentes de cada uno de los interfaces.                                         
                                                                                                          
Únicamente aquellos sistemas que actúan como cortafuegos o routers o bien en                              
circunstancias muy especiales deberían tener esta opción activa.                                          
                                                                                                          
Para verificar que se encuentra desactivada:                                                              
                                                                                                          
# sysctl -w net.ipv4.ip_forward = 0                                                                       
                                                                                                          
Tal como hemos indicado anteriormente, en caso de activar con el valor 1 esta                             
opción, también deberemos modificar el valor de net.ip4.conf.all.rp_filter y                              
net.ipv4.conf.default.rp_filter.                                                                          
                                                                                                          
                                                                                                          
Control de rutas                                                                                          
                                                                                                          
Habitualmente un sistema no tiene ningún control sobre la ruta utilizada por                              
los paquetes en su camino hacia su destino. El protocolo TCP/IP permite                                   
establecer la ruta exacta a seguir. Excepto en circunstancias muy especiales,                             
este soporte deberá ser desactivado para evitar que un atacante pueda utilizar                            
un sistema concreto como paso para saltarse las                                                           
protecciones establecidas en el tráfico.                                                                  
                                                                                                          
Para desactivar esta opción:                                                                              
                                                                                                          
# sysctl -w net.ipv4.conf.all.accept_source_route = 0                                                     
# sysctl -w net.ipv4.conf.default.accept_source_route = 0                                                 
                                                                                                          
                                                                                                          
Registro de actividades sospechosas                                                                       
                                                                                                          
Un último valor de interés nos permite registrar en los archivos de actividad                             
del sistema aquellas situaciones potencialmente sospechosas:                                              
                                                                                                          
                                                                                                          
intento de envío de paquetes con dirección no válida, paquetes con cambio de                              
rutas y otras situaciones similares.                                                                      
                                                                                                          
Se trata de una serie de situaciones que en un funcionamiento normal de la red                            
no pueden producirse en ninguna circunstancia. Un ejemplo puede ser la                                    
recepción de un paquete a través de un interfaz Ethernet con dirección origen                             
igual a 127.0.0.1                                                                                         
                                                                                                          
Para activar el registro de esta actividad:                                                               
                                                                                                          
# sysctl -w net.ipv4.conf.all.log_martians = 1                                                            
# sysctl -w net.ipv4.conf.default.log_martians = 1