Compare commits

...

30 Commits

Author SHA1 Message Date
guillaume
241ee2385f remote ip delete local ip comparaison 2024-03-30 11:44:35 +01:00
guillaume
6beee1e2ba update client conf + doc 2024-03-30 11:39:58 +01:00
guillaume
5d89ac6417 check local ip deletee 2024-03-30 11:31:35 +01:00
guillaume
c4801fa8dc remote ip 2024-03-30 11:24:49 +01:00
guillaume
44e406c80f doc 2024-03-30 10:43:30 +01:00
guillaume
06caf72a34 Python => python3 2024-03-29 16:08:34 +01:00
19accb4c0e [UPDATE] - TP 05 - '#' 2022-05-02 23:16:19 +02:00
5718426164 [UPDATE] - init.d 2022-05-02 23:11:22 +02:00
86011bbacf [UPDATE] - TP 05 - '#' 2022-05-02 21:45:53 +02:00
2f2a283f7e [UPDATE] - TP 05 - '#' 2022-05-02 21:37:32 +02:00
2ff5c979b5 [UPDATE] - TP 05 2022-05-02 21:09:49 +02:00
8fd4776f92 [UPDATE] - man page not local 2022-03-21 14:07:12 +01:00
ffc9ad66ed [UPDATE] - V1.12 2022-03-18 12:59:31 +01:00
3de8864695 [UPDATE] - man page 2022-03-18 12:55:17 +01:00
0fb4bdf279 [UPDATE] - man page 2022-03-18 11:09:45 +01:00
ae439aed2d [UPDATE] - man pagfe 2022-03-18 11:09:26 +01:00
3afefd1e28 [UPDATE] dir gitignore 2022-03-18 10:46:03 +01:00
29507b8851 [UPDATE] - man page generate 2022-03-18 10:44:35 +01:00
eef1df73ae [UPDATE] - add man page 2022-03-18 09:23:54 +01:00
034f15c009 [UPDATE] Check IP service client/server 2022-03-17 13:28:40 +01:00
ec27b17ed6 [UPDATE] Check IP service 2022-03-17 13:21:22 +01:00
176c779dfd [UPDATE] - grumph ... boulette 2022-03-17 13:06:23 +01:00
ff1c26d7fb [UPDATE] Add script sonde 2022-03-17 11:21:52 +01:00
c69661a84f [UPDATE] - conf 2022-03-17 11:16:57 +01:00
7c5bc10213 [UPDATE] - git tag 2022-03-17 09:15:09 +01:00
e4cf042e30 [UPDATE] - README 2022-03-17 09:07:54 +01:00
17858bb920 [UPDATE] - .gitignore 2022-03-17 08:51:10 +01:00
d4300b4ca5 [UPDATE] - refact deb + generate 2022-03-17 08:50:36 +01:00
192382c8c2 [UPDATE] - id root for monithor-server 2022-03-16 23:44:27 +00:00
69069c5919 [UPDATE] - add debian package and rebuild 2022-03-16 23:42:35 +00:00
36 changed files with 676 additions and 152 deletions

1
.gitignore vendored
View File

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

