Como iniciar / parar o iptables no Ubuntu?

82

Como posso iniciar / parar o serviço iptables no Ubuntu?

Eu tentei

 service iptables stop

mas está a oferecer "serviço não reconhecido" .

Por que isso está acontecendo? Existe algum outro método?

    
por splattne 03.04.2010 / 13:15

11 respostas

66

Eu não sei sobre o "Ubuntu", mas no Linux em geral, "iptables" não é um serviço - é um comando para manipular o firewall do kernel do netfilter. Você pode "desativar" (ou interromper) o firewall definindo as políticas padrão em todas as cadeias padrão para "ACEITAR" e liberando as regras.

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

(Você pode precisar limpar outras tabelas também, como "nat", se você as tiver usado)

O seguinte artigo no site do Ubuntu descreve a configuração do iptables para uso com o NetworkManager: link

    
por 03.04.2010 / 19:36
46

Você está errado: -)

O comando que você está procurando é:

$ sudo ufw disable
    
por 15.08.2012 / 20:40
29

Eu primeiro verificaria se ele é instalado com (provavelmente é):

dpkg -l | grep iptables

No Ubuntu, o iptables não é um serviço. Para pará-lo, você precisa fazer o seguinte:

sudo iptables-save > /root/firewall.rules
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Para restaurar suas regras anteriores:

iptables-restore < /root/firewall.rules

Isso foi retirado do link e foi testado em muitos Ubuntu 8.X & 9.10 instalações.

    
por 05.04.2010 / 09:46
16

Iptables é um comando que não é um serviço, então geralmente não é possível usar comandos como

service iptables start

ou

service iptables stop

para iniciar e parar o firewall, mas algumas distros como o centos instalaram um serviço chamado iptables para iniciar e parar o firewall e um arquivo de configuração para configurá-lo. De qualquer forma, é possível criar um serviço para gerenciar a edição de ipotables ou instalar um script para esse escopo. Todos os serviços no linux, o Ubuntu não é uma exceção, são scripts executáveis dentro da pasta /etc/init.d, que implementa uma interface padrão (start, stop, restart) Um possível script é assim:

 #!/bin/sh -e
 ### BEGIN INIT INFO
 # Provides:          iptables
 # Required-Start:    mountvirtfs ifupdown $local_fs
 # Default-Start:     S
 # Default-Stop:      0 6
 ### END INIT INFO

 # July 9, 2007
 # James B. Crocker <[email protected]>
 # Creative Commons Attribution - Share Alike 3.0 License (BY,SA)
 # Script to load/unload/save iptables firewall settings.

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

 IPTABLES=/sbin/iptables
 IPTABLES_SAVE=/sbin/iptables-save
 IPTABLES_RESTORE=/sbin/iptables-restore

 IPTABLES_CONFIG=/etc/iptables.conf

 [ -x $IPTABLES ] || exit 0

 . /lib/lsb/init-functions


 case "$1" in
 start)
    log_action_begin_msg "Starting firewall"
         type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
    if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
         type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
    ;;

 stop)
    log_action_begin_msg "Saving current firewall configuration"
    if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    log_action_begin_msg "Flushing ALL firewall rules from chains!"
    if $IPTABLES -F ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    log_action_begin_msg "Deleting ALL firewall chains [Warning: ACCEPTING ALL PORT SERVICES!]"
    if $IPTABLES -X ; then
        $IPTABLES -P INPUT ACCEPT
        $IPTABLES -P FORWARD ACCEPT
        $IPTABLES -P OUTPUT ACCEPT
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 save)
    log_action_begin_msg "Saving current firewall configuration"
    if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 force-reload|restart)
    log_action_begin_msg "Reloading firewall configuration [Warning: POTENTIAL NETWORK INSECURITY DURING RELOAD]"
    $IPTABLES -F
    $IPTABLES -X
    if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

 *)
    echo "Usage: /etc/init.d/iptables {start|stop|save|restart|force-reload}"
    exit 1
    ;;
 esac

 exit 0 

