iptables

Iptables para iniciantes

Iptables para iniciantes
Iptables é basicamente o principal firewall usado para sistemas Linux, existem alternativas como nftables, mas Iptables continua sendo a principal, é muito flexível aceitando comandos diretos do usuário, você pode carregar e descarregar regras conforme necessário para aumentar as políticas de seu firewall precisão.

Na verdade você nem precisa saber a sintaxe do Iptable para usá-lo, você tem ferramentas gráficas como o Firewall Builder que podem tornar o processo de aprendizagem desnecessário, mas se o desejo é aumentar o conhecimento de administração do Linux Iptables é o primeiro passo para aprender como fazer na prática administre a segurança no Linux e até mesmo facilite o gerenciamento de dispositivos de segurança CISCO ou Fortigate e semelhantes.

Iptables basicamente permite que você instrua seu sistema a aceitar, recusar ou encaminhar uma conexão dependendo dos parâmetros escolhidos, por exemplo, para redirecionar todas as conexões para a porta X para um endereço IP diferente, para bloquear todas as conexões provenientes de um IP específico, intervalo de IP ou para aceitar todas as conexões provenientes de endereços IP da lista de permissões, entre muitas outras funções.

Neste tutorial, aprenderemos como proteger um servidor da Web, como encaminhar conexões para endereços IP internos de nossa LAN e como oferecer serviços específicos apenas para endereços IP permitidos.

Instalando Iptables

Para instalar iptables em sistemas Debian / Ubuntu, basta executar “apt update && apt install iptables” como root ou com “sudo” como prefixo como na imagem a seguir.

Abrindo portas HTTP e HTTPS

Em primeiro lugar, vamos adicionar todas as políticas de ACEITAR começando pelo servidor da web.

iptables -A INPUT -p tcp --dport 80 -j ACEITAR
iptables -A INPUT -p tcp --dport 443 -j ACEITAR

Para ver nossas regras adicionadas, execute “iptables -L”

Onde:

Iptables = chama o programa
-UMA = adiciona uma regra
ENTRADA = tráfego de entrada
-p = protocolo
-ddport = porta de destino
-j = especificar o “alvo”, o alvo é o tipo de política: ACCEPT, DROP, QUEUE ou RETURN.

Então, no exemplo da imagem acima, estamos dizendo ao Iptables para adicionar uma regra para o tráfego de entrada através do protocolo TCP e as portas 80 e 443 para serem aceitas.

Podemos alterar o comando para aceitar a conexão apenas de um IP específico, adicionando o parâmetro “-s”:

iptables -A INPUT -s 127.0.0.1 -p tcp --dport 80 -j ACEITAR

Onde:

s = fonte
Iptables -L = lista todas as regras carregadas de iptables
Iptables -L -v = o mesmo com verbosidade.

Também podemos testar nosso firewall com nmap:

Como podemos ver a porta 80 está aberta tanto de acordo com “iptables -L” e Nmap.

Nota: Para obter mais informações sobre o uso do Nmap, você pode ler nosso tutorial sobre ele

Protegendo seu servidor

#Abra os serviços HTTP e HTTPS.
iptables -A INPUT -p tcp --dport 80 -j ACEITAR
iptables -A INPUT -p tcp --dport 443 -j ACEITAR
#Open SSH Port Service
iptables -A ENTRADA -p tcp --dport 22 -m conntrack --ctstate NOVO, ESTABELECIDO -j ACEITAR

Onde os novos parâmetros são:

-m = significa "combinar" e é usado para chamar as extensões de Iptable, como conntrack, que não faz parte das funções centrais do iptable.

conntrack = Permite rastrear informações sobre conexões como endereços específicos ou, neste caso, o estado da conexão. Isso deve ser usado com cuidado, pois muitas regras para defender servidores de alguns ataques usam conntrack enquanto seu uso é limitado pelo hardware e tal limitação pode ser usada para sobrecarregar os recursos do servidor.

-ctstate = determina o estado da regra a ser correspondida, os estados possíveis são: NOVO, ESTABELECIDO, RELACIONADO e INVÁLIDO.

#Proteja seu serviço SSH contra ataques de força bruta, permitindo apenas um IP específico
para acessar iptables -A INPUT -p tcp -s X.X.X.X --dport 22 -m conntrack --ctstate NOVO,
ESTABELECIDO -j ACEITAR
#Proteja seu serviço SSH contra ataques de força bruta, limitando as tentativas de conexão
Iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NOVO -j 22-test
Iptables -A 22-test -m recente --name CONEXÕES --set --mask 255.255.255.255 --rsource
Iptables -A 22-test -m recente --name CONEXÕES --rcheck --mask 255.255.255.255
--rsource --seconds 30 --hitcount 3 -j 22-proteção
Iptables -A 22-test -j ACEITAR
Iptables -A 22-proteção -j DROP

