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.
Valessio Soares de Brito: Celebrando 18 anos de Debian
16 de Agosto de 2011, 0:00 - sem comentários aindaAntonio Terceiro: Handling upstream patches with git-export-debian-patches
13 de Agosto de 2011, 0:00 - sem comentários aindaThese days I briefly discussed with a fellow Debian developer about how to maintain upstream patches in Debian packages with Git, what brought me to rethink a little about my current practices. What I usually do is pretty much like point 4 in Raphael's post "4 tips to maintain a “3.0 (quilt)” Debian source package in a VCS": I make commits in the Debian packaging branch, or in a separate branch that is merged into the Debian packaging branch. Then I add the single-debian-patch
option to debian/source/options
so that a single Debian patch is generated, and include a patch header that points people interested in the individual changes to the public Git repository where they were originally done.
My reasoning for doing so was the following: most upstream developers will hardly care enough to come check the patches applied against their source in Debian, so it's not so important to have a clean source package with separated and explained patches. But then there is the people who will actually care about the patches: other distribution developers. Not imposing a specific VCS on them to review the patches applied in Debian is a nice thing to do.
Then I wrote a script called git-export-debian-patches (download, manpage), which was partly inspired by David Bremner's script. It exports all commits in the Debian packaging branch that do not touch files under debian/ and were not applied upstream to debian/patches. The script also creates an appropriate debian/patches/series files. The script is even smart enough to detect patches that were later reverted in the Debian branch and exclude them (and the commit that reverted them) from the patch list.
The advantage I see over gbp-pq is that I don't need to rebase (and thus lose history) to have a clean set of patches. The advantage over the gitpkg quilt-patches-deb-export-hook hook is that I don't need to explicitly say which ranges I want: every change that is merged in master, was not applied upstream and was not reverted gets listed as a patch. To be honest I don't have any experience with either gbp-pq or gitpkg and these advantages were based on what I read, so please leave a (nice ;-)) comment if I said something stupid.
I am looking forward to receive feedback about the tool, specially about potential corner cases in which it would break. For now I have tested it in a package with simple changes agains upstream source, and it seems fine.
Alexandro Silva: Palestras no VI WorkShop Seginfo e na Vale Security Conference
11 de Agosto de 2011, 0:00 - sem comentários aindaO Workshop SegInfo promovido pela Clavis Security ocorrerá dias 12 e 13 de agosto na Bolsa de Valores do Rio de Janeiro,e contará com a presença de grandes nomes do cenário de segurança da informação brasileiro como Anchises Morais (@anchisesbr), Nelson Brito (@nbrito), Rodrigo Rubira (@bsdaemon), Tony Rodrigues (@OctanesLabs) entre outros.
Neste evento estarei palestrando sobre segurança de servidores, hardening e demonstrando como proteger um servidor de forma simples e efetiva.
Em setembro estarei dividindo o palco com grandes nomes como Luiz Eduardo (@effffn), Wagner Elias (@welias), Andrew Cushman, entre outros na Vale Security Conference que ocorrerá nos dia 03 e 04 no Parque Tecnológico de São José dos Campos.
Nele apresentarei as principais falhas na implementação em ambientes JBoss, como corrigi-las e alguns pentests realizados em portais existentes na internet (#MEDO kkkkk)
Agradeço antecipadamente aos organizadores destes eventos por aceitarem meus papers e espero conhecê-los por lá.
Que venham H2HC 8, Ekoparty 2012 e YSTS 9 (2012) kkkkkkk.
See:
Alexandro Silva: Palestras no VI WorkShop Seginfo e na Vale Security Conference
11 de Agosto de 2011, 0:00 - sem comentários aindaO Workshop SegInfo promovido pela Clavis Security ocorrerá dias 12 e 13 de agosto na Bolsa de Valores do Rio de Janeiro,e contará com a presença de grandes nomes do cenário de segurança da informação brasileiro como Anchises Morais (@anchisesbr), Nelson Brito (@nbrito), Rodrigo Rubira (@bsdaemon), Tony Rodrigues (@OctanesLabs) entre outros.
Neste evento estarei palestrando sobre segurança de servidores, hardening e demonstrando como proteger um servidor de forma simples e efetiva.
Em setembro estarei dividindo o palco com grandes nomes como Luiz Eduardo (@effffn), Wagner Elias (@welias), Andrew Cushman, entre outros na Vale Security Conference que ocorrerá nos dia 03 e 04 no Parque Tecnológico de São José dos Campos.
Nele apresentarei as principais falhas na implementação em ambientes JBoss, como corrigi-las e alguns pentests realizados em portais existentes na internet (#MEDO kkkkk)
Agradeço antecipadamente aos organizadores destes eventos por aceitarem meus papers e espero conhecê-los por lá.
Que venham H2HC 8, Ekoparty 2012 e YSTS 9 (2012) kkkkkkk.
See:
Mônica Paz: Defesa de mestrado aborda softwares livres gráficos usados na Arquitetura
9 de Agosto de 2011, 0:00 - sem comentários aindaAcontecerá no dia 11/08/2011 (quinta) às 16:00h, a defesa de mestrado de Antonio Carlos de Sousa Brito pela Faculdade de Arquitetura da UFBA. O trabalho é intitulado "O SOFTWARE LIVRE GRÁFICO NA ARQUITETURA: uma experiência de avaliação” no qual são analisados o uso do Caduntun, Inkscape e do Blender nesta área.
A banca de Brito tem a seguinte composição: Prof. Dr. Antonio Pedro Alves de Carvalho - (PPGAU/FAUFBA), Profª. Dra. Chirstina Araújo Paim Cardoso - (FAUFBA) e Profª. Dra. Patrícia Lustosa Brito – (Escola Politécnica/UFBA).
O PSL-BA já havia conhecido parte do trabalho de Brito através do artigo compartilhado no site do coletivo com o título "Contribuições do III Encontro Nordestino e IV Festival de Software Livre da Bahia Para o Desenvolvimento do Estudo das Perspectivas de Utilização de Software CAD Livre na Prática de Projetos de Arquitetura".
Mônica Paz: Defesa de mestrado aborda softwares livres gráficos usados na Arquitetura
9 de Agosto de 2011, 0:00 - sem comentários aindaAcontecerá no dia 11/08/2011 (quinta) às 16:00h, a defesa de mestrado de Antonio Carlos de Sousa Brito pela Faculdade de Arquitetura da UFBA. O trabalho é intitulado "O SOFTWARE LIVRE GRÁFICO NA ARQUITETURA: uma experiência de avaliação” no qual são analisados o uso do Caduntun, Inkscape e do Blender nesta área.
A banca de Brito tem a seguinte composição: Prof. Dr. Antonio Pedro Alves de Carvalho - (PPGAU/FAUFBA), Profª. Dra. Chirstina Araújo Paim Cardoso - (FAUFBA) e Profª. Dra. Patrícia Lustosa Brito – (Escola Politécnica/UFBA).
O PSL-BA já havia conhecido parte do trabalho de Brito através do artigo compartilhado no site do coletivo com o título "Contribuições do III Encontro Nordestino e IV Festival de Software Livre da Bahia Para o Desenvolvimento do Estudo das Perspectivas de Utilização de Software CAD Livre na Prática de Projetos de Arquitetura".
Antonio Terceiro: Playing with JPEG quality and file size
6 de Agosto de 2011, 0:00 - sem comentários aindaThis is probably no news at all for graphics/image processing experts, but its something I've just learnt myself and I thought it would be fun to share.
I am writing a static HTML photo algum generator and was a little suspicious of the size of the generated JPEG images. I thought "well, these JPEGs should not be that large ..."
I did some quick research and found out that ImageMagick uses JPEG quality 92 by default and was curious how file size would vary as I changed the output quality.
Then I took an image and produced thumbnails for it with the "JPEG quality" parameter ranging from 1 to 100 to check 1) how the file size varies with quality and 2) how much quality actually makes any difference when viewing the images.
To generate the thumbnails with varying quality, I did the following:
$ for i in $(seq -f %03g 1 100); do convert -scale 640x480 -quality $i /path/to/original.jpg $i.jpg; echo $i; done
Then I generated a data file by calculating the size of each file with du and piping the results through sed and awk:
du -b [0-9]*.jpg | sed 's/.jpg//' | awk '{ print $2 " " $1 }'
The generated data file looks this, with JPEG quality in first column and file size in bytes in the second column:
001 20380 002 20383 003 20634 004 21106 [...]
Regarding to file size, it seems like between 1 and 50, file size grows sublinearly with quality. Beyond that, the curve reaches an inflection point and grows in a way that looks, if not exponentially, at least polynomially.
The above plot was produced in a R session that looked like this:
$ R R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: i486-pc-linux-gnu (32-bit) R é um software livre e vem sem GARANTIA ALGUMA. Você pode redistribuí-lo sob certas circunstâncias. Digite 'license()' ou 'licence()' para detalhes de distribuição. R é um projeto colaborativo com muitos contribuidores. Digite 'contributors()' para obter mais informações e 'citation()' para saber como citar o R ou pacotes do R em publicações. Digite 'demo()' para demonstrações, 'help()' para o sistema on-line de ajuda, ou 'help.start()' para abrir o sistema de ajuda em HTML no seu navegador. Digite 'q()' para sair do R. > png() > data <- read.table('points.dat') > quality <- data[[1]] > quality [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 [37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 [73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [91] 91 92 93 94 95 96 97 98 99 100 > filesize <- data[[2]] > filesize [1] 20380 20383 20634 21106 21551 22012 22469 22878 23323 23715 [11] 24103 24494 24952 25327 25725 26127 26507 26886 27216 27550 [21] 27917 28288 28627 28945 29271 29583 29919 30280 30516 30813 [31] 31099 31367 31679 31873 32232 32538 32704 33072 33324 33443 [41] 33860 34055 34253 34633 34804 35074 35216 35491 35871 35935 [51] 36030 36443 36743 36898 37120 37382 37726 38077 38307 38581 [61] 39002 39270 39700 39962 40388 40762 41086 41629 42062 42544 [71] 43048 43392 44062 44824 45023 45682 46532 47347 47833 48701 [81] 49612 50423 51694 52637 53635 55243 56340 58304 59709 62162 [91] 64207 66273 70073 74617 79917 86745 94950 105680 128158 145937 > plot(quality, filesize, xlab = 'JPEG Quality', ylab = 'File size') > Save workspace image? [y/n/c]: y
Looking at the actual generated thumbnails, somewhere after quality > 60 I stopped noticing the difference between increasing quality factors. Settling with a default quality of 75 seems to be good enough: the resulting static HTML algum generated from a folder with 82 pictures dropped from 12MB with the default ImageMagick quality factor to 6MB with quality 75, with very little perceivable image quality loss.
Antonio Terceiro: Playing with JPEG quality and file size
6 de Agosto de 2011, 0:00 - sem comentários aindaThis is probably no news at all for graphics/image processing experts, but its something I've just learnt myself and I thought it would be fun to share.
I am writing a static HTML photo algum generator and was a little suspicious of the size of the generated JPEG images. I thought "well, these JPEGs should not be that large ..."
I did some quick research and found out that ImageMagick uses JPEG quality 92 by default and was curious how file size would vary as I changed the output quality.
Then I took an image and produced thumbnails for it with the "JPEG quality" parameter ranging from 1 to 100 to check 1) how the file size varies with quality and 2) how much quality actually makes any difference when viewing the images.
To generate the thumbnails with varying quality, I did the following:
$ for i in $(seq -f %03g 1 100); do convert -scale 640x480 -quality $i /path/to/original.jpg $i.jpg; echo $i; done
Then I generated a data file by calculating the size of each file with du and piping the results through sed and awk:
du -b [0-9]*.jpg | sed 's/.jpg//' | awk '{ print $2 " " $1 }'
The generated data file looks this, with JPEG quality in first column and file size in bytes in the second column:
001 20380 002 20383 003 20634 004 21106 [...]
Regarding to file size, it seems like between 1 and 50, file size grows sublinearly with quality. Beyond that, the curve reaches an inflection point and grows in a way that looks, if not exponentially, at least polynomially.
The above plot was produced in a R session that looked like this:
$ R R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: i486-pc-linux-gnu (32-bit) R é um software livre e vem sem GARANTIA ALGUMA. Você pode redistribuí-lo sob certas circunstâncias. Digite 'license()' ou 'licence()' para detalhes de distribuição. R é um projeto colaborativo com muitos contribuidores. Digite 'contributors()' para obter mais informações e 'citation()' para saber como citar o R ou pacotes do R em publicações. Digite 'demo()' para demonstrações, 'help()' para o sistema on-line de ajuda, ou 'help.start()' para abrir o sistema de ajuda em HTML no seu navegador. Digite 'q()' para sair do R. > png() > data <- read.table('points.dat') > quality <- data[[1]] > quality [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 [37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 [73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [91] 91 92 93 94 95 96 97 98 99 100 > filesize <- data[[2]] > filesize [1] 20380 20383 20634 21106 21551 22012 22469 22878 23323 23715 [11] 24103 24494 24952 25327 25725 26127 26507 26886 27216 27550 [21] 27917 28288 28627 28945 29271 29583 29919 30280 30516 30813 [31] 31099 31367 31679 31873 32232 32538 32704 33072 33324 33443 [41] 33860 34055 34253 34633 34804 35074 35216 35491 35871 35935 [51] 36030 36443 36743 36898 37120 37382 37726 38077 38307 38581 [61] 39002 39270 39700 39962 40388 40762 41086 41629 42062 42544 [71] 43048 43392 44062 44824 45023 45682 46532 47347 47833 48701 [81] 49612 50423 51694 52637 53635 55243 56340 58304 59709 62162 [91] 64207 66273 70073 74617 79917 86745 94950 105680 128158 145937 > plot(quality, filesize, xlab = 'JPEG Quality', ylab = 'File size') > Save workspace image? [y/n/c]: y
Looking at the actual generated thumbnails, somewhere after quality > 60 I stopped noticing the difference between increasing quality factors. Settling with a default quality of 75 seems to be good enough: the resulting static HTML algum generated from a folder with 82 pictures dropped from 12MB with the default ImageMagick quality factor to 6MB with quality 75, with very little perceivable image quality loss.
Alexandro Silva: Proteção contra portscans com Ossec HIDS e Portsentry
5 de Agosto de 2011, 0:00 - sem comentários ainda<a href="http://blog.alexos.com.br/?p=2717&amp;lang=pt-br" title="Proteção contra portscans com Ossec HIDS e Portsentry"></a><p><a href="http://blog.alexos.com.br/wp-content/uploads/2011/08/network-security-scanning.jpg"><img class="alignright size-medium wp-image-2745" title="Binary man" src="http://blog.alexos.com.br/wp-content/uploads/2011/08/network-security-scanning-198x300.jpg" height="300" alt="" width="198" /></a>O <a href="http://www.ossec.net">Ossec HIDS</a> é sem sombra de dúvidas uma das maiores ferramentas de proteção de host, mas como nada é perfeito existe uma deficiência na detecção e bloqueio de portscans.</p> <p>O próprio Daniel Cid, pai da criança, informou isso em resposta a um <a href="http://www.mail-archive.com/ossec-list@googlegroups.com/msg00889.html">questionamento</a> sobre o assunto na <a href="http://groups.google.com/group/ossec-list">lista</a> do Ossec. Vejo o trecho abaixo:</p> <blockquote><p>“Ossec by itself does not detect portscans. However, if you send your firewall<br /> logs to ossec it can detect portscans by analyzing your fw logs…”</p></blockquote> <p>Para ajudar neste tarefa Daniel <a href="http://www.ossec.net/wiki/Detecting_port_scan_with_Ossec_and_iplog">indica</a> o uso do <a href="http://ojnk.sourceforge.net/">iplog</a> em conjunto com o Ossec, mas a última versão é de 2001 e sem manutenção como informa seu desenvolvedor:</p> <blockquote><p>“I am through working on this project. I will not be making any updates, and I will ignore just about all email about it. If anybody wants to take it over (for whatever reason), let me know.”</p></blockquote> <p>Para atender está demanda podemos utilizar o <a href="http://sourceforge.net/projects/sentrytools/">Postsentry</a>, IDS responsável por detectar e bloquear tentativas de varredura de portas TCP/UDP.</p> <p>Neste artigo irei apresentar como integrar o Ossec ao Portsentry tornando mais robusta a segurança do seu host. Estou levando em conta que você já possui o Ossec instalado e funcionando.</p> <p>Instale e inicie o Portsentry</p> <p>aptitude install portsentry &amp;&amp; portsentry -atcp &amp;&amp; portsentry -audp</p> <p>Prepare o Ossec para trabalhar juntamente com o Portsentry adicionando algumas regras locais e do decoder[1].</p> <p>[1] O <a href="http://www.ossec.net/doc/manual/rules-decoders/create-custom.html">decoder</a> é responsável por interpretar os logs de várias ferramentas e juntamente com as regras realizar alguma ação.</p> <p>Primeiro remova a seguinte regra (linhas 2240-2257) do arquivo <em><strong>/var/ossec/etc/decoder.xml</strong></em></p> <p> </p><p class="c3"><span></span></p> <table class="c1"> <tr> <td class="c2"> <p class="c0"><span><!– Portsentry –&gt;</span></p> <p class="c0"><span>&lt;decoder name="portsentry"&gt;</span></p> <p class="c0"><span> &lt;program_name&gt;^portsentry&lt;/program_name&gt;</span></p> <p class="c0"><span>&lt;/decoder&gt;</span></p> <p class="c0 c4"><span></span></p> <p class="c0"><span>&lt;decoder name="portsentry-attackalert"&gt;</span></p> <p class="c0"><span> &lt;parent&gt;portsentry&lt;/parent&gt;</span></p> <p class="c0"><span> &lt;prematch&gt;attackalert: Connect from host: &lt;/prematch&gt;</span></p> <p class="c0"><span> &lt;regex offset="after_prematch"&gt;(\S+)/\S+ to (\S+) port: (\d+)$&lt;/regex&gt;</span></p> <p class="c0"><span> &lt;order&gt;srcip,protocol,dstport&lt;/order&gt;</span></p> <p class="c0"><span>&lt;/decoder&gt;</span></p> <p class="c0 c4"><span></span></p> <p class="c0"><span>&lt;decoder name="portsentry-blocked"&gt;</span></p> <p class="c0"><span> &lt;parent&gt;portsentry&lt;/parent&gt;</span></p> <p class="c0"><span> &lt;prematch&gt;is already blocked. Ignoring$&lt;/prematch&gt;</span></p> <p class="c0"><span> &lt;regex&gt;Host: (\S+) is&lt;/regex&gt;</span></p> <p class="c0"><span> &lt;order&gt;srcip&lt;/order&gt;</span></p> <p class="c0"><span>&lt;/decoder&gt;</span></p> </td> </tr> </table> <p class="c3"><span></span></p> <p></p> <p>Adicione a seguinte regra no final do arquivo <em><strong>/var/ossec/etc/decoder.xml</strong></em>, antes da tag <strong>EOF</strong></p> <p> </p><p class="c3"><span></span></p> <table class="c1"> <tr> <td class="c4"> <p class="c0"><span>&lt;decoder name="portsentry"&gt;</span></p> <p class="c0"><span> &lt;program_name&gt;^portsentry&lt;/program_name&gt;</span></p> <p class="c0"><span>&lt;/decoder&gt;</span></p> <p class="c0"><span>&lt;decoder name="portsentry-attackalert"&gt;</span></p> <p class="c0"><span> &lt;parent&gt;portsentry&lt;/parent&gt;</span></p> <p class="c0"><span> &lt;prematch&gt;attackalert: TCP SYN/Normal scan from host: &lt;/prematch&gt;</span></p> <p class="c0"><span> &lt;regex offset="after_prematch"&gt;(\S+)/\S+ to (\S+) port: (\d+)$&lt;/regex&gt;</span></p> <p class="c0"><span> &lt;order&gt;srcip,protocol,dstport&lt;/order&gt;</span></p> <p class="c0"><span>&lt;/decoder&gt;</span></p> <p class="c0"><span>&lt;decoder name="portsentry-blocked"&gt;</span></p> <p class="c0"><span> &lt;parent&gt;portsentry&lt;/parent&gt;</span></p> <p class="c0"><span> &lt;prematch&gt;is already blocked Ignoring$&lt;/prematch&gt;</span></p> <p class="c0"><span> &lt;regex&gt;Host: (\S+)/\S+ is&lt;/regex&gt;</span></p> <p class="c0"><span> &lt;order&gt;srcip&lt;/order&gt;</span></p> <p class="c0"><span>&lt;/decoder&gt;</span></p> <p class="c0"><span>&lt;decoder name="portsentry-scan"&gt;</span></p> <p class="c0"><span> &lt;parent&gt;portsentry&lt;/parent&gt;</span></p> <p class="c0"><span> &lt;prematch&gt;^attackalert: &lt;/prematch&gt;</span></p> <p class="c0"><span> &lt;regex offset="after_prematch"&gt;scan from host: (\S+)/\S+ to \S+ port: (\d+)$&lt;/regex&gt;</span></p> <p class="c0"><span> &lt;order&gt;srcip, dstport&lt;/order&gt;</span></p> <p class="c0"><span>&lt;/decoder&gt;</span></p> <p class="c0"><span>&lt;decoder name="portsentry-host"&gt;</span></p> <p class="c0"><span> &lt;parent&gt;portsentry&lt;/parent&gt;</span></p> <p class="c0"><span> &lt;prematch offset="after_parent"&gt;^attackalert: Host: &lt;/prematch&gt;</span></p> <p class="c0"><span> &lt;regex offset="after_prematch"&gt;^(\S+)/\S+ &lt;/regex&gt;</span></p> <p class="c0"><span> &lt;order&gt;srcip&lt;/order&gt;</span></p> <p class="c0"><span>&lt;/decoder&gt; </span></p> </td> </tr> </table> <p class="c1"><span></span></p> <p></p> <p>Apartir dai o OSSEC passará a interpretar os logs gerados pelo Postsentry. Agora adicione as seguintes linhas no final do arquivo <em><strong>/var/ossec/rules/local_rules.xml</strong></em>, antes da tag <strong>EOF</strong><br /> </p><p class="c3"><span>&lt;group name="syslog,portsentry,"&gt;</span></p> <p class="c1"><span> &lt;rule id="160000" level="0" noalert="1"&gt;</span></p> <p class="c0"><span> &lt;decoded_as&gt;portsentry&lt;/decoded_as&gt;</span></p> <p class="c0"><span> &lt;description&gt;Grouping for the PortSentry rules&lt;/description&gt;</span></p> <p class="c0"><span> &lt;/rule&gt;</span></p> <p class="c0"><span> &lt;rule id="160002" level="3"&gt;</span></p> <p class="c0"><span> &lt;if_sid&gt;160000&lt;/if_sid&gt;</span></p> <p class="c0"><span> &lt;match&gt;attackalert:&lt;/match&gt;</span></p> <p class="c0"><span> &lt;description&gt;Connection from a host.&lt;/description&gt;</span></p> <p class="c0"><span> &lt;/rule&gt;</span></p> <p class="c0"><span> &lt;rule id="160003" level="8" frequency="4" timeframe="180" ignore="60"&gt;</span></p> <p class="c0"><span> &lt;if_matched_sid&gt;160002&lt;/if_matched_sid&gt;</span></p> <p class="c0"><span> &lt;description&gt;Repeated connections from the same host.&lt;/description&gt;</span></p> <p class="c0"><span> &lt;same_source_ip/&gt;</span></p> <p class="c0"><span> &lt;group&gt;recon,&lt;/group&gt;</span></p> <p class="c0"><span> &lt;/rule&gt;</span></p> <p class="c0"><span> &lt;rule id="160004" level="10" frequency="8" timeframe="180" ignore="60"&gt;</span></p> <p class="c0"><span> &lt;if_matched_sid&gt;160002&lt;/if_matched_sid&gt;</span></p> <p class="c0"><span> &lt;description&gt;Host is still scanning&lt;/description&gt;</span></p> <p class="c0"><span> &lt;same_source_ip /&gt;</span></p> <p class="c0"><span> &lt;group&gt;recon,&lt;/group&gt;</span></p> <p class="c0"><span> &lt;/rule&gt;</span></p> <p class="c0"><span>&lt;/group&gt; </span></p> <p></p> <p>Reinicie o OSSEC</p> <blockquote><p> invoke-rc.d ossec restart </p></blockquote> <p>Após reiniciar o OSSEC qualquer tentativa de varredura usando NMAP ou qualquer outro portscan será bloqueada. Recomendo a utilização de um firewall local, segue o exemplo de um script bastante efetivo.</p> <blockquote><p> #!/bin/sh</p> <p>SYSCTL=”/sbin/sysctl -w”</p> <p>IPT=”/sbin/iptables”<br /> IPTS=”/sbin/iptables-save”<br /> IPTR=”/sbin/iptables-restore”</p> <p>INET_IFACE=”eth0″</p> <p>LO_IFACE=”lo”<br /> LO_IP=”127.0.0.1″</p> <p># Save and Restore arguments handled here<br /> if [ "$1" = "save" ]<br /> then<br /> echo -n “Saving firewall to /etc/sysconfig/iptables … ”<br /> $IPTS &gt; /etc/sysconfig/iptables<br /> echo “done”<br /> exit 0<br /> elif [ "$1" = "restore" ]<br /> then<br /> echo -n “Restoring firewall from /etc/sysconfig/iptables … ”<br /> $IPTR &lt; /etc/sysconfig/iptables<br /> echo "done"<br /> exit 0<br /> fi</p> <p>echo "Loading kernel modules ..."</p> <p># This enables SYN flood protection.<br /> if [ "$SYSCTL" = "" ]<br /> then<br /> echo "1" &gt; /proc/sys/net/ipv4/tcp_syncookies<br /> else<br /> $SYSCTL net.ipv4.tcp_syncookies=”1″<br /> fi</p> <p># This enables source validation by reversed path according to RFC1812.<br /> if [ "$SYSCTL" = "" ]<br /> then<br /> echo “1″ &gt; /proc/sys/net/ipv4/conf/all/rp_filter<br /> else<br /> $SYSCTL net.ipv4.conf.all.rp_filter=”1″<br /> fi</p> <p># This kernel parameter instructs the kernel to ignore all ICMP<br /> if [ "$SYSCTL" = "" ]<br /> then<br /> echo “1″ &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts<br /> else<br /> $SYSCTL net.ipv4.icmp_echo_ignore_broadcasts=”1″<br /> fi</p> <p># This option can be used to accept or refuse source routed packets.<br /> if [ "$SYSCTL" = "" ]<br /> then<br /> echo “0″ &gt; /proc/sys/net/ipv4/conf/all/accept_source_route<br /> else<br /> $SYSCTL net.ipv4.conf.all.accept_source_route=”0″</p> <p>fi</p> <p># However, we’ll ensure the secure_redirects option is on instead.<br /> if [ "$SYSCTL" = "" ]<br /> then<br /> echo “1″ &gt; /proc/sys/net/ipv4/conf/all/secure_redirects<br /> else<br /> $SYSCTL net.ipv4.conf.all.secure_redirects=”1″<br /> fi</p> <p># This option logs packets from impossible addresses.<br /> if [ "$SYSCTL" = "" ]<br /> then<br /> echo “1″ &gt; /proc/sys/net/ipv4/conf/all/log_martians<br /> else<br /> $SYSCTL net.ipv4.conf.all.log_martians=”1″<br /> fi</p> <p>echo “Flushing Tables …”</p> <p># Reset Default Policies<br /> $IPT -P INPUT ACCEPT<br /> $IPT -P FORWARD ACCEPT<br /> $IPT -P OUTPUT ACCEPT</p> <p># Flush all rules<br /> $IPT -F</p> <p># Erase all non-default chains<br /> $IPT -X</p> <p>if [ "$1" = "stop" ]<br /> then<br /> echo “Firewall completely flushed! Now running with no firewall.”<br /> exit 0<br /> fi</p> <p>$IPT -P INPUT DROP<br /> $IPT -P OUTPUT DROP<br /> $IPT -P FORWARD DROP</p> <p>echo “Create and populate custom rule chains …”</p> <p># Create a chain to filter INVALID packets</p> <p>$IPT -N bad_packets</p> <p># Create another chain to filter bad tcp packets</p> <p>$IPT -N bad_tcp_packets</p> <p># Create separate chains for icmp, tcp (incoming and outgoing),<br /> # and incoming udp packets.</p> <p>$IPT -N icmp_packets</p> <p># Used for UDP packets inbound from the Internet<br /> $IPT -N udp_inbound</p> <p># Used to block outbound UDP services from internal network<br /> $IPT -N udp_outbound</p> <p># Used to allow inbound services if desired<br /> $IPT -N tcp_inbound</p> <p># Used to block outbound services from internal network<br /> $IPT -N tcp_outbound</p> <p># Drop INVALID packets immediately<br /> $IPT -A bad_packets -p ALL -m state –state INVALID -j LOG –log-prefix ‘fp=bad_packets:1 a=DROP’ –log-level 4</p> <p>$IPT -A bad_packets -p ALL -m state –state INVALID -j DROP</p> <p># Then check the tcp packets for additional problems<br /> $IPT -A bad_packets -p tcp -j bad_tcp_packets</p> <p># All good, so return<br /> $IPT -A bad_packets -p ALL -j RETURN</p> <p># bad_tcp_packets chain</p> <p>$IPT -A bad_tcp_packets -p tcp ! –syn -m state –state NEW -j LOG –log-prefix ‘fp=bad_tcp_packets:1 a=DROP’ –log-level 4<br /> $IPT -A bad_tcp_packets -p tcp ! –syn -m state –state NEW -j DROP</p> <p>$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL NONE -j LOG –log-prefix ‘fp=bad_tcp_packets:2 a=DROP’ –log-level 4<br /> $IPT -A bad_tcp_packets -p tcp –tcp-flags ALL NONE -j DROP</p> <p>$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL ALL -j LOG –log-prefix ‘fp=bad_tcp_packets:3 a=DROP’ –log-level 4<br /> $IPT -A bad_tcp_packets -p tcp –tcp-flags ALL ALL -j DROP</p> <p>$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL FIN,URG,PSH -j LOG –log-prefix ‘fp=bad_tcp_packets:4 a=DROP’ –log-level 4<br /> $IPT -A bad_tcp_packets -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP</p> <p>$IPT -A bad_tcp_packets -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG –log-prefix ‘fp=bad_tcp_packets:5 a=DROP’ –log-level 4<br /> $IPT -A bad_tcp_packets -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP</p> <p>$IPT -A bad_tcp_packets -p tcp –tcp-flags SYN,RST SYN,RST -j LOG –log-prefix ‘fp=bad_tcp_packets:6 a=DROP’ –log-level 4<br /> $IPT -A bad_tcp_packets -p tcp –tcp-flags SYN,RST SYN,RST -j DROP</p> <p>$IPT -A bad_tcp_packets -p tcp –tcp-flags SYN,FIN SYN,FIN -j LOG –log-prefix ‘fp=bad_tcp_packets:7 a=DROP’ –log-level 4<br /> $IPT -A bad_tcp_packets -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP</p> <p># All good, so return<br /> $IPT -A bad_tcp_packets -p tcp -j RETURN</p> <p># icmp_packets chain</p> <p>$IPT -A icmp_packets –fragment -p ICMP -j LOG –log-prefix ‘fp=icmp_packets:1 a=DROP’ –log-level 4<br /> $IPT -A icmp_packets –fragment -p ICMP -j DROP</p> <p>$IPT -A icmp_packets -p ICMP -s 0/0 –icmp-type 8 -j DROP</p> <p># Time Exceeded<br /> $IPT -A icmp_packets -p ICMP -s 0/0 –icmp-type 11 -j ACCEPT</p> <p># Not matched, so return so it will be logged<br /> $IPT -A icmp_packets -p ICMP -j RETURN</p> <p># Drop netbios calls<br /> $IPT -A udp_inbound -p UDP -s 0/0 –destination-port 137 -j DROP<br /> $IPT -A udp_inbound -p UDP -s 0/0 –destination-port 138 -j DROP</p> <p># Not matched, so return for logging<br /> $IPT -A udp_inbound -p UDP -j RETURN</p> <p># No match, so ACCEPT<br /> $IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT</p> <p># Web Server</p> <p># HTTP<br /> $IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 80 -j ACCEPT</p> <p># HTTPS (Secure Web Server)<br /> $IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 443 -j ACCEPT</p> <p># sshd<br /> $IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 22 -j ACCEPT</p> <p># Not matched, so return so it will be logged<br /> $IPT -A tcp_inbound -p TCP -j RETURN</p> <p># No match, so ACCEPT<br /> $IPT -A tcp_outbound -p TCP -s 0/0 -j ACCEPT</p> <p>echo “Process INPUT chain …”</p> <p># Allow all on localhost interface<br /> $IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT</p> <p># Drop bad packets<br /> $IPT -A INPUT -p ALL -j bad_packets</p> <p># Accept Established Connections<br /> $IPT -A INPUT -p ALL -i $INET_IFACE -m state –state ESTABLISHED,RELATED -j ACCEPT</p> <p># Route the rest to the appropriate user chain<br /> $IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound<br /> $IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound<br /> $IPT -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets</p> <p># Drop without logging broadcasts that get this far.<br /> $IPT -A INPUT -m pkttype –pkt-type broadcast -j DROP</p> <p># Log packets that still don’t match<br /> $IPT -A INPUT -j LOG –log-prefix “fp=INPUT:99 a=DROP ”</p> <p>echo “Process FORWARD chain …”</p> <p>echo “Process OUTPUT chain …”</p> <p>$IPT -A OUTPUT -m state -p icmp –state INVALID -j DROP</p> <p># Localhost<br /> $IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT<br /> $IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT</p> <p># To internet<br /> $IPT -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT</p> <p># Log packets that still don’t match<br /> $IPT -A OUTPUT -j LOG –log-prefix ‘fp=OUTPUT:99 a=DROP’ –log-level 4</p> <p>echo “Load rules for mangle table …” </p></blockquote> <p><strong>Referências</strong></p> <p><a href="http://svn.fedecarg.com/repo/Shell%20Scripts/ssh/iptables.sh">Firewall Script</a></p> <p><a href="http://groups.google.com/group/ossec-list/browse_thread/thread/c75a97559a43c389">Portsentry decoders and rules issues</a> </p> <div><h3>See:</h3><ul><li><a href="http://blog.alexos.com.br/?p=2650&amp;lang=pt-br" class="crp_title">Ossec HIDS – Bloqueando o ZmEu bot e outros Web scanners</a></li><li><a href="http://blog.alexos.com.br/?p=2180&amp;lang=pt-br" class="crp_title">Nessus Viewer</a></li><li><a href="http://blog.alexos.com.br/?p=1644&amp;lang=pt-br" class="crp_title">Beta-Testing: Ossec 2.4 Beta</a></li><li><a href="http://blog.alexos.com.br/?p=1345&amp;lang=pt-br" class="crp_title">Habilitando o MSA ( submission ) no Postfix</a></li><li><a href="http://blog.alexos.com.br/?p=2157&amp;lang=pt-br" class="crp_title"> H3ll0 2k11</a></li></ul></div>
Rafael Gomes: Configurando errata do CentOS no Spacewalk
5 de Agosto de 2011, 0:00 - sem comentários aindaPara você que usa Spacewalk para facilitar sua vida e queria ter as erratas do CentOS cadastradas na sua ferramenta preferida.
Como todos sabem, o CentOS é uma versão da comunidade, assim não é suportada nativamente pelo produto Spacewalk, mas como estamos falando de software livre, segue abaixo passos simples para realizar essa configuração.
Mãos a massa
wget http://www.bioss.ac.uk/staff/davidn/spacewalk-stuff/0.3/centos-errata.py.txt -O centos-errata.py
wget http://www.bioss.ac.uk/staff/davidn/spacewalk-stuff/0.3/centos-errata.cfg
mkdir -p /opt/spacewalk-errata/errata
mv centos-errata.* /opt/spacewalk-errata/
chmod +x /opt/spacewalk-errata/centos-errata.py
vi /opt/spacewalk-errata/centos-errata.cfg
Dentro do arquivo você altera as informações abaixo:
[centos errata]
version=5
release=5
scrape_rhn=False[centos errata]
version=5
release=5
scrape_rhn=False[spacewalk]
server=<IP or Hostname of Spacewalk Server>
login=<Spacewalk Login Username>
password=’<Spacewalk User Password>‘[i386]
package_dir=/var/satellite/redhat/1/
# Enter the name of the channel that the errata will link to.
channel=centos5-updates-i386[x86_64]
package_dir=/var/satellite/redhat/1/
# Enter the name of the channel that the errata will link to.
channel=centos5-updates-x86_64
Agora vamos criar o script!
vi /etc/cron.daily/centos-errata.cron && chmod +x /etc/cron.daily/centos-errata.cron
Adicione o seguinte conteúdo:
#!/bin/sh
# Processes CentOS Errata and imports it into Spacewalk# Obtains the current date and year.
LANG=C DATE=`date +%Y-%B`# Fetches the errata data from centos.org.
wget -P /opt/spacewalk-errata/errata http://lists.centos.org/pipermail/centos-announce/$DATE.txt.gz
gunzip -f /opt/spacewalk-errata/errata/$DATE.txt.gz# Processes and imports the errata.
cd /opt/spacewalk-errata/ && \
/opt/spacewalk-errata/centos-errata.py -f archive /opt/spacewalk-errata/errata/$DATE.txt –password=’<Password>‘ –config=’/opt/spacewalk-errata/centos-errata.cfg’ >> /var/log/centos-errata.log
Caso seus pacotes estejam depositados na pasta /var/satellite/redhat/1/ com várias subpastas em números e letras, crie o script abaixo:
vi /var/satellite/redhat/1/synlinks.sh
Com o seguinte conteúdo:
#!/bin/bash
for i in $(find . -type f -name *.rpm); do
BASENAME=$(basename $i)
if [ ! -L $BASENAME ]; then
echo “Linking $i to $BASENAME…”
ln -s $i $BASENAME
fi
done
Acesse o script /etc/cron.daily/centos-errata.cron e adicione a seguinte linha:
cd /var/satellite/redhat/1/ && ./synlinks.sh
Pronto! Agora espere o reporte do mês sair e veja ele aparecer no seu spacewalk. Por exemplo, o de agosto não saiu ainda
Rafael Gomes: Novidade da versão 1.9.7 do Zabbix
5 de Agosto de 2011, 0:00 - sem comentários aindaCalma! Ela ainda não foi lançada, mas já temos uma novidade que podemos esperar para essa nova versão.
Quem nunca teve problemas ao utilizar o calendário do Zabbix? Ele não tem botão de “aplicar” correto? você tinha que clicar fora para fechar o popup. Seus problemas acabaram, agora foi adicionado um botão para corrigir essa deficiência.
Pode parecer uma mudança pequena, mas que faz toda diferença para quem atua no dia a dia.
Esperemos então mais novidades dessa nova versão!
Fonte : Zabbix.com
Rafael Gomes: Novidade da versão 1.9.7 do Zabbix
5 de Agosto de 2011, 0:00 - sem comentários aindaCalma! Ela ainda não foi lançada, mas já temos uma novidade que podemos esperar para essa nova versão.
Quem nunca teve problemas ao utilizar o calendário do Zabbix? Ele não tem botão de “aplicar” correto? você tinha que clicar fora para fechar o popup. Seus problemas acabaram, agora foi adicionado um botão para corrigir essa deficiência.
Pode parecer uma mudança pequena, mas que faz toda diferença para quem atua no dia a dia.
Esperemos então mais novidades dessa nova versão!
Fonte : Zabbix.com
Lucas Almeida Rocha: Desktop Summit 2011
2 de Agosto de 2011, 0:00 - sem comentários aindaI could not attend GUADEC last year for a very good reason. So I’m really happy that I’ll be able to go to Berlin for the second Desktop Summit this year! This is my first GNOME conference without holding any official roles in the project since 2007. This means I’ll hopefully have more time to just hang out with my fellow hackers. I’ll arrive on the 6th of August and leave on the 10th.
I guess it’s a good time to announce that I’ll be giving two talks this year. The first one is about GNOME development in JavaScript with Gjs. It will be on the 7th of August (Sunday) at 9h40 in the morning. Hopefully, a few attendees will wake up earlier for this talk!
The second talk is about The Board, one of my current pet projects, which you have probably heard about. I’ll demonstrate the current features and talk about the future plans for the app. I hope to finish some awesome new features in time for the conference. Let’s see. This talk will be on the 8th of August (Monday) at 14h40.
This is also my first open source conference as a Mozillian. So, if you want to know a bit more about Firefox Mobile, just find me at the conference venue for a chat. All in all, I’m very excited about the conference this year! See you all there!