Claudio Borges

Technical blog about Linux, BSD, Mac OS X, Games and etc.

Tunel com ssh

without comments

Digamos que você tem um servidorzinho na sua casa rodando um proxy e no seu trabalho o acesso a internet é restrito, ou seja, você não tem acesso ao msn e gtalk, nem acessa determinados sites, qual seria a solução? criar um túnel.

Primeiramente vamos descrever as opções do ssh que iremos utilizar:

C - usa compactação de todos os dados que serão trafegados, muito útil para economizar banda.
N - Não executa comandos no servidor remoto, portanto o usuário não precisa ter shell.
f - Logo após conectar, coloca a conexão em background. 
L - Define qual porta, ip e porta do host remoto você vai listar.

Agora que sabemos quais opções serão utilizadas, vamos por isto em prática. Digamos o servidor remoto tem o ip 187.10.223.67 e neste servidor roda um proxy (squid) e eu quero conectar neste proxy só que não quero deixar a porta do proxy aberta e nem quero utilizar vpn, então utilizo o seguinte comando:

ssh -C -N -f -L 3128:127.0.0.1:3128 but3k4@187.10.223.67

Com o comando acima, a porta 3128 do ip 187.10.223.67 é listada automaticamente no nosso loopback (127.0.0.1). E para conectar, basta apontar seu msn ou gtalk para usar proxy e configurar o ip para o loopback.

Written by but3k4

June 22nd, 2009 at 2:34 pm

Posted in Linux

Tagged with , , , , ,

kernel grsec no debian lenny

without comments

Grsec é um patch para o kernel que foi desenvolvido com o intúito de aumentar a segurança. Seu desenvolvimento começou em fevereiro de 2001 e teve sua primeira versão para o kernel 2.4.1. Ele possui vários tipos de recursos como por exemplo: ACLs; Proteção contra buffer-overflow; Auditoria; Suporte a sysctl; Proteção no uso chroot; Negar escrita no /dev/kmem, /dev/mem; Restrições ao /proc e dmesg; Esconder processos do kernel.

Para utilizar o sistema de ACLs, utiliza-se o software gradm, o mesmo faz um total controle do que pode ou não ser utilizado, além de ter um sistema de aprendizagem, no qual ele fica apenas monitorando o que determinado serviço utiliza e com isso pode criar configurações baseadas no que foi monitorado. Este sistema é similar ao selinux.

As atuais versões do grsecurity contam com o PAX, que é um completo sistema de proteção a memória. Sua idéia principal é proteger o sistema contra técnicas usadas para ler e gravar em determinados segmentos de memória. Para tal tarefa é utilizada técnicas como a ASLR (Address Space Layout Randomization).

Para todos aqueles que não querem compilar um kernel, o pessoal do teamix.net disponibiliza todos os pacotes do kernel 2.6.26 com suporte a grsec. Para instalar, primeiramente, baixe os pacotes:

debian:~# wget -c http://people.teamix.net/~ms/debian/lenny/grsec/linux-doc-2.6.26-grsec_2_all.deb
debian:~# wget -c http://people.teamix.net/~ms/debian/lenny/grsec/linux-headers-2.6.26-grsec_2_i386.deb
debian:~# wget -c http://people.teamix.net/~ms/debian/lenny/grsec/linux-image-2.6.26-grsec_2_i386.deb

Agora instale os pacotes:

debian:~# dpkg -i linux-doc-2.6.26-grsec_2_all.deb linux-headers-2.6.26-grsec_2_i386.deb linux-image-2.6.26-grsec_2_i386.deb

Com os pacotes grsec instalados, dê um boot no seu debian (o que você instalou o kernel grsec) e na opção do grub selecione o kernel que instalamos, após o sistema inicializar, remova o kernel antigo:

debian:~# apt-get remove --purge linux-image-2.6-686 linux-image-2.6.26-2-686

Pode ser que ocorra algum problema na hora do dpkg rodar o update-grub, caso isto ocorra, edite o /boot/grub/menu.lst e remova os outros kernels, deixando somente as opções referentes ao kernel grsec.

