quinta-feira, 11 de junho de 2015
New Debian "Jessie" Screeshots & Simple Firewall
Debian "Jessie" with Mate 1.8.2 interface:
I liked, stable, fast and modern visulal. But it is not yet mature.
Firewall Script (for workstation, one NIC):
#!/bin/sh
#Firewall netfilter desenvolvido por Henrique Kbs
iptables -F
iptables -X
iptables -t nat -F
iptables -t mangle -F
IPT="/sbin/iptables"
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
AP="ACCEPT"
DP="DROP"
REDE="192.168.1.0/24"
SERVER="192.168.1.1/32"
$IPT -N C_NIC
$IPT -A INPUT -i eth0 -j C_NIC
$IPT -A FORWARD -i eth0 -j C_NIC
$IPT -A FORWARD -o eth0 -j C_NIC
$IPT -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j $AP
$IPT -A OUTPUT -p icmp --icmp-type 8 -m limit --limit 2/s -j $AP
$IPT -A OUTPUT -o lo -j $AP
$IPT -A INPUT -i lo -j $AP
$IPT -A C_NIC -p udp --sport 1024:65535 --dport 53 -j $AP
$IPT -A C_NIC -p udp --sport 53 --dport 1024:65535 -j $AP
$IPT -A C_NIC -p tcp --sport 1024:65535 --dport 80:443 -j $AP
$IPT -A C_NIC -p tcp --sport 80:443 --dport 1024:65535 -j $AP
$IPT -A C_NIC -p tcp --sport 1024:65535 --dport 22 -j $AP
$IPT -A C_NIC -p tcp --sport 22 --dport 1024:65535 -j $AP
$IPT -A C_NIC -p tcp --sport 1024:65535 --dport 3389 -j $AP
$IPT -A C_NIC -p tcp --sport 3389 --dport 1024:65535 -j $AP
$IPT -A C_NIC -p tcp --sport 1024:65535 --dport 1:65535 -j $AP
$IPT -A C_NIC -p tcp --sport 1:65535 --dport 1024:65535 -j $AP
$IPT -A C_NIC -p icmp --icmp-type 0 -m limit --limit 2/s -j $AP
$IPT -A C_NIC -m limit --limit 1/s -p udp --sport 137:138 --dport 137:138 -j $AP
$IPT -A C_NIC -m limit --limit 1/s -d 224.0.0.0/24 -j $AP
$IPT -A C_NIC -m limit --limit 1/s -d 192.168.1.255 -j $AP
$IPT -A C_NIC -m limit --limit 1/s -d 255.255.255.255 -j $AP
$IPT -A C_NIC -m limit --limit 7/m --limit-burst 1 -j LOG --log-prefix "FW_ALL_NIC_log:"
$IPT -A C_NIC -p tcp --syn -j $DP
$IPT -A C_NIC -p udp --dport 0:1024 -j $DP
$IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables-save
watch -n 1 -d iptables -nvL
#apt-cache search comments
quarta-feira, 27 de maio de 2015
Configuração de múltiplas placas de rede no Linux Debian e derivados
Mudando a ordem das eth’s
Quando se trabalha com várias
placas de rede no Linux, as vezes por algum motivo, podem mudar a
ordem das placas de rede configuradas no sistema operacional, ou pode
queimar uma placa, e quando fizer a troca ela recebe outra numeração.
Para colocar a ordem das eth’s ao
seu gosto, basta editar o arquivo:
“/etc/udev/rules.d/70-persistent-net.rules”
Neste arquivo o mac address
(endereço físico) da placa de rede está atrelado ao número
referente a eth (eth0, eth1, eth2 etc) do sistema.
Antes de começar, para não se
perder, é bom saber todas as interfaces, os endereços físicos,
lógicos e numeração das eth’s. Para isso de o comando:
#ifconfig -a
Para mudar a ordem das eth’s façam
o seguinte:
Primeiramente é sempre bom fazer
uma cópia de segurança do arquivo original:
#cd
/etc/udev/rules.d
#cp
70-persistent-net.rules 70-persistent-net.rules_bkp
Depois de fazer a cópia do arquivo
é só editar, mudando a ordem das eth’s, conforme suas
necessidades (sempre se baseie no que foi mostrado no comando
ifconfig):
#nano
70-persistent-net.rules
A outra forma de se fazer isso; é
preciso instalar o pacote “ifrename”
#apt-get
update
#apt-get
install ifrename
Depois de instalado, é preciso
criar um arquivo “iftab” em /etc:
#cd /etc
#touch iftab
#nano iftab
Eth0 mac a8:b1:12:00:60:9f
Eth1 mac 92:f5:52:03:90:39
Eth2 mac 99:c3:12:00:55:54
É só atrelar o número da eth ao
mac address da placa de rede.
quarta-feira, 20 de maio de 2015
Roteador WiFi hostapd Linux (parte 2)
O Firewall da
rede
São necessárias
duas placas de rede, geralmente a eth0 (placa de rede onboard) e
wlan0, que é a placa de rede wireless destinada a rede WiFi.
A rede cabeada eth0,
pode estar configurada com ip fixo (da sua rede local) ou receber um
ip via DHCP (do modem ligado à internet, por exemplo). O arquivo de
configuração de rede no debian é:
/etc/network/interfaces
Configure, conforme
o IP da sua rede.
Para criar o
Firewall de rede:
Acesse o diretório
/root
#
cd /root
Crie o arquivo
firewall.sh
#touch
firewall.sh
Torne-o executável
#chmod
+x firewall.sh
Depois é só
colocar o script no arquivo firewall.sh
#nano
firewall.sh
Para torna-lo
executável no boot do sistema
#nano
/etc/rc.local
inserir
/root/firewall.sh
Agora vamos ao
script do firewall:
#!/bin/sh
#Firewall desenvolvido por HenriqueKbs
#Habilitando os modulos
modprobe ipt_multiport
modprobe ipt_limit
modprobe iptable_nat
#Alias da rede
IPT="/sbin/iptables"
AP="ACCEPT"
DP="DROP"
RJ="REJECT"
REDE1="172.1.1.0/24"
REDE2="192.168.254.0/29"
SERVER="172.1.1.142"
SERVER2="192.168.254.1"
HOST2="192.168.254.2"
HOST3="192.168.254.3"
HOST4="192.168.254.4"
DNS1="189.38.95.96"
DNS2="189.38.95.95"
DNS3="200.221.11.98"
DNS4="200.147.225.105"
WAN="wlan0"
#Regras do Firewall
#Limpa as cadeias existentes
iptables -F
iptables -X
iptables -t nat -F
iptables -t mangle -F
#Criando novas cadeia
$IPT -N C_SSH
$IPT -N C_DNS
$IPT -N C_ZXY
#regras de Bloqueio
$IPT -A INPUT -p tcp --dport 23 -j DROP
$IPT -A FORWARD -i $WAN -m iprange --src-range 192.168.254.5-192.168.254.6 -j DROP
#Criacao de regras para as cadeias novas
iptables -A INPUT -p tcp -m tcp --sport 1024:65535 --dport 22 -j C_SSH
iptables -A FORWARD -p udp -s $DNS1 --sport 53 --dport 1024:65535 -j C_DNS
iptables -A FORWARD -p udp -s $DNS2 --sport 53 --dport 1024:65535 -j C_DNS
iptables -A FORWARD -p udp -s $DNS3 --sport 53 --dport 1024:65535 -j C_DNS
iptables -A FORWARD -p udp -s $DNS4 --sport 53 --dport 1024:65535 -j C_DNS
1024:65535 -j C_DNS
iptables -A FORWARD -p udp -m udp --sport 1024:65535 --dport 53 -j C_DNS
iptables -A FORWARD -p udp -m udp --sport 53 --dport 1024:65535 -j $AP
iptables -A INPUT -p udp -s 0/0 -d $SERVER --sport 53 -j C_DNS
iptables -A INPUT -p udp -s 0/0 -d $SERVER2 --sport 53 -j C_DNS
$IPT -A INPUT -i eth0 -j C_ZXY
#Chhain SSH
iptables -A C_SSH -s $REDE1 -d $SERVER -j $AP
iptables -A C_SSH -p tcp --dport 22 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "FW_SSH_log:"
iptables -A C_SSH -j $DP
#chain DNS
iptables -A C_DNS -d $REDE1 -j $AP
iptables -A C_DNS -s $REDE1 -j $AP
iptables -A C_DNS -d $HOST2 -j $AP
iptables -A C_DNS -s $HOST2 -j $AP
iptables -A C_DNS -d $HOST3 -m limit --limit 2/s --limit-burst 1 -j $AP
iptables -A C_DNS -s $HOST3 -m limit --limit 2/s --limit-burst 1 -j $AP
iptables -A C_DNS -s $HOST4 -j $AP
iptables -A C_DNS -d $HOST4 -j $AP
iptables -A C_DNS -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "FW_DNS_log:"
iptables -A C_DNS -j $DP
#Chain ZXY
$IPT -A C_ZXY -i lo -s 127.0.0.1 -j $AP
$IPT -A C_ZXY -i $WAN -p udp -m udp -s $REDE2 --sport 68 --dport 67 -j $AP
#iptables -A C_ZXY -i eth0 -p tcp -m tcp --dport 6346 -j REJECT
#Regras para cadeia OUTPUT
iptables -A OUTPUT -o lo -j $AP
iptables -A OUTPUT -o $WAN -p udp -s $SERVER2 -d $HOST2 --sport 67 --dport 68 -j $AP
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 443 -j $AP
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 80 -j $AP
iptables -A OUTPUT -p udp -m udp --sport 1024:65535 --dport 53 -j $AP
iptables -A OUTPUT -p udp -m udp --sport 67 --dport 68 -j $AP
iptables -A OUTPUT -p tcp -m tcp --sport 22 --dport 1024:65535 -j $AP
iptables -A OUTPUT -p icmp ! --icmp-type 0 -m limit --limit 2/s -j $AP
iptables -A OUTPUT -p udp --dport 1024:65535 -m limit --limit 5/s --limit-burst 10 -j $AP
iptables -A OUTPUT -p tcp -m state --state NEW -m limit --limit 3/s --limit-burst 10 -j $AP
iptables -A OUTPUT -p tcp -m state --state RELATED -m limit --limit 4/s --limit-burst 10 -j $AP
iptables -A OUTPUT -p tcp -m state --state ESTABLISHED -m limit --limit 2/s --limit-burst 10 -j $AP
#Regras para cadeia Input
iptables -A C_ZXY -d 172.1.1.255 -m limit --limit 3/s -j $AP
#Regras para tabela Nat
iptables -t nat -A POSTROUTING -p tcp -m tcp -j MASQUERADE --to-ports 1024-10240 -s 172.1.1.0/24
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A OUTPUT -o lo -j $AP
# Accept inbound ICMP messages
$IPT -A INPUT -p ICMP ! --icmp-type 8 -m limit --limit 2/s -j ACCEPT
#Regras na Forward
echo 1 > /proc/sys/net/ipv4/ip_forward
#iptables -P FORWARD DROP
$IPT -A FORWARD -i $WAN -p tcp -s $SERVER2 -d 0/0 --sport 1024:65535 --dport 443 -m state --state NEW,ESTABLISHED -j $AP
$IPT -A FORWARD -p tcp -m tcp -s 0/0 -d $SERVER2 --sport 443 --dport 1024:65535 -j $AP
$IPT -A FORWARD -p tcp -s $REDE2 -m multiport --dports 80,443,809,8080 -j $AP
$IPT -A FORWARD -p tcp -d $REDE2 -m multiport --sports 80,443,809,8080 -m state --state NEW,ESTABLISHED -j $AP
$IPT -A FORWARD -i eth0 -p tcp -s $REDE1 -d 0/0 --sport 1024:65535 --dport 80 -m state --state ESTABLISHED -j $AP
$IPT -A FORWARD -i eth0 -p tcp -s 0/0 -d $REDE1 --sport 80 --dport 1024:65535 -m state --state ESTABLISHED -j $AP
$IPT -A FORWARD -p tcp -s $REDE2 -m multiport --dports 80,443,809,8080 -j $AP
$IPT -A FORWARD -p tcp -d $REDE2 -m multiport --sports 80,443,809,8080 -m state --state NEW,ESTABLISHED -j $AP
$IPT -A FORWARD -i eth0 -p tcp -s $REDE1 -m multiport --dports 443,809,995,993,587 -m state --state ESTABLISHED -j $AP
$IPT -A FORWARD -i eth0 -p tcp -d $REDE1 -m multiport --sports 443,809,995,993,587 -m state --state ESTABLISHED -j $AP
$IPT -A FORWARD -i $WAN -p udp -s $REDE2 -d 0/0 --sport 1024:65535 --dport 123 -j $AP
$IPT -A FORWARD -i eth0 -o $WAN -p tcp -m tcp -s 0/0 -d $HOST2 --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j $AP
$IPT -A FORWARD -i $WAN -o eth0 -p tcp -m tcp -s $HOST2 -d 0/0 --sport 1024:65535 --dport 1024:65535 -m state --state NEW,ESTABLISHED -j $AP
$IPT -A FORWARD -i eth0 -o $WAN -p tcp -m tcp -s 0/0 -d $HOST3 --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j $AP
$IPT -A FORWARD -i $WAN -o eth0 -p tcp -m tcp -s $HOST3 -d 0/0 --sport 1024:65535 --dport 1024:65535 -m state --state NEW,ESTABLISHED -j $AP
$IPT -A FORWARD -p tcp -m tcp -d 0/0 --sport 5999:65535 --dport 1024:65535 -m state --state NEW,ESTABLISHED -j $AP
$IPT -A FORWARD -p tcp -m tcp -s 0/0 --dport 5999:65535 --sport 1024:65535 -j $AP
#Regras para bloqueio e Logs
iptables -A C_ZXY -m limit --limit 6/hour --limit-burst 1 -j LOG --log-prefix "FW_ZXY_log:"
iptables -A FORWARD -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "FW_FORWARD_log:"
iptables -A OUTPUT -m limit --limit 6/hour --limit-burst 1 -j LOG --log-prefix "FW_OUTPUT_log:"
iptables -A C_ZXY -p tcp -m tcp --syn -j DROP
iptables -A FORWARD -i eth0 -p tcp -m tcp --syn -j DROP
iptables -A FORWARD -i $WAN -p tcp -m tcp --syn -j DROP
iptables -A FORWARD -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "FW_UDP_FOR_log:"
iptables -A FORWARD -p udp -m udp --dport 1:1024 -j DROP
#Tabela Mangle
$IPT -t mangle -I PREROUTING 1 -p tcp -s $REDE1 -m string --algo bm --string "batepapo" -j DROP
$IPT -t mangle -I PREROUTING 2 -p tcp -s $REDE1 -m string --algo bm --string "facebook" -j DROP
$IPT -t mangle -I PREROUTING 4 -p tcp -s $REDE1 -m string --algo bm --string ".mp3" -j DROP
$IPT -t mangle -I PREROUTING 5 -p tcp -s $REDE1 -m string --algo bm --string ".flv" -j DROP
iptables -t mangle -A INPUT -i $WAN -p tcp -m tcp -s $REDE2 --dport 1024:65535 --sport 443 -j TOS --set-tos 16
iptables -t mangle -A INPUT -i eth0 -p tcp -m tcp -s $REDE2 --dport 1024:65535 --sport 80 -j TOS --set-tos 16
iptables-save
echo "======================="
echo "== Regras de Firewall Ativadas... =="
echo "======================="
# EOF
Mudem conforme a
configuração de rede apropriada.
Para executar o
Firewall:
#./firewall.sh
#apt-cache
search comments
terça-feira, 19 de maio de 2015
Roteador WiFi hostapd Linux (parte 1)
Há no mercado, inúmeros modelos e
fabricantes de roteadores wireless, então qual o intuito de se
montar um computador para tal função? Simples, reaproveitar micros
mais antigos, ter a possibilidade de recursos conhecidos, como
Firewall IPtables, Proxy Squid, DHCP server, agendamento de tarefas
com o crontab, tudo isso controlado por acesso remoto via SSH.
Outro problema, comum na maioria dos
roteadores WiFi existentes no mercado, é a quantidade limitada de
memória Ram. Dependendo do tamanho da rede e o número de usuários
conectados a ela, com dispositivos móveis, a quantidade de memória
Ram, é de fundamental importância para a estabilidade de conexões
do roteador. Quando um dispositivo se conecta a um roteador wireless,
este grava o endereço mac address de origem, quando se estabelece
uma conexão, muitos dispositivos e inúmeras conexões podem saturar
a memória Ram existente no roteador, se isso acontecer ele trava,
para de funcionar.
A maioria dos roteadores WiFi
existentes no mercado, possuem apenas 16 Mb de memória Ram, outros
modelos com 32 Mb, alguns com 64 Mb e raramente modelos tops com 128
Mb de Ram.
Exemplo: Chip Wimbond w9425g6jh-5
de 16 Mb do router TPLink TL-WR941ND
Num Router hostapd Linux, você pode
alocar facilmente, 1 GB, 2 GB, 4Gb de memória Ram,
conforme suas necessidades e possibilidades.
Para montar um Router hostapd
precisará de um micro estável, mais uma placa de rede wireless
Como está:
Lembrando, que deve se respeitar os
padrões WiFi da placa de rede. Uma placa de rede wireless padrão
802.11G vai receber pacotes (RX) e enviar pacotes (TX) nos teóricos
54Mbps.
Se quiser mais velocidade, terá que
usar uma placa de rede WiFi padrão 802.11N, que te dará teóricos
150Mbps de taxa de transferência de dados, se quiser mais, coloque
uma placa com várias antenas.
Dê preferência para placas com
chipset Broadcom ou Atheros, que funcionam bem, placas com chipset
Ralink são horríveis.
Para esta experiência estou usando
um core2due E2200com 1 GB de Ram. A placa de rede é igual à foto.
Primeiramente deve se instalar o
sistema operacional, eu uso o Debian Squeeze, aconselho usar esta
distro, pode ser o Wheeze versão netinst, uso sem a interface
gráfica, mas se preferir pode usar, mas tem um consumo maior de Ram.
Onde baixar os pacotes?
Como instalar:
Depois de instalado e configurado o
Sistema operacional vamos instalar os pacotes necessário para
colocar no ar o Roteador WiFi Linux.
Logue-se como root:
#apt-get
update
#apt-cache
search hostapd
#apt-get
install hostapd
Para instalar o Servidor DHCP:
#apt-get
install isc-dhcp-server
Costumo usar o dnsmasq, para cache
de resolução de nomes:
#apt-get
install dnsmasq
Para o dnsmasq funcionar
devidamente, coloque a seguinte linha no arquivo /etc/resolv.conf
“nameserver 127.0.0.1”
Edit o arquivo “/etc/dnsmasq.conf”
#nano
/etc/dnsmasq.conf
Insira o seguinte comentário no
início do arquivo: “listen-address=127.0.0.1”
Reiniciar o dnsmasq:
/etc/init.d/dnsmasq
restart
Vamos configurar agora o servidor
DHCP:
#Killall –9
dhcpd
Editar o arquivo
“/etc/default/isc-dhcp-server”
#nano
/etc/default/isc-dhcp-server
Coloque a sua interface, que
receberá os ips por DHCP, no meu caso:
INTERFACES="wlan0"
Agora vamos editar o arquivo de
configuração do servidor DHCP:
#nano
/etc/dhcp/dhcpd.conf
O meu está assim:
Provavelmente terão que mudar o IP
da rede e máscara de rede.
Depois de configurar o arquivo, é
necessário inicializar o serviço:
#/etc/init.d/isc-dhcp-server
start
Se não houver nenhum erro de
configuração, o servidor DHCP está no ar.
Agora vamos ao Serviço hostapd
(configurações do roteador WiFi)
#killall -9
hostapd (para desligar o serviço)
Veja se o arquivo
/etc/defaut/hostapd a seguinte linha está descomentada:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
O principal arquivo de configuração
do serviço hostapd é:
/etc/hostapd/hostapd.conf
Mas, antes de editá-lo faremos uma
cópia de segurança
#cd
/etc/hostapd
#cp hostapd.conf
/etc/hostapd/hostapd.conf_orig
Criaremos outro arquivo no lugar:
#touch
hostapd.conf
#nano
hostapd.conf
O meu está assim:
As linhas de comando mais
importantes aí são:
ssid=o nome da rede WiFi
wpa_passphrase=senha para acesso à
rede
Reinicie o serviço hostapd
#/etc/init.d/hostapd
restart
Se não houver nenhum erro, seu
roteador estará no ar.
sexta-feira, 15 de maio de 2015
SYN Flood e UDP Flood
SYN
Flood
O
protocolo TCP, tem como característica, ser orientado à conexão, é
enviado um pacote de SYNcronismo para abertura de conexão com o
Servidor de destino, o qual envia uma resposta SYN, ACKnowledgement.
O pc de origem responde com um pacote ACK.
Com a
ferramenta hping3 é possível atacar um Servidor alvo, enviando
múltiplas requisições SYN.
O
resultado de um ataque SYN Flood é a indisponibilidade de
serviço.
#hping3
192.168.1.254 -S -p 80 --flood --rand-source
192.168.1.254 dispositivo alvo
-S
pacotes SYN
-p
80 porta tcp 80
--flood
enxurrada de pacotes
--rand-source
randomiza os endereços de origem
SYN
Flood - felizmente tem antídoto contra esse ataque:
Com
iptables
#iptables
-A INPUT -i eth0 -p tcp ! --syn -m conntrack --ctstate NEW -j DROP
ou
#echo
1 > /proc/sys/net/ipv4/tcp_syncookies
#nano
/etc/sysctl.conf
e
descomentar # net.ipv4.tcp_syncookies=1
UDP
Flood
Com um
ataque UDP Flood, as coisas se complicam, pois o protocolo udp não é
orientado à conexão. O resultado de um ataque UDP Flood é a
indisponibilidade do Link de dados.
Funciona
assim:
#hping3
192.168.1.254 -udp -p 1024 --flood -d 200 --rand-source (não
façam isso com intuito de lesar algo, pois é crime)
192.168.1.254
dispositivo alvo
-udp
dispara pacotes udp
-p
1024 porta de destino 1024
--flood
enxurrada de pacotes
-d
200 é o tamanho do pacote 200kb, o limite é 1200kb (com 1200kb
usa-se toda banda de 100Mb)
--rand-source
randomiza os endereços ip de origem
Contra
um ataque UDP Flood, você tem duas alternativas:
-rezar
-link
redundante
Com
iptables pode-se tentar remediar com:
#iptables
-t mangle -I PREROUTING -i eth0 -s 0/0 -p udp -m state --state NEW
! --sport 53 -j DROP
quinta-feira, 14 de maio de 2015
Block multiple mac addresses
Script
to block mac addresses, useful for WiFi networks to block mobile
devices that insist on using a private WiFi network.
Create a folder “macblock” in /root
directory (Firewall script directory)
#touch macblock
Put the mac addresses within
macblock.
#nano macblock
To find out the mac address use #ip neigh show or
visualize the dhcp log
#nano macblock
To find out the mac address use #ip neigh show or
visualize the dhcp log
#tail -n 300 / var / log /
messages or syslog
Because
block access by tables mangle in PREROUTING to 53 destination
port?
Simple, the intruder becomes a zombie, aimlessly, gets lost.
Place this at the beginning of his scrip Firewall
Simple, the intruder becomes a zombie, aimlessly, gets lost.
Place this at the beginning of his scrip Firewall
#Mac Addresses
Block
macblock=/root/macblock
for i in `cat
$macblock`; do
ip=`echo $i | cut
-d ';' -f 1`
#
iptables -t
mangle -A PREROUTING -i eth2 -p udp -m mac --mac-source $ip --dport
53 -j DROP
#
echo "MAC -
Bloqueado - $ip"
done #Fim do FOR
#
#eth2 is a Lan Network
Assinar:
Postagens (Atom)
























