At reboot in cron wird ignoriert
Hallo,
ich habe der /etc/crontab als letzte Zeile
@reboot root /etc/init.d/firewall.sh
hinzugefügt.
Dort ist eine iptables Regel drin, die hinzugefügt werden soll. Der Befehl wird aber ignoriert.
Auf einem Testserver mit gleichem System funktioniert es aber.
Woran kann das liegen bzw. gibt es andere Möglichkeiten das Script beim Start zu laden?
Danke
ich habe der /etc/crontab als letzte Zeile
@reboot root /etc/init.d/firewall.sh
hinzugefügt.
Dort ist eine iptables Regel drin, die hinzugefügt werden soll. Der Befehl wird aber ignoriert.
Auf einem Testserver mit gleichem System funktioniert es aber.
Woran kann das liegen bzw. gibt es andere Möglichkeiten das Script beim Start zu laden?
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1934335579
Url: https://administrator.de/forum/at-reboot-in-cron-wird-ignoriert-1934335579.html
Ausgedruckt am: 06.04.2025 um 06:04 Uhr
17 Kommentare
Neuester Kommentar

Was soll deiner Meinung nach das root bewirken? Das hat da eigentlich nichts zu suchen.
p.s. das syslog verrät dir ziemlich viel was so im System ab geht und schief läuft
.
Der Befehl wird aber ignoriert.
Cron-Service läuft nicht/wird beim Boot nicht gestartet? Skript ist nicht als ausführbar markiert (chmod +x script.sh)? Komplette Pfade zu executables im Skript hinterlegt?p.s. das syslog verrät dir ziemlich viel was so im System ab geht und schief läuft
Moin,
- Script ist ausführbar? -> chmod +x
- im Script selber: sind die commands mit dem full path eingetragen?
Also wenn im Script zB nur "iptables" drin steht, wird das ggf. nicht funktieren -> da muss explizit "/usr/sbin/iptables" drin stehen.
(den full path für das Command kannst du im Zweifelsfall mit "which iptables" auslesen).
Ansonsten, hast du das file "etc/crontab" direkt bearbeitet?
Sonst versuchs mal mit "crontab -e", dann wird der Cronjob auch gleich installiert.
Oder auch: "systemctl reload cron" im Anschluss an deine direkte Änderung per text editor.
- Script ist ausführbar? -> chmod +x
- im Script selber: sind die commands mit dem full path eingetragen?
Also wenn im Script zB nur "iptables" drin steht, wird das ggf. nicht funktieren -> da muss explizit "/usr/sbin/iptables" drin stehen.
(den full path für das Command kannst du im Zweifelsfall mit "which iptables" auslesen).
Ansonsten, hast du das file "etc/crontab" direkt bearbeitet?
Sonst versuchs mal mit "crontab -e", dann wird der Cronjob auch gleich installiert.
Oder auch: "systemctl reload cron" im Anschluss an deine direkte Änderung per text editor.

Hallo,
warum das nicht geht - keine Ahnung. Aber das ist eh' Ieh-Bah was Du da vorhast...
Die Regeln speichert man in /etc/iptables/rules.v4 bzw. /etc/iptables/rules.v6
Das automagische Einlesen beim Systemstart hängt ein bisschen von der Distribution ab. Bei Debian, Ubuntu usw. reicht es, das Paket iptables-persistent via apt nachzuinstallieren. Gelegentlich muss auch ein Service installiert und enabled sein (RedHat, CentOS usw.).
Genaueres weiß man hier: Iptables Firewall Regeln dauerhaft speichern (Thomas Krenn Wiki)
Das zum Einen.
Zum Anderen: Wenn Du ein Script beim Systemstart starten willst - lass' den Cron-Quatsch. In dem Fall hängt das davon ab, ob Du tatsächlich noch das alte SystemV-Initkonzept oder den systemd verwendest. Die meisten aktuellen Distris benutzen systemd - es sei denn, der Betreiber weiß, was er tut
Beim systemd erstellst Du einen eigenen Service; z.B. unter /etc/systemd/system/firewall.service
Anschließend aktivierst Du den mit
Wenn Du tatsächlich SystemV Init benutzt, legst Du "wie gehabt" symbolische Links in den Verzeichnissen der jeweiligen Runlevel an. Evtl. hat deine Distribution auch ein Tool, was das automatisch erledigt.
Gruß,
Jörg
warum das nicht geht - keine Ahnung. Aber das ist eh' Ieh-Bah was Du da vorhast...
Die Regeln speichert man in /etc/iptables/rules.v4 bzw. /etc/iptables/rules.v6
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
Das automagische Einlesen beim Systemstart hängt ein bisschen von der Distribution ab. Bei Debian, Ubuntu usw. reicht es, das Paket iptables-persistent via apt nachzuinstallieren. Gelegentlich muss auch ein Service installiert und enabled sein (RedHat, CentOS usw.).
Genaueres weiß man hier: Iptables Firewall Regeln dauerhaft speichern (Thomas Krenn Wiki)
Das zum Einen.
Zum Anderen: Wenn Du ein Script beim Systemstart starten willst - lass' den Cron-Quatsch. In dem Fall hängt das davon ab, ob Du tatsächlich noch das alte SystemV-Initkonzept oder den systemd verwendest. Die meisten aktuellen Distris benutzen systemd - es sei denn, der Betreiber weiß, was er tut
Beim systemd erstellst Du einen eigenen Service; z.B. unter /etc/systemd/system/firewall.service
[Unit]
Description=WOL Zeitfenster prüfen.
[Service]
Type=simple
ExecStart=/etc/init.d/firewall.sh
[Install]
WantedBy=multi-user.target
Anschließend aktivierst Du den mit
systemctl enable wol_check
Wenn Du tatsächlich SystemV Init benutzt, legst Du "wie gehabt" symbolische Links in den Verzeichnissen der jeweiligen Runlevel an. Evtl. hat deine Distribution auch ein Tool, was das automatisch erledigt.
Gruß,
Jörg

