O Projeto Software Livre Bahia (PSL-BA) é um movimento aberto que busca, através da força cooperativa, disseminar na esfera estadual os ideais de liberdade difundidos pela Fundação Software Livre (FSF), possibilitando assim a democratização do acesso a informação, através dos recursos oferecidos pelo Software Livre. Esta busca tem seus alicerces fundados na colaboração de todos, formando um movimento sinérgico que converge na efetivação dos ideais de Liberdade, Igualdade, Cooperação e Fraternidade.

O Projeto Software Live Bahia é formado pela articulação de indivíduos que atuam em instituições publicas e privadas, empresas, governos ou ONGs, e demais setores da sociedade. Além disso o projeto não é subordinado a qualquer entidade ou grupo social, e não estabelece nenhuma hierarquia formal na sua estrutura interna.


Alexandro Silva: Case – Bloqueando um HTTP DDoS com ModSecurity, Ossec e Iptables

April 30, 2011, by Unknown - 0no comments yet


Recentemente tive uma experiência pra lá de interessante e estressante. Num dia que aparentava estar muito tranquilo me avisam que detectaram uma lentidão muito grande ao acessar o site de um cliente.

Verificando algumas informações do sistema detectei cerca de 14000 conexões na porta 80 o que me deixou um pouco espantando porque era uma situação totalmente atipica

netstat awt | grep 80 | wc -l
14345

Isto estava causando um crash no servidor de banco porque ele não estava conseguindo dar vazão a tantas tentativas ocorrendo simultaneamente.

1a ação – Parar o serviço respirar fundo e tentar isolar o problema.

Como neste mesmo servidor existiam outros sites inicialmente tive que detectar qual era o site alvo, após alguns testes encontrei o infame.

2a ação – Mover o site para outro servidor e substituir o ip.

Movi o site para outra máquina evitando que os outros sites fossem afetados, porém quando liberei a porta 80 para o mundo o inferno começou novamente. O load average do servidor conseguiu chegar a 300 em questão de minutos.

3a ação – Estudar o log e tomar as medidas cabiveis

Numa rápida olhada no log do apache detectei a assinatura do ataque

111.111.111.111 – - [26/Apr/2011:17:01:00 -0300] “GET /?WWW.ATARDE.COM.BR HTTP/1.0″ 400 415 “-” “User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Creative AutoUpdate v1.40.02)”

O IDS da rede detectou este ataque como DOUBLE USER-AGENT attack, como ele vinha de várias origens dinamicamente, bloquear os ips era uma tarefa árdua então tive que resolver no servidor mesmo.

iptables

4a ação – Medidas emergenciais

Como o tempo para raciocinar era muito pouco realizei algumas tentativas não tão eficazes porém contornava um pouco essa situação

Como a assinatura do ataque não mudava foi fácil criar uma regra de iptables através de expressão regular. Ela não é de minha autoria, sou péssimo nesse quesito

tail -f /var/log/apache2/www.hackme.com.br-access.log | grep [aA][Tt][aA][rR][dD][eE] | awk ‘{print “iptables -A INPUT -s “$1″ -j REJECT”}’ | sh &

Usar o REJECT não é muito elegante em se tratando de regras de firewall porque ele aumenta o consumo de memória porém o DROP não estava funcionando.

Exemplo de uma origem ( zumbi ) bloqueada:

REJECT all — 1-48.94.187.totvs.com.br anywhere reject-with icmp-port-unreachable

Com isso tive que fazer um upgrade de memória poque o iptables estava brocando tudo.

snort

5a ação – Medidas emergenciais ( Snort+FWsnort )

Resolvi por o snort em conjunto com o fwsnort para bloquear os ataques, da um pouco de trabalho mas ele conseguiu pegar algumas origens, o problema é que o próprio ataque já estava exaurindo os recursos da máquina juntamente com o iptables e eu ainda jogo o snort+mysql+fwsnort. Ai lascou tudo, tive que voltar a prancheta.

modsecurity

6a. ação – Algumas horas depois… ModSecurity e tunning do Apache

Vocês devem estar fazendo o seguinte questionamento: “Sim. E onde entra o Ossec nisso tudo????”

O Ossec estava bloqueando porém como a assinatura do ataque era um pouco específica ele não estava bloqueando todas as origens. Tentei criar uma personal rule mas já era 03:00 da madruga e eu não estava enxergando nem raciocinando.

Com certeza com a criação da regra baseada na assinatura do ataque ele seria muito mais efetivo. Como isso não era possível no momento parti para a guerra fazendo um tunning do Apache e usando o Modsecurity.

Tunning

vim /etc/apache2/apache2.conf

ServerLimit 4000
MaxClients 4000

ModSecurity

aptitude install libapache2-mod-security2

vim /etc/apache2/conf.d/modsecurity.conf

SecRuleEngine On

SecDebugLog /var/log/apache2/modsec_debug.log
SecDebugLogLevel 0