Onde:
Na primeira linha, nossa regra diz “-m conntrack -ctstate NOVO ” o que significa que se a conexão for nova, passe para a regra "22-teste".

A segunda linha diz pacotes de máscara de rede 255.255.255.255 são nomeados como LIGAÇÕES .

A terceira linha diz se um LIGAÇÕES Isso parece mais de 3 vezes em 30 segundos, o firewall continua aplicando a cadeia 22-proteção. A quarta linha diz se o LIGAÇÕES não apareceu mais de 3 vezes em 30 segundos, pode ser aceito.
Quinta linha, que pertence ao 22-proteção corrente diz para cair LIGAÇÕES se parecer mais de 3 vezes em 30 segundos.

Agora, para terminar, vamos recusar todas as conexões não aceitas e permitir todo o tráfego de saída:

iptables -P SAÍDA ACEITAR
iptables -P INPUT DROP

Onde -P significa a cadeia do alvo, lembre-se de que o alvo é a política, ACEITAR, DROP, QUEUE ou RETURN. Neste caso, estamos dizendo que a política padrão para o tráfego de saída é aceitar e a política padrão para o tráfego de entrada é recusar, a menos que tenhamos especificado algo diferente nas regras anteriores. Este é um firewall muito básico que não inclui regras para muitos ataques, para fins de aprendizagem e não para produção, no final do artigo anexei um firewall que usei para produção em um servidor, tem comentários explicando cada regra.

ENCAMINHANDO UMA CONEXÃO A UMA PORTA ESPECÍFICA PARA UM ENDEREÇO ​​IP ESPECÍFICO

Isso é muito útil também para usuários de desktop que desejam fazer o roteamento de uma conexão através de um dispositivo específico, pode ser útil até mesmo para jogadores, geralmente fazemos isso nas configurações do roteador, mas vamos assumir que o dispositivo de roteamento está executando Iptables.

iptables -A PREROUTING -t nat -p tcp -d X.X.X.X --dport 8080 -j DNAT --para o destino
Y.Y.Y.Y: 80
iptables -A POSTROUTING -t nat -p tcp -j SNAT --para-source X.X.X.X

As regras acima invocam para NAT (Network Address Translation) para especificar conexões através do protocolo TCP, para o endereço X.X.X.X e porta 8080 serão redirecionados para o endereço Y.Y.Y.Y, porta 80. A segunda regra especifica que as respostas devem ser enviadas para o endereço de origem (X.X.X.X). Podemos usar essas regras para permitir o acesso a uma câmera IP, para habilitar jogos online com redes externas, etc.

Este tutorial foi feito para apresentar Iptables aos iniciantes e apenas explica um número limitado de funções básicas. Abaixo você pode ver um exemplo de um firewall bem planejado que foi usado para um servidor de produção, que inclui desde algumas das regras que já vimos até regras mais complexas para prevenir ataques DDoS, entre outros.
O próximo tutorial será sobre como farejar em redes locais, mas em um próximo tutorial explicarei algumas das regras aplicadas ao firewall abaixo.  Obrigado por seguir LinuxHint.com, continue nos seguindo para futuras atualizações sobre Iptables e Linux em geral.

Bônus: amostra de firewall de produção

