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
[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:
Type=simple
Ejecuto el servicio en segundo plano:
ExecStart=/etc/sshield/sshield.sh
Especifico el script para detener el servicio:
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.
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?