# Serial audit log
SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus ^5
SecAuditLogParts ABIFHZ
SecAuditLogType Serial
SecAuditLog /var/log/apache2/modsec_audit.log

# if there where more than 5 requests per second for this IP
# set var block to 1 (expires in 5 seconds) and increase var blocks by one (expires in an hour)
SecRule ip:requests “@eq 5″ “phase:1,pass,nolog,setvar:ip.block=1,expirevar:ip.block=5,setvar:ip.blocks=+1,expirevar:ip.blocks=3600″

# if user was blocked more than 5 times (var blocks>5), log and return http 403
SecRule ip:blocks “@ge 5″ “phase:1,deny,nolog,logdata:’req/sec: %{ip.requests}, blocks: %{ip.blocks}’,status:403″

# if user is blocked (var block=1), log and return http 403
SecRule ip:block “@eq 1″ “phase:1,deny,nolog,logdata:’req/sec: %{ip.requests}, blocks: %{ip.blocks}’,status:403″

SecRule REQUEST_LINE “^GET?\WWW\.ATARDE\.COM\.BR$ HTTP”\
“nolog,deny,setvar:ip.ddos=+1,deprecatevar:ip.ddos=100/10″

A regra abaixo foi a que bloqueou os ataques. As outras foram só para encher linguiça.

SecRule REQUEST_LINE “^GET?\WWW\.ATARDE\.COM\.BR$ HTTP”\ “nolog,deny,setvar:ip.ddos=+1,deprecatevar:ip.ddos=100/10″

As referências abaixo me ajudaram muito:

http://blog.cherouvim.com/simple-dos-protection-with-mod_security/

http://spamcleaner.org/en/misc/flood-http-mod_security.html

http://www.howtoforge.com/apache2_mod_security_debian_etch

Às 04:00 da madruga as coisas se estabilizaram, o acesso ao site foi normalizado e o load não passava de 1.00. Com certeza essa não foi a forma mais elegante de bloquear este tipo de ataque, acredito que um IPS na borda ajudaria muito na resolução e prevenção, porém temos que trabalhar com as ferramentas disponíveis e usar a criatividade.



Lucas Almeida Rocha: The Board 0.1.3

April 28, 2011, by Unknown - 0no comments yet

The Board 0.1.3

Time for a new development snapshot release of The Board! I’ve just uploaded the 0.1.3 tarball. Get it while it’s hot! So, what are user-visible changes?

The main feature of this release is the webcam support in photo elements with Cheese. It’s fun, it’s magic! A couple of useful key shortcuts were added: Ctrl+N to add a new page and Delete key to remove selected elements. An important crasher fix—caused by an update in gobject-introspection—is also included.

I should be updating The Board’s PPA with the new release in the next days. Other distros should have updated packages soon. The sad news is that the webcam support will not be available on Natty as it doesn’t ship Cheese 3.0. Everything else should work fine.

What’s next? I will be working on the implementation of a storage layer based on Tracker and a few important UI improvements. On other news, I’ll be giving a talk about The Board in the next Desktop Summit. Yay!



Aurelio A. Heckert: Creative Commons com ou sem NC & SA?

April 28, 2011, by Unknown - 0no comments yet

Creative Commons
Vêz por outra entro em alguma conversa ou debate sobre as principais cláusulas variantes das licenças Cretive Commons e como escrevi algo para uma lista recentemente, vou publicar aqui uma adaptação mais generalista:

 

SAShare Alike — Compartilhamento pela mesma licença

Share Alike

Essa cláusula é o copyleft do Creative Commons. Ela é o que garante que as derivações de uma obra livre permanecera livre, sob a mesma licença.

Sem essa cláusula qualquer pessoa, organização ou empresa pode derivar a obra (colocar a cereja no bolo) e mudar a licença, inclusive para algo proprietário, com as clássicas restrições a cópia e multa do ECAD (exemplificando com música).

Se a pessoa/entidade não tem interesse em redistribuir a derivação sob a licença livre, ela não estará beneficiando a coletividade, pois a possibilidade de evolução da obra para alí. Além da questão social, o "antagonista" ainda estará se opondo aos princípios da pessoa/entidade que criou a obra original.

NCNoncommercial — Uso não-comercial

Noncommercial

Essa cláusula restringe uma determinada liberdade de uso e por isso não pode ser considerada livre dentro do universo do software, pois fere a primeira das 4 liberdades. Apesar de ser desenvolvedor, usuário exclusivo e divulgador do Software Livre, entendo que devo aplicar suas metodologias e filosofia a outras realidades, mas adaptando-as ao contexto.

Se alguém quiser lucrar em cima de SL tem que prestar algum serviço extra e isso agrega valor ao ecossistema de SL. Desta forma liberar o uso comercial do SL é socialmente positivo. Isso é muito difícil em outras áreas, como por exemplo a arte. Se eu publicar um trabalho gráfico sem uma cláusula NC ele poderá ser reutilizado por um pseudo-designer preguiçoso em um cartaz que lhe lucrará o equivalente a horas ou dias do meu trabalho remunerado, mas sem nenhum retorno para mim e sem produzir algo realmente interessante para derivação. Isso não representa benefício social, pois é individualizado e voltado para o que menos trabalhou.

