<?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/"
	>

<channel>
	<title>El rincón de Zerial &#187; gnu/linux</title>
	<atom:link href="http://blog.zerial.org/tag/gnulinux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zerial.org</link>
	<description>Informática, GNU/Linux, Seguridad, Hacking, Programación, Ocio</description>
	<lastBuildDate>Tue, 03 Jan 2012 00:13:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Manipular volúmenes lógicos (LVM) en discos virtuales</title>
		<link>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/</link>
		<comments>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 07:48:50 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[kpartx]]></category>
		<category><![CDATA[losetup]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[virtual machine]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2673</guid>
		<description><![CDATA[Me refiero a discos virtuales a los que creamos usando dd. Cuando creamos un disco utilizando por ejemplo dd if=/dev/zero of=imagen.img y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.zerial.org/wp-content/uploads/2011/09/quantum-bigfoot.jpg"><img class="alignleft size-full wp-image-2680" style="margin: 4px;" title="quantum-bigfoot" src="http://blog.zerial.org/wp-content/uploads/2011/09/quantum-bigfoot.jpg" alt="" width="181" height="154" /></a>Me refiero a <strong>discos virtuales</strong> a los que creamos usando <strong>dd</strong>. Cuando creamos un disco utilizando por ejemplo <em>dd if=/dev/zero of=imagen.img</em> y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la instalación, hay veces que necesitamos manipularlo ya sea para clonarlo, hacerle mantención o simplemente montarlo para ver los archivos. En mi caso, tuve que clonar la máquina virtual en caliente y quedó el FS corrupto, por lo que tuve que corregirlo, tambien sirve para hacer tareas de mantención como aumentar o disminuir el tamaño del disco o volúmenes lógicos.</p>
<p>Tengo mi disco original llamado &#8220;<em>vm1.img</em>&#8221; y la clono simplemente con un <strong>cp</strong> o bien con &#8220;<strong>dd if=vm1.img vm1_clon.img</strong>&#8220;, paso a paso, lo que tenemos que hacer es:</p>
<ol>
<li>Crear un dispositivo &#8220;loop&#8221; en base a nuestro disco virtual</li>
<li>Mapear el dispositivo loop creado</li>
<li>Revisar los dispositivos creados en /dev/mapper/</li>
<li>Activar el volúmen y realizar las tareas necesarias</li>
</ol>
<p>Las herramientas que usé son <a href="http://linux.die.net/man/8/losetup">losetup</a>, <a href="http://linux.die.net/man/8/kpartx">kpartx</a> y <a href="http://linux.die.net/man/8/vgchange">vgchange</a>.</p>
<p><span id="more-2673"></span></p>
<p>Primero, ya tenemos nuestro disco creado, en este caso lo llamaré &#8220;testing&#8221; y tiene un tamaño de 80GB.<br />
<code># fdisk -l testing</p>
<p>Disk testing: 85.9 GB, 85899345920 bytes<br />
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors<br />
Units = sectors of 1 * 512 = 512 bytes<br />
Sector size (logical/physical): 512 bytes / 512 bytes<br />
I/O size (minimum/optimal): 512 bytes / 512 bytes<br />
Disk identifier: 0x0007759f</p>
<p>  Device Boot      Start         End      Blocks   Id  System<br />
testing1   *          63      208844      104391   83  Linux<br />
testing2          208845   167766794    83778975   8e  Linux LVM</code></p>
<p>Para comenzar vamos a usar el comando <strong>losetup</strong> para crear un dispositivo &#8220;loop&#8221; en base a nuestra imagen de disco, para esto ejecutamos:</p>
<p><code># losetup -f testing</code></p>
<p>Y verificamos con el mismo comando losetup que se haya creado</p>
<p><code># losetup -a<br />
/dev/loop0: [fe01]:24577 (/mnt/vardata/testing)</code></p>
<p>Ya tenemos nuestro dispositivo &#8220;loop&#8221; en /dev/loop0 mapeado a la imagen de disco virtual ubicada en /mnt/vardata/testing. </p>
<p>Ahora debemos usar la herramienta <strong>kpartx</strong> para <em>mapear</em> ese dispositivo que hemos mapeado a nuestro disco virtual hacia nuestro administrador de volúmenes lógicos</p>
<p><code># kpartx -a -v /dev/loop0<br />
add map loop0p1 (254:2): 0 208782 linear /dev/loop0 63<br />
add map loop0p2 (254:3): 0 167557950 linear /dev/loop0 208845</code></p>
<p>Ahora tenemos otros dispositivos creados en /dev/mapper, corresponden a &#8220;loop0p1&#8243; y &#8220;loop0p2&#8243; correspondientes a las particiones de nuestro disco virtual. Así debería ser presentarse:</p>
<p><code># ls -lia /dev/mapper/<br />
total 0<br />
   1072 drwxr-xr-x  2 root root     140 sep 13 15:19 .<br />
      3 drwxr-xr-x 15 root root    3260 sep 13 15:19 ..<br />
   1073 crw-------  1 root root 10, 236 ago 11 12:12 control<br />
2672529 lrwxrwxrwx  1 root root       7 sep 13 15:19 loop0p1 -&gt; ../dm-2<br />
2671232 lrwxrwxrwx  1 root root       7 sep 13 15:19 loop0p2 -&gt; ../dm-3<br />
   3655 lrwxrwxrwx  1 root root       7 ago 11 12:12 VolGroup_ID_15211-backup -&gt; ../dm-0<br />
   3672 lrwxrwxrwx  1 root root       7 ago 11 12:12 VolGroup_ID_15211-vardata -&gt; ../dm-1</code></p>
<p>Y el comando <strong>vgdisplay</strong> debería mostrar la información del grupo</p>
<p><code># vgdisplay<br />
  --- Volume group ---<br />
  VG Name               VolGroup00<br />
  System ID<br />
  Format                lvm2<br />
  Metadata Areas        1<br />
  Metadata Sequence No  3<br />
  VG Access             read/write<br />
  VG Status             resizable<br />
  MAX LV                0<br />
  Cur LV                2<br />
  Open LV               0<br />
  Max PV                0<br />
  Cur PV                1<br />
  Act PV                1<br />
  VG Size               79,88 GiB<br />
  PE Size               32,00 MiB<br />
  Total PE              2556<br />
  Alloc PE / Size       2556 / 79,88 GiB<br />
  Free  PE / Size       0 / 0<br />
  VG UUID               yAIBPd-1PD6-IN1U-aoK7-bLSW-rz08-ERktCp</code></p>
<p>Y con <strong>lvdisplay</strong> revisamos la información de los volúmenes dentro del grupo VolGroup00</p>
<p><code># lvdisplay VolGroup00<br />
  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol00<br />
  VG Name                VolGroup00<br />
  LV UUID                Du8Hwj-BUff-RhS3-lNTZ-KsxS-jvEp-S71om4<br />
  LV Write Access        read/write<br />
  LV Status              NOT available<br />
  LV Size                77,84 GiB<br />
  Current LE             2491<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto</p>
<p>  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol01<br />
  VG Name                VolGroup00<br />
  LV UUID                Sg3KQG-F3Ad-kgIx-yJi0-OSxm-fBUg-bKUR3O<br />
  LV Write Access        read/write<br />
  LV Status              NOT available<br />
  LV Size                2,03 GiB<br />
  Current LE             65<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto</code></p>
<p>Si te fijan en un detalle, en ambos volúmenes, el estado es &#8220;<strong>NOT available</strong>&#8220;, pues debemos activarlo</p>
<p><code># vgchange VolGroup00 -a y<br />
  2 logical volume(s) in volume group "VolGroup00" now active</code></p>
<p>Y volvemos a revisar</p>
<p><code># lvdisplay VolGroup00<br />
  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol00<br />
  VG Name                VolGroup00<br />
  LV UUID                Du8Hwj-BUff-RhS3-lNTZ-KsxS-jvEp-S71om4<br />
  LV Write Access        read/write<br />
<strong>  LV Status              available</strong><br />
  # open                 0<br />
  LV Size                77,84 GiB<br />
  Current LE             2491<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto<br />
  - currently set to     256<br />
  Block device           254:4</p>
<p>  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol01<br />
  VG Name                VolGroup00<br />
  LV UUID                Sg3KQG-F3Ad-kgIx-yJi0-OSxm-fBUg-bKUR3O<br />
  LV Write Access        read/write<br />
<strong>  LV Status              available</strong><br />
  # open                 0<br />
  LV Size                2,03 GiB<br />
  Current LE             65<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto<br />
  - currently set to     256<br />
  Block device           254:5</code></p>
<p>Ya los tenemos disponibles y ahora podemos trabajar con ese volúmen como si fuese un &#8220;lvm&#8221; normal, realizar tareas de mantención, montar el volumen, disminuir o aumentar su tamaño, etc.</p>
<p>Cuando ya terminemos de hacer todo lo que queramos con el disco virtual, hay que volver todo a la normalidad, haciendo los pasos inversos:</p>
<p><strong>Desactivar el volumen</strong><br />
<code># vgchange VolGroup00 -a n<br />
  0 logical volume(s) in volume group "VolGroup00" now active</code></p>
<p><strong>Remover el mapeo de los dispositivos loop0p1 y loop0p2</strong> creados desde loop0<br />
<code># kpartx -d /dev/loop0</code></p>
<p><strong>Remover el mapeo de /dev/loop0</strong> creado desde nuestro disco virtual &#8220;testing&#8221;<br />
<code># losetup -v -d /dev/loop0</code></p>
<p>Ya dejamos todo como estaba y podemos volver a utilizar nuestro disco virtual.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fmanipular-volumenes-logicos-lvm-en-discos-virtuales%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/"  data-text="Manipular volúmenes lógicos (LVM) en discos virtuales" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Búsqueda de servicios DNS con Transferencia de Zona abierta (AXFR)</title>
		<link>http://blog.zerial.org/seguridad/busqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr/</link>
		<comments>http://blog.zerial.org/seguridad/busqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 18:00:39 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[axfr]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[dig]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[transferencia de zona]]></category>
		<category><![CDATA[zone transfer]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2572</guid>
		<description><![CDATA[Ya vimos que los servidores mal configurados que permiten realizar transferencias de zona sin restricciones desde cualquier IP son muchos. Para saber si un servidor DNS es &#8220;vulnerable&#8221; a este tipo de ataque usamos la herramienta dig, primero obtenemos los dns que estan asociados al dominio, para este ejemplo usaremos el dominio zerial.org. $ dig [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.zerial.org/seguridad/axfr-una-vulnerabilidad-que-pasa-desapercibida/">Ya vimos</a> que los servidores mal configurados que permiten realizar transferencias de zona sin restricciones desde cualquier IP son muchos.</p>
<p>Para saber si un servidor DNS es &#8220;vulnerable&#8221; a este tipo de ataque usamos la herramienta <strong>dig</strong>, primero obtenemos los dns que estan asociados al dominio, para este ejemplo usaremos el dominio <em>zerial.org</em>.</p>
<p><code>$ dig NS zerial.org<br />
; &lt; &lt;&gt;&gt; DiG 9.7.3 &lt; &lt;&gt;&gt; NS zerial.org<br />
;; global options: +cmd<br />
;; Got answer:<br />
;; -&gt;&gt;HEADER&lt; &lt;- opcode: QUERY, status: NOERROR, id: 64152<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 6</p>
<p>;; QUESTION SECTION:<br />
;zerial.org.			IN	NS</p>
<p>;; ANSWER SECTION:<br />
zerial.org.		86400	IN	NS	ns1.linode.com.<br />
zerial.org.		86400	IN	NS	ns3.linode.com.<br />
zerial.org.		86400	IN	NS	ns2.linode.com.<br />
zerial.org.		86400	IN	NS	ns5.linode.com.<br />
zerial.org.		86400	IN	NS	ns4.linode.com.</code></p>
<p>Ya tenemos la lista de los servidores dns de <em>zerial.org</em>, para probar la transferencia de zona cambiamos <strong>NS</strong> por <strong>AXFR</strong> y forzamos que use el DNS que nosotros elijamos, en este caso probaremos <em>ns3.linode.com</em>:</p>
<p></code><code>$ dig AXFR zerial.org @ns3.linode.com</p>
<p>; &lt; &lt;&gt;&gt; DiG 9.7.3 &lt; &lt;&gt;&gt; AXFR zerial.org @ns3.linode.com<br />
;; global options: +cmd<br />
; Transfer failed.</code></p>
<p><strong>Failed</strong>. No hemos logrado transferir la zona desde ns3.linode.com, lo que nos indica que aparentemente se encuentra bien configurado.<br />
Otro ejemplo usando un dominio que sepamos que tiene esta falla: <strong>finanzas.gov.ar</strong>.<br />
Obtenemos los dos:</p>
<p><code>$ dig NS finanzas.gov.ar</p>
<p>; &lt; &lt;&gt;&gt; DiG 9.8.0-P4 &lt; &lt;&gt;&gt; NS finanzas.gov.ar<br />
;; global options: +cmd<br />
;; Got answer:<br />
;; -&gt;&gt;HEADER&lt; &lt;- opcode: QUERY, status: NOERROR, id: 38476<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2</p>
<p>;; QUESTION SECTION:<br />
;finanzas.gov.ar.		IN	NS</p>
<p>;; ANSWER SECTION:<br />
finanzas.gov.ar.	7006	IN	NS	ns3.zoneedit.com.<br />
finanzas.gov.ar.	7006	IN	NS	ns9.zoneedit.com.</code></p>
<p>Probamos el segundo dns, <strong>ns9.zoneedit.com</strong>.</p>
<p></code><code>$ dig AXFR finanzas.gov.ar @ns9.zoneedit.com</p>
<p>; &lt; &lt;&gt;&gt; DiG 9.8.0-P4 &lt; &lt;&gt;&gt; AXFR finanzas.gov.ar @ns9.zoneedit.com<br />
;; global options: +cmd<br />
finanzas.gov.ar.	7200	IN	SOA	ns3.zoneedit.com. soacontact.zoneedit.com. 2011266765 2400 360 1209600 300<br />
finanzas.gov.ar.	7200	IN	NS	ns3.zoneedit.com.<br />
finanzas.gov.ar.	7200	IN	NS	ns9.zoneedit.com.<br />
finanzas.gov.ar.	7200	IN	A	201.253.123.35<br />
finanzas.gov.ar.	7200	IN	MX	10 ALT1.ASPMX.L.GOOGLE.COM.<br />
finanzas.gov.ar.	7200	IN	MX	10 ALT2.ASPMX.L.GOOGLE.COM.<br />
finanzas.gov.ar.	7200	IN	MX	0 ASPMX.L.GOOGLE.COM.<br />
finanzas.gov.ar.	7200	IN	MX	20 ASPMX2.GOOGLEMAIL.COM.<br />
finanzas.gov.ar.	7200	IN	MX	20 ASPMX3.GOOGLEMAIL.COM.<br />
finanzas.gov.ar.	7200	IN	MX	20 ASPMX4.GOOGLEMAIL.COM.<br />
finanzas.gov.ar.	7200	IN	MX	20 ASPMX5.GOOGLEMAIL.COM.<br />
mail.finanzas.gov.ar.	7200	IN	CNAME	ghs.google.com.<br />
googleffffffff85ca3fa2.finanzas.gov.ar.	7200 IN	CNAME google.com.<br />
asignaciones.finanzas.gov.ar. 7200 IN	A	186.136.205.252<br />
docs.finanzas.gov.ar.	7200	IN	CNAME	ghs.google.com.<br />
www.finanzas.gov.ar.	7200	IN	A	201.253.123.35<br />
mapas.finanzas.gov.ar.	7200	IN	A	201.253.123.35<br />
finanzas.gov.ar.	7200	IN	SOA	ns3.zoneedit.com. soacontact.zoneedit.com. 2011266765 2400 360 1209600 300<br />
;; Query time: 355 msec<br />
;; SERVER: 66.240.231.42#53(66.240.231.42)<br />
;; WHEN: Thu Aug 11 13:49:31 2011<br />
;; XFR size: 18 records (messages 18, bytes 1138)</code></p>
<p>La transferencia de zona se hizo de forma exitosa.</p>
<p>Para poder analizar de forma automatica un listado de dominios, hice un script en bash que usa DIG para obtener los dns de cada dominio y prueba realizar AXFR por cada dominio en todos sus dns.</p>
<pre name="code" class="c">#!/bin/bash

digcmd=$(which dig)
domain=$1
echo -n "[+] Getting NS domains from $1 ..."
ns_domains=$(dig NS $domain @4.2.2.2|grep ^$domain|awk {'print $5'}|sed 's/.$//g')
echo -e "\t[OK]"
for ns in $ns_domains; do echo "[-] Found: "$ns; done
for ns in $ns_domains
do
	echo -n "Trying Zone Transfer from $ns: "
	$digcmd AXFR $domain @$ns|egrep 'Transfer failed|timed out|end of file'>/dev/null
	if [ $? -eq 1 ]
	then
		echo -e "\tSuccess."
	else
		echo -e "\tFail."
	fi
done</pre>
<p><span id="more-2572"></span></p>
<p>La forma de ejecucion es:</p>
<p><code>]$ sh zonetransfer.sh finanzas.gov.ar<br />
[+] Getting NS domains from finanzas.gov.ar ...	[OK]<br />
[-] Found: ns9.zoneedit.com<br />
[-] Found: ns3.zoneedit.com<br />
Trying Zone Transfer from ns9.zoneedit.com: 	Success.<br />
Trying Zone Transfer from ns3.zoneedit.com: 	Success.</code></p>
<p>Nos indica que es posible realizar una transferencia de zona desde ns3.zoneedit.com y ns9.zoneedit.com para el dominio finanzas.gov.ar.<br />
Tambien podemos pasarle un archivo que contenga una lista de dominios que queramos analizar de forma masiva. Por ejemplo, tenemos un archivo llamado dominios.txt con los dominios:<br />
<code>finanzas.gov.ar<br />
transparencia.cl<br />
gobierno.cl<br />
argentina.gov.ar<br />
gobierno.es<br />
microsoft.com</code></p>
<p>Ejecutamos:</p>
<p><code>$ for dom in $(cat dominios.txt); do sh zonetransfer.sh $dom; done<br />
[+] Getting NS domains from finanzas.gov.ar ...	[OK]<br />
[-] Found: ns9.zoneedit.com<br />
[-] Found: ns3.zoneedit.com<br />
Trying Zone Transfer from ns9.zoneedit.com: 	Success.<br />
Trying Zone Transfer from ns3.zoneedit.com: 	Success.<br />
[+] Getting NS domains from transparencia.cl ...	[OK]<br />
[-] Found: ns02.000webhost.com<br />
[-] Found: ns01.000webhost.com<br />
Trying Zone Transfer from ns02.000webhost.com: 	Fail.<br />
Trying Zone Transfer from ns01.000webhost.com: 	Fail.<br />
[+] Getting NS domains from gobierno.cl ...	[OK]<br />
[-] Found: ga.interior.gov.cl<br />
[-] Found: gb.interior.gov.cl<br />
[-] Found: ns1.presidencia.cl<br />
Trying Zone Transfer from ga.interior.gov.cl: 	Fail.<br />
Trying Zone Transfer from gb.interior.gov.cl: 	Fail.<br />
Trying Zone Transfer from ns1.presidencia.cl: 	Success.<br />
[+] Getting NS domains from argentina.gov.ar ...	[OK]<br />
[-] Found: nsii.arcert.gov.ar<br />
[-] Found: nsii.sgp.gov.ar<br />
Trying Zone Transfer from nsii.arcert.gov.ar: 	Fail.<br />
Trying Zone Transfer from nsii.sgp.gov.ar: 	Fail.<br />
[+] Getting NS domains from gobierno.es ...	[OK]<br />
[-] Found: sun.rediris.es<br />
[-] Found: chico.rediris.es<br />
[-] Found: dns1.mpr.es<br />
[-] Found: dns2.mpr.es<br />
Trying Zone Transfer from sun.rediris.es: 	Fail.<br />
Trying Zone Transfer from chico.rediris.es: 	Fail.<br />
Trying Zone Transfer from dns1.mpr.es: 	Fail.<br />
Trying Zone Transfer from dns2.mpr.es: 	Fail.<br />
[+] Getting NS domains from microsoft.com ...	[OK]<br />
[-] Found: ns3.msft.net<br />
[-] Found: ns4.msft.net<br />
[-] Found: ns1.msft.net<br />
[-] Found: ns2.msft.net<br />
[-] Found: ns5.msft.net<br />
Trying Zone Transfer from ns3.msft.net: 	Fail.<br />
Trying Zone Transfer from ns4.msft.net: 	Fail.<br />
Trying Zone Transfer from ns1.msft.net: 	Fail.<br />
Trying Zone Transfer from ns2.msft.net: 	Fail.<br />
Trying Zone Transfer from ns5.msft.net: 	Fail.</code></p>
<p>Ya tenemos el <em>output</em> del script, donde nos dice que los dns de <em>finanzas.gov.ar</em> y uno de <em>gobierno.cl</em> permite AXFR.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fbusqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/busqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/busqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr/"  data-text="Búsqueda de servicios DNS con Transferencia de Zona abierta (AXFR)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/busqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>[Tip] bzip2 vs pbzip2: Comprimir con bzip2 en forma paralela</title>
		<link>http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/</link>
		<comments>http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 04:36:45 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[bzip]]></category>
		<category><![CDATA[bzip2]]></category>
		<category><![CDATA[compresion]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[pbzip2]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2331</guid>
		<description><![CDATA[Ya todos conocemos &#8220;bzip2&#8220;, un algoritmo de compresión sin perdida, pero no todos conocen la existencia del proyecto &#8220;pbzip2&#8220;, una implementación &#8220;paralela&#8221; del anterior; un algoritmo de compresión, basado en bzip2, que aprovecha los recursos de una máquina con SMP (Symmetric Multi-Processing). PBZIP2 is a parallel implementation of the bzip2 block-sorting file compressor that uses [...]]]></description>
			<content:encoded><![CDATA[<p>Ya todos conocemos &#8220;<a href="http://www.bzip.org/">bzip2</a>&#8220;, un algoritmo de compresión sin perdida, pero no todos conocen la existencia del proyecto &#8220;<a href="http://www.compression.ca/pbzip2/">pbzip2</a>&#8220;, una implementación &#8220;paralela&#8221; del anterior; un algoritmo de compresión, basado en bzip2, que aprovecha los recursos de una máquina con SMP (Symmetric Multi-Processing).</p>
<blockquote><p>PBZIP2 is a parallel implementation of the bzip2 block-sorting file compressor that uses pthreads and achieves near-linear speedup on SMP machines. The output of this version is fully compatible with bzip2 v1.0.2 or newer</p></blockquote>
<p><a href="http://blog.zerial.org/wp-content/uploads/2011/06/intro.png"><img class="aligncenter size-full wp-image-2333" title="pbzip2 - bzip2 multi hilo" src="http://blog.zerial.org/wp-content/uploads/2011/06/intro.png" alt="" width="624" height="125" /></a><center>(<em>Intel(R) Core(TM)2 Duo CPU     P8700  @ 2.53GHz</em>)</center></p>
<p>En la imagen pueden ver los 3 procesos de pbzip2 consumiendo los 2 CPUs al 100%, de esta forma el tiempo de compresión es practicamente la mitad.<br />
A simple vista, si bzip2 se demora 30 segundos, pbzip2 demora 15. Por ejemplo, con un archivo de texto (el típico dump sql) de tamaño 137Mb:<br />
<code>$ time bzip2 poc.sql </p>
<p>real	0m33.010s<br />
user	0m32.788s<br />
sys	0m0.147s</code></p>
<p>Y con pbzip2:<br />
<code>$ time pbzip2 poc.sql </p>
<p>real	0m19.827s<br />
user	0m36.868s<br />
sys	0m0.960s</code></p>
<p><span id="more-2331"></span></p>
<p>Parallel-bzip2 se encuentra oficialmente en la mayoría de los repositorios, por ejemplo en:<br />
- <a href="http://packages.debian.org/squeeze/pbzip2">Debian</a><br />
- <a href="http://www.archlinux.org/packages/community/i686/pbzip2/">Archlinux</a><br />
- <a href="http://software.opensuse.org/search?q=pbzip2&#038;baseproject=openSUSE%3A11.4&#038;lang=en&#038;exclude_debug=true">OpenSuSe</a></p>
<p>El software se instala y se usa identico al bzip2 normal.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/"  data-text="[Tip] bzip2 vs pbzip2: Comprimir con bzip2 en forma paralela" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tip: Destrucción de archivos y datos en GNU/Linux</title>
		<link>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/</link>
		<comments>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/#comments</comments>
		<pubDate>Sun, 01 May 2011 20:03:22 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[destruccion]]></category>
		<category><![CDATA[eliminacion]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[shred]]></category>
		<category><![CDATA[wipe]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2108</guid>
		<description><![CDATA[Cuando digo &#8220;destrucción&#8221; de información no me refiero a simpemente eliminarla o purgarla del disco duro, sino a sobrescribirla y hacer imposible su restauración. Existen varias utilidades y formas de hacerlo, pero yo les mostraré tres utilidades/herramientas que nos ayudarán: dd, shred y wipe. La primera, nos ayudará a zero-izar un sector de nuestro disco [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2207" style="margin: 3px;" title="data-loss" src="http://blog.zerial.org/wp-content/uploads/2011/05/data-loss.jpg" alt="" width="107" height="108" />Cuando digo &#8220;destrucción&#8221; de información no me refiero a simpemente eliminarla o purgarla del disco duro, sino a sobrescribirla y hacer imposible su restauración. Existen varias utilidades y formas de hacerlo, pero yo les mostraré tres utilidades/herramientas que nos ayudarán: <strong>dd</strong>, <strong>shred</strong> y <strong>wipe</strong>. La primera, nos ayudará a zero-izar un sector de nuestro disco duro, memoria o lo que sea. Las otras dos son herramientas que nos permitiran sobreescribir y eliminar definitivamente un archivo para que sea irrecuperable. <strong>shred</strong> viene por defecto en <em>casi</em> todas las distribuciones unixlike, <strong>wipe</strong> se puede instalar en cualquiera.</p>
<p>Según los <em>manpages</em>,</p>
<blockquote><p><strong>wipe:</strong><br />
Wipe  is  a  secure file wiping utility. There are some low level issues that must be taken into consideration. One of these is that there must be some sort of write barrier between passes. Wipe uses fdatasync(2) (or fsync(2)) as a write barrier, or if fsync(2) isn&#8217;t available, the file is opened with the O_DSYNC or O_SYNC flag. For wipe to be effective, each pass must be completely  written.  To ensure this, the drive must support some form of a write barrier, write cache flush, or write cache disabling. SCSI supports ordered command tags, has a force media access bit for commands, and write cache can be disable on mode page 8. IDE/ATA drives support write cache flushes and write cache disabling. Unfortunetly, not all drives actually disable write cache when asked to.  Those  drives  are broken. Write caching should always be disabled, unless your system is battery backed and always powers down cleanly.</p></blockquote>
<blockquote><p><strong>shred:</strong><br />
Overwrite the specified FILE(s) repeatedly, in order to make it harder for even very expensive hardware probing to recover the data.</p></blockquote>
<blockquote><p><strong>dd: </strong><br />
Copy a file, converting and formatting according to the operands</p></blockquote>
<p>Vamos a lo practico.</p>
<p><span id="more-2108"></span></p>
<h3>dd</h3>
<p>Nos servirá cuando queramos eliminar información de un sector del disco, partición o disco completo, llenandolo de <em>zeros</em>. Es muy simple, basta con ejecutar:<br />
<code># dd if=/dev/zero of=/dev/sda</code><br />
En este caso, llenaremos de <em>zeros</em> el disco <strong>sda</strong>, eliminando el mbr, tabla de particiones, data, etc. Tambien podemos aplicarlo a una partición especifica<br />
<code># dd if=/dev/zero of=/dev/sdb1</code><br />
O bien a un archivo,<br />
<code># dd if=/dev/zero of=my_file.iso</code><br />
Podemos jugar con los parametros <strong>bs</strong>, <strong>count</strong>, <strong>seek</strong>, etc.</p>
<h3>wipe &#038; shred</h3>
<p>La ejecución de estas dos herramientas es sencilla, basta con ejecutar el comando y luego el nombre del archivo:<br />
<code># shred file.jpg</code><br />
o<br />
<code># wipe file.jpg</code></p>
<p>Ambos comando son bien personalizables, puedes decirle que al terminar lo complete con zeros, que los elimina, que los sobre escriba una cantidad X de veces y luego lo elimine, o que no lo elimine, etc.</p>
<p>Para más detalles recomiendo leer el manpage de cada uno.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Ftip-destruccion-de-archivos-y-datos-en-gnulinux%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/"  data-text="Tip: Destrucción de archivos y datos en GNU/Linux" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tip: Mantener sesiones ssh activas con autossh</title>
		<link>http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/</link>
		<comments>http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 14:25:04 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[autossh]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tuneles]]></category>
		<category><![CDATA[tunneling]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2116</guid>
		<description><![CDATA[autossh (1) &#8211; monitor and restart ssh sessions Esta herramienta es muy util cuando queremos mantener las sesiones activas y mantener los tuneles que hemos hecho con ssh. En simples palabras lo que hace este programita es monitorear la sesión y cuando se pierde la conexion, vuelve a conectarse. Lo ideal es trabajar con llaves [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>autossh (1)          &#8211; monitor and restart ssh sessions</p></blockquote>
<p>Esta herramienta es muy util cuando queremos mantener las sesiones activas y mantener los <a href="http://blog.zerial.org/seguridad/ssh-port-forwarding-y-tunneling-saltarse-las-restricciones-del-firewall/">tuneles</a> que hemos hecho con ssh. En simples palabras lo que hace este programita es monitorear la sesión y cuando se pierde la conexion, vuelve a conectarse.<br />
Lo ideal es trabajar con llaves públicas/privadas para autenticarse con el servidor, para que al intentar restablecer la conexion no pida la contraseña. Le pasamos a &#8220;autossh&#8221; los mismos parámetros que a ssh, por ejemplo:<br />
<code>autossh -L5022:10.0.0.11:22 -L5023:10.0.0.15:22 -L5024:10.0.0.20:22 10.0.0.1</code><br />
Para hacer un <em>bind</em> de puertos locales a distintas maquinas remotas. O<br />
<code>autossh -R2200:localhost:22 example.com</code><br />
Para hacer <em>bind</em> de puertos remotos hacia nuestra maquina local.</p>
<p>Link: <a href="http://www.harding.motd.ca/autossh/">http://www.harding.motd.ca/autossh/</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-mantener-sesiones-ssh-activas-con-autossh%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/"  data-text="Tip: Mantener sesiones ssh activas con autossh" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[PoC] Cifrado del historial de bash (.bash_history)</title>
		<link>http://blog.zerial.org/linux/poc-cifrado-del-historial-de-bash-bash_history/</link>
		<comments>http://blog.zerial.org/linux/poc-cifrado-del-historial-de-bash-bash_history/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 14:18:16 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Privacidad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash_history]]></category>
		<category><![CDATA[cifrado]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[gnupg]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[pgp]]></category>
		<category><![CDATA[privacidad]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2077</guid>
		<description><![CDATA[El otro día, en mis momentos de ocio, se me ocurrio buscar una forma de cifrar el historial de comandos que guarda bash. Hay servidores que sólo tenemos -o hemos ganado- acceso como usuarios, y no nos gusta que el administrador (root) vea lo que hacemos o los comandos que hemos ejecutado. Existen varias formas [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día, en mis momentos de ocio, se me ocurrio buscar una forma de cifrar el historial de comandos que guarda bash. Hay servidores que sólo tenemos -o hemos ganado- acceso como usuarios, y no nos gusta que el administrador (root) vea lo que hacemos o los comandos que hemos ejecutado. Existen varias formas de ir contra eso, por ejemplo eliminar el bash_history o bien editarlo cada vez que hacemos algo que no queremos que sepan. Esta forma es un poco mas rebuscada y busca cifrar mediante GPG el historial, de manera tal que el root no podrá leer lo que dice el archivo.</p>
<p>La logica es bastante simple:</p>
<ol>
<li>Cuando ingresamos (login) a nuestra cuenta desciframos el bash history usando nuestra clave privada</li>
<li>Cuando salimos (logout) ciframos el archivo con nuestra clave publica.</li>
</ol>
<p>Para lograrlo vamos a necesitar tener una clave gpg y configurar el comportamiento del login y logout con unos scripts que les mostraré a continuación.</p>
<p><span id="more-2077"></span></p>
<p>Vamos a usar el usuario &#8220;usuario&#8221; de prueba. Primero, creamos la clave GPG:</p>
<p><code>[usuario@belcebu ~]$ gpg --gen-key</code></p>
<p>En mi caso, generé una clave de 2048 bits con el UID<strong> Usuario de Prueba (Historial Cifrado) &lt;test@zerial.org&gt;</strong></p>
<p>Editamos el archivo .<strong>bashrc</strong> y agregamos las siguientes lineas</p>
<pre class="c" name="code">gpg -d -r "Usuario de Prueba (Historial Cifrado) &lt;test@zerial.org>" $HISTFILE >$HOME/._bash_history
mv $HOME/._bash_history $HISTFILE</pre>
<p>Luego creamos el siguiente script, lo llamaremos <strong>.crypt_history.sh</strong>:</p>
<pre class="c" name="code">#!/bin/bash

sleep 2;
gpg -e -r "Usuario de Prueba (Historial Cifrado) &lt;test@zerial.org>" $HOME/.bash_history
mv $HOME/.bash_history.gpg $HOME/.bash_history</pre>
<p>Y agregamos la línea</p>
<pre name="code" class="c">nohup sh $HOME/.crypt_history.sh &#038;</pre>
<p>Al archivo <strong>.bash_logout</strong></p>
<p>De esta forma, al ingresar como <em>usuario</em> se ejecutará automaticamente el comando que descifra el .bash_history y cuando salimos, será cifrado.</p>
<blockquote><p>[root@belcebu ~]# cat /home/usuario/.bash_history<br />
zå¬ÈùrèÿJx¨¸QÕ{¥	±5#ºcHb¶÷çFÀ®ú4ÞÃØÝ­xbZúF çïkågµNÒ¸5îÅ£	³KÝ0U¯º±YHú#ÙÞ©Ù&#038;¶þ¢Lyug<br />
                                                                                                þ<br />
ÓL¹ðú®&#038;°í¾vI?V\9Õx&#8217;{4hÐaÜdÛPÅ©²¦öcñm¾O&#8217;µÔ2Éªðá¸ó²ëÕÁ²Nª<n æq#È`>OÈ`A²U´¬Uîkï<br />
u:÷ÛASþdè¶]1ê¬GBXLT¥3þ0Ñ_8uóâEQ¯`.¾Kn3AÒy»çÌ¡øyà$ßÙkíKzÜ§¸×&#8217;Øx¿S¥<br />
                                                                 ÂâÆâveó´Î/¸)aýü4µÅ:mCú}1Á$äãÑõæ>¥ÈM9IÈÛ³=PË^q{Ñ<br />
3º ë]Å¿74ë*Ø<br />
Öuå¦<br />
   [root@belcebu ~]#</n></p></blockquote>
<p>Y si ingresamos como usuario &#8230;</p>
<blockquote><p>gpg: encrypted with 2048-bit RSA key, ID C8F972E8, created 2011-02-03<br />
      &#8220;Usuario de Prueba (Historial Cifrado) <test @zerial.org>&#8221;<br />
[usuario@belcebu ~]$ history<br />
    1  cat nohup.out<br />
    2  vim .bashrc<br />
    3  vim .crypt_history.sh<br />
    4  ls<br />
    5  history<br />
    6  ls -lia<br />
    7  history<br />
[usuario@belcebu ~]$ </test></p></blockquote>
<p>Existe un pequeño detalle, es que el root puede ingresar como usuario y de esta forma poder el historial. Pero para esto, nosotros debemos proteger nuestro cifrado con un passphrase, asi cuando el root quiera ingresar como usuario, éste le pedira una clave para poder descifrar el archivo bash_history, si el root no maneja esa clave no podrá ver lo que hay.</p>
<p>Esto es solo una prueba de concepto (PoC), se puede hacer cualquier modificación a los scripts usados para adaptarlos a otras necesidades y obviamente mejorar el cifrado mismo del bash_history.<br />
<strong>Nota: </strong>Existen varios <em>peros</em> en esta forma de cifrar, que obviamente pueden ser mejoradas, por ejemplo, podria existir algun conflicto cuando se inicia mas de una vez la sesion del usuario.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fpoc-cifrado-del-historial-de-bash-bash_history%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/poc-cifrado-del-historial-de-bash-bash_history/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/poc-cifrado-del-historial-de-bash-bash_history/"  data-text="[PoC] Cifrado del historial de bash (.bash_history)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/poc-cifrado-del-historial-de-bash-bash_history/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Tethering con un BlackBerry 8520 en Archlinux via bluetooth</title>
		<link>http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/</link>
		<comments>http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 17:09:10 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[wireless]]></category>
		<category><![CDATA[3g]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[movil]]></category>
		<category><![CDATA[tethering]]></category>
		<category><![CDATA[trucos]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2058</guid>
		<description><![CDATA[Si bien lo probé con Archlinux, tambien hay evidencias que funciona en Debian aunque, independiente de la distribución, debería funcionar para cualquiera. Tambien debería funcionar con cualquier celular que soporte &#8220;Dial Up&#8220;. Debemos tener instaladas las herramientas de bluetooth: bluez-utils bluez-libs dbus wvdial Primero, debemos poner el bluetooth del teléfono en modo escucha y escanearlo [...]]]></description>
			<content:encoded><![CDATA[<p>Si bien lo probé con Archlinux, tambien hay evidencias que funciona en Debian aunque, independiente de la distribución, debería funcionar para cualquiera. Tambien debería funcionar con cualquier celular que soporte &#8220;<em>Dial Up</em>&#8220;.<br />
Debemos tener instaladas las herramientas de bluetooth: <strong>bluez-utils bluez-libs dbus wvdial</strong></p>
<p>Primero, debemos poner el bluetooth del teléfono en modo <em>escucha</em> y escanearlo con nuestro disponisitivo, para ver si soporte el modo.</p>
<p><code>[root@balcebu zerial]# hcitool scan<br />
Scanning ...<br />
        F4:0B:93:DB:90:FF       BlackBerry 8520<br />
[root@balcebu zerial]#</code></p>
<p>Y vemos si soporta el modo <em>Dial Up</em></p>
<p><code>root@balcebu zerial]# sdptool browse F4:0B:93:DB:90:FF<br />
Browsing F4:0B:93:DB:90:FF ...<br />
[...]<br />
Service Name: Dialup Networking<br />
Service RecHandle: 0x10000<br />
Service Class ID List:<br />
  "<strong>Dialup Networking</strong>" (0x1103)<br />
  "Generic Networking" (0x1201)<br />
Protocol Descriptor List:<br />
  "L2CAP" (0x0100)<br />
  "RFCOMM" (0x0003)<br />
<strong>    Channel: 1</strong><br />
Profile Descriptor List:<br />
  "<strong>Dialup Networking</strong>" (0x1103)<br />
    Version: 0x0100<br />
[...]</code></p>
<p>En este caso soporta, en el canal 1.</p>
<p><span id="more-2058"></span></p>
<p>Hay que configurar el archivo /etc/bluetooth/rfcomm.conf</p>
<pre name="code" class="c">#
# RFCOMM configuration file.
#

rfcomm0 {
#       # Automatically bind the device at startup
        bind yes;
#
#       # Bluetooth address of the device
        device F4:0B:93:DB:90:FF;
#
#       # RFCOMM channel for the connection
        channel 1;
#
#       # Description of the connection
        comment "BlackBerry 8520";
}</pre>
<p>&#8220;device&#8221; corresponde a la MAC encontrada al hacer el scan, es decir, la de nuestro dispositivo movil y Channel, el canal en el cual está soportado el &#8220;Dial Up&#8221;.</p>
<p>Luego ejecutamos <strong>hidd &#8211;connect F4:0B:93:DB:90:FF</strong> y <strong>rfcomm connect 0</strong> para establecer la conexion con el telefono.</p>
<p><code>[root@balcebu bluetooth]# hidd --connect F4:0B:93:DB:90:FF<br />
[root@balcebu bluetooth]# rfcomm connect 0<br />
Connected /dev/rfcomm0 to F4:0B:93:DB:90:FF on channel 1<br />
Press CTRL-C for hangup</code></p>
<p>En el telefono debería aparecer la opción de &#8220;emparejamiento&#8221;. Ahora debemos configurar <strong>wvdial</strong>, editamos el archivo <strong>/etc/wvdial.conf</strong> y agregamos:</p>
<pre name="code" class="c">[Dialer blackberry]
Modem = /dev/rfcomm0
Baud = 115200
Dial Command = ATDT
Init2 = AT+CGDCONT=1,"IP","imovil.entelpcs.cl"
FlowControl = crtscts
Modem Type = Analog Modem
Username = entelpcs
Password = entelpcs
Stupid Mode = 1
New PPPD = yes
Phone = *99#</pre>
<p>En este caso, estoy conectado con el operador &#8220;entelpcs&#8221; y los datos corresponden a ésta compañía, en el caso de pertenecer a otro proveedor, deben camiar los datos&#8221; Init2, Username y Password por los que correspondan.<br />
Una vez añadida la configuración al archivo, ejecutamos</p>
<p><code># wvdial blackberry<br />
--&gt; WvDial: Internet dialer version 1.61<br />
--&gt; Cannot get information for serial port.<br />
--&gt; Initializing modem.<br />
--&gt; Sending: ATZ<br />
ATZ<br />
OK<br />
--&gt; Sending: AT+CGDCONT=1,"IP","imovil.entelpcs.cl"<br />
AT+CGDCONT=1,"IP","imovil.entelpcs.cl"<br />
OK<br />
--&gt; Modem initialized.<br />
--&gt; Sending: ATDT*99#<br />
--&gt; Waiting for carrier.<br />
ATDT*99#<br />
CONNECT<br />
--&gt; Carrier detected.  Starting PPP immediately.<br />
--&gt; Starting pppd at Wed Jan  5 09:52:13 2011<br />
--&gt; Pid of pppd: 24392<br />
--&gt; Using interface ppp0<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; local  IP address 186.10.247.119<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; remote IP address 169.254.1.1<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; primary   DNS address 200.63.56.3<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; secondary DNS address 200.63.56.4<br />
--&gt; pppd: Ð¶·¸[12][10] </code></p>
<p>Listo, el proveedor ya me asignó una ip publica y puedo navegar a traves de mi celular.</p>
<p>Referencias:</p>
<p>Bluetooth GPRS Howto: <a href="https://wiki.archlinux.org/index.php/Bluetooth_GPRS_Howto">https://wiki.archlinux.org/index.php/Bluetooth_GPRS_Howto</a><br />
Configurando un Blackberry como Modem en Debian: <a href="http://apostols.net/?p=176">http://apostols.net/?p=176</a><br />
Guía Bluetooth de Gentoo Linux: <a href="http://www.gentoo.org/doc/es/bluetooth-guide.xml">http://www.gentoo.org/doc/es/bluetooth-guide.xml</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fthethering-bluetooth-usar-como-modem-telefono-gnu-linux%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/"  data-text="Tethering con un BlackBerry 8520 en Archlinux via bluetooth" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>[Tip] AND (&amp;&amp;) y OR (&#124;&#124;) en bash</title>
		<link>http://blog.zerial.org/linux/tip-and-y-or-en-bash/</link>
		<comments>http://blog.zerial.org/linux/tip-and-y-or-en-bash/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 01:24:05 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2021</guid>
		<description><![CDATA[Parece algo muy simple, pero estoy seguro que muchos no lo saben: Usar los operadores lógicos &#38;&#38; y &#124;&#124; al momento de crear scripts o ejecutar comandos en bash. Podemos condicionar la ejecución de un comando en función de otro; por ejemplo, si falla el primer comando, entonces no ejecuto el segundo, o bien, si [...]]]></description>
			<content:encoded><![CDATA[<p>Parece algo muy simple, pero estoy seguro que muchos no lo saben: Usar los operadores lógicos <strong>&amp;&amp;</strong> y <strong>||</strong> al momento de crear scripts o ejecutar comandos en bash.<br />
Podemos condicionar la ejecución de un comando en función de otro; por ejemplo, si falla el primer comando, entonces no ejecuto el segundo, o bien, si no se ejecuta el primero entonces ejecuto el segundo, dependiendo de lo que necesitemos.<br />
Ejemplos:</p>
<p>Ejecutar el comando2 solo si se ejecuta el comando1:<br />
<code>$ comando1 &amp;&amp; comando2</code></p>
<p>Ejecutar el comando2 solo si <strong>no</strong> se ejecuta el primero<br />
<code>$ comando1 || comando2</code></p>
<p>Sería así:<br />
<code>[zerial@balcebu ~]$ comando1 || echo "Como comando1 no existe, entonces ejecuto el echo"<br />
bash: comando1: command not found<br />
Como comando1 no existe, entonces ejecuto el echo<br />
[zerial@balcebu ~]$ echo "El primer echo se ejecuta, pero el segnudo no" || echo "Como comando1 no existe, entonces ejecuto el echo"<br />
El primer echo se ejecuta, pero el segnudo no<br />
[zerial@balcebu ~]$ </code></p>
<p>Es muy útil cuando queremos programar scripts para ejecutar tareas condicionadas a otros comandos.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-and-y-or-en-bash%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-and-y-or-en-bash/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-and-y-or-en-bash/"  data-text="[Tip] AND (&#038;&#038;) y OR (||) en bash" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-and-y-or-en-bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Esteganografía: Ofuscación de archivos (parte 1)</title>
		<link>http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/</link>
		<comments>http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 13:03:13 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[cat]]></category>
		<category><![CDATA[concatenar]]></category>
		<category><![CDATA[concatenar archivos]]></category>
		<category><![CDATA[esconder archivos]]></category>
		<category><![CDATA[esteganografia]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[ofuscacion de archivos]]></category>
		<category><![CDATA[ofuscamiento]]></category>
		<category><![CDATA[ofuscar]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1923</guid>
		<description><![CDATA[Entendamos como &#8220;ofuscación de archivos&#8221; el hecho de esconder un archivo dentro de otro. Es posible, usando comandos básicos de Unix, ofuscar un archivo y que pase desapercibido. En esta etapa solo usaremos el comando para concatenar archivos cat. Teóricamente, lo que haremos será concatenar dos tipos de archivos, en este caso un archivo de [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-1924" title="archivos" src="http://blog.zerial.org/wp-content/uploads/2010/10/archivos-150x150.jpg" alt="" width="150" height="150" />Entendamos como &#8220;<em>ofuscación de archivos</em>&#8221; el hecho de <em>esconder</em> un archivo dentro de otro. Es posible, usando comandos básicos de Unix, ofuscar un archivo y que pase desapercibido. En esta etapa solo usaremos el comando para concatenar archivos <strong>cat</strong>.</p>
<p>Teóricamente, lo que haremos será concatenar dos tipos de archivos, en este caso un archivo de imagen junto con un zip o un rar. Si ponemos nuestro fichero comprimido al final de un archivo de imagen, podremos ver la imagen sin problemas y poder debajo tener nuestro archivo ofuscado. Hice algunas pruebas en M$ Windows con distintos antivirus enviando el archivo por correo electrónico y descargandolo, sin que se detectara el archivo ofuscado.</p>
<p>El comando es ultra sencillo, lo único que haremos sera concatenar dos (o más) archivos al final de nuestro fichero de imágen. Tenemos una nuestra imagen &#8220;<strong>imagen.jpg</strong>&#8221; y nuestro zip &#8220;<strong>archivo.zip</strong>&#8220;:</p>
<p><code>$ cat imgen.jpg archivo.zip &gt;archivo_ofuscado.jpg</code></p>
<p>Ahora &#8220;<strong>archivo_ofuscado.jpg</strong>&#8221; tiene un tamaño igual a la suma de <em>imagen.jpg</em> con <em>archivo.zip</em>.</p>
<p><span id="more-1923"></span></p>
<p>Ejemplo practico:</p>
<p><code>[zerial@balcebu ofuscar]$ ls -l<br />
total 408<br />
-rw-r--r-- 1 zerial users 408482 Oct 27 09:54 archivo.zip<br />
-rw-r--r-- 1 zerial users   6041 Oct 27 09:52 dummie.jpg<br />
[zerial@balcebu ofuscar]$ cat dummie.jpg archivo.zip &gt;archivo_ofuscado.jpg<br />
[zerial@balcebu ofuscar]$  ls -l archivo_ofuscado.jpg<br />
-rw-r--r-- 1 zerial users 414523 Oct 27 09:54 archivo_ofuscado.jpg<br />
[zerial@balcebu ofuscar]$ </code></p>
<p>El tamaño de archivo_ofuscado.jpg es la suma de los dos anteriores. Tambien podemos ver el tipo de archivo que son cada uno:<br />
<code>[zerial@balcebu ofuscar]$ file *<br />
archivo.zip:          Zip archive data, at least v1.0 to extract<br />
archivo_ofuscado.jpg: JPEG image data, JFIF standard 1.01<br />
dummie.jpg:           JPEG image data, JFIF standard 1.01<br />
[zerial@balcebu ofuscar]$ </code></p>
<p>Tanto nuestro archivo de imagen original como nuestro archivo ofuscado son JPEG. Si lo abrimos con el navegador o con un editor o visor de imágenes podemos ver ambos archivos sin problemas. Además, podemos descomprimir con &#8220;unzip&#8221; nuestra imagen y archivo ofuscado <strong>archivo_ofuscado.jpg</strong>.</p>
<p><code>[zerial@balcebu ofuscar]$ unzip archivo_ofuscado.jpg<br />
Archive:  archivo_ofuscado.jpg<br />
warning [archivo_ofuscado.jpg]:  6041 extra bytes at beginning or within zipfile<br />
  (attempting to process anyway)<br />
   creating: tipografias/<br />
  inflating: tipografias/Aller_Bd.ttf<br />
  inflating: tipografias/Aller_BdIt.ttf<br />
  inflating: tipografias/Aller_It.ttf<br />
  inflating: tipografias/Aller_Lt.ttf<br />
  inflating: tipografias/Aller_LtIt.ttf<br />
  inflating: tipografias/Aller_Rg.ttf<br />
  inflating: tipografias/AllerDisplay.ttf<br />
[zerial@balcebu ofuscar]$ </code></p>
<p>El comando nos da una advertencia diciendonos que hay bytes de sobra en el archivo, los omite y continua con la descompresión exitosamente. Unzip (tambien probado con WinZip y WinRar) advierte que hay bytes de sobra, pero lo descomprime satisfactoriamente y sin errores. Podemos hacer lo mismo con cualquier tipo de archivos; videos, musica, documentos de texto, etc.</p>
<p><strong>nota:</strong> Gracias a la aclacarión de <a href="http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/#comment-85657">Alejandro Saez</a>, he agregado el termino &#8220;Esteganografía&#8221; al título, para evitar confusiones.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fofuscacion-de-archivos-parte-1%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/"  data-text="Esteganografía: Ofuscación de archivos (parte 1)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>[Tip] Limitar el uso de ancho de banda con Trickle</title>
		<link>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/</link>
		<comments>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 14:01:38 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[aplicaciones]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[herramientas]]></category>
		<category><![CDATA[limitar ancho de banda]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[trickle]]></category>
		<category><![CDATA[utilidad]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1876</guid>
		<description><![CDATA[trickle is a portable lightweight userspace bandwidth shaper. It can run in collaborative mode (together with trickled) or in stand alone mode. Con esta herramienta podemos limitar la velocidad de subida y bajada de cualquier aplicación. Como dice en la descripción, puede trabajar &#8220;solo&#8221; y tambien como demonio. Si ejecutamos el demonio, todas las aplicaciones [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong><a href="http://monkey.org/~marius/pages/?page=trickle">trickle</a></strong> is a portable lightweight userspace bandwidth shaper. It can run  in collaborative mode (together with <em>trickled</em>) or in stand alone mode.</p></blockquote>
<p>Con esta herramienta podemos limitar la velocidad de subida y bajada de cualquier aplicación. Como dice en la descripción, puede trabajar &#8220;solo&#8221; y tambien como demonio. Si ejecutamos el demonio, todas las aplicaciones que se corran usando trickle (sin especificar subida ni bajada) correrán con el límite señalado. Por ejemplo, si corremos el demonio con los parametros:</p>
<p><code>trickled -d 150 -u 20</code><br />
 Establecemos que la velocidad de bajada y subida será de 150 y 20 Kb/s, respectivamente. Desde ahora, todas las aplicaciones corridas con <strong>trickle</strong> tendran esa configuración, por ejemplo:</p>
<p><code>trickle axel http://domain.com/download.tbz2</code><br />
Limitará la bajada a 150kb/s.</p>
<p>Podemos pasarle parametros a trickle directamente, por ejemplo <strong>trickle -d 100 -u 100 wget http://domain.com/file.tbz2</strong>, de esta forma se limitara a wget solo descargar a 100kb/s.</p>
<p>Aunque <strong>wget</strong> tiene la opción <strong>&#8211;limit-rate</strong> que nos permite limitar el RATE, y <strong>&#8211;max-speed</strong> que nos permite limitar la máxima velocidad en <strong>axel</strong>, trickle nos puede servir para limitar el ancho de banda de cualquier aplicación.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-limitar-el-uso-de-ancho-de-banda-con-trickle%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/"  data-text="[Tip] Limitar el uso de ancho de banda con Trickle" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip: Ver y modificar los parametros de tu tarjeta de red</title>
		<link>http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/</link>
		<comments>http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 17:42:14 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[ethtool]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[mii-tool]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[red]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1818</guid>
		<description><![CDATA[Para ver y modificar los parametros de configuración de tu tarjeta de red puedes usar las herramientas mii-tool y ethtool, aunque la primera herramienta está obsoleta (deprecated), aún sirve para sistemas con instalaciones antiguas. mii-tool &#8211; view, manipulate media-independent interface status ethtool &#8211; Display or change ethernet card settings Para modificar la velocidad de transferencia [...]]]></description>
			<content:encoded><![CDATA[<p>Para ver y modificar los parametros de configuración de tu tarjeta de red puedes usar las herramientas <strong>mii-tool</strong> y <strong>ethtool</strong>, aunque la primera herramienta está obsoleta (<em>deprecated</em>), aún sirve para sistemas con instalaciones antiguas.</p>
<blockquote><p><strong>mii-tool</strong> &#8211; view, manipulate media-independent interface status<br />
<strong>ethtool</strong> &#8211; Display or change ethernet card settings</p></blockquote>
<p>Para modificar la velocidad de transferencia de las tarjetas usamos el siguiente comando:</p>
<p><code>ethtool eth1 speed 1000 duplex full</code></p>
<p>Para dejarla a 1Gbps full duplex. Podemos setear la tarjeta a 10, 100 o 1000mbps según su capacidad, tambien  decirle si es <em>half</em> o <em>full</em> duplex, activar y desactivar la autonegociación, modiicar el tamaño de los Jumbo Frames, etc.</p>
<p>Para conocer la configuración actual de la tarjeta de red sólo debemos ejecutar <strong>ethtool</strong> y especificarle el dispositivo:</p>
<p><img class="aligncenter size-full wp-image-1821" title="ethtool_ss" src="http://blog.zerial.org/wp-content/uploads/2010/08/ethtool_ss.png" alt="" width="400" height="459" /></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/"  data-text="Tip: Ver y modificar los parametros de tu tarjeta de red" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>DPMS y ScreenBlanking: Controlar el ahorro de energía de la pantalla</title>
		<link>http://blog.zerial.org/linux/dpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla/</link>
		<comments>http://blog.zerial.org/linux/dpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 18:13:34 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[ayuda]]></category>
		<category><![CDATA[dpms]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[screenblanking]]></category>
		<category><![CDATA[x]]></category>
		<category><![CDATA[xorg]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1795</guid>
		<description><![CDATA[Despues de una actualización, magicamente, cuando veia alguna película en mi portatil despues de 10 minutos se iba a negro y se apagaba la pantalla. Es un comportamiento normal si pensamos en que el laptop estaba inactivo, pero no me sucedía cuando dejaba corriendo VLC o mplayer. Ultimamente comenzó a suceder &#8230; entonces pensé inmediatamente [...]]]></description>
			<content:encoded><![CDATA[<p>Despues de una actualización, magicamente, cuando veia alguna película en mi portatil despues de 10 minutos se iba a negro y se apagaba la pantalla. Es un comportamiento normal si pensamos en que el laptop estaba inactivo, pero no me sucedía cuando dejaba corriendo VLC o mplayer. Ultimamente comenzó a suceder &#8230; entonces pensé inmediatamente que era la opción DPMS de la X.</p>
<p>Probé poniendo la opción <strong>Options &#8220;DPMS&#8221; &#8220;false&#8221;</strong>, configurando la X usando <strong>xset</strong> para desactivar la opción de ahorro de energia y tambien probé con <strong>vbetool</strong>, pero ninguna me dio resultado.</p>
<p>Buscando y buscando, encontré que existen dos opciones: <strong>DPMS</strong> y <strong>ScreenBlanking</strong>.</p>
<p><strong>ScreenBlanking: </strong>Es un &#8220;apagado de pantalla/monitor&#8221; de mentira, hace que la pantalla se &#8220;apague&#8221; y se ponga negra, pero realmente sigue prendida, por lo que solamente le baja el brillo. Por defecto está <em>seteado</em> en 10 minutos.</p>
<p><strong>DPMS:</strong> Esta es una función real del manejo de energia para las pantallas. Por defecto pasa a un estado &#8220;StandBy&#8221; luego de 20 minutos, &#8220;Suspend&#8221; luego de 30 minutos y &#8220;Off&#8221; luego de 40.</p>
<p>Para manejar las configurar los parametros de estas opciones podemos hacerlo mediante la configuración de la X o usando xset.</p>
<p><span id="more-1795"></span></p>
<p>Si ejecutamos <strong>xset -q</strong> podemos ver la configuración actual:</p>
<blockquote><p>Keyboard Control:<br />
auto repeat:  on    key click percent:  0    LED mask:  00000000<br />
XKB indicators:<br />
00: Caps Lock:   off    01: Num Lock:    off    02: Scroll Lock: off<br />
03: Compose:     off    04: Kana:        off    05: Sleep:       off<br />
06: Suspend:     off    07: Mute:        off    08: Misc:        off<br />
09: Mail:        off    10: Charging:    off    11: Shift Lock:  off<br />
12: Group 2:     off    13: Mouse Keys:  off<br />
auto repeat delay:  660    repeat rate:  25<br />
auto repeating keys:  00ffffffdffffbbf<br />
fadfffefffedffff<br />
9fffffffffffffff<br />
fff7ffffffffffff<br />
bell percent:  50    bell pitch:  400    bell duration:  100<br />
Pointer Control:<br />
acceleration:  2/1    threshold:  4<br />
<strong>Screen Saver:<br />
prefer blanking:  yes    allow exposures:  yes<br />
timeout:  0    cycle:  600</strong><br />
Colors:<br />
default colormap:  0&#215;20    BlackPixel:  0    WhitePixel:  16777215<br />
Font Path:<br />
/usr/share/fonts/misc,/usr/share/fonts/100dpi:unscaled,/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/TTF,/usr/share/fonts/Type1,/usr/share/fonts/misc/,/usr/share/fonts/TTF/,/usr/share/fonts/Type1/,/usr/share/fonts/100dpi/,/usr/share/fonts/75dpi/,built-ins<br />
<strong>DPMS (Energy Star):<br />
Standby: 600    Suspend: 600    Off: 600<br />
DPMS is Disabled</strong><br />
Font cache:<br />
Server does not have the FontCache Extension</p></blockquote>
<p>Fijarse en la sección &#8220;DPMS&#8221;, aparecen tres valores, standby, suspend, off que estan seteados en 600 segundos, es decir, 10 minutos. Para configurar estos valores debemos hacer lo siguiente:</p>
<p><code>xset dpms 300 600 900</code><br />
El primer número corresponde a Standby, el segundo a Suspend y el tercero a Off. Para desactivarlo podemos dejarlo en cero:<br />
<code>xset dpms 0 0 0</code><br />
Tambien podemos desactivar directamente el DPMS con<br />
<code>xset -dpms</code><br />
Y para activarlo cambiamos el signo menos (-) por un signo mas: +</p>
<p>Si desactivamos DPMS veremos que seguirá apagandose el monitor, pues debemos desactivar (o aumentar el valor) de ScreenBlanking.</p>
<p><code>xset s 0</code><br />
Seteamos el valor a 0 (desactivado).</p>
<p>Para más información les recomiendo el siguiente link (fue el que me ayudó a mi):</p>
<p><a href="http://www.shallowsky.com/linux/x-screen-blanking.html">http://www.shallowsky.com/linux/x-screen-blanking.html</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fdpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/dpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/dpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla/"  data-text="DPMS y ScreenBlanking: Controlar el ahorro de energía de la pantalla" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/dpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cosas que encontramos en los archivos .bash_history</title>
		<link>http://blog.zerial.org/seguridad/cosas-que-encontramos-en-los-archivos-bash_history/</link>
		<comments>http://blog.zerial.org/seguridad/cosas-que-encontramos-en-los-archivos-bash_history/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 14:00:47 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Historias]]></category>
		<category><![CDATA[Interes general]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[historial de comandos]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1668</guid>
		<description><![CDATA[El otro día, haciendo revisión y limpieza en los servidores, me dediqué por un par de minutos a revisar los archivos .bash_history de algunos usuarios y me encontre con varias sorpresas, desde cosas chistosas hasta problemas críticos de seguridad. Los usuarios son muy buenos para inventar comandos, probar cosas, inventar pasarle parametros a los comandos, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.zerial.org/wp-content/uploads/2010/04/bhistory.png"><img class="size-full wp-image-1697 alignleft" style="margin-right: 3px; margin-left: 3px;" title="bhistory" src="http://blog.zerial.org/wp-content/uploads/2010/04/bhistory.png" alt="" width="136" height="201" /></a>El otro día, haciendo revisión y limpieza en los servidores, me dediqué por un par de minutos a revisar los archivos <em>.bash_history</em> de algunos usuarios y me encontre con varias sorpresas, desde cosas chistosas hasta problemas críticos de seguridad. Los usuarios son muy buenos para inventar comandos, probar cosas, inventar pasarle parametros a los comandos, etc, es muy chistoso ver como se pasean por mil directorios antes de llegar a donde quieren llegar, como visualizan los archivos o como encuentran lo que buscan. Está bien que los usuarios son solo usuarios, no deberían por qué saber ni ser expertos en ejecutar comandos unix en un prompt, pero aun asi sigue pareciendo cómico para uno ver cómo lo hacen.<br />
Para quienes no saben, el archivo <em>.bash_history</em> corresponde a un archivo de registro o logs que guarda los comandos ejecutados en bash por un usuario en particular, cuando un usuario ingresa vía ssh a un sistema por ejemplo, ejecuta los típicos comandos &#8220;dir, cd, ls&#8221; y estos quedan registrados.</p>
<p><span id="more-1668"></span></p>
<p>Lo más comun, y que me da muca risa y aveces rabia, y me desespera un poco, es ver como los usuarios avanzan lentamente, directorio por directorio, hasta llegar a la destino final. Por ejemplo:</p>
<p><code>$ cd /<br />
$ cd home<br />
$ cd usuario<br />
$ cd public_html<br />
$ cd includes</code></p>
<p>En lugar de ejecutar directamente<br />
<code>$ cd /home/usuario/public_html/includes</code></p>
<p>Y peor aun, hay veces que el usuario es inseguro y prefiere verificar si lo hizo bien y termina su caminata por los directorios haciendo un &#8220;pwd&#8221;:</p>
<p><code>$ cd /<br />
$ cd home<br />
$ cd usuario<br />
$ cd public_html<br />
$ cd includes<br />
$ pwd<br />
/home/usuario/public_html/includes<br />
$</code></p>
<p>Hay algo que me desespera aun mas, es cuando el usuario tiene la necesidad de listar el contenido de CADA directorio:</p>
<p><code>$ cd /<br />
$ ls -l<br />
$ cd home<br />
$ ls -l<br />
$ cd usuario<br />
$ ls -l<br />
$ cd public_html<br />
$ ls -l<br />
$ cd includes<br />
$ pwd<br />
/home/usuario/public_html/includes<br />
$ ls -l</code></p>
<p>Para los que no saben, para esto existe un truco (tip!), no digo que se aprendan los directorios de memoria, pero pueden ejecutar todo en una sola linea, por ejemplo, cuando escriben / pueden presionar tabular dos veces y automaticamente aparecerá el listado de archivos y directorios dentro de /. Asi mismo, si escriben /home/ y dos veces tabular, veran todo el contenido de /home, sin tener que ejecutar cd /home, presionar enter y luego un ls.</p>
<p>Otra cosa que es muy comun, aunque no lo crean, es encontrar las passwords de las bases de datos, especialmente de MySQL. La gente está acostumbrada a ejecutar el comando mysql para conectarse a la base de datos pasandole como parametro el usuario y la password</p>
<p><code>$ mysql -uproduccion -p4gSg4ws -hlocalhost mydatabase<br />
mysql&gt;</code></p>
<p>Tambien usan esta misma tecnica para generar los típicos respaldos usando mysqldump.</p>
<p><code>$ mysqldump -uproduccion -p4gSg4ws -hlocalhost mydatabase &gt;&gt;mydatabase.sql</code></p>
<p>Obviamente esto es un problema de seguridad, ya sea porque no se educó bien al usuario o simplemente porque no existen medidas de seguridad dentro del contexto donde se está ejecutando este tipo de comandos.</p>
<p>Tambien es muy usual encontrar a usuarios que intentan pasarle la password de root al comando &#8220;su&#8221;, ejecutando comandos tipo:</p>
<p><code>$ su - 354dr2</code></p>
<p>Pensando que 354dr2 es la password de root, al igual que</p>
<p><code>$ sudo su - password_del_usuario</code></p>
<p>Pensando que de esa forma no le pedirá el password. Lo que no sabe el usuario es que todo lo que ejecuta esta siendo logueado y que está comprometiendo la seguridad del servidor.</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/04/bash-history-terminal.png"><img src="http://blog.zerial.org/wp-content/uploads/2010/04/bash-history-terminal-150x150.png" alt="" title="bash-history-terminal" width="150" height="150" class="alignright size-thumbnail wp-image-1711" /></a>El .bash_history o historial de comandos bash, muestra mucho como trabajan los usuarios, qué hacen y de qué forma lo hacen, de esta forma es posible obtener información sobre algun sistema o servicio que esté corriendo en el servidor, por ejemplo si entramos <em>a la mala</em> a un servidor y queremos buscar información privada o información que nos interese, podemos ver el historial de los usuarios para saber qué hacen, por donde se mueven y seguir sus pasos.</p>
<p>Un dia me tocó ver que un usuario tenia un script &#8220;escondido&#8221; que se conectaba vía llave pública a 4 o 5 servidores (incluyendo uno fuera de la red), obviamente, la llave privada estaba en el servidor donde yo estabam por lo que pude acceder a todas sus cuentas en los otros servidores.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fcosas-que-encontramos-en-los-archivos-bash_history%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/cosas-que-encontramos-en-los-archivos-bash_history/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/cosas-que-encontramos-en-los-archivos-bash_history/"  data-text="Cosas que encontramos en los archivos .bash_history" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/cosas-que-encontramos-en-los-archivos-bash_history/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Imagenes y snapshots: Respaldo de servidores</title>
		<link>http://blog.zerial.org/linux/imagenes-y-snapshots-respaldo-de-servidores/</link>
		<comments>http://blog.zerial.org/linux/imagenes-y-snapshots-respaldo-de-servidores/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 13:15:02 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[automatizacion]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[nfs]]></category>
		<category><![CDATA[respaldos]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[snapshots]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1563</guid>
		<description><![CDATA[Mi propósito era crear imágenes de todos los servidores del datacenter para que, en caso de cualquier contingencia, levantar un nuevo servidor identico simplemente traspasando la imágen de respaldo hacia ese servidor. Los sistemas estaban instalados usando volumenes lógicos (LVM) por lo que sería mucho más fácil crear imágenes y snapshots de respaldos. En un [...]]]></description>
			<content:encoded><![CDATA[<p>Mi propósito era crear imágenes de todos los servidores del datacenter para que, en caso de cualquier contingencia, levantar un nuevo servidor identico simplemente traspasando la imágen de respaldo hacia ese servidor. Los sistemas estaban instalados usando volumenes lógicos (LVM) por lo que sería mucho más fácil crear imágenes y snapshots de respaldos. En un prinicpio pensé hacer directamente <strong>dd</strong> sobre los volumenes lógicos pero la imágen se corrompía y en muchos casos no podía volver a recuperarla. Existe la posibilidad de montar el volumen lógico en un directorio y respaldar, usando tar, bzip y esas cosas, sólo los archivos, pero no era mi propósito, ya que para restaurar solamente los archivos, debía tener una partición ya preparada, con el sistma de ficheros, sistema instalado, etc etc. En cambio, con la imágen simplemente hacia un <strong>dd</strong> para restaurarla, sin tener el sistema de archivos creado, etc.</p>
<p>Por twitter me recomendaron varias opciones. <a href="http://twitter.com/apostols">@Apostols</a> me recomendó las herramientas &#8220;puppet&#8221; y &#8220;rlbackup&#8221;, mientras que <a href="http://twitter.com/ssugasti">@ssugasti</a> &#8220;mondorescue&#8221;, pero yo seguia con mi idea de usar directamente &#8220;dd&#8221;. Debía hacer el mismo procedimiento en mas de 40 servidores, por lo que usar una aplicación &#8220;cliente->servidor&#8221; no era mi solución. Usar aplicaciones que requieran modo grafico o que requieran mucha interacción con el usuario tampoco me servian, yo necesitaba algo automatizado que pueda dejar corriendo de noche y volver al otro día y encontrar el trabajo hecho.</p>
<p><span id="more-1563"></span></p>
<p>Leyendo el manual de LVM, especialmente el de <strong>lvcreate</strong>, encontré la opción &#8220;<strong>snapshot</strong>&#8221; que básicamente le toma una &#8220;foto&#8221; al volumen lógico de origen y crea un nuevo volumen con ese preciso instante en que se hizo el snapshot, de ésta forma la partición original podrá ser actualizara mientras que el snapshot se respalda sin problemas. Luego de eso, el snapshot se elimina y se guarda la imágen. La rutína sería mas o menos asi:</p>
<p><code># lvcreate --snapshot /dev/Vol00/var --name var-snap -L100k<br />
# dd if=/dev/Vol00/var-snap of=/backup/var.img<br />
# lvremove -f /dev/Vol00/var-snap </code></p>
<p>De esta forma, creamos un snapshot llamado &#8220;var-snap&#8221; en base a la partición (o volumen) /dev/Vol00/var, luego, usando dd, creamos la imágen de dicha partición y la guardamos en /backup. Finalmente eliminamos el snapshot.<br />
Para tener aún más certesa de que todo funcionaría, tambien decidí empaquetar, comprimir y guardar los ficheros, por lo que antes de eliminarla (lvremove) la debo montar y hacer un tar. La rutina quedaría así:</p>
<p><code># lvcreate --snapshot /dev/Vol00/var --name var-snap -L100k<br />
# dd if=/dev/Vol00/var-snap of=/backup/var.img<br />
# mount /dev/Vol00/var-snap /mnt<br />
# tar cfjv /bakcup/var.tbz2 /mnt<br />
# umount /mnt<br />
# lvremove -f /dev/Vol00/var-snap </code></p>
<p>En mi caso, /backup corresponde a un punto de montaje de red NFS.<br />
Mi misión era realizar ésta misma rutina en más de 40 servidores, por lo que necesitaba hacer un script que se paseara por todos los servidores y ejecutara estos comandos.</p>
<pre name="code" class="c">
#!/bin/bash

IDENTITYFILE=$HOME/.ssh/id_rsa
MACHINES=servidores.list
DATE=$(date +%d%m%Y)
NFS=/mnt/imagenes/servers/
DIR_SNAPSHOT=/mnt/snapshot

for server in $(cat servidores.list);
do
        echo "Respaldando $server ..."
        ssh -i $IDENTITYFILE $server "lvdisplay" >/tmp/lvdisplay_temp
        lvdisplay=$(awk '
                /LV Name/ { name = $3 }
                /VG Name/ { print name","$3 } ' /tmp/lvdisplay_temp)
        for _logicalv in $lvdisplay;
        do
                lvname=$(echo $_logicalv |cut -f1 -d ","|cut -f4 -d "/")
                logicalv=$(echo $_logicalv |cut -f2 -d ",")
                echo -e "\tVolumen Logico: $lvname"
                ssh $server "lvcreate --size 100m --snapshot --name $lvname-snap /dev/$logicalv/$lvname"
                ssh $server "mount /dev/$logicalv/$lvname-snap $DIR_SNAPSHOT"
                ssh $server "mkdir $NFS$server"
                ssh $server "tar cfj $NFS$server/snapshot_$lvname-$DATE.tar.bz2 $DIR_SNAPSHOT"
                ssh $server "umount $DIR_SNAPSHOT"
                ssh $server "dd if=/dev/$logicalv/$lvname-snap of=$NFS$server/image_$lvname-$DATE.img"
                ssh $server "lvremove -f /dev/$logicalv/$lvname-snap"
                echo -e "\tArchivo imagen: $NFS$server/image_$lvname-$DATE.img"
                echo -e "\tArchivo tarball: $NFS$server/snapshot_$lvname-$DATE.tar.bz2"
        done
done
scp /tmp/lvdisplay_temp $server:$NFS$server/lvdisplay
</pre>
<p>El script trabaja con la salida del comando <strong>lvdisplay</strong> que entrega una salida con los detalles de cada volumen lógico. Lee un fichero llamado <em>servidores.list</em> y hace un recorrido línea por línea, conectándose a cada servidor y ejecutando las instrucciones necesarias. Para hacer el proceso más eficiente y automatizado es necesario, previamente, copiar todas las claves públicas a cada servidor, para evitar la autentificación.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fimagenes-y-snapshots-respaldo-de-servidores%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/imagenes-y-snapshots-respaldo-de-servidores/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/imagenes-y-snapshots-respaldo-de-servidores/"  data-text="Imagenes y snapshots: Respaldo de servidores" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/imagenes-y-snapshots-respaldo-de-servidores/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Jornada de difusión filosófica del software libre</title>
		<link>http://blog.zerial.org/interes-general/jornada-de-difusion-filosofica-del-software-libre/</link>
		<comments>http://blog.zerial.org/interes-general/jornada-de-difusion-filosofica-del-software-libre/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 12:31:07 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Interes general]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[cc]]></category>
		<category><![CDATA[copyleft]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[creative commons]]></category>
		<category><![CDATA[difusion]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[licencias]]></category>
		<category><![CDATA[sl]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1413</guid>
		<description><![CDATA[Luego de haberles comentado lo que estábamos preparando junto a la gente del HacklabCL y luego de varias reuniones y discusiones, ya hemos puesto fecha a nuestra primera jornada oficial de difusión de la filosofía del software libre. Se llevará acabo en Kernelhouse el día miércoles 20 de Enero a las 20:00 horas. Los temas [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/flyer_jornada_difusion.png"><img class="aligncenter size-medium wp-image-1415" title="flyer_jornada_difusion" src="http://blog.zerial.org/wp-content/uploads/2010/01/flyer_jornada_difusion-300x252.png" alt="" width="300" height="252" /></a></p>
<p>Luego de haberles comentado <a href="http://blog.zerial.org/linux/la-difusion-de-la-filosofia-del-software-libre/" target="_self">lo que estábamos preparando</a> junto a la gente del HacklabCL y luego de varias <a href="http://wiki.hacklab.cl/index.php/Proyectos/Metodolog%C3%ADa_efectiva_de_difusi%C3%B3n" target="_blank">reuniones y discusiones</a>, ya hemos puesto fecha a nuestra <a href="http://hacklab.cl/eventos/invitacion-a-jornada-de-difusion-de-software-libre/" target="_blank">primera jornada oficial de difusión de la filosofía del software libre</a>.<br />
Se llevará acabo en <a href="http://kernelhouse.org">Kernelhouse</a> el día <strong>miércoles 20 de Enero a las 20:00 horas</strong>. Los temas a tratar son introducción a los conceptos y paradigmas del software libre, respeto hacia la voluntad del autor, libertad tras las licencias populares y un tema bastanta particular titulado &#8220;tangibles e intangibles&#8221;.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Finteres-general%2Fjornada-de-difusion-filosofica-del-software-libre%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/interes-general/jornada-de-difusion-filosofica-del-software-libre/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/interes-general/jornada-de-difusion-filosofica-del-software-libre/"  data-text="Jornada de difusión filosófica del software libre" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/interes-general/jornada-de-difusion-filosofica-del-software-libre/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