102
README.md
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 python web server) You can see result on the client from a web page (self hosted python3 web server)
## Server Configuration ## Server Configuration
@ -16,7 +16,7 @@ The configuration files for the server are :
### serivce.cfg ### serivce.cfg
- ./server/conf-server/service.cfg - /etc/monithor-server/service.cfg
``` ```
LocalIp is the IP adresse to used on the server (can used 127.0.0.1) LocalIp is the IP adresse to used on the server (can used 127.0.0.1)
@ -29,7 +29,7 @@ LocalPassword is to set if you used Crypted
### sonde.cfg ### sonde.cfg
- ./server/conf-server/sonde.cfg - /etc/monithor-server/sonde.cfg
``` ```
SONDE#SCRIPT SONDE#SCRIPT
@ -37,22 +37,50 @@ SONDE#SCRIPT
SONDE is get by the server and it exec SCRIPT with ARG get from the client SONDE is get by the server and it exec SCRIPT with ARG get from the client
SCRIPT are in /usr/local/bin/monithor-server.d/
Actual :
**file-present.sh** : check if a file (abosult path) is persent
**part-space.sh** : check the partition % (arg are : PATH|Min%|Max% ex : /home/isen|50|80)
**process-present.sh** : check if a process is running
### tree ### tree
- Tree for server - Tree for server
``` ```
.
├── DEBIAN
│   └── control
├── etc
│   ├── init.d
│   │   └── monithor-d
│   └── monithor-server
│   ├── service.cfg
│   └── sonde.cfg
└── usr
└── local
└── bin
├── monithor-server
└── monithor-server.d
├── file-present.sh
└── FunctionOutput
8 directories, 7 files
└── server
├── conf-server
│   ├── scripts
│   │   ├── file-present.sh
│   │   └── FunctionOutput
│   ├── service.cfg
│   └── sonde.cfg
└── Daemon.sh
``` ```
### init.d System V
You can use monithor-server as a service
```
sudo /etc/init.d/monithor-d start/stop
```
## Client Configuration ## Client Configuration
@ -61,7 +89,7 @@ The configuration files for the client are :
### serivce.cfg ### serivce.cfg
- ./client/conf-client/service.cfg - /etc/monithor-client/service.cfg
``` ```
LocalPassword can be used if you chose Crypted=yes (process is slow) LocalPassword can be used if you chose Crypted=yes (process is slow)
@ -74,7 +102,7 @@ TimeOut is the number of second before the interrogation failed
### sonde.cfg ### sonde.cfg
- ./client/conf-client/sonde.cfg - /etc/monithor-client/sonde.cfg
``` ```
IP:PORT#SONDE#Arguemnent IP:PORT#SONDE#Arguemnent
@ -97,24 +125,46 @@ IP:PORT#SONDE#Arguemnent
``` ```
. .
└── client ├── DEBIAN
   ├── conf-client │   └── control
   │   ├── exec.sh ├── etc
   │   ├── functions │   ├── init.d
   │   ├── service.cfg │   │   └── monithor-c
   │   ├── sonde.cfg │   └── monithor-client
   │   ├── webmonithor.html │   ├── conf
   │   └── webserver.sh │   │   ├── Card_10.10.10.3-1666.cfg
   ├── service.sh │   │   └── Card_10.10.10.4-1666.cfg
   └── web │   ├── service.cfg
   ├── index.html │   └── sonde.cfg
   └── webmonithor.html └── usr
└── local
└── bin
├── monithor-client
└── monithor-client.d
├── MoniThor
├── MoniThorFnct
└── MoniThorWebServer
9 directories, 10 files
``` ```
### init.d System V
You can use monithor-client as a service
```
sudo /etc/init.d/monithor-c start/stop
```
### WEB ### WEB
The client start a python sumple http server on localhost on `WebPort` The client start a python3 sumple http server on localhost on `WebPort`
```
/usr/local/bin/monithor-client.d/MoniThorWebServer
```
![](./img/web.png) ![](./img/web.png)

View File

@ -1,4 +0,0 @@
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

View File

@ -1,4 +0,0 @@
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,32 +0,0 @@
#!/bin/bash
cd $(dirname $0)
SondeFile=$(pwd)/sonde.cfg
source service.cfg
source functions
ConfFile=$1
[[ "${Crypted}" == "yes" ]] && NcCmd="timeout ${TimeOut} cryptcat -k ${LocalPassword} " || NcCmd="timeout ${TimeOut} nc "
while [[ ! -f /tmp/endmonitor ]]
do
if [[ -f /tmp/Monithor_${ConfFile}-tmp ]]
then
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=$?
GenerateWeb "${Res:-5|No sonde $Cmd on serveur $Remote}" ${Cmd:-Nodata} ${Arg:-Noadata} ${Remote:-Nodata} /tmp/Monithor_${ConfFile}-tmp
done < ${ConfFile}
fi
done

View File

@ -1,8 +0,0 @@
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,26 +0,0 @@
#!/bin/bash
source $(dirname $0)/conf-client/service.cfg
source $(dirname $0)/conf-client/functions
if [[ "$1" == "start" ]]
then
[[ -f /tmp/endmonitor ]] && rm -f /tmp/endmonitor
rm /tmp/Monitor* /tmp/webmonithor &> /dev/null
TotalConfig=$(ls -1 ./conf-client | grep Card_.*\.cfg|wc -l)
for Conf in $(ls -1 ./conf-client | grep Card_.*\.cfg)
do
screen -dmS ${Conf} bash ./conf-client/exec.sh ${Conf}
done
screen -dmS webserver bash ./conf-client/webserver.sh ${WebPort} $TotalConfig
fi
if [[ "$1" == "stop" ]]
then
killall python &> /dev/null
rm /tmp/Monithor* &> /dev/null
touch /tmp/endmonitor
fi

BIN
doc/monithor-client.1.gz Normal file

Binary file not shown.

92
doc/monithor-client.md Normal file
View File

@ -0,0 +1,92 @@
---
title: monithor-client
section: 1
author: Guillaume Astier Ruiz
date: 20220320
...
# SYNOPSIS
`/etc/init.d/monithor-c [start/stop]`
# DESCRIPTION
monithor-client(1) permet de surveiller votre système d'information
- l'ensemble du service est basé sur l'ourverture d'une socket TCP via netcat
- il peut aussi utiliser cryptcat (chiffré)
- un serveur web en python3 est lancé sur votre machine de monitoring
# INIT.D
le service peut être démarré et arrêté via system V
- Démarrage
`/etc/init.d/monithor-c start`
- Arrêt
`/etc/init.d/monithor-c stop`
# CONFIGURATION SERVICE
- Le fichier responsable de la gestion IP/PORT est : service.cfg
`$ cat etc/monithor-client/service.cfg `
`LocalPassword='Evil@MonitoR-666'`
`Crypted=no`
`Rotation=1`
`TimeOut=2`
`WebPort=80`
* 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é
* Rotation : correspond à la valeur en seconde (float) entre chaque éxécution complète des sondes
* 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
# CONFIGURATION SONDE
- La configuration des sondes est stocké dans le répertoires :
/etc/monithor-client/conf/
Tous les fichiers *.cfg sont lus.
- Chaque sonde est composée de cette manière :
`IP:PORT#SONDE#arg1|arg2|arg3`
* IP:PORT : correspond à l'adresse et le prot de communication du erveur monithor-server distant.
* SONDE : correspond au nom de sonde envoyé sur le serveur monithor-server distant.
* \# : séparateur entre le nom de la sonde et les arguments
* arg1\|arg2\|arg3 : ensemble des arguments envoyé sur le serveur monithor-server distant. Le séparateur est "\|"
- Exemple :
`$ cat etc/monithor-client/conf/Card_10.10.10.3-1666.cfg `
`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`
- Multiple cible
Chaque fichier peut s'organiser par cible ou par type de sonde ou tout mélangé

BIN
doc/monithor-server.1.gz Normal file

Binary file not shown.

106
doc/monithor-server.md Normal file
View File

@ -0,0 +1,106 @@
---
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]`
# DESCRIPTION
monithor-server(1) permet d'accépter des requêtes venant d'un instance monithor-client
- l'ensemble du service est basé sur l'ourverture d'une socket TCP via netcat
- il peut aussi utiliser cryptcat (chiffré)
## INIT.D
le service peut être démarré et arrêté via system V
- Démarrage
`/etc/init.d/monithor-d start`
- Arrêt
`/etc/init.d/monithor-d stop`
# CONFIGURATION SERVICE
- Le fichier responsable de la gestion IP/PORT est : service.cfg
`RemoteIp=10.10.10.4`
`LocalPort=1666`
`Crypted=no`
`LocalPassword='Evil@MonitoR-666'`
* RemoteIp : correspond à l'adresse IP de l'interface réseau en écoute du client de monitoring
* LocalPort : correspond au port de communication du client monithor
* 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é
# CONFIGURATION SONDE
- La configuration des sondes est stocké dans le répertoires :
/etc/monithor-server/sonde.cfg
Chaque sonde est composé de cette manière :
`SONDE#SCRIPT`
* SONDE : Nom de la sonde envoyé par monithor server et reçu par monithor client
* SCRIPT : Script éxecuté sur l'instance avec le(s) argument(s) reçu(s) de monithor client
# SCRIPT
les scripts sont tous stocké dans le répertoire :
/usr/local/bin/monithor-server.d/
# Exemple
* Configuration server :
`cat /etc/monithor-server/sonde.cfg`
`part#part-space.sh`
* Configuration client :
`$ cat /etc/monithor-client/etc/monithor-client/conf/sample.cfg
`#10.10.10.3:1666#part#/home/isen|50|80`
* Explication
CLIENT envoi à SERVEUR : part#/home/isen|50|80
SERVEUR compare la chaine part à son fichier de configuration /etc/monithor-server/sonde.cfg
SERVEUR associe part#part-space.sh
SERVEUR exécute : /usr/local/bin/monithor-server.d/part-space.sh /home/isen 50 80
SERVEUR renvoie les valeur récupéré à CLIENT
Les lignes commençant par '#' sont à supprimer ou à décommenter

