Compare commits

..

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

42 changed files with 144 additions and 128 deletions

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
client/web/index.html client/web/index.html
build/* build

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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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
} }
@ -46,10 +43,9 @@ BuildDeb(){
echo -n "Gen monithor-${1} [$2] : " echo -n "Gen monithor-${1} [$2] : "
cd /tmp/ &> /dev/null cd /tmp/ &> /dev/null
Dist=$(lsb_release -a 2> /dev/null | grep Distributor |awk '{print $NF}' |tr '[:upper:]' '[:lower:]') Dist=$(lsb_release -a 2> /dev/null | grep Distributor |awk '{print $NF}' |tr '[:upper:]' '[:lower:]')
[[ $Dist == "ubuntu" ]] && Compress=' -Z gzip -S fixed ' [[ $Dist == "ubuntu" ]] && Compress=' -z 0'
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,17 @@ 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 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 +76,14 @@ 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,8 +1,3 @@
#!/bin/bash #!/bin/bash
echo "Update man page" mandb
mkdir /var/cache/man/oldlocal/fr -p
mandb 2>&1 > /dev/null
echo "Fin d'installation"

View File

@ -1,8 +1,3 @@
#!/bin/bash #!/bin/bash
echo "Update man page" mandb
#mandb 2>&1 > /dev/null
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

@ -15,19 +15,16 @@ while [[ ! -f /tmp/endmonitor ]]
GenerateWebEnd /tmp/Monithor_${ConfFile}-tmp GenerateWebEnd /tmp/Monithor_${ConfFile}-tmp
sleep ${Rotation} sleep ${Rotation}
else else
while read DATA while read DATA
do do
Remote=$(echo $DATA| cut -d"#" -f1| cut -d":" -f1) Remote=$(echo $DATA| cut -d"#" -f1| cut -d":" -f1)
Port=$(echo $DATA| cut -d"#" -f1| cut -d":" -f2) Port=$(echo $DATA| cut -d"#" -f1| cut -d":" -f2)
Cmd=$(echo $DATA| cut -d"#" -f2) Cmd=$(echo $DATA| cut -d"#" -f2)
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]*#.*#" ) ]] GenerateWeb "${Res:-5|No sonde $Cmd on serveur $Remote}" ${Cmd:-Nodata} ${Arg:-Noadata} ${Remote:-Nodata} /tmp/Monithor_${ConfFile}-tmp
then done < /etc/monithor-client/conf/${ConfFile}
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}
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

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,3 @@
#!/bin/bash #!/bin/bash
echo "Update man page" mandb
#mkdir /var/cache/man/oldlocal/fr -p
#mandb 2>&1 > /dev/null
echo "Fin d'installation"

View File

@ -1,8 +1,3 @@
#!/bin/bash #!/bin/bash
echo "Update man page" mandb
#mandb 2>&1 > /dev/null
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"

View File