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
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 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
@ -160,7 +160,7 @@ sudo /etc/init.d/monithor-c start/stop
### 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

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
author: Guillaume Astier Ruiz
date: 20220320
...
header: Serveur bash de monitoring
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]`
# DESCRIPTION
DESCRIPTION
=====
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é)
- 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
@ -29,14 +43,17 @@ le service peut être démarré et arrêté via system V
- 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
`$ cat etc/monithor-client/service.cfg `
`RemoteIp=10.10.10.3:1666 `
`LocalPassword='Evil@MonitoR-666'`
`Crypted=no`
@ -47,6 +64,8 @@ le service peut être démarré et arrêté via system V
`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"
* 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
* 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 :

Binary file not shown.

View File

@ -1,18 +1,28 @@
---
title: monithor-server
Title: MONITHOR-SERVER
section: 1
author: Guillaume Astier Ruiz
date: 20220320
...
# SYNOPSIS
`/usr/local/bin/monithor-d [start/stop]`
`/etc/init.d/monithor-d [start/stop]`
header: Serveur bash de monitoring
footer: monithor-server 1.7
date: January 13, 2022
---
# 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
@ -26,17 +36,18 @@ le service peut être démarré et arrêté via system V
- Démarrage
`/etc/init.d/monithor-d start`
`/etc/init.d/monithor-c start`
- 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
`RemoteIp=10.10.10.4`
`LocalIp=10.10.10.4`
`LocalPort=1666`
@ -44,7 +55,7 @@ le service peut être démarré et arrêté via system V
`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
@ -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é
# CONFIGURATION SONDE
CONFIGURATION SONDE
=====
- 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
=======
les scripts sont tous stocké dans le répertoire :
/usr/local/bin/monithor-server.d/
# Exemple
Exemple
======
* Configuration server :
@ -82,9 +96,9 @@ les scripts sont tous stocké dans le répertoire :
* 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
@ -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
Les lignes commençant par '#' sont à supprimer ou à décommenter

View File

@ -25,15 +25,12 @@ CheckDep() {
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
}
CpArchName() {
rm -Rf /tmp/monithor-*
cp -Rf ${Wai}/monithor-${1} /tmp/monithor-${1}_${2}_all
cp -Rf monithor-${1} /tmp/monithor-${1}_${2}_all
}
@ -46,10 +43,9 @@ BuildDeb(){
echo -n "Gen monithor-${1} [$2] : "
cd /tmp/ &> /dev/null
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
[[ "$?" -eq "0" ]] && echo "OK" || echo "FAILED"
cp monithor-*deb ${Wai}/build
}
@ -61,10 +57,17 @@ CleanTemp() {
ManPage() {
mkdir -p /tmp/monithor-${1}_${2}_all/usr/share/man/man1/
pandoc -s -t man ${Wai}/doc/monithor-${1}.md -o /tmp/monithor-${1}_${2}_all/usr/share/man/man1/monithor-${1}.1
gzip /tmp/monithor-${1}_${2}_all/usr/share/man/man1/monithor-${1}.1
if [[ $2 == "create" ]]
then
pandoc -s -t man ${Wai}/doc/monithor-${1}.md -o ${Wai}/doc/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
@ -73,11 +76,14 @@ CheckDep
GitVersion
CpArchName server $NewTag
SedControl server $NewTag
ManPage server $NewTag
BuildDeb server $NewTag
CpArchName client $NewTag
SedControl server $NewTag
SedControl client $NewTag
ManPage client ${NewTag}
ManPage client create
ManPage server create
BuildDeb client $NewTag
BuildDeb server $NewTag
ManPage client delete
ManPage server delete
CleanTemp

View File

@ -1,6 +1,6 @@
Package: monithor-client
Version: 1.0
Architecture: all
Dependsd:netcat,cryptcat,screen,python3,netcat,cryptcat,elinks
Dependsd:netcat,cryptcat,screen,python,netcat,cryptcat,elinks
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
echo "Update man page"
mkdir /var/cache/man/oldlocal/fr -p
mandb 2>&1 > /dev/null
echo "Fin d'installation"
mandb

View File

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

View File

@ -4,7 +4,7 @@
# Provides: monithor-c
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: MoniThor client
# Short-Description: MoniThor Server
### END INIT INFO
set -e
@ -21,20 +21,15 @@ case "$1" in
logger "monithor-client is running ..."
exit
else
logger "Starting MoniThor client "
logger "Starting MoniThor Server"
/usr/local/bin/monithor-client start
fi
;;
stop)
logger "Stoping MoniThor client " "monithor-c" || true
logger "Stoping MoniThor server" "monithor-c" || true
/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
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'
Crypted=no
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
source /etc/monithor-client/service.cfg
Ip=$(echo $RemoteIp| cut -d":" -f1)
Exit () {
[[ "$1" == "root" ]] && echo "You have to be root ..."
[[ "$1" == "Config" ]] && echo "Ip configuration will failed"
exit
}
@ -14,13 +16,15 @@ if [[ $(id -u) != "0" ]]
Exit root
fi
[[ ! -z $(ifconfig | grep inet | awk '{print $2}' | grep $Ip) ]] && Exit Config
if [[ "$1" == "start" ]]
then
[[ -f /tmp/endmonitor ]] && rm -f /tmp/endmonitor
rm /tmp/Monitor* /tmp/webmonithor &> /dev/null
TotalConfig=$(ls -1 /etc/monithor-client/conf/ | grep .*\.cfg| wc -l)
for Conf in $(ls -1 /etc/monithor-client/conf/ | grep .*\.cfg)
TotalConfig=$(ls -1 /etc/monithor-client/conf/ | grep Card_.*\.cfg|wc -l)
for Conf in $(ls -1 /etc/monithor-client/conf/ | grep Card_.*\.cfg)
do
screen -dmS ${Conf} bash /usr/local/bin/monithor-client.d/MoniThor ${Conf}
done
@ -29,7 +33,7 @@ fi
if [[ "$1" == "stop" ]]
then
killall python3 &> /dev/null
killall python &> /dev/null
rm /tmp/Monithor* &> /dev/null
touch /tmp/endmonitor

View File

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

View File

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

View File

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

View File

View File

@ -1,6 +1,6 @@
Package: monithor-server
Package: monithor-client
Version: 1.0
Architecture: all
Dependsd:netcat,cryptcat,screen,python3,netcat,cryptcat,elinks
Dependsd:netcat,cryptcat,screen,python,netcat,cryptcat,elinks
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
echo "Update man page"
#mkdir /var/cache/man/oldlocal/fr -p
#mandb 2>&1 > /dev/null
echo "Fin d'installation"
mandb

View File

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

View File

@ -30,13 +30,6 @@ case "$1" in
/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
exit 1

View File

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

View File

@ -8,7 +8,7 @@ source /etc/monithor-server/service.cfg
Exit () {
[[ "$1" == "root" ]] && echo "You have to be root ..."
#[[ "$1" == "Config" ]] && echo "Ip configuration will failed"
[[ "$1" == "Config" ]] && echo "Ip configuration will failed"
exit
}
@ -18,17 +18,17 @@ if [[ $(id -u) != "0" ]]
Exit root
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" ]]
then
while true
do
#coproc cryptcat -k ${LocalPassword} -l ${RemoteIp} -p ${LocalPort}
#coproc cryptcat -k ${LocalPassword} -l ${LocalIp} -p ${LocalPort}
coproc eval ${NcCmd}
while read -r cmd; do
logger "Running $cmd"

View File