Skip to main content

Manipule as regras do iptables de forma simples.

Project description

Iptables Tools

Iptables Tools é uma biblioteca Python que abstrai os comandos do iptables, permitindo que os usuários criem suas regras de firewall sem precisar conhecer os comandos do iptables.

Requisitos

  • Python 3.10+ (Testado com Python 3.10.0), mas deve funcionar com versões anteriores do Python 3
  • iptables
  • ip6tables

Instalação

Para instalar a biblioteca Iptables Tools, você pode usar o pip:

pip install iptables-tools
iptables-tools install

Obs: A instalação criará um backup das regras atuais do iptables e ip6tables na pasta /opt/iptables_tools/backup/, em caso de problemas, você pode restaurar as regras usando o comando iptables-tools roolback.

Configuração de regras

Para usar a biblioteca Iptables Tools, você precisará criar um arquivo de configuração TOML com suas regras de firewall na pasta /opt/iptables_tools/config-available.d/. A biblioteca lerá este arquivo e adicionará as regras ao iptables.

Aqui está um exemplo de como um arquivo de configuração para ssh pode parecer:

cat /opt/iptables_tools/config-available.d/ssh.toml

[ssh] # Esta seção define a configuração para o serviço SSH. O usuário pode alterar conforme necessário.

[ssh.input] # Esta seção define o protocolo, a chain e a porta conforme necessário.
protocol = "tcp"
chain = "INPUT"
port = 22

[ssh.input.ipv4.accept] # Esta seção define as regras de aceitação para IPv4.
mapping = [
    {src='127.0.1.1', dst='127.0.0.1', comment='Permitir acesso de rede IPv4 específica'},
]

[ssh.input.ipv4.drop] # Esta seção define as regras de rejeição para IPv4.
mapping = [
    {comment='Bloqueia SSH IPv4'}
]

[ssh.input.ipv6.accept] # Esta seção define as regras de aceitação para IPv6.
mapping = [
    {src='2001:db8:ca5a:faca::/64', comment='Permitir acesso de rede IPv6 específica'},
]

[ssh.input.ipv6.drop] # Esta seção define as regras de rejeição para IPv4.
mapping = [
    {comment='Bloqueia SSH IPv6'}
]

# Cada regra de mapping é um dicionário que pode conter as chaves src (para a rede de origem), dst (para a rede de destino) e comment (para um comentário descritivo). A ausencia de src ou dst significa que a regra se aplica a qualquer origem ou destino.

O resultado final será algo como:

iptables -A INPUT -s 127.0.1.1/32 -d 127.0.0.1/32 -p tcp -m tcp --dport 22 -m comment --comment "Permitir acesso de rede IPv4 específica" -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -m comment --comment "Bloqueia SSH IPv4" -j DROP
ip6tables -A INPUT -s 2001:db8:ca5a:faca::/64 -p tcp -m tcp --dport 22 -m comment --comment "Permitir acesso de rede IPv6 específica" -j ACCEPT
ip6tables -A INPUT -p tcp -m tcp --dport 22 -m comment --comment "Bloqueia SSH IPv6" -j DROP

Adicionando mais regras

Para adicionar mais regras, basta adicionar o dicionário de configuração no arquivo TOML, exemplo:

[ssh.input.ipv4.accept] # Esta seção define as regras de aceitação para IPv4.
mapping = [
    {src='127.0.1.1', dst='127.0.0.1', comment='Permitir acesso de rede 127 IPv4 específica'},
    {src='10.10.10.1', comment='Permitir acesso de rede 10 IPv4 específica'},
]

O resultado final será algo como:

iptables -A INPUT -s 127.0.1.1/32 -d 127.0.0.1/32 -p tcp -m tcp --dport 22 -m comment --comment "Permitir acesso de rede 127 IPv4 específica" -j ACCEPT
iptables -A INPUT -s 10.10.10.1/32 -p tcp -m tcp --dport 22 -m comment --comment "Permitir acesso de rede 10 IPv4 específica" -j ACCEPT

Iniciando o serviço

Para iniciar o serviço, você pode usar o comando:

systemctl start iptables-tools

Obs: Após iniciar o serviço irá adicionar as regras de firewall ao iptables.

Verificando o status do serviço

Para verificar o status do serviço, você pode usar o comando:

systemctl status iptables-tools

Parando o serviço

Para parar o serviço, você pode usar o comando:

systemctl stop iptables-tools

OBs: Após parar o serviço irá remover as regras de firewall do iptables.

Reiniciando o serviço

Para reiniciar o serviço, você pode usar o comando:

systemctl restart iptables-tools

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iptables_tools-0.1.0.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

iptables_tools-0.1.0-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file iptables_tools-0.1.0.tar.gz.

File metadata

  • Download URL: iptables_tools-0.1.0.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.10.12 Linux/5.15.133.1-microsoft-standard-WSL2

File hashes

Hashes for iptables_tools-0.1.0.tar.gz
Algorithm Hash digest
SHA256 31f76891b1f6e52cf4e23943b172a7d35157c794c38e94abc214fa67e076ec49
MD5 fd179b2ed3fcd63dd68242e011760fe9
BLAKE2b-256 c6346f42d6039c420bc78cad109a5d569d5a495a2ba3e4e3a5e1582327d0db0b

See more details on using hashes here.

File details

Details for the file iptables_tools-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iptables_tools-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.10.12 Linux/5.15.133.1-microsoft-standard-WSL2

File hashes

Hashes for iptables_tools-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cf98c459f605a06293ff6bec2f0c5e010991e757eb03120e66b1a770c0d1e495
MD5 b7c178416489727c262501534b9a1ca2
BLAKE2b-256 e96b6940e6664a56e23c177b6c9c164e59389d1585257fc1d722288b69a775b5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page