Hallo,
stimmt, da war noch ein Tippfehler
ist natürlich richtig. Vorausgesetzt, die Unit heißt auch firewall.service
Beide Lösungen funktionieren. Und Du kannst natürlich auch grundsätzlich initiale Regeln setzen und dann im laufenden Betrieb erweitern.
Was ufw macht - keine Ahnung?!? Solche Tools sind eher unüblich - genau so wie deine Cron-Geschichte.
Vielleicht ist es auch dieses ominöse ufw, was Dir die Regeln überschreibt und einfach dich nur vermuten lässt, dass deine Regeln nicht geladen werden?!?
Gruß,
Jörg
stimmt, da war noch ein Tippfehler
systemctl enable firewall
ist natürlich richtig. Vorausgesetzt, die Unit heißt auch firewall.service
Beide Lösungen funktionieren. Und Du kannst natürlich auch grundsätzlich initiale Regeln setzen und dann im laufenden Betrieb erweitern.
Was ufw macht - keine Ahnung?!? Solche Tools sind eher unüblich - genau so wie deine Cron-Geschichte.
Vielleicht ist es auch dieses ominöse ufw, was Dir die Regeln überschreibt und einfach dich nur vermuten lässt, dass deine Regeln nicht geladen werden?!?
Gruß,
Jörg

Hallo,
wie gesagt - ich vermute eher, dass die iptables-Regeln wie gewünscht beim booten geladen und irgendwann (ebenfalls beim booten) von diesem ominösen ufw-Ding überschrieben werden.
Das würde zumindest das von Dir beschriebenen Verhalten erklären.
Ob das Script abgearbeitet wird, kann man ja leicht eingrenzen. Falls Du es denn mit systems machst. Üblich ist wie gesagt iptables-save
Gruß,
Jörg
wie gesagt - ich vermute eher, dass die iptables-Regeln wie gewünscht beim booten geladen und irgendwann (ebenfalls beim booten) von diesem ominösen ufw-Ding überschrieben werden.
Das würde zumindest das von Dir beschriebenen Verhalten erklären.
Ob das Script abgearbeitet wird, kann man ja leicht eingrenzen. Falls Du es denn mit systems machst. Üblich ist wie gesagt iptables-save
Gruß,
Jörg

Btw. User Regeln sollten bei ufw in die Chain
ufw-user-input geschrieben werden.
Um Regeln zu ergänzen, die liegen hier /etc/ufw zusätzliches Skript also überflüssig, denn sofern man die Regeln gespeichert hat bleiben sie auch da wo sie sind.
Du brauchst also für Blocklistst nur noch ein cron für das regelmäßige Update der ipsets, das muss nicht zwingend beim Reboot geschehen, da ipsets ebenfalls gespeichert werden.
Das regelmäßige Hinzufügen einer iptables Regel beim Reboot ist also vollkommen überflüssig wenn du es richtig machst.
Tipps Umstieg ufw zu iptables
ufw-user-input geschrieben werden.
Um Regeln zu ergänzen, die liegen hier /etc/ufw zusätzliches Skript also überflüssig, denn sofern man die Regeln gespeichert hat bleiben sie auch da wo sie sind.
Du brauchst also für Blocklistst nur noch ein cron für das regelmäßige Update der ipsets, das muss nicht zwingend beim Reboot geschehen, da ipsets ebenfalls gespeichert werden.
Das regelmäßige Hinzufügen einer iptables Regel beim Reboot ist also vollkommen überflüssig wenn du es richtig machst.
Tipps Umstieg ufw zu iptables

Schau dir doch die Default Regeln mal genau an ufw-user-input ist eine Chain die aus der INPUT heraus angesprungen wird! Und genau da legt ufw die vom User generierten Regeln ab...

Oben schon verlinkt ...
Tipps Umstieg ufw zu iptables
Erst wird von INPUT nach ufw-before-input
gesprungen, und von dort aus dann in die final ufw-user-input Chain in der die vom User platzierten Regeln für ufw stehen sollten
Tipps Umstieg ufw zu iptables
Erst wird von INPUT nach ufw-before-input
-A INPUT -j ufw-before-input
-A ufw-before-input -j ufw-user-input

Hallo,
ich habe Dir geschrieben wie man iptables Regeln dauerhaft speichert. Deine Scriptlösung ist für mich nicht nachvollziehbar, insofern kann ich Dir da nicht weiterhelfen.
Übrigens: Regeln von fail2ban gehören natürlich(!) an den Anfang. Eigentlich logisch, oder?
Gruß,
Jörg
ich habe Dir geschrieben wie man iptables Regeln dauerhaft speichert. Deine Scriptlösung ist für mich nicht nachvollziehbar, insofern kann ich Dir da nicht weiterhelfen.
Übrigens: Regeln von fail2ban gehören natürlich(!) an den Anfang. Eigentlich logisch, oder?
Gruß,
Jörg