El reinicio de iptables devuelve: argumento incorrecto 'reiniciar'

El reinicio de iptables devuelve: argumento incorrecto 'reiniciar'

Tengo un Ubuntu LTSsistema funcionando desde hace un par de años. Ayer un corte de energía obligó a que mi computadora se apagara. Con la energía restaurada, inicié el sistema y todo pareció comenzar bien, con la excepción de iptables. Cada vez que reinicio este sistema, ufwsiempre se inicia, aunque lo haya configurado para que no lo haga. Prefiero iptablessimplemente porque lo sé, así que apago 'ufw' y iptableslo vuelvo a configurar y reiniciar con el siguiente procedimiento:

sudo ufw disable

sudo ip_tables_reset.sh
sudo ip_tables_config.sh

sudo iptables restart

y verificar con

sudo iptables -S

que devuelve:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

ahora la linea

sudo iptables restart

regresa con

Bad argument 'restart'

Pero he utilizado este procedimiento fielmente desde hace años. No he instalado ninguna actualización que yo sepa recientemente.

¿Qué ha cambiado para que este método confiable ahora falle?

referencia: iptables v1.4.12

Respuesta1

mencionas este comando

sudo iptables restart  #  wrong usage, its not a service

el siguiente conjunto de scripts es cómo realizar una copia de seguridad, habilitar o deshabilitar su firewall... primero verifique que tenga el paquete instalado

dpkg -l | grep iptables

una forma de ver la configuración actual de iptable

sudo iptables -L -n

la forma canónica de mostrar las reglas actuales de iptable (mostrar solo sin cambios)

sudo iptables-save

Al observar sus reglas, no está bloqueando el tráfico entrante (sus escudos están inactivos), mientras que seguir bloquea todo el tráfico entrante excepto los puertos específicos.

*filter
:INPUT DROP [331:17104]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [9727:1360720]
:GitHubWebHooks - [0:0]
-A INPUT -p tcp -m tcp --dport 9000 -j GitHubWebHooks
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A GitHubWebHooks -s 192.30.252.0/22 -j ACCEPT
-A GitHubWebHooks -j DROP
COMMIT

Observe que abro una dirección IP específica 192.30.252.0/22 ​​para poder ejecutar un servidor que escuche el tráfico entrante, por lo que todas las menciones de GitHubWebHooks son opcionales... si guarda lo anterior en un archivo, luego cargue ese archivo como sus reglas, entonces lo hará. bueno para ir... escudos arriba

Antes de cambiar algo, volquemos sus reglas actuales en un archivo de salida.

vi firewall_save_current_rules.sh

#!/usr/bin/env /bin/bash

set -o errexit  #  exit on error

#  dump current iptable rules to file

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

# ........

curr_timestamp=$(date '+%H%M%S%N')

curr_rulesfile=/etc/iptables/rules.v4.${curr_timestamp}.current_rules

rulesdir=$( dirname $curr_rulesfile )

if [[ ! -d $rulesdir ]]; then

    echo about to create dir $rulesdir
    mkdir $rulesdir
fi

iptables-save > ${curr_rulesfile}  # dump current iptable rules into output timestamped file


echo curr_rulesfile $curr_rulesfile

ahora ejecute el script anterior para guardar sus reglas actuales de iptable

sudo ./firewall_save_current_rules.sh

El siguiente código definirá un nuevo conjunto de reglas donde bloquearemos todo el tráfico entrante de forma predeterminada, excepto partes específicas (especialmente el puerto ssh + los puertos http y https normales).

vi firewall_shields_up.sh

#!/usr/bin/env /bin/bash

set -o errexit  #  exit on error

#  create new set of iptable rules from inline list of rules - Block all incoming traffic by default except specified

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

# ........


curr_timestamp=$(date '+%H%M%S%N')

new_rulesfile=/etc/iptables/rules.v4.${curr_timestamp}.new_rules

rulesdir=$( dirname $new_rulesfile )

if [[ ! -d $rulesdir ]]; then

    echo about to create dir $rulesdir
    mkdir $rulesdir
fi

# .....  park into a new file below list of iptable rules

cat << EOF > ${new_rulesfile}

*filter
:INPUT DROP [331:17104]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [9727:1360720]
:GitHubWebHooks - [0:0]
-A INPUT -p tcp -m tcp --dport 9000 -j GitHubWebHooks
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A GitHubWebHooks -s 192.30.252.0/22 -j ACCEPT
-A GitHubWebHooks -j DROP
COMMIT

EOF


echo new_rulesfile $new_rulesfile


iptables-restore <  ${new_rulesfile}  #  engage new iptable rules from file


echo here is new iptable settings

iptables-save


#  ... if you are running docker you will want to bounce its daemon
#  sudo service docker restart

ejecute el script anterior para definir nuevas reglas de iptable

sudo ./firewall_shields_up.sh 

Para que esté completo, a continuación encontrará un script de solución de problemas que deshabilitará efectivamente el firewall al abrir todo el tráfico entrante y saliente... ejecútelo si desea una pizarra vacía; sin embargo, ejecute encima de firewall_shields_up.sh para restablecer un firewall adecuado.

vi firewall_shields_down.sh

#!/usr/bin/env /bin/bash

set -o errexit  #  exit on error

#  open up all incoming and outgoing traffic ... effectively disabling the firewall

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root"
   exit 1
fi

# ........ lets first backup current rules into timestamped file

curr_timestamp=$(date '+%H%M%S%N')

curr_rulesfile=/etc/iptables/rules.v4.${curr_timestamp}.current_rules_before_opening_up_all_traffic

rulesdir=$( dirname $curr_rulesfile )

if [[ ! -d $rulesdir ]]; then

    echo about to create dir $rulesdir
    mkdir $rulesdir
fi

iptables-save > ${curr_rulesfile}  # dump current iptable rules into output timestamped file

echo curr_rulesfile $curr_rulesfile

# ... now alter iptables to lower shield




iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F



# ... display new iptable rules

echo
echo following are the new iptable rules after we opened up all incoming and outgoing traffic
echo

iptables-save

información relacionada