Algumas regras para o iptables proteger um webserver contra alguns ataques. Por exemplo, o ataque SYN flood [0].
Descartar os pacotes SYN que não são recebidos:
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
Descartar pacotes com fragmentos:
iptables -A INPUT -f -j DROP
Descartar pacotes mal criados XMAS:
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
Descartar pacotes nulos:
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
Bloquear um IP externo de aceder ao servidor:
iptables -A INPUT -s IP-ADDRESS -j DROP
Bloquear um IP externo de aceder a uma porta do servidor:
iptables -A INPUT -s IP-ADDRESS -p tcp --destination-port 80 -j DROP
[0] - https://en.wikipedia.org/wiki/SYN_flood
[1] - https://www.cyberciti.biz/tips/linux-iptables-10-how-to-block-common-attack.html
[2] - https://www.cyberciti.biz/faq/how-do-i-block-an-ip-on-my-linux-server/
Mostrar mensagens com a etiqueta iptables. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta iptables. Mostrar todas as mensagens
quinta-feira, 31 de maio de 2018
sexta-feira, 25 de outubro de 2013
Router/Firewall interno com bloqueio de tráfego e gestão web
Criação de um router interno que permita gerir o acesso à Internet através de um GUI web em PHP.
0. Pré-requisitos
1x máquina com duas placas de rede eth0 = WAN e eth1 = LAN1. Instalação e Configuração como Router
Adicionar ao ficheiro /etc/init.d/nat:#! /bin/bash
# Author: Mario Pinto
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="NAT router"
NAME=nat
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
WAN=eth0
# Function that starts the daemon/service
do_start()
{
echo -n "Starting $DESC... "
[ ! -e $PIDFILE ] || return 1
touch $PIDFILE
modprobe iptable_nat
modprobe ip_conntrack_tftp # Allow TFTP UDP traffic
modprobe ip_nat_tftp # Allow TFTP UDP traffic
iptables -t nat -F
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
return 0
}
# Function that stops the daemon/service
do_stop()
{
echo -n "Stopping $DESC... "
[ -e $PIDFILE ] || return 1
iptables -t nat -F
echo 0 > /proc/sys/net/ipv4/ip_forward
rm $PIDFILE
return 0
}
# MAIN OPTIONS
case "$1" in
start)
do_start
case "$?" in
0) echo "done" ;;
1) echo "already running" ;;
2) echo "error" ;;
esac
;;
stop)
do_stop
case "$?" in
0) echo "done" ;;
1) echo "not running" ;;
2) echo "error" ;;
esac
;;
restart)
do_stop
case "$?" in
0) echo "done" ;;
1) echo "not running" ;;
2) echo "error" ;;
esac
do_start
case "$?" in
0) echo "done" ;;
1) echo "already running" ;;
2) echo "error" ;;
esac
;;
status)
echo "Status: IPTABLES" >&2
iptables -t nat -L
echo "";echo "IP forward: ";cat /proc/sys/net/ipv4/ip_forward
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 3
;;
esac
:
Tornar o script executável:
chmod 755 /etc/init.d/nat
Testar o serviço com:
service nat start
Starting NAT router... done
O serviço pode ser instalado para arrancar automaticamente com:
update-rc.d nat defaults
[Ainda faltam as partes de gestão e controlo]
2. Configuração do iptables
3. Scripts para configuração iptables
4. Aplicação web para gestão
Tutorial iptables:
https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html
TFTP UDP Traffic passthrough:
http://keystoneit.wordpress.com/2007/11/25/tftp-through-ipcop-or-other-iptables-firewalls/
Accounting:
http://www.catonmat.net/blog/traffic-accounting-with-iptables/
Bandwith:
http://jim-zimmerman.com/?p=798
terça-feira, 30 de outubro de 2012
iptables - Bloqueio de um cliente NAT
Após muitas pesquisas, nunca consegui resolver este problema:
Utilizando um router linux com iptables e NAT, como bloquear a rede a apenas um cliente.
Vários tutoriais e afins indicam a ação sobre a chain INPUT algo do género:
iptables -A INPUT -s 192.168.x.y -j DROP
Contudo, o cliente continua a enviar e a receber pacotes...
Como dizem que uma imagem vale mais do que mil palavras, só percebi realmente o funcionamento do iptables após, por acaso, deparar-me com um site[1] muito extenso e que no meio continha a seguinte imagem:
Após analisar o fluxo, e efetuar alguns testes, percebi finalmente que depois do NAT os pacotes poderiam ter dois caminhos, e testei o segundo: utilizar a chain FORWARD.
Assim, para bloquear o acesso de um cliente NAT por IP:
iptables -A FORWARD -s 192.168.10.10 -j DROP
Para bloquear o acesso de um cliente NAT por MAC:
iptables -A FORWARD -m mac --mac-source aa:bb:cc:dd:ee:ff -j DROP
Notas:
[1] http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html - Um tutorial muito interessante que permitiu finalmente chegar à solução.
[2] http://www.linuxguruz.com/forum/viewforum.php?f=35 - Coleção de diversos scripts e ligações sobre firewalls
Utilizando um router linux com iptables e NAT, como bloquear a rede a apenas um cliente.
Vários tutoriais e afins indicam a ação sobre a chain INPUT algo do género:
iptables -A INPUT -s 192.168.x.y -j DROP
Contudo, o cliente continua a enviar e a receber pacotes...
Como dizem que uma imagem vale mais do que mil palavras, só percebi realmente o funcionamento do iptables após, por acaso, deparar-me com um site[1] muito extenso e que no meio continha a seguinte imagem:
Após analisar o fluxo, e efetuar alguns testes, percebi finalmente que depois do NAT os pacotes poderiam ter dois caminhos, e testei o segundo: utilizar a chain FORWARD.
Assim, para bloquear o acesso de um cliente NAT por IP:
iptables -A FORWARD -s 192.168.10.10 -j DROP
Para bloquear o acesso de um cliente NAT por MAC:
iptables -A FORWARD -m mac --mac-source aa:bb:cc:dd:ee:ff -j DROP
Notas:
[1] http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html - Um tutorial muito interessante que permitiu finalmente chegar à solução.
[2] http://www.linuxguruz.com/forum/viewforum.php?f=35 - Coleção de diversos scripts e ligações sobre firewalls
Subscrever:
Mensagens (Atom)
