Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

cron récalcitrant

5 réponses
Avatar
charly
Bonjour,

J'ai un serveur apache qui tourne et ouvert sur l'extérieur.
Régulièrement, des nimda tentent le vieux "cmd.Exe" et ses variantes.
J'ai donc développé un petit script en php qui parcourt le fichier de
log, cherche la trace, recupere l'ip et l'ajoute au hosts.deny.

J'ai ensuite crée un fichier Check.sh :

#!/bin/sh
php banIPs.php > /dev/null

J'ai ensuite crée un lien dans /cron.hourly vers Check.sh.

Le pb est qu'il ne s'execute jamais !
Par contre, si j'invoque à la main Check.sh, le travail est fait.

qqun peut m'expliquer ce qui se passe svp ?

Merci d'avance !

5 réponses

Avatar
Cyrille Szymanski
On 2004-04-29, charly wrote:
J'ai un serveur apache qui tourne et ouvert sur l'extérieur.
Régulièrement, des nimda tentent le vieux "cmd.Exe" et ses variantes.
J'ai donc développé un petit script en php qui parcourt le fichier de
log, cherche la trace, recupere l'ip et l'ajoute au hosts.deny.


Je ne vois pas trop l'intérêt, peux-tu m'expliquer pourquoi tu fais
cela ?

J'ai ensuite crée un fichier Check.sh :

#!/bin/sh
php banIPs.php > /dev/null


Tu peux probablement passer directement par l'interpréteur php, par
exemple :

#!/usr/local/bin/php

J'ai ensuite crée un lien dans /cron.hourly vers Check.sh.


Je pense qu'il vaut mieux éviter cron.hourly et tout simplement
ajouter une commande du type
0 * * * * /usr/local/bin/banIPs
au crontab.

Ou alors utiliser /etc/cron.d/

--
cns

Avatar
charly
Cyrille Szymanski wrote:
On 2004-04-29, charly wrote:

J'ai un serveur apache qui tourne et ouvert sur l'extérieur.
Régulièrement, des nimda tentent le vieux "cmd.Exe" et ses variantes.
J'ai donc développé un petit script en php qui parcourt le fichier de
log, cherche la trace, recupere l'ip et l'ajoute au hosts.deny.



Je ne vois pas trop l'intérêt, peux-tu m'expliquer pourquoi tu fais
cela ?

Je suis parti du principe que cette ip appartenant à une machine

vérolée, elle pourrait servir de pt de départ à d'autres virus, moins
orientés IIS et plus apache => dans le doute, je le bannis.

Evidemment, régulièrement je vais vider les ip car comme elles sont
dynamiques, une machine saine pourrait en hériter.

Je vais essayer l'interpréteur php pour voir.

Pour le crontab, j'ai bien noté, mais c'est étrange que le hourly ne
fonctionne pas avec ce script....

Merci de ta réponse en tout cas.


Avatar
Cyrille Szymanski
On 2004-04-30, charly wrote:
Evidemment, régulièrement je vais vider les ip car comme elles sont
dynamiques, une machine saine pourrait en hériter.


En réalité tu la désactives temporairement. Après tout pourquoi pas,
un autre ver installé sur la machine pourrait tenter une attaque sur
ton serveur. Mais je ne suis pas persuadé de l'efficacité de la
méthode.

Je ne sais pas si nimda est capable de passer par un proxy, mais si
c'est le cas, le fait de bannir cette IP pourrait bannir beaucoup trop
d'utilisateurs d'un coup.


Je vais essayer l'interpréteur php pour voir.


Disons que l'idée c'est de ne pas passer par sh quand cela n'est pas
nécessaire. Cela ne résoudra pas les problèmes de cron.hourly.


Merci de ta réponse en tout cas.


De rien.

--
cns

Avatar
Michel Tatoute

Bonjour,

Bonjour,



J'ai ensuite crée un fichier Check.sh :

#!/bin/sh
php banIPs.php > /dev/null

J'ai ensuite crée un lien dans /cron.hourly vers Check.sh.

Le pb est qu'il ne s'execute jamais !
Par contre, si j'invoque à la main Check.sh, le travail est fait.

qqun peut m'expliquer ce qui se passe svp ?

Merci d'avance !


utilise crontab pour déclencher ton script et aussi précise le path de
php. Le cron est lancé avec un environnement peu étoffé et donc php
n'est probablement pas dans le path. par exemple:

#!/bin/sh
/usr/local/bin/php banIPs.php > /dev/null

De plus comme on te l'as dit, il vaut mieux faire de banIPs.php un vrai
script executable avec au début
#!/usr/local/bin/php

et le chmod +x adequat.

Michel.

Avatar
charly
Michel Tatoute wrote:


Bonjour,



Bonjour,



J'ai ensuite crée un fichier Check.sh :

#!/bin/sh
php banIPs.php > /dev/null

J'ai ensuite crée un lien dans /cron.hourly vers Check.sh.

Le pb est qu'il ne s'execute jamais !
Par contre, si j'invoque à la main Check.sh, le travail est fait.

qqun peut m'expliquer ce qui se passe svp ?

Merci d'avance !



utilise crontab pour déclencher ton script et aussi précise le path de
php. Le cron est lancé avec un environnement peu étoffé et donc php
n'est probablement pas dans le path. par exemple:

#!/bin/sh
/usr/local/bin/php banIPs.php > /dev/null

De plus comme on te l'as dit, il vaut mieux faire de banIPs.php un vrai
script executable avec au début
#!/usr/local/bin/php

et le chmod +x adequat.

Michel.

Ah oui, voila une très bonne idée !

Merci, j'avais pas compris ca comme ca :) (tellement l'habitude
d'utiliser php comme langage de dev web que j'en avais oublié qu'il
pouvait aussi avoir son chmod +x :) )

Merci et bon WE !