83
generate.sh Executable file
View File

@ -0,0 +1,83 @@
#!/bin/bash
BinNeed="dpkg-deb realpath"
Wai=$(dirname $(realpath $0))
usage () {
echo "$0
permet de générer les versions de monithor server et client en paquet debian"
exit $1
}
GetOut () {
[[ $1 == "pkg" ]] && echo "Le paquet $2 est nécessaire" && usage 1
}
CheckDep() {
for CheckBinNeed in ${BinNeed}
do
TestCheckBinNeed=$(which $CheckBinNeed)
[[ -z $TestCheckBinNeed ]] && GetOut pkg $CheckBinNeed
done
}
GitVersion() {
LastTag=$(git tag | sed "s/^V//g" | cut -d"-" -f1 | sort -n -k2 -t. | tail -n1)
NewTag=${LastTag}-rebuild
}
CpArchName() {
rm -Rf /tmp/monithor-*
cp -Rf ${Wai}/monithor-${1} /tmp/monithor-${1}_${2}_all
}
SedControl() {
sed -i "/^Version/s/:.*/: ${2}/g" /tmp/monithor-${1}_${2}_all/DEBIAN/control
}
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 '
dpkg-deb ${Compress} --build --root-owner-group monithor-${1}_${2}_all &> /dev/null
[[ "$?" -eq "0" ]] && echo "OK" || echo "FAILED"
cp monithor-*deb ${Wai}/build
}
CleanTemp() {
mkdir $Wai/build &> /dev/null
mv monithor-*deb $Wai/build
rm -Rf monithor-*
}
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
}
[[ ! -z $1 ]] && usage
CheckDep
GitVersion
CpArchName server $NewTag
SedControl server $NewTag
ManPage server $NewTag
BuildDeb server $NewTag
CpArchName client $NewTag
SedControl client $NewTag
ManPage client ${NewTag}
BuildDeb client $NewTag

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

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

View File

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

8
monithor-client/DEBIAN/postrm Executable file
View File

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

View File

@ -0,0 +1,43 @@
#! /bin/sh
### BEGIN INIT INFO
# Provides: monithor-c
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: MoniThor client
### END INIT INFO
set -e
test -x /usr/local/bin/monithor-client || exit 0
umask 022
case "$1" in
start)
if [ ! -z "$(ps axf| grep monithor-client | grep -v grep)" ]
then
logger "monithor-client is running ..."
exit
else
logger "Starting MoniThor client "
/usr/local/bin/monithor-client start
fi
;;
stop)
logger "Stoping MoniThor client " "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
esac
exit 0

View File

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

View File

@ -1,4 +1,3 @@
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,37 @@
#!/bin/bash
source /etc/monithor-client/service.cfg
Exit () {
[[ "$1" == "root" ]] && echo "You have to be root ..."
exit
}
if [[ $(id -u) != "0" ]]
then
Exit root
fi
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)
do
screen -dmS ${Conf} bash /usr/local/bin/monithor-client.d/MoniThor ${Conf}
done
screen -dmS webserver bash /usr/local/bin/monithor-client.d/MoniThorWebServer ${WebPort} $TotalConfig
fi
if [[ "$1" == "stop" ]]
then
killall python3 &> /dev/null
rm /tmp/Monithor* &> /dev/null
touch /tmp/endmonitor
fi

View File