Este script faz parte deste tutorial , todos os comandos para configurar o firewall devem ser inseridos, de acordo com o script acima, no arquivo /etc/iptables.conf. Este script deve ser inserido em um arquivo chamado iptables em /etc/init.d e torná-lo executável usando

chmod+x *iptables* 

e adicione o serviço aos runlevels usando

update-rc.d iptables defaults

Você pode adicionar novas regras do shell, essas regras estarão imediatamente ativas e serão adicionadas ao /etc/iptables.conf quando o serviço parar (isso significa que elas serão salvas com certeza quando o sistema for desligado).

Espero que isso seja útil para todos.

    
por 17.10.2011 / 09:53
6

Como o iptables e o ufw são formas de gerenciar o firewall netfilter no Linux, e como ambos estão disponíveis por padrão no Ubuntu, você pode usar para iniciar e parar (e gerenciar) regras de firewall.

O iptables é mais flexível, mas como o ufw fornece uma linguagem de interface muito simples para funções simples e típicas, você pode usar:

sudo ufw disable # Para desativar o firewall

sudo ufw enable # Para ativar o firewall

Para ver as configurações atuais do firewall, use sudo ufw status verbose ou iptables -L .

A Comunidade Ubuntu documenta páginas em iptables e UFW tem muito mais informações.

    
por 03.07.2013 / 00:37
3

Se bem me lembro, a maneira sugerida para configurar o iptables nos guias do Ubuntu é configurá-lo como parte dos scripts de rede. o que significa que não existe um script /etc/init.d/iptables como existe no sistema operacional do estilo BSD.

    
por 04.04.2010 / 01:05
3

Parece que existem várias formas de gerir o firewall no Ubuntu, pelo que poderá estar interessado em ler isto: link

Para eliminar todas as regras atuais, você pode usar esses comandos (coloque-os em algum script):

iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -F
iptables -t mangle -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -F
iptables -t filter -X

No caso normal, as regras de firewall padrão são salvas em algum arquivo (por exemplo, /etc/iptables.rules). Ao inicializar o comando do sistema iptables-restore </etc/iptables.rules executado para carregar regras de firewall. Então, executar o mesmo comando depois que você soltar todas as regras usando os comandos acima resultará em "reloading firewall" que você pediu.

    
por 05.04.2010 / 06:32
3

Crie um arquivo em /etc/init.d /

touch fw.rc

Torne o arquivo executável chmod + x

Crie um link simbólico para esse arquivo em /etc/rc2.d /

ln -s /etc/init.d/fw.rc S80firewall

Edite o S80firewall e adicione o seguinte

iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F

Você pode adicionar todas as suas regras iptables personalizadas neste arquivo

Agora você pode reiniciar o firewall (iptables) executando /etc/rc2.d/S80firewall (deve ser root)

    
por 17.10.2011 / 10:37
2

Eu tive o mesmo problema. Na verdade, não havia persistentes no iptables em /etc/init.d

Então, eu criei o arquivo persistente iptables em /etc/init.d

nano /etc/init.d/iptables-persistent

e escreveu o seguinte em:

#!/bin/sh
#       Written by Simon Richter <[email protected]>
#       modified by Jonathan Wiltshire <[email protected]>
#       with help from Christoph Anton Mitterer
#

### BEGIN INIT INFO
# Provides:          iptables-persistent
# Required-Start:    mountkernfs $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Start-Before:    $network
# X-Stop-After:      $network
# Short-Description: Set up iptables rules
# Description:       Loads/saves current iptables rules from/to /etc/iptables
#  to provide a persistent rule set during boot time
### END INIT INFO

. /lib/lsb/init-functions

rc=0

load_rules()
{
    log_action_begin_msg "Loading iptables rules"

    #load IPv4 rules
    if [ ! -f /etc/iptables/rules.v4 ]; then
        log_action_cont_msg " skipping IPv4 (no rules to load)"
    else
        log_action_cont_msg " IPv4"
        iptables-restore < /etc/iptables/rules.v4 2> /dev/null
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    #load IPv6 rules    
    if [ ! -f /etc/iptables/rules.v6 ]; then
        log_action_cont_msg " skipping IPv6 (no rules to load)"
    else
        log_action_cont_msg " IPv6"
        ip6tables-restore < /etc/iptables/rules.v6 2> /dev/null
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    log_action_end_msg $rc
}

