logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 04-12-2021 10:10:31

alpha.centauri
Invité

[résolu] cron et nftable

y a un truc qui doit bien m'échapper :

j'ai un petit script qui enrichit ma nftable chaque jour; ce script fonctionne sans souci en tant que su.

par contre, quand je lance le script via la crontab de root, il me sort que les commandes nft ne sont pas reconnues...

du coup, je vois pas trop ou chercher; si une bonne âme a une idée...:-)

Dernière modification par alpha.centauri (10-12-2021 18:12:00)

#2 04-12-2021 11:49:58

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] cron et nftable

Hello,

Je pense que la variable PATH n'est pas la même depuis root ou crontab (root).
Essaie de mettre dans ton script le chemin complet de l'exécutable nft :

/usr/sbin/nft   [Arguments de la commande]



Edit:
Quasiment sûr que c'est un problème de la variable PATH :
Depuis crontab(root) :

crontab -e


58 * * * * env | grep PATH > /root/cron_PATH


cat /root/cron_PATH


PATH=/usr/bin:/bin



Depuis root : (important : connecté à root avec su -)

env | grep PATH


PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Dernière modification par Tawal (04-12-2021 12:06:07)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#3 04-12-2021 12:58:02

alpha.centauri
Invité

Re : [résolu] cron et nftable

damned, tu as sans doute raison...

j'avais vu dans la doc que cron s'exécutait en tant que root et j'y ai cru :-) :-) :-)

bon, après, pourquoi cette différence de PATH ???

confirmation demain matin...

#4 04-12-2021 13:31:21

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [résolu] cron et nftable

Hello
Il faut voir aussi les variables d'environnement qui n'y sont pas toutes et parfois empêche l'exécution du script
avec crontab env et PATH me renvoie

env
HOME=/home/stephane
LOGNAME=stephane
LANG=fr_FR.UTF-8
SHELL=/bin/sh
PWD=/home/stephane

PATH=/usr/bin:/bin


https://debian-facile.org/viewtopic.php?id=2575
en gros comme dans mon exemple il faut rediriger les erreurs dans un fichier texte pour investiguer

* * * * */home/stephane/fond_ecran_crontab.sh 2>>/home/stephane/crontab.txt

Dernière modification par Croutons (04-12-2021 13:35:32)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#5 05-12-2021 10:13:37

alpha.centauri
Invité

Re : [résolu] cron et nftable

bon, ben, ça a failli :-(

la commande nft est bien reconnue, mais maintenant ça me dit des trucs du genre :

could not delete table : Operation not permitted

could not add table : Operation not permitted

alors que ça marche très bien en root.

pour le coup, c'est plus une histoire de path, et j'ai rien vu dans le env de root qui soit en rapport avec nftable...

#6 05-12-2021 10:58:06

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] cron et nftable

Ton script est-il bien lancé par la crontab root ?

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#7 05-12-2021 11:34:20

alpha.centauri
Invité

Re : [résolu] cron et nftable

yes....

#8 05-12-2021 11:53:36

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] cron et nftable

Hummm, étrange !

