Cree una regla de iptables si la regla aún no existe

Cree una regla de iptables si la regla aún no existe

Hola, he creado un script para configurar Nagios en mis servidores remotos. Mi script verifica iptables para ver si ya existe una regla de firewall y luego lasupuestopara agregar la regla si aún no está allí.

En este momento, el script simplemente repite la regla, pero en realidad no puede escribirla. Se agradecería mucho cualquier ayuda.

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

Respuesta1

compruebe si existen reglas y, si no, agréguelas

iptables -C ENTRADA -s 0/0 -p tcp --dport 5666 -j ACEPTAR || iptables -I ENTRADA -s 0/0 -p tcp --dport 5666 -j ACEPTAR

Respuesta2

solo tienes que cambiar

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

a

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

Puedes omitir -s 0/0:

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

Y tendría sentido considerar cuál es la mejor posición dentro INPUT. Si esta regla debería ser la quinta (en lugar de la primera), cambie la llamada a:

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

Y

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

contiene un error. El comando

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

no se ejecuta. Debes agregar sustitución de comando:

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

información relacionada