@ -0,0 +1,34 @@
#!/bin/bash
SondeFile=/etc/monithor-client/sonde.cfg
source /etc/monithor-client/service.cfg
source /usr/local/bin/monithor-client.d/MoniThorFnct
ConfFile=$1
[[ "${Crypted}" == "yes" ]] && NcCmd="timeout ${TimeOut} cryptcat -k ${LocalPassword} " || NcCmd="timeout ${TimeOut} nc "
while [[ ! -f /tmp/endmonitor ]]
do
if [[ -f /tmp/Monithor_${ConfFile}-tmp ]]
then
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}
fi
done

View File

@ -23,7 +23,7 @@ CheckAllEnd() {
echo ' echo '
<html> <html>
<head> <head>
<title>MoniThor on '${RemoteIp}' </title> <title>MoniThor on '$(hostname)' </title>
<meta http-equiv="refresh" content="1" /> <meta http-equiv="refresh" content="1" />
</head> </head>
<title>MONITHOR</title> <title>MONITHOR</title>
@ -31,7 +31,7 @@ CheckAllEnd() {
<table border="1" color="#FFFFFF"> <table border="1" color="#FFFFFF">
<thead> <thead>
<tr> <tr>
<th colspan="4">MoniThor Result</th> <th colspan="5">MoniThor Result</th>
</tr> </tr>
</thead> </thead>
<tbody>' > /tmp/webmonithor <tbody>' > /tmp/webmonithor
@ -41,7 +41,7 @@ CheckAllEnd() {
echo ' echo '
</tbody> </tbody>
</table> ' >> /tmp/webmonithor </table> ' >> /tmp/webmonithor
mv /tmp/webmonithor ../web/index.html mv /tmp/webmonithor /var/www/html/monithor/index.html
rm /tmp/Monithor_* -f rm /tmp/Monithor_* -f
fi fi
fi fi

View File

@ -1,18 +1,22 @@
#!/bin/bash #!/bin/bash
cd $(dirname $0)/../web/ [[ ! -d /var/www/html/monithor ]] && mkdir -p /var/www/html/monithor
source ../conf-client/functions
python -m SimpleHTTPServer ${1} & pushd /var/www/html/monithor
source /usr/local/bin/monithor-client.d/MoniThorFnct
python3 -m http.server ${1} &
echo '<html> echo '<html>
<head> <head>
<title>MoniThor on '${RemoteIp}' </title> <title>MoniThor on '$(hostname)' </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

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

View File

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

8
monithor-server/DEBIAN/postrm Executable file
View File

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

View File

@ -0,0 +1,45 @@
#! /bin/sh
### BEGIN INIT INFO
# Provides: monithor-d
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: MoniThor Server
### END INIT INFO
set -e
test -x /usr/local/bin/monithor-server || exit 0
umask 022
case "$1" in
start)
if [ ! -z "$(ps axf| grep monithor-server | grep -v grep)" ]
then
logger "monithor-server is running ..."
exit
else
logger "Starting MoniThor Server"
/usr/local/bin/monithor-server start
fi
;;
stop)
logger "Stoping MoniThor server" "monithor-d" || true
/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
esac
exit 0

View File

@ -1,5 +1,5 @@
LocalIp=127.0.0.1 RemoteIp=10.10.10.4
LocalPort=8080 LocalPort=1666
######### ########
Crypted=no Crypted=no
LocalPassword='Evil@MonitoR-666' LocalPassword='Evil@MonitoR-666'

View File

@ -0,0 +1,3 @@
file#file-present.sh
part#part-space.sh
process#process-present.sh

View File

@ -0,0 +1,65 @@
#!/bin/bash
ScriptDir=/usr/local/bin/monithor-server.d/
SondeFile=/etc/monithor-server/sonde.cfg
source /etc/monithor-server/service.cfg
Exit () {
[[ "$1" == "root" ]] && echo "You have to be root ..."
#[[ "$1" == "Config" ]] && echo "Ip configuration will failed"
exit
}
if [[ $(id -u) != "0" ]]
then
Exit root
fi
#[[ -z $(ifconfig | grep inet | awk '{print $2}' | grep $RemoteIp) ]] && Exit Config
[[ "${Crypted}" == "yes" ]] && NcCmd="cryptcat -k ${LocalPassword} -l ${RemoteIp} -p ${LocalPort} " || NcCmd="nc -l ${RemoteIp} -p ${LocalPort}"
if [[ "${1}" == "start" ]]
then
while true
do
#coproc cryptcat -k ${LocalPassword} -l ${RemoteIp} -p ${LocalPort}
coproc eval ${NcCmd}
while read -r cmd; do
logger "Running $cmd"
cpt=0
while read DATA
do
Sonde=$(echo ${DATA}| cut -d"#" -f1)
Exec=$(echo ${DATA}| cut -d"#" -f2)
RealCmd=$(echo ${cmd} | cut -d"#" -f1)
ArgCmd=$(echo ${cmd} | cut -d"#" -f2)
if [[ "${RealCmd}" == "$Sonde" ]]
then
logger "Exec $Exec $Arg $cpt"
[ "$1" == '-d' ] && echo "############ Exec $Exec $Arg $cpt" 1>&2
bash ${ScriptDir}/${Exec} $ArgCmd
cpt=$((cpt+1))
break
fi
done < ${SondeFile}
[[ "${cpt}" -eq 0 ]] && logger "You Failed $Sonde $Exec $Arg"
done <&"${COPROC[0]}" >&"${COPROC[1]}"
done &
fi
if [[ "${1}" == "stop" ]]
then
for Pid in $(ps axf| grep -E 'nc -l|monithor-server' | grep -v grep | awk '{print $1}' | sort )
do
kill ${Pid}
done
fi

View File

@ -0,0 +1,18 @@
#!/bin/bash
source $(dirname $0)/FunctionOutput
Part="$(echo $1 | cut -d"|" -f1)"
Min="$(echo $1 | cut -d"|" -f2)"
Max="$(echo $1 | cut -d"|" -f3)"
[[ -z ${Part} ]] && Exit "5|no argument"
[[ ! -d ${Part} ]] && Exit "2|Part $Part don't exist"
[[ -z $(mount | grep -w ${Part}) ]] && Exit "2|$Part is not a partition"
Size=$(df -h ${Part} | grep -v Filesystem | awk '{print $5}' | sed "s#%##g")
[[ ${Size} -lt ${Min} ]] && Exit "0|Part $Part is under ${Min}% : ${Size}"
[[ ${Size} -gt ${Max} ]] && Exit "2|Part $Part is over ${Max}% : ${Size}"
[[ ${Size} -gt ${Min} ]] && Exit "1|Part $Part is between ${Min}% and ${Max}% : ${Size}"

View File

@ -0,0 +1,11 @@
#!/bin/bash
source $(dirname $0)/FunctionOutput
Process="${1}"
[[ -z ${Process} ]] && Exit "5|no argument"
[[ ! -z $(ps axf | grep ${Process}| grep -v grep) ]] && Exit "0|Process $Process is running" || Exit "2|Process $Process is NOT running"

View File

@ -1,38 +0,0 @@
#!/bin/bash
cd $(dirname $0)/conf-server/
ScriptDir=$(pwd)/scripts/
SondeFile=$(pwd)/sonde.cfg
source service.cfg
[[ "${Crypted}" == "yes" ]] && NcCmd="cryptcat -k ${LocalPassword} -l ${LocalIp} -p ${LocalPort} " || NcCmd="nc -l ${LocalIp} ${LocalPort}"
while true
do
#coproc cryptcat -k ${LocalPassword} -l ${LocalIp} -p ${LocalPort}
coproc eval ${NcCmd}
while read -r cmd; do
logger "Running $cmd"
cpt=0
while read DATA
do
Sonde=$(echo ${DATA}| cut -d"#" -f1)
Exec=$(echo ${DATA}| cut -d"#" -f2)
RealCmd=$(echo ${cmd} | cut -d"#" -f1)
ArgCmd=$(echo ${cmd} | cut -d"#" -f2)
if [[ "${RealCmd}" == "$Sonde" ]]
then
logger "Exec $Exec $Arg $cpt"
[ "$1" == '-d' ] && echo "############ Exec $Exec $Arg $cpt" 1>&2
bash ${ScriptDir}/${Exec} $ArgCmd
cpt=$((cpt+1))
break
fi
done < ${SondeFile}
[[ "${cpt}" -eq 0 ]] && logger "You Failed $Sonde $Exec $Arg"
done <&"${COPROC[0]}" >&"${COPROC[1]}"
done

View File

@ -1,3 +0,0 @@
network#ip.sh
file#file-present.sh