Peux-tu poster la ligne de la crontab root qui lance ton script ?
Ainsi que le contenu de ton script ? (entre balises [ code = bash ] [ \ code ] s'il te plaît)

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#9 05-12-2021 12:50:05

alpha.centauri
Invité

Re : [résolu] cron et nftable

voilà :
le script :


#!/bin/bash

# l'objectif et de recuperer les ip indesirables et de construire la table de filtrage correspondante

/usr/sbin/nft delete table ip mon_filtre # on efface la table courante

more /var/log/nginx/access.log | grep -E '401|404|400' | grep -vwE "(bruno)" | cut -d ' ' -f1| sort -u > listeip1 # on recupere les ip indesirables dans le dernier log de connexion

more nftfiltre.rules | grep drop | cut -d ' ' -f3| sort -u > listeip2 # on recupere les ip indesirables de la table precedente (le fichier nftfiltre.rules est utilisee pour construire la table mon_filtre)

cat listeip1>>listeip2

more listeip2 | sort -u > listeip # on réunit les deux tables et on enleve les eventuelles ip en double


rm nftfiltre.rules # on efface l'ancien fichier avant de le reconstruire
touch nftfiltre.rules
echo "table ip mon_filtre {" > nftfiltre.rules
echo "    chain input {" >> nftfiltre.rules
echo "        type filter hook input priority 0; policy accept;" >> nftfiltre.rules

a="ip saddr  "
b=" drop "

cat listeip | while  read ligne ; do
c=$a$ligne$b
echo $c >> nftfiltre.rules
done
echo "         }" >> nftfiltre.rules
echo "    }" >> nftfiltre.rules #fin de la construction

filtreip=filtreip$(date +%Y%m%d)

cp nftfiltre.rules /home/pi/Documents/filtreip/$filtreip

/usr/sbin/nft add table ip mon_filtre # on cree la table de filtrage

/usr/sbin/nft -f nftfiltre.rules # on ajoute les nouvelles règles
 



le crontab root :


05 00 * * * /home/pi/Documents/fichierscron/recupererip 2>/home/pi/logcron5
 



et le log


<cmdline>:1:1-27: Error: Could not delete table: Operation not permitted
delete table ip mon_filtre
^^^^^^^^^^^^^^^^^^^^^^^^^^^
<cmdline>:1:1-24: Error: Could not add table: Operation not permitted
add table ip mon_filtre
^^^^^^^^^^^^^^^^^^^^^^^^
 

#10 05-12-2021 13:47:41

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] cron et nftable

Et si tu lances ton script depuis un terminal root, as-tu les mêmes erreurs ?

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#11 05-12-2021 14:11:21

alpha.centauri
Invité

Re : [résolu] cron et nftable

ben non, justement, ça passe nickel, d'où mon interrogation....

#12 05-12-2021 14:42:29

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [résolu] cron et nftable

Hello
Voici les variables d'environnement

env


SHELL=/bin/bash
PWD=/root
LOGNAME=root
HOME=/root
LANG=fr_FR.UTF-8
TERM=xterm-256color
USER=root
SHLVL=1
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share:/var/lib/snapd/desktop
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
MAIL=/var/mail/root
_=/usr/bin/env
 



sous crontab beaucoup n'y sont plus

env


HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
LANG=fr_FR.UTF-8
SHELL=/bin/sh
PWD=/root
 


rien de sur mais c'est une idée qu'il te faut une variable
essai peut être

SHELL=/bin/bash ton_script

Dernière modification par Croutons (05-12-2021 14:42:45)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#13 05-12-2021 15:04:01

alpha.centauri
Invité

Re : [résolu] cron et nftable

ça change rien :-(

le message me fait plus penser à un problème lié à nftables plutôt qu'un pb d'interprétation du script... mais je n'ai encore rien trouvé sur cette histoire de permission

#14 05-12-2021 15:51:26

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] cron et nftable

alpha.centauri a écrit :

le message me fait plus penser à un problème lié à nftables plutôt qu'un pb d'interprétation du script


Moi aussi.
Je pense que nftables a besoin d'un shell interactif.
Quand tu lances ton script depuis un terminal root, tu es en mode interactif.
Mais quand tu le lances depuis crontab, tu n'es pas en mode interactif.

Peut-être en lançant ton script depuis crontab root de cette façon :

05 00 * * * xfce4-terminal -x /home/pi/Documents/fichierscron/recupererip


Ce qui va t'ouvrir un terminal dans lequel va s'exécuter ton script.
À voir ...

Edit:
Il faut ajouter un exit à la fin du script pour que le terminal ouvert par cron soit automatiquement fermé à la sortie du script.

Edit2:
Modification de la commande cron.
Pour les redirections, il faudra les inclure à l'intérieur du script.

Edit3:
Tiens, c'est intéressant : https://wiki.nftables.org/wiki-nftables … /Scripting

Dernière modification par Tawal (05-12-2021 16:26:32)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#15 05-12-2021 16:55:07

alpha.centauri
Invité

Re : [résolu] cron et nftable

sur un raspberry, ce serait plutôt lxterminal (en tous cas, c'est la seule commande que j'ai trouvée), par contre, même lancé en root, il m'ouvre une fenêtre en user, du coup, les commandes nftables ne passent pas... normal

j'ai modifié le script en passant les commandes en sudo, mais du coup j'ai "sudo /etc/sbin/nft : command not found" ce qui ne m'étonne pas trop, même si le user est un sudoer y doit bien avoir besoin d'un mot de passe qquepart...

