Compare commits

..

No commits in common. "master" and "V1.9" have entirely different histories.
master ... V1.9

27 changed files with 141 additions and 109 deletions

View File

@ -6,7 +6,7 @@ MoniThor is a simple monitoring tools in bash.
You can use it with netcat or cryptcat You can use it with netcat or cryptcat
You can see result on the client from a web page (self hosted python3 web server) You can see result on the client from a web page (self hosted python web server)
## Server Configuration ## Server Configuration
@ -160,7 +160,7 @@ sudo /etc/init.d/monithor-c start/stop
### WEB ### WEB
The client start a python3 sumple http server on localhost on `WebPort` The client start a python sumple http server on localhost on `WebPort`
``` ```
/usr/local/bin/monithor-client.d/MoniThorWebServer /usr/local/bin/monithor-client.d/MoniThorWebServer

Binary file not shown.

View File

@ -1,15 +1,28 @@
--- ---
title: monithor-client Title: MONITHOR-CLIENT
section: 1 section: 1
author: Guillaume Astier Ruiz header: Serveur bash de monitoring
date: 20220320 footer: monithor-server 1.7
... date: January 13, 2022
---
# SYNOPSIS
NAME
=====
** monithor-client ** - service
SYNOPSIS
=====
`/usr/local/bin/monithor-client [start/stop]`
`/etc/init.d/monithor-c [start/stop]` `/etc/init.d/monithor-c [start/stop]`
# DESCRIPTION
DESCRIPTION
=====
monithor-client(1) permet de surveiller votre système d'information monithor-client(1) permet de surveiller votre système d'information
@ -17,9 +30,10 @@ monithor-client(1) permet de surveiller votre système d'information
- il peut aussi utiliser cryptcat (chiffré) - il peut aussi utiliser cryptcat (chiffré)
- un serveur web en python3 est lancé sur votre machine de monitoring - un serveur web en python est lancé sur votre machine de monitoring
# INIT.D INIT.D
======
le service peut être démarré et arrêté via system V le service peut être démarré et arrêté via system V
@ -29,14 +43,17 @@ le service peut être démarré et arrêté via system V
- Arrêt - Arrêt
`/etc/init.d/monithor-c stop` `/etc/init.d/monithor-c start`
# CONFIGURATION SERVICE CONFIGURATION SERVICE
=====
- Le fichier responsable de la gestion IP/PORT est : service.cfg - Le fichier responsable de la gestion IP/PORT est : service.cfg
`$ cat etc/monithor-client/service.cfg ` `$ cat etc/monithor-client/service.cfg `
`RemoteIp=10.10.10.3:1666 `
`LocalPassword='Evil@MonitoR-666'` `LocalPassword='Evil@MonitoR-666'`
`Crypted=no` `Crypted=no`
@ -47,6 +64,8 @@ le service peut être démarré et arrêté via system V
`WebPort=80` `WebPort=80`
* RemoteIp : correspond au couple adresse IP/Port de l'interface réseau utilisée
* LocalPassword : correspond au mot de passe utilisé pour chiffré la connexion si Crypted est à "yes" * LocalPassword : correspond au mot de passe utilisé pour chiffré la connexion si Crypted est à "yes"
* Crypted : si la valeur est à "yes" le binnaire crypcat est utilisé, si non netcat est utilisé * Crypted : si la valeur est à "yes" le binnaire crypcat est utilisé, si non netcat est utilisé
@ -55,9 +74,10 @@ le service peut être démarré et arrêté via system V
* TimeOut : correspond à la valeur en seconde (float) du temps maximal d'éxécution de chaque sonde * TimeOut : correspond à la valeur en seconde (float) du temps maximal d'éxécution de chaque sonde
* WebPort : correpond au port utilisé pour lancer le serveur web python3 * WebPort : correpond au port utilisé pour lancer le serveur web python
# CONFIGURATION SONDE CONFIGURATION SONDE
=====
- La configuration des sondes est stocké dans le répertoires : - La configuration des sondes est stocké dans le répertoires :

