La mayoría de los Unix y Linux, cuentan
con un útil pero, en ocasiones, desconocido directorio, el cuál nos
ofrece un amigable interfáz con los procesos que corren en el sistema.
Esta capa de abstracción, se denomina “procfs” y podemos tener acceso a
ella como si de un sistema de ficheros se tratase en /proc.
La estructura de /proc, es muy simple. Si hacemos un listado del contenido de este directorio, veremos algo similar a esto:
La estructura de /proc, es muy simple. Si hacemos un listado del contenido de este directorio, veremos algo similar a esto:
En esta captura, podemos ver, por un
lado directorios asociados a los procesos identificados por un número
(el PID, o Process ID) y por otro, algunos directorios y ficheros que
hacen referencia a diferentes carácterísticas de equipo. Si nos metemos
en cualquier directorio de proceso, tendremos acceso a información
acerca de su linea de comando, memoria, PPID. En resumen, estos ficheros
y directorios que encontraremos aqui, recogen diferente información
acerca del funcionamiento del programa. Esta información, en su mayoría,
se almacena en formato ascii y es accesible mediante el uso del comando
cat.
Por ejemplo, si queremos conocer con qué linea de comando se ha lanzado el proceso 34223, únicamente deberemos ejecutar:
$ cat /proc/34223/cmdlinesshd: usuario1@pts/0Además, dentro de profs,
podemos encontrar muchísima información sobre la configuración del
hardware de nuestro equipo:
- Tipo y características de la/s CPU/s: $ cat /proc/cpuinfo
- Modulos de cifrado activos: $ cat /proc/crypto
- Claves almacenadas/cacheadas por el kernel: $ cat /proc/keys
- Versión del kernel y compilador: $ cat /proc/version
También resulta muy interesante subdirectorio /proc/sys. Desde el mismo, es posible ver y modificar, algunos parámetros de la configuración del equipo, y si vamos a /proc/sys/net, podemos hacer lo propio con la red. Por ejemplo, para ver o modificar el estado del IPForwarding entre los interfaces, tan solo debemos ejecutar:
$ cat /proc/sys/net/ipv4/ip_forward
Para activarlo deberemos escribir (como root)
# echo 1 > /proc/sys/net/ipv4/ip_forward
Y simplemente, para desactivarlo:
# echo 0 > /proc/sys/net/ipv4/ip_forward
Otros parámetros que podemos fijar u observar desde este directorio son:
/proc/sys/net/ipv4/…
- icmp_ratelimit e icmp_ratemask: Permiten controlar el rátio de generación de paquetes ICMP, por red.
- icmp_echo_ignore_all: Activado, desactiva el envío de respuestas a ping por parte del sistema.
- icmp_echo_ignore_broadcasts: Activado, ignora cualquier respuesta a ping que tenga como origen una dirección de broadcast (muy util en determinadas redes)
- ip_conntrack_max: Fija el número de conexiones que el sistema puede tener en su tabla de conexiones. Por defecto, está fijado a 65536. En caso de que nuestro servidor tenga muchas conexiones concurrentes, se puede elevar o pensar en jugar con otros valores como el tiempo de conexión o el uso de balanceo de carga. Un numero elevado de conexiones, se diagnostica facilmente cuando empezamos a recibir en nuestro syslog mensajes del tipo “ip_conntrack: table full, dropping packet”. El número de conexiones concurrentes actual, podemos verlo en /proc/net/ip_conntrack.
- ip_default_ttl: Fija el TTL de los paquetes IP
- ip_local_port_range: Limita (o amplia) el rango de puertos usados como puertos de origen en las conexiones locales.
- tcp_rfc1337: Activado, permite cortar conexiones en un tiempo menor del
- tcp_syncookies: Activado, aumenta la seguridad frente a spoofing ciego, ya que activa en el kernel la utilización de un número de secuencia basado en la dirección de IP de origen, IP destino, número de puerto y el tiempo que hace que el paquete fué enviado.
Si no queremos hacer uso de este sistema, también podemos acceder o fijar estos valores mediante el comando “sysctl”. Con él, es posible acceder a todo lo que hemos visto en el apartado anterior, así como guardar la configuración en el fichero /etc/sysctl.conf.
Si quereis profundizar sobre este útil
sistema de ficheros virtual, podeis visitar el correspondiente artículo
en la Wikipedia (inglés):
- http://en.wikipedia.org/wiki/Procfs
- Sustituto de procfs, sysfs, incluido ya con el kernel 2.6 de Linux
Saludos,
Fuente:
http://www.flu-project.com/
No hay comentarios:
Publicar un comentario