par contre, j'ai vu nulle part que nftable avait besoin d'un terminal pour fonctionner, ce serait quand même curieux pour ce genre de soft; ip table en avait besoin ?

en tous cas, merci pour vos suggestions, je reviendrai sur le pb le prochain WE...


ps: merci pour le edit 3, intéressant en-effet, fô voir comment on peut mixer ça avec le bash

Dernière modification par alpha.centauri (05-12-2021 16:57:10)

#16 05-12-2021 17:25:14

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] cron et nftable

Pourquoi "sudo /etc/sbin/nft" ?

Un extrait du man nft :

TABLES

{add | create} table [family] table [ { flags flags } ]
{delete | list | flush} table [family] table
delete table [family] handle handle

Tables are containers for chains, sets and stateful objects. They are identified by their address family and their name. The address family must be one of ip, ip6, inet, arp, bridge, netdev. The inet address family is a dummy family which is used to create hybrid IPv4/IPv6 tables. The meta expression nfproto keyword can be used to test which family (IPv4 or IPv6) context the packet is being processed in. When no address family is specified, ip is used by default. The only difference between add and create is that the former will not return an error if the specified table already exists while create will return an error.

Table flags
Flag     Description
dormant     table is not evaluated any more (base chains are unregistered)

Add, change, delete a table


# start nft in interactive mode
nft --interactive
# create a new table.
create table inet mytable
# add a new base chain: get input packets
add chain inet mytable myin { type filter hook input priority 0; }
# add a single counter to the chain
add rule inet mytable myin counter
# disable the table temporarily -- rules are not evaluated anymore
add table inet mytable { flags dormant; }
# make table active again:
add table inet mytable


C'est ce qui m'a fait penser au mode interactif.


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#17 10-12-2021 18:11:22

alpha.centauri
Invité

Re : [résolu] cron et nftable

ah ces docs...

de mon côté, j'utilise nft sans problème et sans entrer dans ce mode interactif.

pour en revenir à la question précédente, et j'ai horreur de dire ça, après quelques jours de repos et un redémarrage, y a plus d'erreur; le script s'exécute sans souci... allez comprendre.

ça m'énerve toujours quand les choses "tombent en marche" mais je ne cherche plus à comprendre ;-)

merci encore

#18 10-12-2021 18:37:04

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] cron et nftable

Vu que c'est tombé en marche, faudrait pas que ça se remette en panne tongue

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#19 12-12-2021 17:34:16

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : [résolu] cron et nftable

Hello,
Tu gagnerais en lisibilité et en simplicité en utilisant les set de nftables.

Ci-dessous j’ai modifié le fichier des règles pour obtenir le même comportement que le tient (bloquer les adresses ipv4 et laisser passer toutes les adresses ipV6).


flush ruleset
table ip mon_filtre {
    chain input {
        type filter hook input priority 0; policy accept;
        set blockipv4 {
            type ipv4_addr
            elements = {}
            }
        id saddr @blockipv4 drop
        }
}
 



Pour ajouter un groupe d’ip à la liste précédente il suffit de lancer la commande dans ton script :

/usr/sbin/nft add element ip mon_filtre blockipv4 { $listeip }


Note que listeip doit contenir une liste d’ip séparées par des virgules (ip1, ip2 …)
Plus besoin d’effacer le fichier de règles à chaque ajout d’ip à bloquer.

Sinon il me semble que cron ne supporte le lancement correct d’un script que s’il est compatible posix. Tu devrais le faire débuter par #!/bin/sh au lieu de #!/bin/bash.

Dernière modification par Philou92 (12-12-2021 17:39:12)


Tousse antique Ovide !

Hors ligne

#20 12-12-2021 23:02:05

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] cron et nftable

Philou92 a écrit :

Sinon il me semble que cron ne supporte le lancement correct d’un script que s’il est compatible posix. Tu devrais le faire débuter par #!/bin/sh au lieu de #!/bin/bash.

Non du tout. J'ai des scripts utilisant des spécificités à bash non POSIX qui fonctionnent très bien avec cron.
De plus le shebang #!/bin/bash est très bien supporté wink
De même que #!/bin/awk -f  ou autre interpréteur wink

Dernière modification par Tawal (12-12-2021 23:02:34)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

Pied de page des forums