iptables -F
# ---- Habilitar proteção contra mensagens de erro ruins
habilitar / proc / sys / net / ipv4 / icmp_ignore_bogus_error_responses
# ---- Ativar filtragem de caminho reverso. Mais seguro, mas quebra o roteamento assimétrico e / ou IPSEC
habilitar / proc / sys / net / ipv4 / conf / * / rp_filter
# ---- Não aceita pacotes roteados de origem. O roteamento de origem raramente é usado para fins legítimos
para fins desabilitar / proc / sys / net / ipv4 / conf / * / accept_source_route
# ---- Desabilite a aceitação de redirecionamento ICMP, que pode ser usado para alterar suas tabelas de roteamento
desativar / proc / sys / net / ipv4 / conf / * / accept_redirects
# ---- Como não aceitamos redirecionamentos, também não envie mensagens de redirecionamento
desativar / proc / sys / net / ipv4 / conf / * / send_redirects
# ---- Ignorar pacotes com endereços impossíveis
desative / proc / sys / net / ipv4 / conf / * / log_martians
# ---- Protege contra números de sequência de empacotamento e ajuda na medição do tempo de ida e volta
habilitar / proc / sys / net / ipv4 / tcp_timestamps
# ---- Ajuda contra ataques de Syn-flood DoS ou DDoS usando escolhas particulares de inicial
Os números de sequência TCP habilitam / proc / sys / net / ipv4 / tcp_syncookies
# ---- Use ACK seletivo que pode ser usado para indicar que pacotes específicos estão faltando
desativar / proc / sys / net / ipv4 / tcp_sack
modprobe nf_conntrack_ipv4
modprobe nf_nat
# modprobe nf_conntrack_ipv6
# modprobe nf_conntrack_amanda
# modprobe nf_nat_amanda
modprobe nf_conntrack_h323
modprobe nf_nat_h323
modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
# modprobe nf_conntrack_netbios_ns
# modprobe nf_conntrack_irc
# modprobe nf_nat_irc
# modprobe nf_conntrack_proto_dccp
# modprobe nf_nat_proto_dccp
modprobe nf_conntrack_netlink
# modprobe nf_conntrack_pptp
# modprobe nf_nat_pptp
# modprobe nf_conntrack_proto_udplite
# modprobe nf_nat_proto_udplite
# modprobe nf_conntrack_proto_gre
# modprobe nf_nat_proto_gre
# modprobe nf_conntrack_proto_sctp
# modprobe nf_nat_proto_sctp
# modprobe nf_conntrack_sane
modprobe nf_conntrack_sip
modprobe nf_nat_sip
# modprobe nf_conntrack_tftp
# modprobe nf_nat_tftp
# modprobe nf_nat_snmp_basic
#Agora podemos começar a adicionar serviços selecionados ao nosso filtro de firewall. A primeira coisa
é uma interface localhost iptables -A INPUT -i lo -j ACEITAR
# Dissemos ao firewall para pegar todos os pacotes recebidos com sinalizadores tcp NONE e apenas DROP-los.
iptables -A INPUT -p tcp ! -m conntrack --ctstate NOVO -j DROP
# Dizemos ao iptables para adicionar (-A) uma regra à entrada (INPUT) - SSH funciona na porta 50683
em vez de 22.
iptables -A ENTRADA -p tcp -m tcp --dport 50683 -j ACEITAR
iptables -A ENTRADA -p tcp -m tcp -s ip específico --dport 50683 -j ACEITAR
iptables -A ENTRADA -p tcp -m tcp -s ip específico --dport 50683 -j ACEITAR
iptables -A ENTRADA -p tcp -m tcp -s ip específico --dport 50683 -j ACEITAR
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NOVO -m recente --set
--nome SSH -j ACEITAR
iptables -A INPUT -p tcp --dport 50683 -m recente --update --seconds 60 --hitcount 4
--rttl --name SSH -j LOG --log-prefix "SSH_brute_force"
iptables -A INPUT -p tcp --dport 50683 -m recente --update --seconds 60 --hitcount 4
--rttl --name SSH -j DROP
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NOVO -m recente --set
--nome SSH
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NOVO -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NOVO -m recente --update
--segundos 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefixo SSH_bru
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NOVO -m recente --update
--segundos 60 --hitcount 4 --rttl --name SSH -j DROP
#Agora eu permito imap e smtp.
-A INPUT -p tcp --dport 25 -j ACEITAR
# Permite conexões pop e pops
-A INPUT -p tcp --dport 110 -j ACEITAR
-A INPUT -p tcp --dport 995 -j ACEITAR
############### IMAP & IMAPS ##############
-A INPUT -p tcp --dport 143 -j ACEITAR
-A INPUT -p tcp --dport 993 -j ACEITAR
############### MYSQL ########################
iptables -A ENTRADA -i eth0 -p tcp -m tcp --dport 3306 -j ACEITAR
############# Sistema R1soft CDP ##################
iptables -A ENTRADA -p tcp -m tcp -s ip específico --dport 1167 -j ACEITAR
############### extrovertido ###################
iptables -I INPUT -m conntrack --ctstate ESTABELECIDO, RELACIONADO -j ACEITAR
### Permitir em andamento, bloquear entrada não definida ###
iptables -P SAÍDA ACEITAR
iptables -P INPUT DROP
iptables -L -n
iptables-save | tee / etc / iptables.teste.as regras
iptables-restore < /etc/iptables.test.rules
#service iptables restart
Os 5 principais produtos ergonômicos de mouse de computador para Linux
O uso prolongado do computador causa dor no pulso ou nos dedos? Você está sofrendo de rigidez nas articulações e constantemente precisa apertar as mão...
Como alterar as configurações do mouse e touchpad usando Xinput no Linux
A maioria das distribuições Linux vem com a biblioteca “libinput” por padrão para lidar com eventos de entrada em um sistema. Ele pode processar event...
Remapeie os botões do mouse de maneira diferente para software diferente com o controle de botão do mouse X
Talvez você precise de uma ferramenta que possa fazer o controle do seu mouse mudar com cada aplicativo que você usa. Se for esse o caso, você pode ex...