save_rules()
{
    log_action_begin_msg "Saving rules"

    #save IPv4 rules
    #need at least iptable_filter loaded:
    /sbin/modprobe -q iptable_filter
    if [ ! -f /proc/net/ip_tables_names ]; then
        log_action_cont_msg " skipping IPv4 (no modules loaded)"
    elif [ -x /sbin/iptables-save ]; then
        log_action_cont_msg " IPv4"
        iptables-save > /etc/iptables/rules.v4
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    #save IPv6 rules
    #need at least ip6table_filter loaded:
    /sbin/modprobe -q ip6table_filter
    if [ ! -f /proc/net/ip6_tables_names ]; then
        log_action_cont_msg " skipping IPv6 (no modules loaded)"
    elif [ -x /sbin/ip6tables-save ]; then
        log_action_cont_msg " IPv6"
        ip6tables-save > /etc/iptables/rules.v6
        if [ $? -ne 0 ]; then
            rc=1
        fi
    fi

    log_action_end_msg $rc
}

flush_rules()
{
    log_action_begin_msg "Flushing rules"

    if [ ! -f /proc/net/ip_tables_names ]; then
        log_action_cont_msg " skipping IPv4 (no module loaded)"
    elif [ -x /sbin/iptables ]; then
        log_action_cont_msg " IPv4"
        for param in F Z X; do /sbin/iptables -$param; done
        for table in $(cat /proc/net/ip_tables_names)
        do
            /sbin/iptables -t $table -F
            /sbin/iptables -t $table -Z
            /sbin/iptables -t $table -X
        done
        for chain in INPUT FORWARD OUTPUT
        do
            /sbin/iptables -P $chain ACCEPT
        done
    fi

    if [ ! -f /proc/net/ip6_tables_names ]; then
        log_action_cont_msg " skipping IPv6 (no module loaded)"
    elif [ -x /sbin/ip6tables ]; then
        log_action_cont_msg " IPv6"
        for param in F Z X; do /sbin/ip6tables -$param; done
        for table in $(cat /proc/net/ip6_tables_names)
        do
            /sbin/ip6tables -t $table -F
            /sbin/ip6tables -t $table -Z
            /sbin/ip6tables -t $table -X
        done
        for chain in INPUT FORWARD OUTPUT
        do
            /sbin/ip6tables -P $chain ACCEPT
        done
    fi

    log_action_end_msg 0
}

case "$1" in
start|restart|reload|force-reload)
    load_rules
    ;;
save)
    save_rules
    ;;
stop)
    # Why? because if stop is used, the firewall gets flushed for a variable
    # amount of time during package upgrades, leaving the machine vulnerable
    # It's also not always desirable to flush during purge
    echo "Automatic flushing disabled, use \"flush\" instead of \"stop\""
    ;;
flush)
    flush_rules
    ;;
*)
    echo "Usage: $0 {start|restart|reload|force-reload|save|flush}" >&2
    exit 1
    ;;
esac

exit $rc

e, em seguida, deu permissão chmod 755.

chmod 755 /etc/init.d/iptables-persistent

Agora funciona perfeitamente! Espero que possa ajudar alguém.

    
por 17.04.2015 / 12:39
2

Se você estiver executando o servidor Ubuntu como convidado da VM (por exemplo, no VirtualBox), a libvirt pode estar ativada. Se assim for, o libvirt contém alguns filtros de rede embutidos que utilizam o iptables. Esses filtros podem ser configurados conforme descrito na seção de firewall em nwfilters .

Para desabilitar as regras do iptables você precisará remover todas as regras ofensivas do libvirt, ou você pode simplesmente desabilitar o libvirt se não estiver usando-o - por exemplo, instale uma configuração de substituição manual (depois reinicialize):

sudo bash -c 'echo "manual" > /etc/init/libvirt-bin.override'
    
por 01.04.2016 / 16:38
1

Você está usando o comando apropriado para RedHat e CentOS, não para o Ubuntu nem para o Debian.

link

    
por 14.08.2013 / 00:59