Binary file not shown.

View File

@ -1,18 +1,28 @@
--- ---
title: monithor-server Title: MONITHOR-SERVER
section: 1 section: 1
author: Guillaume Astier Ruiz header: Serveur bash de monitoring
date: 20220320 footer: monithor-server 1.7
... date: January 13, 2022
---
# SYNOPSIS
`/usr/local/bin/monithor-d [start/stop]`
`/etc/init.d/monithor-d [start/stop]`
# DESCRIPTION
NAME
=====
** monithor-server ** - service
SYNOPSIS
======
`/usr/local/bin/monithor-server [start/stop]`
`/etc/init.d/monithor-c [start/stop]`
DESCRIPTION
=====
monithor-server(1) permet d'accépter des requêtes venant d'un instance monithor-client monithor-server(1) permet d'accépter des requêtes venant d'un instance monithor-client
@ -26,17 +36,18 @@ le service peut être démarré et arrêté via system V
- Démarrage - Démarrage
`/etc/init.d/monithor-d start` `/etc/init.d/monithor-c start`
- Arrêt - Arrêt
`/etc/init.d/monithor-d stop` `/etc/init.d/monithor-c start`
# CONFIGURATION SERVICE CONFIGURATION SERVICE
=====
- Le fichier responsable de la gestion IP/PORT est : service.cfg - Le fichier responsable de la gestion IP/PORT est : service.cfg
`RemoteIp=10.10.10.4` `LocalIp=10.10.10.4`
`LocalPort=1666` `LocalPort=1666`
@ -44,7 +55,7 @@ le service peut être démarré et arrêté via system V
`LocalPassword='Evil@MonitoR-666'` `LocalPassword='Evil@MonitoR-666'`
* RemoteIp : correspond à l'adresse IP de l'interface réseau en écoute du client de monitoring * LocalIp : correspond à l'adresse IP de l'interface réseau en écoute
* LocalPort : correspond au port de communication du client monithor * LocalPort : correspond au port de communication du client monithor
@ -52,7 +63,8 @@ le service peut être démarré et arrêté via system V
* Crypted : si la valeur est à "yes" le binnaire crypcat est utilisé, si non netcat est utilisé * Crypted : si la valeur est à "yes" le binnaire crypcat est utilisé, si non netcat est utilisé
# CONFIGURATION SONDE CONFIGURATION SONDE
=====
- La configuration des sondes est stocké dans le répertoires : - La configuration des sondes est stocké dans le répertoires :
@ -66,13 +78,15 @@ Chaque sonde est composé de cette manière :
* SCRIPT : Script éxecuté sur l'instance avec le(s) argument(s) reçu(s) de monithor client * SCRIPT : Script éxecuté sur l'instance avec le(s) argument(s) reçu(s) de monithor client
# SCRIPT SCRIPT
=======
les scripts sont tous stocké dans le répertoire : les scripts sont tous stocké dans le répertoire :
/usr/local/bin/monithor-server.d/ /usr/local/bin/monithor-server.d/
# Exemple Exemple
======
* Configuration server : * Configuration server :
@ -82,9 +96,9 @@ les scripts sont tous stocké dans le répertoire :
* Configuration client : * Configuration client :
`$ cat /etc/monithor-client/etc/monithor-client/conf/sample.cfg `$ cat /etc/monithor-client/etc/monithor-client/conf/Card_10.10.10.3-1666.cfg`
`#10.10.10.3:1666#part#/home/isen|50|80` `10.10.10.3:1666#part#/home/isen|50|80`
* Explication * Explication
@ -98,8 +112,6 @@ SERVEUR exécute : /usr/local/bin/monithor-server.d/part-space.sh /home/isen 50
SERVEUR renvoie les valeur récupéré à CLIENT SERVEUR renvoie les valeur récupéré à CLIENT
Les lignes commençant par '#' sont à supprimer ou à décommenter

