PortSentry: Melhorando a segurança do seu Linux

O PortSentry é um projeto já bem antigo de IDS/Firewall. Trata-se de um software muito interessante, flexível e bem fácil de se lidar. Vamos ver como barrar PortScanning e tentativas de ataques matando a conexão com o atacante e ao mesmo tempo criar uma espécie de Honey Pot para ficar livre de possíveis atacantes. Tudo de forma simples.

[ Hits: 63.418 ]

Por: Anderson L Tamborim em 29/04/2004 | Blog: http://y2h4ck.wordpress.com


PortSentry: Uma alternativa eficiente



Introdução


PortSentry é uma aplicação muito simples de ser utilizada, escrita para sistemas GNU/Linux com o objetivo de ajudar usuários a manter crackers longe de seu precioso sistema, barrando portscanners e outras tentativas de burlar sua segurança.

PortSentry foi desenvolvido pelo pessoal da Psionic.com, que hoje faz parte da CISCO como vocês podem ver aqui:

Projeto Sentry Tools


O PortSentry foi concebido como parte do projeto Sentry Tools, que tem além dele o LogCheck, uma ferramenta de checagem de logs de maneira eficiente e bem simples também.

Como podemos ver, o Projeto Sentry Tools veio para ajudar usuários e admins que não tem muita experiência em segurança de informática a conseguir um padrão um pouco mais elevado de segurança em seus sistemas de maneira simples e bem intuitiva.

Recomendo uma visita ao site do projeto:
Vamos ver agora como instalar e configurar o PortSentry e assim tornar nosso Linux ainda mais seguro.

    Próxima página

Páginas do artigo
   1. PortSentry: Uma alternativa eficiente
   2. Instalando e configurando
   3. Considerações finais
Outros artigos deste autor

PHLAK :: [P]rofessional [H]acker's [L]inux [A]ssault [K]it

Segurança no SSH via plugins da PAM

Snort avançado: Projetando um perímetro seguro

PSAD: Port Scan Attack Detector

OpenVZ: Virtualização para servidores Linux

Leitura recomendada

Criptografia de disco

Prey Project - Localizando seu notebook roubado

Como funcionam os sistemas de biometria: um estudo geral

Cacti - Monitorar é preciso

Consegue guardar um segredo?

  
Comentários
[1] Comentário enviado por naoexistemais em 29/04/2004 - 01:32h

Parabens pelo artigo Spawn, cuidado com os invejosos...(risos), e Fabio cada dia mais qualidade neste excelente portal...(VOL)

Caso alguém deseja conhecer outra solução similar o PortSentry, acesse o Link: http://www.linuxit.com.br/modules.php?name=Sections&op=viewarticle&artid=149
SNORT + GUARDIAN PARA MAIOR CONFIABILIDADE

[2] Comentário enviado por y2h4ck em 29/04/2004 - 08:00h

Wrochal obrigado :) hueh pode ter certeza que vou tomar cuidado eheh vc tambem cara vc precisa amarrar uma fitinha vermelha pra tirar o quebrante que os maluco coloca no seu projeto ahuahah :D
[]s a todos.

[3] Comentário enviado por cvs em 29/04/2004 - 08:35h

Essas ferramentas são boas, infelizmentes consomem muita memoria ram. legal o artigo.

[4] Comentário enviado por ryu em 29/04/2004 - 11:30h

são ferramentas obrigatórias em servidores... pela falta delas e de uma boa configuracao por parte dos admins eh q o linux lidera as estatisticas de SO mais invadido em servidores...

[5] Comentário enviado por removido em 29/04/2004 - 11:59h

Qual a diferença entre o Snort e o PortSentry? Me parece que eles têm a mesma função...

[6] Comentário enviado por naoexistemais em 29/04/2004 - 12:44h

Caro Virtualboy,

Snort é IDS e apenas gera LOGS e o PortSentry é um IDS que bloqueia acesso restristo (portscan). Mas no caso do Snort tem o Guardian q bloqueia.

[7] Comentário enviado por ygorth em 29/04/2004 - 21:35h

Vou por em pratica!

[8] Comentário enviado por removido em 30/04/2004 - 09:42h

wrochal, muito obrigado!! :)
Vou passar a utilizar apenas o PortSentry ao invés do snort + guardian... me pareceu uma solução mais fácil e confiável.

[9] Comentário enviado por removido em 30/04/2004 - 11:15h

Olá denovo! :)
Instalei e configurei o PS no Slack 9.1, mas não estou conseguindo roda-lo... não achei nada redefente ao seu comando de inicialização na web nem no site do desenvolvedor... ele só me diz: usage: portsentry [-tcp -udp -stcp -atcp -sudp -audp]. Mas eu so posso usar um de cada vez apenas... o que significa cada parametro??

[10] Comentário enviado por y2h4ck em 30/04/2004 - 11:49h

faz assim
portsentry -tcp
portsentry -udp

e ele estara rodando :)

[11] Comentário enviado por removido em 30/04/2004 - 17:50h

Pelo que percebi o PortSentry mostra como se todas as portas estivessem abertas.... eu dou um netstat -a e aparece de tudo.... assim que é feito o bloqueio?? ele nega as conexões?

[12] Comentário enviado por y2h4ck em 30/04/2004 - 19:20h

lembra que eu disse no texto que ele fica como um honey-pot....
se por acaso vc conectar numa dessas portas com o telnet
vc vai ver aquela msg que vc setou no banner :)

Em que isso te ajuda ? Se alguem estiver tentando algo contra sua maquina a primeira coisa que essa possoa vai fazer ao ver alguma dessas portas abertas e conectar pra ver se acontece algo ... dai
o portsentry faz a parte dele.

okei ... valews :)

[13] Comentário enviado por jllucca em 01/05/2004 - 16:27h

Opa,

excelente artigo! Uma pergunta o portScanner não precisa ser configurado pra apartir de quantas tentativas de conexão deve ser dada a mensagem? Pois lembro de ter lido um artigo que falava que "algo parecido"(não lembro o nome, mas funcionava da mesma forma) só mandava a mensagem depois da quarta ou quinta fez que tentassem conectar. Mais uma vez quero dizer que o artigo tá excelente :)

[]'s

[14] Comentário enviado por y2h4ck em 02/05/2004 - 00:17h

jlluca valew ae =]
Seguinte um programa que faz isso que vc esta querendo saber
para barrar portscanning e o PSAD... ele tem varios niveis que vc configura ... e cada nivel vc especifica a acao do daemon.

Estou escrevendo um textinho sobre o psad tambem pra ajudar a popularizar estas solucoes. []s

[15] Comentário enviado por cmarcelo em 02/05/2004 - 12:37h

Esse artigo está muito bom!!!

Estou c/ um probleminha, o portsentry só está fazendo efeito quando eu executo o scan local, quando tento de outro computador, o resultado é o normal

ips nomeu portsentry.ignore:
xxx.xxx.xxx.xxx (meu ip externo)
192.168.100.1 (meu ip interno)
127.0.0.1 (lo)

Carlos Marcelo

[16] Comentário enviado por y2h4ck em 03/05/2004 - 08:45h

De uma verificada em
###################
# Dropping Routes:#
###################

Verfique se o path para o iptables esta correto.
por exemplo:

KILL_ROUTE="/usr/sbin/iptables -A INPUT -s $TARGET$ --dport $PORTS$ -j DROP"

Verifique o patch do seu iptables certinho com o comando
whereis iptables

e inicie o ps:
portsentry -tcp
portsentry -udp

Depois faça o teste dinovo okei.

Valew =]

[17] Comentário enviado por cmarcelo em 05/05/2004 - 20:44h

O meu problema não é que ele está bloqueando, e sim que quando eu rodo um scan local, ele me mostra todas aquelas portas falsas, mas só local, quando rodo-o pela rede externa (eth0) ou pela interna (eth1) as portas que me aparecem no scan são as legítimas, entendeu?

agradeço desde já,
Carlos Marcelo

[18] Comentário enviado por y2h4ck em 06/05/2004 - 08:14h

Entao mas vc deve verificar se oq eu disse esta correto porque o portsentry por si soh nao faz muita coisa.. por isso ele usa o iptables e tudo mais.

Em geral ele da atencao a portas de 1 a 20 uma pequena tentativa ja e suficiente...

Entao ... tente colocar essa regra na linha de kill_route
iptables -A INPUT -i eth0 -s $TARGET$ -j DROP...

