Skip to content

Cron mode security#50

Open
Asenar wants to merge 23 commits into
shevabam:masterfrom
Asenar:cron-mode-security
Open

Cron mode security#50
Asenar wants to merge 23 commits into
shevabam:masterfrom
Asenar:cron-mode-security

Conversation

@Asenar
Copy link
Copy Markdown

@Asenar Asenar commented Jul 17, 2017

This PR replace the #46 «mode cron + base config in .example file»

Changes:

  • Moved conf/esm.config.json to conf.esm.config.json.example
  • Moved all commands into configuration file
  • Improved Config class
  • Added Misc::exec, Misc::shellexec, Misc::ago
  • Added last_sftp_login information
  • Added cron mode

Theses are the same commits with some fix due to the rebase. I removed the commit 8cfbf82 Last login: Show more relevant information from @QuentinCG because the new version seemed to works fine (I just typed in a shell so maybe I'm wrong).

The main improvement is still the cron mode to give a more secure way to retrieve information.

Cron Mode

Installation

  • In your conf/esm.config.json check the value of mode is set to cron. Any other value will make ezServerMonitor works as before.
  • use crontab -e as root to execute the script cron/cron-monitoring every 5 minutes (or more, or less, according to the precision you want).

The cron script run each libs/*.php file and store the result in cache file. Alternatively, you can run each php script separately.

Usage

just open the main index.php into a browser, the interface will show you the last cron update

QuentinCG and others added 23 commits July 17, 2017 11:48
A ping which is not possible resulted in a "0 ms" value which
is not consistent with the reality. A "+Infinity" is more
appropriate.
Since a ping may fail, it is relevant to use the w15p class
in order to show if the ping was successful or not. Moreover,
showing the time of a not valid ping is not relevant and it
means the server is offline.
Default json config example should not have the name
of the real file.
    Misc::cache($name, $data = null, $lifetime = 0) is a simple cache filesystem
    which will serialize $data to a file in write operation, or return
    the values in read operation. Writes are made if the argument
    `--save` is used when running the command.

    Misc::exec() and Misc::shellexec() will first check if
    a result is in cache for that command, and return it if exists.
    Otherwise, command will be executed then eventually saved in cache
    for next call (if `--save` argument has been used).
@QuentinCG
Copy link
Copy Markdown

I'll have a look and give my feedback, it seems promising ;)

@Asenar
Copy link
Copy Markdown
Author

Asenar commented Jul 17, 2017

To be more precise, it's about the commit 2866dfb (18 months ago) where you made this change:

-    if (!(exec('/usr/bin/lastlog --time 365 | /usr/bin/awk -F\' \' \'{ print $1";"$5, $4, $8, $6}\'', $users)))
+    if (!(exec('/usr/bin/lastlog --time 365 | /usr/bin/awk -F\' \' \'{ print $1" ("$3");"$5, $6, $9, $7}\'', $users)))

But the current master contains this :

if (!(exec('/usr/bin/lastlog --time 365 | awk \'{ printf $1";"; for (i=4; i<NF; i++) printf $i" "; print $NF; }\'', $users)))

I compared the 3 command and found than the newest «official version» was better (with my local config, debian 9) I didn't checked anywhere else.

By the way about that unix command, it tells me locally my last connection was the 22th may (and not today), but from the server I installed ezWeb I have more accurate dates :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants