Erstellen Sie eine iptables-Regel, falls die Regel noch nicht vorhanden ist

Erstellen Sie eine iptables-Regel, falls die Regel noch nicht vorhanden ist

Hallo, ich habe ein Skript erstellt, um Nagios auf meinen Remote-Servern einzurichten. Mein Skript überprüft iptables, um festzustellen, ob bereits eine Firewall-Regel vorhanden ist, und ist dannangeblichum die Regel hinzuzufügen, falls sie noch nicht vorhanden ist.

Momentan gibt das Skript die Regel nur wieder, kann sie aber nicht schreiben. Für jede Hilfe wäre ich sehr dankbar.

ssh -t -t root@$serverName << EOF
  service nrpe restart
  chkconfig nrpe on
  if [ "cat /etc/sysconfig/iptables | grep -- "5666"" != "-A INPUT -p tcp -m tcp --dport 5666 -j ACCEPT" ] ; then echo "iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACCEPT" ; fi
  service iptables save
  exit
EOF

Antwort1

Überprüfen Sie, ob Regeln vorhanden sind, und fügen Sie sie ggf. hinzu.

iptables -C INPUT -s 0/0 -p tcp --dport 5666 -j AKZEPTIEREN || iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j AKZEPTIEREN

Antwort2

Man muss sich nur ändern

echo "iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACCEPT"

Zu

iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACCEPT

Folgendes kannst du -s 0/0weglassen:

iptables -I INPUT -p tcp --dport 5666 -j ACCEPT

Und es wäre sinnvoll, zu überlegen, was die beste Position innerhalb ist INPUT. Wenn diese Regel die fünfte (statt die erste) sein soll, dann ändere den Aufruf wie folgt:

iptables -I 5 INPUT -p tcp --dport 5666 -j ACCEPT

Und

"cat /etc/sysconfig/iptables | grep -- "5666""

enthält einen Fehler. Der Befehl

cat /etc/sysconfig/iptables | grep -- "5666"

wird nicht ausgeführt. Sie müssen eine Befehlsersetzung hinzufügen:

"$(cat /etc/sysconfig/iptables | grep -- "5666")"

verwandte Informationen