faça o teste ... verifique se ele esta gerando um log ..

no EXTERNAL command
deixe ele executar

echo Ataque vindo de $TARGET$ >> /var/log/portsentry/logs.ataque

voce podera controlar melhor ... e questao de vc sentar e otimizar a .conf do seu portsentry :)

fiz desse jeito que estou te passando e ele funciona perfeitamente

[]s

[19] Comentário enviado por cmarcelo em 13/05/2004 - 20:44h

Descobri a causa do meu problema,
É que no firewall eu não estava liberando as portas falasas criadas pelo portsentry ;)
agora está funcionando redondinho

Vlw

[20] Comentário enviado por fernandoamador em 23/12/2004 - 14:30h

boa

[21] Comentário enviado por fernandoamador em 23/12/2004 - 14:30h

boa.

[22] Comentário enviado por jgama em 08/05/2005 - 22:51h

Pessoal só não entedi como instala-lo já que não tem o copilado ./configure no diretorio descompactodado?

root@servlinux portsentry_beta]# ./configure
bash: ./configure: Arquivo ou diretório não encontrado

Como faço para instalar?

Abraço

[23] Comentário enviado por reginaldo_linux em 11/05/2005 - 20:25h

Pessoal, desejo aprender a manusear o linux, mas não tenho computador, no entanto tenho onde acessar de graça todos os dias e faço voluntariado no CDI.

[24] Comentário enviado por mnoveli em 25/05/2005 - 13:14h

estou usando a versao portsentry-4.2
quando dou um make linux gera este erro veja usando a distribuicao linux
suse 9.3 prof como root
------------------------------------------------------------------------
linux:/home/oracle/portsentry-4.2/portsentry_beta # make linux
SYSTYPE=linux
Making
cc -O -Wall -DLINUX -DSUPPORT_STEALTH -o ./portsentry ./portsentry.c \
./portsentry_io.c ./portsentry_util.c
portsentry.c:1584:11: missing terminating " character
portsentry.c: In function `Usage':
portsentry.c:1585: error: syntax error before "sourceforget"
portsentry.c:1585: error: stray '\' in program
portsentry.c:1585:24: missing terminating " character
make: ** [linux] Erro 1
linux:/home/oracle/portsentry-4.2/portsentry_beta #
----------------------------------------------------------

grato pela ajuda
marcio


[25] Comentário enviado por jalexandre em 25/05/2005 - 19:11h

Hehehe... boa, cara!! Coloquei esse negocio pra funcionar e gostei muito... Parabens pelo artigo!!!

[26] Comentário enviado por tatototino em 14/05/2006 - 02:26h

no meu tá dando o mesmo erro do mnoveli será q é a versão do gcc ou é alguma outra coisa?
e tipo a minha é versão 1.2 do portsentry e ele extrai uma pasta chamada portsentry_beta e não tem o script "configure" aí vi no arquivo "readme.install"
e é instalado com make linux | make install

mas deu o mesmo erro do mnoveli

se alguem souber como arruma ou se estou fazendo errado,postem aí flw

[27] Comentário enviado por web_knows em 11/07/2006 - 18:32h

SOLUÇÃO para quem teve o seguinte erro:

portsentry.c:1584:11: missing terminating " character
portsentry.c: In function `Usage':
portsentry.c:1585: error: syntax error before "sourceforget"
portsentry.c:1585: error: stray '\' in program
portsentry.c:1585:24: missing terminating " character
make: ** [linux] Erro 1

Basta ir na linha 1584 do arquivo portsentry.c e no final dela mandar um DELETE !

Provavelmente, pra quem teve o erro ao tentar compilar, ela estava assim (com uma entrada de nova linha):

