iptables persistentes

1

Acabei de ler sobre iptables-persistent e estou completamente perdido w.r.t. o design. Eu sou não o único , que não entendeu como funciona, mas na verdade parece ser o caminho além da minha imaginação.

Imaginei algo como crontab -e : você edita um conjunto de regras e eles são persistidos e aplicados quando o editor é fechado. Eles são armazenados em algum lugar e eu, como usuário, não tenho ideia de onde. Não me diga; é perfeito assim.

Existe tal ferramenta? Por que o iptables-persistent trabalha neste difícil caminho?

    
por maaartinus 09.12.2017 / 04:39

3 respostas

5

Em geral, você pode editar as regras do iptables ativas para IPv4 com um editor de texto usando o comando iptables-save para gravar as regras em um arquivo e depois usar o comando iptables-restore para recarregar as novas regras feito, por exemplo:

user@host:~$ iptables-save > rules.v4
user@host:~$ vim rules.v4
user@host:~$ iptables-restore rules.v4

Para o IPv6, você usaria os comandos análogos ip6tables-save e ip6tables-restore , ou seja:

user@host:~$ ip6tables-save > rules.v6
user@host:~$ vim rules.v6
user@host:~$ ip6tables-restore rules.v6

O serviço iptables-persistent verifica nos seguintes locais:

/etc/iptables/rules.v4
/etc/iptables/rules.v6

Portanto, para aplicar suas regras e mantê-las persistentes, siga as mesmas etapas acima, mas edite os arquivos iptables-persistent , por exemplo:

user@host:~$ iptables-save > /etc/iptables/rules.v4
user@host:~$ vim /etc/iptables/rules.v4
user@host:~$ iptables-restore /etc/iptables/rules.v4

Eu não sei de um comando interativo para editar as regras do iptables como o que você está descrevendo, mas deve ser muito fácil criar as suas próprias regras. Aqui está um exemplo simples:

#!/usr/bin/env bash

# iptables-e.sh

# Create a temporary file to store the new rules
TEMPFILE=$(mktemp)

# Save the current rules to a file
iptables-save > "${TEMPFILE}"

# Edit the rules interactively with a text editor
"${EDITOR}" "${TEMPFILE}" 

# Try to load the rules and update the persistent rules if no errors occur
iptables-restore "${TEMPFILE}" && cat "${TEMPFILE}" > /etc/iptables/rules.v4

Isso realmente não é muito diferente de como crontab -e funciona, que salva automaticamente o crontab ativo em um arquivo no diretório /var/spool/cron/crontabs , que é o que faz com que o crontab seja persistente. Veja o seguinte post para mais discussões sobre este assunto:

Você também pode estar interessado no seguinte script:

Eu não posso garantir isso. Eu nunca usei isso. É a única coisa que encontrei procurando por edição interativa de iptables.

    
por 09.12.2017 / 05:18
2

Por que você não cria um script assim:

#!/bin/bash
...
${YOUR_IPTABLES_RULES}
...

Em seguida, basta iniciar o script toda vez que você reinicializar sua máquina:

# vim /etc/crontab
@reboot         root         /bin/bash /root/bin/myiptablesrules.sh

Dessa forma, você também teria regras persistentes:)

    
por 09.12.2017 / 15:50
1

Você já tentou usar o comando iptables-save?

iptables-save > /path/to/file
ip6tables-save > /path/to/file
iptables-restore < /path/to/file
ip6tables-restore < /path/to/file

Você pode salvar o arquivo manualmente e adicionar o comando restore para ser executado na inicialização ou no login. Os arquivos resultantes são facilmente legíveis e contêm os comandos equivalentes do iptables para cada entrada. Você também pode editar os arquivos resultantes antes de recarregá-los. Pelo menos é o que eu faço. Não tenho certeza se esse é o melhor método, mas definitivamente funciona.

    
por 09.12.2017 / 05:06