<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Ronaldo Richieri &#187; Dicas de Desenvolvimento</title>
	<atom:link href="http://www.richieri.com/category/tecnologia/software-livre/dicas-de-desenvolvimento/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.richieri.com</link>
	<description>Colaboração, software livre, cultura popular, danças, forró e por aí vai!</description>
	<lastBuildDate>Tue, 03 Apr 2012 04:05:51 +0000</lastBuildDate>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<copyright>2006-2007 </copyright>
	<managingEditor>richieri@gmail.com (Ronaldo Richieri)</managingEditor>
	<webMaster>richieri@gmail.com (Ronaldo Richieri)</webMaster>
	<ttl>1440</ttl>
	<image>
		<url>http://www.richieri.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Ronaldo Richieri</title>
		<link>http://www.richieri.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Colaboração, software livre, cultura popular, danças, forró e por aí vai!</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>Ronaldo Richieri</itunes:author>
	<itunes:owner>
		<itunes:name>Ronaldo Richieri</itunes:name>
		<itunes:email>richieri@gmail.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.richieri.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>(English) A small Web Hosting with OpenPanel + Ubuntu Server 10.04 LTS + some tricks</title>
		<link>http://www.richieri.com/2011/10/26/english-a-small-web-hosting-with-openpanel-ubuntu-server-10-04-lts-some-tricks/</link>
		<comments>http://www.richieri.com/2011/10/26/english-a-small-web-hosting-with-openpanel-ubuntu-server-10-04-lts-some-tricks/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 13:28:01 +0000</pubDate>
		<dc:creator>richieri</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Dicas de Desenvolvimento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[10.04 lts]]></category>
		<category><![CDATA[apache2-mpm-itk]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[openpanel]]></category>
		<category><![CDATA[ubuntu server]]></category>
		<category><![CDATA[virtual hosts]]></category>

		<guid isPermaLink="false">http://www.richieri.com/?p=1390</guid>
		<description><![CDATA[Desculpe-nos, mas este texto esta apenas disponível em English.]]></description>
			<content:encoded><![CDATA[<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>



<p>Desculpe-nos, mas este texto esta apenas disponível em <a href="http://www.richieri.com/en/category/tecnologia/software-livre/dicas-de-desenvolvimento/feed/">English</a>.</p>


<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>]]></content:encoded>
			<wfw:commentRss>http://www.richieri.com/2011/10/26/english-a-small-web-hosting-with-openpanel-ubuntu-server-10-04-lts-some-tricks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Removendo Virus (malware) do WordPress e protegendo seu blog</title>
		<link>http://www.richieri.com/2011/09/01/removendo-virus-malware-do-wordpress-e-protegendo-seu-blog/</link>
		<comments>http://www.richieri.com/2011/09/01/removendo-virus-malware-do-wordpress-e-protegendo-seu-blog/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 00:25:39 +0000</pubDate>
		<dc:creator>richieri</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Dicas de Desenvolvimento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[antivirus]]></category>
		<category><![CDATA[badware]]></category>
		<category><![CDATA[cleaning]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[virus]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress-counter]]></category>

		<guid isPermaLink="false">http://www.richieri.com/?p=1350</guid>
		<description><![CDATA[Note: não me responsabilizo por danos causados em sua instalação. Utilize essas dicas por sua própria conta e risco Estes dias tive dois sites wordpress infectados por malwares! Penei um pouco pra limpar o site e resolvi compartilhar aqui as dicas que fui juntando pelo caminho. Basicamente, os virus se criam um &#8220;backdoor&#8221;  se aproveitando [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>



<p><em>Note: não me responsabilizo por danos causados em sua instalação. Utilize essas dicas por sua própria conta e risco <img src='http://www.richieri.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
<p>Estes dias tive dois sites wordpress infectados por malwares! Penei um pouco pra limpar o site e resolvi compartilhar aqui as dicas que fui juntando pelo caminho.</p>
<p>Basicamente, os virus se criam um &#8220;backdoor&#8221;  se aproveitando de alguma falha de segurança ou bug em sua instalação. Com esse backdoor criado, o virus tem acesso direto ao seu site mesmo após a correção do bug ou atualização do sistema. É como se o virus tivesse criado uma conta de ssh em seu servidor e pudesse executar praticamente qualquer comando lá dentro.</p>
<p>Em um dos casos, o bug que permitiu a instalação do virus estava em um tema que utilizava uma biblioteca chamada timthumb.php. Descobri <a href="http://blog.sucuri.net/2011/08/timthumb-php-security-vulnerability-just-the-tip-of-the-iceberg.html" target="_blank">neste link</a> a falha que esse arquivo continha e segui os passos descritos lá para resolver o problema. Este virus se instalava através do timthumb.php e criava um backdoor. Através do backdoor, outros virus se instalaram no site. Corrigi o arquivo timthumb.php para remover a possibilidade de uma nova invasão.</p>
<p>Estes virus por sua vez, inseriam um iframe na home page do site, fazendo com que o visitante fosse redirecionado para um site com código malicioso. No meu caso, era um iframe para um site chamado wordpress-counter.com</p>
<p>Tive então que remover backdoor antes de remover o gerador de iframe, pois sempre que removia o iframe em si, o mesmo se instaurava novamente após 15 minutos através do backdoor.</p>
<p>Segui as dicas <a href="http://cantonbecker.com/work/musings/2009/how-to-search-for-backdoors-in-a-hacked-wordpress-site/" target="_blank">deste post</a> e descobri o backdoor no arquivo wp-config.php. Após o fim do código tradicional do WordPress haviam cerca de 100 linhas em branco e, em seguida, o código nocivo que permitia a executação de scripts php enviados por REQUESTs.</p>
<p>Depois, segui as dicas <a href="http://blog.unmaskparasites.com/2011/03/02/versatile-cc-attacks/" target="_blank">deste outro post</a>, para eliminar os geradores de iframe.</p>
<p>Finalmente, fiz um congelamento dos arquivos da minha instalação do WordPress. Para isso, acessei a raiz do site através do SSH e realizei os passos abaixo (note que isto impedirá você de atualizar automaticamente o WordPress para versões mais recentes pelo Dashboard):</p>
<p>Para proteger pastas:</p>
<pre>find . -type d -exec chmod 755 {} \;</pre>
<p>Para proteger arquivos:</p>
<pre>find . -type f -exec chmod 644 {} \;</pre>
<p>Para impedir que outros usuários enxerguem os dados de seu banco de dados, o que é possível em algumas hospedagens compartilhadas:</p>
<pre>chmod 750 wp-config.php</pre>
<p>Para impedir que novos ataques modifiquem qualquer arquivo no seu sistema (menos arquivos de plugins e temas):</p>
<pre>
chmod u-w * -R
chmod u+w wp-content -R</pre>
<p><strong>Referencias</strong></p>
<p><a href="http://blog.sucuri.net/2011/08/timthumb-php-security-vulnerability-just-the-tip-of-the-iceberg.html" target="_blank">http://blog.sucuri.net/2011/08/timthumb-php-security-vulnerability-just-the-tip-of-the-iceberg.html</a><br />
<a href="http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/" target="_blank">http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/</a><br />
<a href="http://cantonbecker.com/work/musings/2009/how-to-search-for-backdoors-in-a-hacked-wordpress-site/" target="_blank">http://cantonbecker.com/work/musings/2009/how-to-search-for-backdoors-in-a-hacked-wordpress-site/</a><br />
<a href="http://blog.unmaskparasites.com/2011/03/02/versatile-cc-attacks/" target="_blank">http://blog.unmaskparasites.com/2011/03/02/versatile-cc-attacks/</a><br />
<a href="http://codex.wordpress.org/Hardening_WordPress" target="_blank">http://codex.wordpress.org/Hardening_WordPress</a></p>


<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>]]></content:encoded>
			<wfw:commentRss>http://www.richieri.com/2011/09/01/removendo-virus-malware-do-wordpress-e-protegendo-seu-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando seu próprio banco de dados de geo localização baseado em IP</title>
		<link>http://www.richieri.com/2011/08/17/criando-seu-proprio-banco-de-dados-de-geo-localizacao-baseado-em-ip/</link>
		<comments>http://www.richieri.com/2011/08/17/criando-seu-proprio-banco-de-dados-de-geo-localizacao-baseado-em-ip/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 19:35:16 +0000</pubDate>
		<dc:creator>richieri</dc:creator>
				<category><![CDATA[Dicas de Desenvolvimento]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[geographic locatlization]]></category>
		<category><![CDATA[geolocalization]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[maxmind]]></category>

		<guid isPermaLink="false">http://www.richieri.com/?p=1331</guid>
		<description><![CDATA[Para aqueles que desejam servir um conteúdo em sua aplicação baseado na localização de seus usuários, uma das alternativas é a localização por IP, quando o visitante não dispoem de um dispositivo GPS. Existem algumas bibliotecas que podemos utilizar para fazer esta pesquisa através de webservices: http://www.geoplugin.com http://www.maxmind.com Estas aplicações no entanto, nem sempre fornecem [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>



<p>Para aqueles que desejam servir um conteúdo em sua aplicação baseado na localização de seus usuários, uma das alternativas é a localização por IP, quando o visitante não dispoem de um dispositivo GPS.</p>
<p>Existem algumas bibliotecas que podemos utilizar para fazer esta pesquisa através de webservices:</p>
<p><a href="http://www.geoplugin.com" target="_blank">http://www.geoplugin.com</a><br />
<a href="http://www.maxmind.com" target="_blank">http://www.maxmind.com</a></p>
<p>Estas aplicações no entanto, nem sempre fornecem uma informação correta sobre o posicionamento do visitante. Em meu caso, precisei criar uma banco de dados proprio, obtendo grande parte das informações de um BD gratuíto disponibilizado pela MaxMind.</p>
<p>O primeiro passo é fazer o donwload do arquivo CSV e descompacta-lo. Você encontra o arquivo neste link:</p>
<p><a href="http://www.maxmind.com/app/geolitecity" target="_blank">http://www.maxmind.com/app/geolitecity</a></p>
<p>Em seguida, é precisa criar duas tabelas em seu BD. Eu as criei desta forma:</p>
<pre>CREATE TABLE `geo_blocks` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`location_id` INT(10) UNSIGNED NOT NULL,
`ip_start` INT(10) UNSIGNED NOT NULL,
`ip_end` INT(10) UNSIGNED NOT NULL,
`index_geo` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
INDEX `idx_start` (`ip_start`),
INDEX `idx_end` (`ip_end`),
INDEX `idx_geo` (`index_geo`)
);

CREATE TABLE `geoip`.`location` (
`locId` INT NOT NULL ,
`country` VARCHAR( 100 ) NOT NULL ,
`region` VARCHAR( 100 ) NOT NULL ,
`city` VARCHAR( 150 ) NOT NULL ,
`postalCode` VARCHAR( 20 ) NOT NULL ,
`latitude` VARCHAR( 10 ) NOT NULL ,
`longitude` VARCHAR( 10 ) NOT NULL ,
`metroCode` VARCHAR( 100 ) NOT NULL ,
`areaCode` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `locId` )
) ENGINE = MYISAM ;</pre>
<p>Em seguida, vamos importar os arquivos para as tabelas. Também no Mysql, rode os seguintes comandos:</p>
<pre>load data local infile '/caminho/para/o/arquivo/GeoLiteCity_20110802/GeoLiteCity-Blocks.csv'
into table geo_blocks
fields terminated by ',' enclosed by '"'
lines terminated by '\n' ignore 2 lines (ip_start, ip_end, location_id);

load data local infile '/caminho/para/o/arquivo/GeoLiteCity_20110802/GeoLiteCity-Location.csv'
into table location
fields terminated by ',' enclosed by '"'
 lines terminated by '\n' ignore 2 lines (locId,country,region,city,postalCode,latitude,longitude,metroCode,areaCode) ;</pre>
<p>O restante é com você <img src='http://www.richieri.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Veja como trabalhar com essas tabelas, neste tutorial da MaxMind:<br />
<a href="http://www.maxmind.com/app/csv" target="_blank">http://www.maxmind.com/app/csv</a></p>


<script type="text/javascript"><!--

google_ad_client = "ca-pub-3319159244732904";

/* Richieri so imagem */

google_ad_slot = "0401013356";

google_ad_width = 468;

google_ad_height = 60;

//-->

</script>

<script type="text/javascript"

src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>]]></content:encoded>
			<wfw:commentRss>http://www.richieri.com/2011/08/17/criando-seu-proprio-banco-de-dados-de-geo-localizacao-baseado-em-ip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

