domingo, 29 de julho de 2007

Port Knocking

Bom esse post explica como fazer um Port Knocking com Iptables.

Port Knocking seria mais ou menos liberar uma porta no iptables caso seu ip esteja numa lista, caso contrário deixá-la bloqueada.

O exemplo que vou usar será o do ssh.

Antes de mais nada verifique se seu kernel possui o módulo ipt_recent
# modprobe -l | grep recent

se a saida do comando for parecida com
/lib/modules/2.6.20-15-generic/kernel/net/ipv4/netfilter/ipt_recent.ko

você não precisará compilar seu kernel. Agora suba o módulo
# modprobe ipt_recent

Agora crie um arquivo, o nome que utilizarei é pknock.sh e adicione ao seu conteúdo

Obs: As portas e o nome da lista podem e devem ser alterados para maior segurança.

#!/bin/bash
# bloqueia a porta do ssh, no caso a 2000 iptables -A INPUT -p tcp -s 0/0 --dport 2000 -j DROP
# libera a porta do ssh caso o ip esteja na lista SSHKNOCK
iptables -I INPUT -p tcp -s 0/0 --sport 1024:65535 --dport 2000 -m recent --rsource --name SSHKNOCK --rcheck -j ACCEPT
# ao se conectar na porta 2100 adiciona o ip na lista SSHKNOCK
iptables -I INPUT -p tcp -s 0/0 --sport 1024:65535 --dport 2100 -m recent --rsource --set --name SSHKNOCK -j DROP
# ao se conectar na porta 2200 retira o ip da lista SSHKNOCK
iptables -I INPUT -p tcp -s 0/0 --sport 1024:65535 --dport 2200 -m recent --rsource --name SSHKNOCK --remove -j DROP

salve o arquivo.

Agora para aplicar as regras ao iptables sempre que iniciar, no ubuntu edite o arquivo /etc/rc.local como root

# pico /etc/rc.local

antes da linha "exit 0"
adicione bash /home/user/pknock.sh

troque isso pela localização exata no teu pc.

salve o arquivo rc.local

Agora de permissão de execução para ele:
# chmod +x /etc/rc.local

Agora sempre que inicar seu pc as regras já estarão no iptables.

Dúvidas? comentem

Truecrypt

Truecrypt é um prorgama utilizado para criptografar partições inteiras, ou no meu caso pendrive.

No site é possivel fazer download do aplicativo tanto pra win quanto pra linux. O arquivo pra linux está no formato .tar.gz que contém ou um pacote .deb ou .rpm. No meu pc to usando o Ubuntu 7.04, então utilizarei o .deb.

# tar -zxvf truecrypt-4.3a-ubuntu-7.04-x86.tar.gz
# cd truecrypt-4.3a/
# dpkg -i truecrypt_4.3a-0_i386.deb

Criando a partição criptografada como usuário normal:

# truecrypt -c /dev/sda
Volume type:
1) Normal
2) Hidden
Select [1]: 1

WARNING: Data on device will be lost. Continue? [y/N]: y
Filesystem:
1) FAT
2) None
Select [1]: 1

Hash algorithm:
1) RIPEMD-160
2) SHA-1
3) Whirlpool
Select [1]: 1

Encryption algorithm:
1) AES
2) Blowfish
3) CAST5
4) Serpent
5) Triple DES
6) Twofish
7) AES-Twofish
8) AES-Twofish-Serpent
9) Serpent-AES
10) Serpent-Twofish-AES
11) Twofish-Serpent
Select [1]: 1

Enter password for new volume '/dev/sda':
Re-enter password:

Enter keyfile path [none]:

TrueCrypt will now collect random data.

To enable mouse movements to be used as a source of random data,
please do one of the following:
- Run TrueCrypt under administrator (root) account.
- Add read permission for your user to device /dev/input/mice.

Please type at least 320 randomly chosen characters and then press Enter:


Done: 1000.00 MB Speed: 16.25 MB/s Left: 0:00:00
Volume created.



Criando a partição criptografada como root:

# truecrypt -c /dev/sda
Volume type:
1) Normal
2) Hidden
Select [1]: 1

WARNING: Data on device will be lost. Continue? [y/N]: y
Filesystem:
1) FAT
2) None
Select [1]: 1

Hash algorithm:
1) RIPEMD-160
2) SHA-1
3) Whirlpool
Select [1]: 1

Encryption algorithm:
1) AES
2) Blowfish
3) CAST5
4) Serpent
5) Triple DES
6) Twofish
7) AES-Twofish
8) AES-Twofish-Serpent
9) Serpent-AES
10) Serpent-Twofish-AES
11) Twofish-Serpent
Select [1]: 1

Enter password for new volume '/dev/sda':
Re-enter password:

Enter keyfile path [none]:

Is your mouse connected directly to computer where TrueCrypt is running? [Y/n]:y

Please move the mouse randomly until the required amount of data is captured...
Mouse data captured: 100%

Done: 1000.00 MB Speed: 14.25 MB/s Left: 0:00:00
Volume created.



Montando a partição:

# truecrypt -u /dev/sda /media/truecrypt

Enter user's or root's system password:
Enter password for '/dev/sda':

# truecrypt -l
/dev/mapper/truecrypt0 /dev/sda

Montado

Desmontando a partição:

# truecrypt -d /dev/sda

# truecrypt -l
No volumes mapped

Desmontado


Pronto agora seu pendrive está criptografado =)
Qualquer dúvida:

# man truecrypt

ou comentem


Esse post foi adaptado do artigo de andersonunifal

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=6921