Se o seu debian tem postfix instalado ou qualquer outro serviço que utilize chroot, adicione as seguinte linhas no seu /etc/sysctl.conf:

# Disabilita o log do grsec
kernel.grsecurity.resource_logging = 0

# Disabilita limites do grsec execve
kernel.grsecurity.execve_limiting = 0

# Disabilita log de mount
kernel.grsecurity.audit_mount = 0

# Disabilita log de mudança de horário
kernel.grsecurity.timechange_logging = 0

Como o grsec limita acessos ao /proc, crie o grupo grsec com gid 1001. Caso este gid já exista em algum outro grupo, sugiro você alterá-lo para outro gid e após isto, criar o grupo grsec. Você deve estar pensando o porque deste grupo correto? isto é necessário porque na configuração do kernel, quem o compilou, definiu que o grupo grsec necessita ter o gid 1001 e este grupo tem acesso ao /proc. Sem este acesso, usuários comuns ficam restritos a visualizem somente seus processos.

Para adicionar usuários a este grupo utilize o comando:

gpasswd -a usuario grsec

Substitua usuario pelo usuário que você quer que tenha acesso ao /proc, como por exemplo o usuário snmp, pois caso tenha snmp rodando e o usuário não tiver acesso ao /proc ele não conseguirá coletar informações das interfaces de rede.

Caso necessite do kernel source, baixe o pacote:

debian:~# wget -c http://people.teamix.net/~ms/debian/lenny/grsec/linux-source-2.6.26-grsec_2_all.deb

Caso queira utilizar também o gradm, baixe o pacote:

debian:~# wget -c http://people.teamix.net/~ms/debian/lenny/grsec/gradm2_2.1.12-1_i386.deb

Maiores informações sobre grsec, consulte o site do desenvolvedor.

Written by but3k4

June 20th, 2009 at 10:14 pm

Posted in Linux

Tagged with ,

Montando pendrive no OpenBSD

without comments

Muitos usuários que estão iniciando no mundo BSD tem problemas com determinadas tarefas, sejam elas tarefas simples como montar um pendrive. Neste artigo irei mostrar como superar mais este obstáculo.

Primeiramente plugue seu pendrive no computador (que esteja rodando OpenBSD é claro), depois digite o comando dmesg, nas últimas linhas do resultado do comando, você verá uma saída similar a esta:

umass0 at uhub0 port 8 configuration 1 interface 0 "USB2.0 DataTraveler100" rev 2.00/0.00 addr 2
umass0: using SCSI over Bulk-Only
scsibus1 at umass0: 2 targets, initiator 0
sd0 at scsibus1 targ 1 lun 0:  SCSI2 0/direct removable
sd0: 8000MB, 1019 cyl, 255 head, 63 sec, 512 bytes/sec, 16384000 sec total

Agora sabemos que o sistema reconheceu o pendrive, falta saber qual partição do device sd0 iremos utilizar, para descobrir, digite:

root@zangetsu:~# disklabel sd0
# /dev/rsd0c:
type: SCSI
disk: SCSI disk
label: DataTraveler100
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 1019
total sectors: 16384000
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # microseconds
track-to-track seek: 0  # microseconds
drivedata: 0

16 partitions:
#                size           offset  fstype [fsize bsize  cpg]
  c:         16384000                0  unused      0     0
  i:         16384000                0   MSDOS
root@zangetsu:~#

O comando acima mostou que a partição é a i, ou seja, o device sd0 + partição i = sd0i, com esta informação, podemos montá-lo com o seguinte comando:

root@zangetsu:~# mount -t msdos /dev/sd0i /mnt/

Ou simplesmente:

root@zangetsu:~# mount /dev/sd0i /mnt/

Você deve estar se perguntando por que utilizei o sistema de arquivos msdos em vez de fat, a resposta é simples: no mundo BSD, não existe sistemas de arquivos fat, apenas msdos, do mesmo jeito que não existe ext3, apenas ext2.

Para desmontar é igual em qualquer sistema *nix, ou seja, utilize o comando umount e bom proveito.

Written by but3k4

June 17th, 2009 at 10:54 pm

Posted in OpenBSD

Tagged with