View File

@ -25,15 +25,12 @@ CheckDep() {
GitVersion() { GitVersion() {
LastTag=$(git tag | sed "s/^V//g" | cut -d"-" -f1 | sort -n -k2 -t. | tail -n1) LastTag=$(git tag | sed "s/^V//g" | cut -d"-" -f1 | sort | tail -n1)
NewTag=${LastTag}-rebuild NewTag=${LastTag}-rebuild
} }
CpArchName() { CpArchName() {
cp -Rf monithor-${1} /tmp/monithor-${1}_${2}_all
rm -Rf /tmp/monithor-*
cp -Rf ${Wai}/monithor-${1} /tmp/monithor-${1}_${2}_all
} }
@ -49,7 +46,6 @@ BuildDeb(){
[[ $Dist == "ubuntu" ]] && Compress=' -Z gzip -S fixed ' [[ $Dist == "ubuntu" ]] && Compress=' -Z gzip -S fixed '
dpkg-deb ${Compress} --build --root-owner-group monithor-${1}_${2}_all &> /dev/null dpkg-deb ${Compress} --build --root-owner-group monithor-${1}_${2}_all &> /dev/null
[[ "$?" -eq "0" ]] && echo "OK" || echo "FAILED" [[ "$?" -eq "0" ]] && echo "OK" || echo "FAILED"
cp monithor-*deb ${Wai}/build
} }
@ -61,10 +57,18 @@ CleanTemp() {
ManPage() { ManPage() {
mkdir -p /tmp/monithor-${1}_${2}_all/usr/share/man/man1/ if [[ $2 == "create" ]]
then
pandoc -s -t man ${Wai}/doc/monithor-${1}.md -o /tmp/monithor-${1}_${2}_all/usr/share/man/man1/monithor-${1}.1 pandoc -s -t man ${Wai}/doc/monithor-${1}.md -o ${Wai}/doc/monithor-${1}.1
gzip /tmp/monithor-${1}_${2}_all/usr/share/man/man1/monithor-${1}.1 [[ -f ${Wai}/doc/monithor-${1}.1.gz ]] && rm -f ${Wai}/doc/monithor-${1}.1.gz
gzip ${Wai}/doc/monithor-${1}.1
cp ${Wai}/doc/monithor-${1}.1.gz ${Wai}/monithor-${1}/usr/local/man/fr/man1/
fi
if [[ $2 == "delete" ]]
then
rm ${Wai}/monithor-${1}/usr/local/man/fr/man1/*
rm ${Wai}/doc/monithor-${1}.1.gz
fi
} }
[[ ! -z $1 ]] && usage [[ ! -z $1 ]] && usage
@ -73,11 +77,13 @@ CheckDep
GitVersion GitVersion
CpArchName server $NewTag CpArchName server $NewTag
SedControl server $NewTag
ManPage server $NewTag
BuildDeb server $NewTag
CpArchName client $NewTag CpArchName client $NewTag
SedControl server $NewTag
SedControl client $NewTag SedControl client $NewTag
ManPage client ${NewTag} ManPage client create
ManPage server create
BuildDeb client $NewTag BuildDeb client $NewTag
BuildDeb server $NewTag
#ManPage client delete
#ManPage server delete
CleanTemp

View File

@ -1,6 +1,6 @@
Package: monithor-client Package: monithor-client
Version: 1.0 Version: 1.0
Architecture: all Architecture: all
Dependsd:netcat,cryptcat,screen,python3,netcat,cryptcat,elinks Dependsd:netcat,cryptcat,screen,python,netcat,cryptcat,elinks
Maintainer: Guillaume Astier <guillaume@gastier.net> Maintainer: Guillaume Astier <guillaume@gastier.net>
Description: monithor client (with simple http server python3) Description: monithor client (with simple http server python)

View File

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
echo "Update man page" echo "Update man page"
mkdir /var/cache/man/oldlocal/fr -p
mandb 2>&1 > /dev/null mandb 2>&1 > /dev/null
echo "Fin d'installation" echo "Fin d'installation"

View File

@ -1,8 +1,7 @@
#!/bin/bash #!/bin/bash
echo "Update man page" echo "Update man page"
#mandb 2>&1 > /dev/null mandb 2>&1 > /dev/null
echo "Fin d'installation" echo "Fin d'installation"
mkdir /var/cache/man/oldlocal/fr -p

View File

@ -4,7 +4,7 @@
# Provides: monithor-c # Provides: monithor-c
# Default-Start: 2 3 4 5 # Default-Start: 2 3 4 5
# Default-Stop: # Default-Stop:
# Short-Description: MoniThor client # Short-Description: MoniThor Server
### END INIT INFO ### END INIT INFO
set -e set -e
@ -21,20 +21,15 @@ case "$1" in
logger "monithor-client is running ..." logger "monithor-client is running ..."
exit exit
else else
logger "Starting MoniThor client " logger "Starting MoniThor Server"
/usr/local/bin/monithor-client start /usr/local/bin/monithor-client start
fi fi
;; ;;
stop) stop)
logger "Stoping MoniThor client " "monithor-c" || true logger "Stoping MoniThor server" "monithor-c" || true
/usr/local/bin/monithor-client stop /usr/local/bin/monithor-client stop
;; ;;
status)
logger "status MoniThor client " "monithor-c" || true
[ $(ps axf| grep MoniThor | grep SCREEN | wc -l) -gt 1 ] && echo "monithor-c is running" || echo "montihor-c is dead"
;;
*) *)
echo "Usage: /etc/init.d/monithor-c {start|stop|status}" || true echo "Usage: /etc/init.d/monithor-c {start|stop|status}" || true
exit 1 exit 1

View File

@ -0,0 +1,3 @@
10.10.10.3:1666#file#/tmp/test
10.10.10.3:1666#part#/home/isen|50|80
10.10.10.3:1666#process#sshd

View File

@ -0,0 +1,3 @@
10.10.10.4:1666#file#/tmp/test
10.10.10.4:1666#part#/home/isen|50|80
10.10.10.4:1666#process#sshd

View File

@ -1,4 +0,0 @@
#IP:PORT#SONDE#ARGUMENT
#Ex :
#10.10.10.3:1666#part#/home/isen|50|80

View File

@ -1,3 +1,4 @@
RemoteIp=10.10.10.3:1666
LocalPassword='Evil@MonitoR-666' LocalPassword='Evil@MonitoR-666'
Crypted=no Crypted=no
Rotation=1 Rotation=1

View File

@ -0,0 +1,8 @@
10.10.10.3:1666#file#/tmp/coucou
10.10.10.3:1666#file#/tmp/nop
10.10.10.3:1666#file#
10.10.10.3:1666#NotRealSondeName#reboot
10.10.10.4:1666#file#/tmp/coucou
10.10.10.4:1666#file#/tmp/nop
10.10.10.4:1666#file#
10.10.10.4:1666#NotRealSondeName#reboot

View File

@ -1,10 +1,12 @@
#!/bin/bash #!/bin/bash
source /etc/monithor-client/service.cfg source /etc/monithor-client/service.cfg
Ip=$(echo $RemoteIp| cut -d":" -f1)
Exit () { Exit () {
[[ "$1" == "root" ]] && echo "You have to be root ..." [[ "$1" == "root" ]] && echo "You have to be root ..."
[[ "$1" == "Config" ]] && echo "Ip configuration will failed"
exit exit
} }
@ -14,13 +16,15 @@ if [[ $(id -u) != "0" ]]
Exit root Exit root
fi fi
[[ ! -z $(ifconfig | grep inet | awk '{print $2}' | grep $Ip) ]] && Exit Config
if [[ "$1" == "start" ]] if [[ "$1" == "start" ]]
then then
[[ -f /tmp/endmonitor ]] && rm -f /tmp/endmonitor [[ -f /tmp/endmonitor ]] && rm -f /tmp/endmonitor
rm /tmp/Monitor* /tmp/webmonithor &> /dev/null rm /tmp/Monitor* /tmp/webmonithor &> /dev/null
TotalConfig=$(ls -1 /etc/monithor-client/conf/ | grep .*\.cfg| wc -l) TotalConfig=$(ls -1 /etc/monithor-client/conf/ | grep Card_.*\.cfg|wc -l)
for Conf in $(ls -1 /etc/monithor-client/conf/ | grep .*\.cfg) for Conf in $(ls -1 /etc/monithor-client/conf/ | grep Card_.*\.cfg)
do do
screen -dmS ${Conf} bash /usr/local/bin/monithor-client.d/MoniThor ${Conf} screen -dmS ${Conf} bash /usr/local/bin/monithor-client.d/MoniThor ${Conf}
done done
@ -29,7 +33,7 @@ fi
if [[ "$1" == "stop" ]] if [[ "$1" == "stop" ]]
then then
killall python3 &> /dev/null killall python &> /dev/null
rm /tmp/Monithor* &> /dev/null rm /tmp/Monithor* &> /dev/null
touch /tmp/endmonitor touch /tmp/endmonitor

View File

@ -23,10 +23,7 @@ while [[ ! -f /tmp/endmonitor ]]
Arg=$(echo $DATA| cut -d"#" -f3) Arg=$(echo $DATA| cut -d"#" -f3)
Res=$( echo -e "${Cmd}#${Arg}" | eval ${NcCmd} ${Remote} ${Port} 2> /dev/null) Res=$( echo -e "${Cmd}#${Arg}" | eval ${NcCmd} ${Remote} ${Port} 2> /dev/null)
Ret=$? Ret=$?
if [[ ! -z $(echo $DATA | grep ^"[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*:[0-9]*#.*#" ) ]]
then
GenerateWeb "${Res:-5|No sonde $Cmd on serveur $Remote}" ${Cmd:-Nodata} ${Arg:-Noadata} ${Remote:-Nodata} /tmp/Monithor_${ConfFile}-tmp GenerateWeb "${Res:-5|No sonde $Cmd on serveur $Remote}" ${Cmd:-Nodata} ${Arg:-Noadata} ${Remote:-Nodata} /tmp/Monithor_${ConfFile}-tmp
fi
done < /etc/monithor-client/conf/${ConfFile} done < /etc/monithor-client/conf/${ConfFile}
fi fi
done done

View File

@ -23,7 +23,7 @@ CheckAllEnd() {
echo ' echo '
<html> <html>
<head> <head>
<title>MoniThor on '$(hostname)' </title> <title>MoniThor on '${RemoteIp}' </title>
<meta http-equiv="refresh" content="1" /> <meta http-equiv="refresh" content="1" />
</head> </head>
<title>MONITHOR</title> <title>MONITHOR</title>

View File

@ -3,20 +3,18 @@
pushd /var/www/html/monithor pushd /var/www/html/monithor
source /usr/local/bin/monithor-client.d/MoniThorFnct source /usr/local/bin/monithor-client.d/MoniThorFnct
python3 -m http.server ${1} & python -m SimpleHTTPServer ${1} &
echo '<html> echo '<html>
<head> <head>
<title>MoniThor on '$(hostname)' </title> <title>MoniThor on '${RemoteIp}' </title>
<meta http-equiv="refresh" content="1" /> <meta http-equiv="refresh" content="1" />
</head> </head>
<title>MONITHOR</title> <title>MONITHOR</title>
!!!! Initialization !!!! !!!! Initialization !!!!
Warning : check the config /etc/monithor-client/conf/*cfg
' > index.html ' > index.html
while [[ ! -f /tmp/endmonitor ]] while [[ ! -f /tmp/endmonitor ]]

View File

@ -1,6 +1,6 @@
Package: monithor-server Package: monithor-client
Version: 1.0 Version: 1.0
Architecture: all Architecture: all
Dependsd:netcat,cryptcat,screen,python3,netcat,cryptcat,elinks Dependsd:netcat,cryptcat,screen,python,netcat,cryptcat,elinks
Maintainer: Guillaume Astier <guillaume@gastier.net> Maintainer: Guillaume Astier <guillaume@gastier.net>
Description: monithor server (netcat & snort) Description: monithor client (with simple http server python)

View File

@ -1,8 +1,7 @@
#!/bin/bash #!/bin/bash
echo "Update man page" echo "Update man page"
#mkdir /var/cache/man/oldlocal/fr -p mandb 2>&1 > /dev/null
#mandb 2>&1 > /dev/null
echo "Fin d'installation" echo "Fin d'installation"

View File

@ -1,8 +1,7 @@
#!/bin/bash #!/bin/bash
echo "Update man page" echo "Update man page"
#mandb 2>&1 > /dev/null mandb 2>&1 > /dev/null
echo "Fin d'installation" echo "Fin d'installation"
mkdir -p /var/cache/man/oldlocal/fr

View File

@ -30,13 +30,6 @@ case "$1" in
/usr/local/bin/monithor-server stop /usr/local/bin/monithor-server stop
;; ;;
status)
logger "status MoniThor server" "monithor-d" || true
[ "$(ps axf| grep '/usr/local/bin/monithor-server'|grep -v grep)" ] && echo "monithor-d is running" || echo "montihor-d is dead"
;;
*) *)
echo "Usage: /etc/init.d/monithor-d {start|stop|status}" || true echo "Usage: /etc/init.d/monithor-d {start|stop|status}" || true
exit 1 exit 1

View File

@ -1,4 +1,4 @@
RemoteIp=10.10.10.4 LocalIp=10.10.10.4
LocalPort=1666 LocalPort=1666
######## ########
Crypted=no Crypted=no

View File

@ -8,7 +8,7 @@ source /etc/monithor-server/service.cfg
Exit () { Exit () {
[[ "$1" == "root" ]] && echo "You have to be root ..." [[ "$1" == "root" ]] && echo "You have to be root ..."
#[[ "$1" == "Config" ]] && echo "Ip configuration will failed" [[ "$1" == "Config" ]] && echo "Ip configuration will failed"
exit exit
} }
@ -18,17 +18,17 @@ if [[ $(id -u) != "0" ]]
Exit root Exit root
fi fi
#[[ -z $(ifconfig | grep inet | awk '{print $2}' | grep $RemoteIp) ]] && Exit Config [[ -z $(ifconfig | grep inet | awk '{print $2}' | grep $LocalIp) ]] && Exit Config
[[ "${Crypted}" == "yes" ]] && NcCmd="cryptcat -k ${LocalPassword} -l ${RemoteIp} -p ${LocalPort} " || NcCmd="nc -l ${RemoteIp} -p ${LocalPort}" [[ "${Crypted}" == "yes" ]] && NcCmd="cryptcat -k ${LocalPassword} -l ${LocalIp} -p ${LocalPort} " || NcCmd="nc -l ${LocalIp} ${LocalPort}"
if [[ "${1}" == "start" ]] if [[ "${1}" == "start" ]]
then then
while true while true
do do
#coproc cryptcat -k ${LocalPassword} -l ${RemoteIp} -p ${LocalPort} #coproc cryptcat -k ${LocalPassword} -l ${LocalIp} -p ${LocalPort}
coproc eval ${NcCmd} coproc eval ${NcCmd}
while read -r cmd; do while read -r cmd; do
logger "Running $cmd" logger "Running $cmd"