Ainda assim ha momentos onde é válido não usar a cláusula NC. Quando? Aí é você quem deve pensar bem e decidir. Porém do outro lado temos pessoas que defendem o não uso do NC, partindo do princípio que as grandes colaborações dependem de fins comerciais e por isso restringiria a colaboração.

Não se pode tratar o NC como uma óbvia restrição a colaboração, pois o primeiro passo é a criação. Quando eu e outros produzimos sem remuneração e compartilhamos para o bem da maioria, nos não queremos nos sentir lesados por um outro que coloque apenas a cereja no bolo e lucre com isso, sem compartilhar a renda, assim como compartilhei o meu trabalho. Como tratar esse problema? Vamos lembrar que existem dois meios (reais) de evolução para a produção sob NC bastante válidos para a nossa sociedade:

  • Processos não monetizados: já promovidos pela maior parte da comunidade de SL e por indivíduos sem vinculo a movimentos definidos que produzem e trocam conhecimentos na internet. Esse modelo não é nem um pouco valorizado ou percebido no mundo físico, mas existe e é promovido pelo movimento Zeitgeist.
  • Venda de direito de uso: quer usar uma imagem NC para fins comerciais, beleza! Então dê um retorno ao criador, a quem teve o maior dos trabalhos. Pague a ele em troca da flexibilização da licença, afinal ele não é escravo de ninguém para trabalhar de graça em prol dos ganhos financeiros de outro. (exagero? mas é algo para se pensar seriamente)

Então, para o caso geral eu uso e proponho: AGPL para software (mesmo para os que pensam que não serão usados no modelo servidor-cliente) e CC-by-nc-sa para arte e documentação.



Ataliba Neto: Invertendo Palavras no GNU/Linux

April 26, 2011, by Unknown - 0no comments yet

Se vc deseja inverter uma palavra, frase ou até um texto no GNU/Linux existe o comando rev que faz isso.

Invertendo palavras:

$ echo software livre | rev
ervil erawtfos

Invertendo texto de um arquivo:

$ rev sw.txt
.levínopsid amargorp od etnof ogidóc o ranrot e ,ervil erawtfos ed açnecil amu etse a raxena é ervil erawtfos ed oãçiubirtsid ed lausu arienam A .)laicremoc erawtfos( orcul odnajemla odidnev é euq erawtfos oa oãn sam ,)oiráteirporp erawtfos( ovitirtser erawtfos ed otiecnoc oa eõpo es ervil ed otiecnoc O .seõçirtser mes odíubirtsider e odadutse ,odaipoc ,odasu res edop euq rodatupmoc ed amargorp reuqlauq é ,noitadnuoF erawtfoS eerF alep adairc oãçinifed a odnuges ,ervil erawtfoS

Fikdik!




Ataliba Neto: Problemas com o Dbus

April 25, 2011, by Unknown - 0no comments yet

1 – Identificando o Problema

Quando você logar no GDM e o Gnome não aparecer, faça o seguinte:

1 – Abra um terminal, pode ser usando as teclas CTRL+ALT+F1
2 – Acesse com seu usuário e senha, a mesma que está travando.
3 – Digite o comando: top

Vai aparecer a imagem abaixo.

4 – Agora você vai ler a mensagem de erro da sua sessão acessando o arquivo /home/seuusuario/.xsession-errors

Deve aparecer a mensagem :

(gnome-settings-daemon:13697): GVFS-RemoteVolumeMonitor-WARNING **: invoking List() failed for type GProxyVolumeMonitorGdu: org.freedesktop.DBus.Error.NoReply: Message did not receive a reply (timeout by message bus)

(gnome-settings-daemon:13697): GVFS-RemoteVolumeMonitor-WARNING **: New owner :1.23 for volume monitor org.gtk.Private.GduVolumeMonitor connected to the bus; seeding drives/volumes/mounts

(gnome-settings-daemon:13697): GVFS-RemoteVolumeMonitor-WARNING **: invoking List() failed for type GProxyVolumeMonitorGdu: org.freedesktop.DBus.Error.NoReply: Message did not receive a reply (timeout by message bus)

(gnome-panel:13702): GVFS-RemoteVolumeMonitor-WARNING **: invoking List() failed for type GProxyVolumeMonitorGdu: org.freedesktop.DBus.Error.NoReply: Message did not receive a reply (timeout by message bus)

Se os processos dbus-daemon e udisk-daemon estiverem consumindo processamento e aparecer a mensagem acima no log, utilize essa solução de contorno.

2 – Solução de Contorno

Remova o pacote gnome-disk-utility

# aptitude remove gnome-disk-utility

Resolvido!