Administración de Servicios en Linux
Gestión de servicios en Linux: /etc/services, configuraciones comunes, update-rc.d, units y sockets systemd.
Administración de Servicios en Linux
Operational Scope & Technical Objective
Un servicio es un daemon o proceso supervisado por el init del sistema. Hay tres planos de configuración a distinguir: el registro nominal /etc/services (mapa nombre↔puerto, usado por getservbyname, no define qué corre), los archivos de configuración de cada daemon (/etc/*.conf), y el gestor de arranque — update-rc.d en el clásico SysV, systemctl con units en systemd. Sobre systemd conviene además el plano de socket activation: un unit .socket abre el socket en lugar del daemon, con un SocketMode que define qué procesos pueden conectarse. Este último punto es material de escalada cuando el modo es 0666.
High-Impact Syntax & Command Cheatsheet
Registro nominal de servicios
cat /etc/services # puerto ↔ nombre de servicio (IETF/IANA + locales)
grep 80 /etc/services # qué servicio usa nominalmente el puerto 80
Configuraciones de servicio comunes
cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/' # inventario de archivos legibles en /etc
Arranque automático (SysV, Debian)
update-rc.d ssh enable # habilita ssh en los runlevels por defecto
update-rc.d ssh disable # lo deshabilita
Estado en runtime:
service ssh status # estado vía SysV wrapper
systemctl status ssh # estado vía systemd (SSH, Apache2, etc.)
Units systemd
systemctl list-units --type=service --all # inventario de units
systemctl status <unit>
journalctl -u <unit> # logs del unit
# Ejemplo de unit de servicio
/lib/systemd/system/snapd.service
Socket activation (unit .socket)
[Socket]
ListenStream=/run/snapd.socket
ListenStream=/run/snapd-snap.socket
SocketMode=0666
SocketMode=0666 permite que cualquier proceso se conecte y hable con el socket — una superficie de ataque cuando el daemon tras el socket no valida origen.
Real-World Offensive/Defensive Scenarios
-
Reconocimiento de configuración (ofensivo): los
cat /etc/<daemon>.confde la cheatsheet permiten extraer credenciales embebidas, rutas de ejecución y bindings.ls -aRl /etc/ | awk '$1 ~ /^.*r.*/'lista archivos de configuración legibles por cualquier usuario, punto de partida para hunting de secretos. -
Socket AF_UNIX world-writable (ofensivo): un unit
.socketconSocketMode=0666acepta conexiones de cualquier proceso local. Si el daemon tras él confía en el socket, se puede interactuar directamente:nc -U /run/snapd.socket GET / HTTP/1.1 Host: 127.0.0.1 -
Escalada por servicios reiniciables (ofensivo): detectar qué archivos de
/etcson modificables y si algún servicio los lee en cada reinicio; combinado consudo -l(p.ej.sudo apache2 -f /etc/shadowen escalar-rutas) convierte un servicio reconfigurable en un vector de escalada. -
Superficie mínima (defensivo): revisar
systemctl list-units --type=serviceyjournalctlpara detectar servicios no autorizados; verificarSocketModede todos los.socketactivos y forzar0660con grupo restringido cuando el daemon no necesita acceso global.