printf ("Copyright 1997-2003 Craig H. Rowland <craigrowland at users dot
sourceforget dot net>\n");

Mas ela deve ficar assim (tudo numa linha só):

printf ("Copyright 1997-2003 Craig H. Rowland <craigrowland at users dot sourceforget dot net>\n");

Falous !

--web_knows

[28] Comentário enviado por Tyreon em 11/07/2006 - 19:00h

Toda segurança eh pouca! Vlw cara!!

[29] Comentário enviado por removido em 06/08/2006 - 08:02h

exelente...parebenns

[30] Comentário enviado por tatototino em 26/09/2006 - 14:07h

no meu deu agora

muito legal parabéns

e vlw web_knows pela ajudinha heheh

flww

[31] Comentário enviado por tffilho em 06/04/2008 - 11:28h

Bom dia pessoal!
Estou com problemas aqui... baixei o portsentry do link acima e estou tentando instala-lo no opensuse 10.3. Quando dou o ./configure ele aparece a seguinte mesnsagem: bash: ./configure: No such file or directory, mas se eu for direto ao make vejam a mensagem :
Usage: make <systype>
<systype> is one of: linux, debian-linux, bsd, solaris, hpux, hpux-gcc,
freebsd, osx, openbsd, netbsd, bsdi, aix, osf, irix, generic
This code requires snprintf()/vsnprintf() system calls
to work. If you run a modern OS it should work on
your system with 'make generic'. If you get it to
work on an unlisted OS please write us with the
changes.
Install: make install
NOTE: This will install the package in this
directory: /usr/local/psionic
Edit the makefile if you wish to change these paths.
Any existing files will be overwritten.

dando o make install:

Creating psionic directory /usr/local/psionic
Setting directory permissions
Creating portsentry directory /usr/local/psionic/portsentry
Setting directory permissions
chmod 700 /usr/local/psionic/portsentry
Copying files
cp ./portsentry.conf /usr/local/psionic/portsentry
cp ./portsentry.ignore /usr/local/psionic/portsentry
cp ./portsentry /usr/local/psionic/portsentry
cp: cannot stat `./portsentry': No such file or directory
make: *** [install] Error 1

ele chega a criar a pasta dentro de /usr/local, mas eu nao acho o arquivo "portsentry" para iniciar o serviço...
Alguem poderia me dar uma força??

Desculpem pelo tamanho do post.

Grato.

[32] Comentário enviado por y2h4ck em 06/04/2008 - 20:11h

Isso ae acontece devido a ultima versao do codigo do portsentry.c
ter uma falha de edentação do código fonte.

Acontece uma quebra de linha durante um determinado ponto do código, que pode ser resolvido facilmente removendo esta quebra de linha.

Primeira coisa

make linux

depois make install
:)

[]s

[33] Comentário enviado por tffilho em 06/04/2008 - 21:29h

y2h4ck, Muito obrigado, funcionando perfeitamente agora, o erro que vc falou está na linha 1584, relendo os posts aqui vi o mesmo erro, peço desculpas!

Valeu pela dica (make linux), é que ainda estou iniciando no mundo linux.
Abraços a todos.

[34] Comentário enviado por Halkd em 03/08/2010 - 01:25h

Ola Pessoal.

Estou coma pulga atras da orelha, quem puder me ajudar, agradeço:

Tenho em uma máquina sob Linux centOs o portsentry instalado , ok. Fui testar se o mesmo está funcionando, e a P. me bloqueou o IP que é dedicado na net .

Okay, sei que basta remover o /etc.hosts.deny e restartar o mesmo, mas quem disse que funcionou? Lol .:)

ja removi o meu IP no /etc/hosts.deny, já fiz iptables -F & -X & -Z e nda, meu IP ta bloqueado .

Bom sei que com reboot da máquina ou SO / ou 'service restart network' aí, meu IP é liberado , mas qual a razao ?

Já removi as linhas do meu IP tb no /var/portsentry/portsentry.blocked.tcp e todas as entradas nesse diretório, mas nada,

Não posso ddar um restart network pois ele trava, sendo assim terei que solocitar um reboot la no IDC states,

Algue pode me ajudar por favor ?

Abraços !

[35] Comentário enviado por halkd em 04/08/2010 - 16:36h

Bom , pessoal , estou necessitando urgentemente dessa solução, quem puder me ajudar. fico grata.

Não posso ficar dando restart na rede a todo o momento , me ajudem .

Acima, favor ler .

[36] Comentário enviado por Halkd em 04/08/2010 - 17:40h

Pessoal só para lembrar, eu utilizo a linha no conf do meu portsentry 'KILL_HOSTS_DENY="ALL: $TARGET$ ' para bloquear via TCP Wrappers .

Este é o problema, como desbloquear via TCP Wrappers quando o portsentry bloquea um IP,

Favor ler mais acima

Grata.


Contribuir com comentário