Foro de elhacker.net

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: Drakaris en 4 Febrero 2020, 23:52 pm



Título: Porque al detener un servicio systemctl, el estatus me da "failed"?
Publicado por: Drakaris en 4 Febrero 2020, 23:52 pm
Hola, estoy haciendo un servicio linux,sobre prevención de ataques de fuerza bruta por ssh. Lo tengo todo finalizado.

Solamente me hace falta crear el servicio y un script para añadirlo en /etc/init.d/ y configurarlo (/etc/rc?.d/) para que al inicar el equipo, se inicie.

Creo el servicio, creando un archivo con extension .service en /etc/systemd/system/sshield.service

Código:
[Unit]
Description=Service for protect attacks of brute force ssh's

[Service]
Type=simple
ExecStart=/etc/sshield/sshield.sh
ExecStop=/etc/sshield/sshield.sh stop
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target

Le especifico que el tipo de proceso es en segundo plano:
Código:
Type=simple
Ejecuto el servicio en segundo plano:
Código:
ExecStart=/etc/sshield/sshield.sh
Especifico el script para detener el servicio:
Código:
ExecStop=/etc/sshield/sshield.sh stop

el problema esta en la detención del servicio, le especifico el mismo script pero pasandole un argumento "stop".

En el script sshield.sh, hay un condicional filtrando el argumento y si existe cuyo argumento, matará el proceso.
Código:
if [[ $1 == "stop" ]];then
        kill -9 $$
fi

El problema que creo que es, es que estoy matando cuyo proceso y el systemctl al ver que el proceso fue detenido por la señal SIGKILL pues lo detecta como "failed" cuando se hace un status (systemctl status sshield)
IMAGEN: https://drive.google.com/file/d/1i0QVUjnFRzL3nlGjLqs1khXANPZowV_b/view?usp=sharing

Normalmente que señal se le envia a un servicio para detenerlo?

Gracias

Y. Este método para detener el servicio, se consideraría correcto?