Navegando entre bits
Sistemas operativos, seguridad, redes, programación, robótica y astronomía
Sistemas operativos, seguridad, redes, programación, robótica y astronomía
10 mar 2010
Sabemos de la importancia que tiene el tener el sistema de archivos organizado en varias particiones, a ser posibles que estén en discos diferentes por cuestiones de rendimiento. Por ejemplo tener /home en una partición nos permitirá mantener nuestros datos personales, configuraciones. Otro ejemplo es /usr que es donde se instalan la mayoría de los programas. De esta forma podemos separar sistema de programas, permitiendo las lecturas y escrituras en paralelo tanto del sistema operativo como de las aplicaciones.
Hasta aquí más o menos todos coincidimos, el problema viene a la hora de decidir el espacio a dedicarle a cada partición. Si asignamos demasiado desperdiciaremos espacio, y si nos quedamos cortos el problema será peor. El programa de instalación de cada distribución de linux suele hacer una propuesta al particionar el disco, pero los valores aconsejados distan mucho de la realidad. Para tener una orientación en futuras instalaciones he decidido obtener estadísticas de ocupación de cada una de las carpetas importantes del sistema. Para ello he utilizado la aplicación baobab (presente en casi todas las distribuciones) que realiza muy bien este cometido.
El sistema sobre el cual he obtenido las estadísticas es un sistema de escritorio Ubuntu Karmic 9.10 con algunas aplicaciones extra instaladas que suelo utilizar frecuentemente. La distribución del espacio es la siguiente:

Como podemos apreciar las carpetas de mayor tamaño son /usr, /home, /opt y /var. Esto puede variar considerablemente dependiendo del uso que se le de a /home. En mi caso no suelo guardar archivos de gran tamaño ahí. Para eso suelo tener otra partición dedicada exclusivamente a datos.
Las conclusiones que he llegado, sin contar con la partición de datos y sin la partición de swap, es que es conveniente tener al menos 4 particiones con los siguientes tamaños en porcentajes respecto del total de espacio disponible:
Como he comentado no se ha tenido en cuenta la partición de swap, una regla que solía seguirse era tener el doble de swap que de memoria RAM. Actualmente con las cantidades de memoria que suelen tener los equipos está un poco desfasada. Con 1GB para swap debería ser más que suficiente para cualquier sistema de escritorio.
6 mar 2010
SSH (Secure SHell, en español: intérprete de órdenes segura) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.
Cuando instalamos un servidor de ssh, por ejemplo OpenSSH (sudo aptitude install ssh), en ocasiones solemos dejarlo con las opciones de configuración que vienen por defecto, sobre todo en entornos domésticos, asumiendo que como ssh es un shell seguro, no necesitamos realizar más ajustes que los que vienen por defecto. Nada más lejos de la realidad. Vamos a ver algunas de las opciones del archivo de configuración (/etc/ssh/sshd_config) que nos pueden ayudar a comprender mejor como funciona ssh y lo expuestos que podemos estar frente a ataques basados en diccionario si no se toman las medidas oportunas.
Para editar el archivo necesitamos permisos de administrador:
sudo gedit /etc/ssh/sshd_config
Al editarlo podremos observar hay multitud de opciones de configuración, pero sólo nos vamos a centrar en las siguientes:
Port 20022 Protocol 2 LoginGraceTime 30 PermitRootLogin no MaxAuthTries 2 MaxStartups 1 AllowUsers pepito AllowUsers juanito@80.25.14.14
Veámos el significado de ellas:
Feb 28 11:57:04 distantsuns sshd[25055]: Invalid user kid from 220.108.89.55
Feb 28 11:57:13 distantsuns sshd[25111]: Failed password for root from 220.108.89.55 port 44336 ssh2
Feb 28 11:58:25 distantsuns sshd[25775]: Failed password for invalid user kes from 220.108.89.55 port 48097 ssh2
Mi recomendación es que utilicéis un puerto alto, por encima del 10000. La mayoría de los escaners de puertos buscan por defecto en los puertos bien conocidos (hasta el 1024) y algunos puertos por encima, pero no los revisan todos.
Evidentemente, cambiar el puerto no nos asegura nada, pero pone las cosas un poco más difíciles a los scripts automáticos.
AllowUsers juanito@80.25.14.14
También podemos usar comodines para indicar que se permite acceso desde una red entera. Por ejemplo supongamos que nuestra red privada utiliza direcciones ip privadas de clase C del tipo 192.168.0.X (máscara por defecto 255.255.255.0). Podríamos añadir la siguiente línea para indicar que se permite el acceso al usuario alicia únicamente desde la red privada:
AllowUsers alicia@192.168.0.*
Con este mini tutorial sobre la configuración podremos tener un sistema más seguro que unido al tutorial de verificación de rootkits, nos permite estar un poco más tranquilos.
23 feb 2010
Imagínate que eres un administrador de sistemas Linux que trabaja desde un equipo Windows y usas Putty para conectarte a los servidores Linux, y dejas una terminal descargando esa nueva y fantástica distro, y esto va a tomar varias horas. En la tarde que ya te vas a casa, solo llevas un avance de un 20% digamos, en el transcurso de la noche terminará la descarga, asi que no apagas tu equipo Windows porque al apagarlo se pierde la terminal y la descarga. Te vas muy confiado, pero resulta que tu acomedido compañero al ver que dejaste la computadora prendida, la apague, y ni hablar, al otro día volver a iniciar la descarga donde se quedó.
Es un ejemplo sin importancia, porque pudo ser algo grave, como la ejecucción de un respaldo, la réplica de una base de datos, una comprobación del sistema de archivos, etc.
Al rescate llega screen que es una utilería que permite multiplexar una terminal, crear una terminal virtual a partir de una existente y después esta terminal virtual ser “llamada” desde otras terminales o desde el servidor junto con el programa que se este ejecutando.
Lo anterior quiere decir, siguiendo con el ejemplo, que te conectas via putty al servidor, desde la terminal ejecutas screen, que abrirá otro shell, desde este shell ejecutas la descarga (o el programa que quieras), te sales de screen y te sales de putty, apagas la computadora, y al otro día te reconectas a la terminal virtual, y listo, tendrás de nuevo la terminal donde esta se encuentre ejecutándose en ese momento, como si nunca la hubieras cerrado.
Su uso es muy fácil, estando en la línea de comandos o shell de cualquier terminal local o remota, teclea:
$ screen
Con este comando creamos un nuevo shell virtual donde podemos ejecutar algún proceso largo y cerrar completamente esa terminal sin miedo a que se interrumpa el proceso que dejamos en funcionamiento.
Ahora desde una nueva terminal ejecuta lo siguiente para observar la lista de terminales virtuales:
$ screen -ls There is a screen on: 21432.pts-2.g3xlap (Attached) 1 socket in /var/run/screen/S-root.
Lo que nos indica que tenemos una terminal virtual ejecutándose. Cada terminal virtual recibe un número, por lo que entonces desde cualquier otro equipo o en el mismo servidor, a través de una terminal (telnet, ssh, local), será posible invocar de nuevo estas terminales virtuales, tan solo basta la opción -r:
$ screen -r 21432
Sólo basta indicar el número asignado de la terminal virtual, si no hubiera más que una sola terminal virtual bastaría con indicar la opción -r sin número.
Y básicamente es todo, una vez en la terminal virtual puedes seguir trabajando en ella. Esta herramienta es extremadamente útil y puede salvarnos de situaciones como las citadas al principio del post.
Vía: http://www.linuxtotal.com.mx por Sergio González Durán.
20 feb 2010
Un servidor Dynamic Host Configuration Protocol (DHCP) asigna dinámicamente las direcciones IP y otras configuraciones de una red determinada a otros ordenadores clientes que estan conectados a la red. Esto simplifica la administración de la red y hace que la conexión de nuevos equipos a la red sea mucho más fácil.
Todas las direcciones IP de todos los equipos se almacenan en una base de datos que reside en un servidor.
Un servidor DHCP puede proporcionar los ajustes de configuración utilizando dos métodos
Este método se basa en la definición de un grupo de las direcciones IP para los clientes DHCP (tambien llamado IP address pool) que suministran sus propiedades de configuración de forma dinámica segun lo soliciten los ordenadores cliente. Cuando un cliente DHCP ya no está en la red durante un período determinado, la configuración vence y la direccion ip del poll es puesta en libertad el uso de otros clientes DHCP.
Este método se basa en utilizar el protocolo DHCP para identificar la dirección de hardware única de cada tarjeta de red conectada a la red y luego es asignada una configuracion constante asi como la misma direccion IP cada vez que la configuración de DHCP del cliente realiza una petición al servidor DHCP desde el mismo dispositivo de red.
Para instalar el servidor de asignacion automatica de direccion IP ejecutamos el comando:
sudo apt-get install dhcp3-server
Este sencillo paso instala el servidor en nuestro linux.
En el caso que tengan dos interfaces de red (NIC) en su servidor Linux tienen que seleccionar cual van a utilizar para escuchar las peticiones DHCP. Para configurar el servicio, editamos el archivo /etc/default/dhcp3-server, y cambiamos INTERFACES=”eth0″ por la tarjeta de red interna.
Es necesario hacer una copia de seguridad del archivo de configuracion:
cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.back
Editamos la configuracion tecleando:
sudo vi /etc/dhcp3/dhcpd.conf
Y en este archivo cambiamos las siguientes secciones
default-lease-time 600; max-lease-time 7200;
option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.1; option domain-name-servers 192.168.1.9, 192.168.1.10; option domain-name “guatewireless.org”;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.200;
}
Guardamos y salimos del archivo. El texto anterior configura el servidor DHCP con los siguientes parametros:
Con este metodo se puede reservar algunas o todas las direcciones IP de nuestra red para determinadas maquinas. Como podran ver la configuracion es muy parecida a la anterior, con la salvedad que para reservar la asignacion de una IP a una determinada NIC (network card interface) debemos de utilizar la etiqueta host
default-lease-time 600; max-lease-time 7200;
option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.1; option domain-name-servers 192.168.1.9, 192.168.1.10; option domain-name “guatewireless.org”;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.200;
}
host oracle{
hardware ethernet 00:03:47:31:e1:7f;
fixed-address 192.168.1.20;
}
host printer {
hardware ethernet 00:03:47:31:e1:b0;
fixed-address 192.168.1.21;
}
Ahora reiniciamos el servidor dhcp ejecutando el siguiente comando:
sudo /etc/init.d/dhcp3-server restart
Si dean configurar un escritorio o maquina con linux como cliente DHCP seguimos los siguientes pasos:
sudo vi /etc/network/interfaces
auto lo eth0 iface eth0 inet dhcp iface lo inet loopback
sudo /etc/init.d/networking restart
Para poder conocer las direcciones asignadas a las maquinas clientes
tail -n 15 /var/lib/dhcp3/dhclient.*.leases Fuente: http://www.guatewireless.org
22 ene 2010
Uno de los problemas que me encontré al cambiar de Vmware a Virtualbox es poder comunicar los Guest con la red Local. Con Vmware el puente se crea de forma automática pero con Virtualbox hay que realizarlo de forma manual. El sistema que utiliza Virtualbox por defecto para utilizar la tarjeta de red virtualizada es NAT, que en principio nos puede ir bien si lo único que queremos es tener acceso a Internet desde el Guest virtualizado. El problema si disponemos de un red de área local y queremos que el Guest pueda comunicarse con los demás equipos de la red.
Buscando en Internet he visto varias soluciones pero la única que me ha funcionado realmente bien es la que detallo a continuación:
- Host (Windows Vista)
- Guest (GNU/Linux Ubuntu 9.10)
No hay que tocar absolutamente nada. He visto en muchos sitios que hablan de crear un puente entre la tarjeta de red y el Virtualbox host-only, pero a mi no me ha funcionado nada de esto. Por tanto, lo dicho, no cambiar nada.


Llegados a este punto recomiendo desactivar y volver a activar la red para que lea la nueva configuración ya que en alguna ocasión me ha dado problemas. Ahora deberíamos poder comunicarnos con cualquier equipo de la red. Para comprobarlo podemos realizar un ping a cualquiera de los equipos o al mismo router.
12 ene 2010
Consideramos imprescindible la retirada de la disposición final primera de la Ley de Economía Sostenible por los siguientes motivos:
1 -Viola los derechos constitucionales en los que se ha de basar un estado democrático en especial la presunción de inocencia, libertad de expresión, privacidad, inviolabilidad domiciliaria, tutela judicial efectiva, libertad de mercado, protección de consumidoras y consumidores, entre otros.
2 – Genera para la Internet un estado de excepción en el cual la ciudadanía será tratada mediante procedimientos administrativos sumarísimos reservados por la Audiencia Nacional a narcotraficantes y terroristas.
3 – Establece un procedimiento punitivo “a la carta” para casos en los que los tribunales ya han manifestado que no constituían delito, implicando incluso la necesidad de modificar al menos 4 leyes, una de ellas orgánica. Esto conlleva un cambio radical en el sistema jurídico y una fuente de inseguridad para el sector de las TIC (Tecnología de la Información y la Comunicación). Recordamos, en este sentido, que el intercambio de conocimiento y cultura en la red es unmotor económico importante para salir de la crisis como se ha demostrado ampliamente.
4 – Los mecanismos preventivos urgentes de los que dispone la ley y la judicatura son para proteger a toda ciudadanía frente a riesgos tan graves como los que afectan a la salud pública. El gobierno pretende utilizar estos mismos mecanismos de protección global para beneficiar intereses particulares frente a la ciudadanía. Además la normativa introducirá el concepto de “lucro indirecto”, es decir: a mí me pueden cerrrar el blog porque “promociono” a uno que “promociona” a otro que linka a un tercero que hace negocios presuntamente ilícitos
5 – Recordamos que la propiedad intelectual no es un derecho fundamental contrariamente a las declaraciones del Ministro de Justicia, Francisco Caamaño. Lo que es un derecho fundamental es el derecho a la producción literaria y artística.
6 – De acuerdo con las declaraciones de la Ministra de Cultura, esta disposición se utilizará exclusivamente para cerrar 200 webs que presuntamente están atentando contra los derechos de autor. Entendemos que si éste es el objetivo de la disposición, no es necesaria, ya que con la legislación actual existen procedimientos que permiten actuar contra webs, incluso con medidas cautelares, cuando presuntamente se esté incumpliendo la legalidad. Por lo que no queda sino recelar de las verdaderas intenciones que la motivan ya que lo único que añade a la legislación actual es el hecho de dejar la ciudadanía en una situación de grave indefensión jurídica en el entorno digital.
7 – Finalmente consideramos que la propuesta del gobierno no sólo es un despilfarro de recursos sino que será absolutamente ineficaz en sus presuntos propósitos y deja patente la absoluta incapacidad por parte del ejecutivo de entender los tiempos y motores de la Era Digital.
La disposición es una concesión más a la vieja industria del entretenimiento en detrimento de los derechos fundamentales de la ciudadanía en la era digital.
La ciudadanía no puede permitir de ninguna manera que sigan los intentos de vulnerar derechos fundamentales de las personas, sin la debida tutela judicial efectiva, para proteger derechos de menor rango como la propiedad intelectual. Dicha circunstancia ya fué aclarada con el dictado de inconstitucionalidad de la ley Corcuera (o ley de patada en la puerta). El Manifiesto en defensa de los derechos fundamentales en Internet, respaldado por más de 200 000 personas, ya avanzó la reacción y demandas de la ciudadanía antes la perspectiva inaceptable del gobierno.
Para impulsar un definitivo cambio de rumbo y coordinar una respuesta conjunta, el 9 de enero se ha constituido la “Red SOStenible” una plataforma representativa de todos los sectores sociedad civil afectados. El objetivo es iniciar una ofensiva para garantizar una regulación del entorno digital que permita expresar todo el potencial de la Red y de la creación cultural respetando las libertades fundamentales.
En este sentido, reconocemos como referencia para el desarrollo de la era digital, la Carta para la innovación, la creatividad y el acceso al conocimiento, un documento de síntesis elaborado por más de 100 expertos de 20 países que recoge los principios legales fundamentales que deben inspirar este nuevo horizonte.
En particular, consideramos que en estos momentos es especialmente urgentes la implementación por parte de gobiernos e instituciones competentes, de los siguientes aspectos recogidos en la Carta:
1 – Las/os artistas como todos los trabajadores tienen que poder vivir de su trabajo (referencia punto 2 “Demandas legales“, párrafo B. “Estímulo de la creatividad y la innovación”, de la Carta);
2 – La sociedad necesita para su desarrollo de una red abierta y libre (referencia punto 2 “Demandas legales“, párrafo D “Acceso a las infraestructuras tecnológicas”, de la Carta);
3 – El derecho a cita y el derecho a compartir tienen que ser potenciado y no limitado como fundamento de toda posibilidad de información y constitutivo de todo conocimiento (referencia punto 2 “Demandas legales“, párrafo A “Derechos en un contexto digital”, de la Carta);
4 – La ciudadanía debe poder disfrutar libremente de los derechos exclusivos de los bienes públicos que se pagan con su dinero, con el dinero publico (referencia punto 2 “Demandas legales“, párrafo C “Conocimiento común y dominio público”, de la Carta);
5 -Consideramos necesaria una reforma en profundidad del sistema de las entidades de gestión y la abolición del canon digital (referencia punto 2 “Demandas legales“, párrafo B. “Estímulo de la creatividad y la innovación”, de laCarta).
Por todo ello hoy se inicia la campaña INTERNET NO SERA OTRA TELE y se llevarán a cabo diversas acciones ciudadanas durante todo el periodo de la presidencia española de la UE.
Consideramos particularmente importantes en el calendario de la presidencia de turno española el II Congreso de Economía de la Cultura (29 y 30 de marzo en Barcelona), Reunión Informal de ministros de Cultura (30 y 31 de marzo en Barcelona) y la reunión de ministros de Telecomunicaciones (18 a 20 de abril en Granada).
La Red tiene previsto reunirse con representantes nacionales e internacionales de partidos políticos, representantes de la cultura y legaciones diplomáticas.
Firmado Red SOStenible
9 ene 2010
De acuerdo a la definición en wikipedia un rootkit es una herramienta, o un grupo de ellas que tiene como finalidad esconderse a sí misma y esconder otros programas, procesos, archivos, directorios, llaves de registro, y puertos que permiten al intruso mantener el acceso a un sistema para remotamente comandar acciones o extraer información sensible, a menudo con fines maliciosos o destructivos.
De hecho que un hacker (black hat) te instale un root kit en tu equipo Linux es la máxima intrusión a la que estarías expuesto. Recuerda que en GNU/Linux el peligro no son virus como en el mundo Windows sino las vulnerabilidades que se descubren a diario en los muy distintos programas que usa el sistema. Por eso la importancia de verificar y actualizar lo más continuo posible el sistema en su totalidad.
Se presentan dos utilerías que te permitirán verificar tu equipo por posibles cambios en los archivos y programas más comunes, ya que ha menudo los rootkits se disfrazan como programas de uso muy comun como ls o ps, incluso conservan la misma funcionalidad (que es el objetivo, que el usuario no se entere que ya ha sido hackeado con un rootkit) pero a la vez de manera furtiva realizan su trabajo de ejecutar comandos remotos, abrir puertos, realizar ataques DoS, instalar servidores Web ocultos, utilizar ancho de banda para transferencia de archivos, monitorear con keylogers, etc., etc.
chkrootkit muy popular checador de rootkits, verifica localmente por señales de estos. Es una buena opción para equipos Desktop, laptops, incluso para servidores como un complemento más de este tipo de programas.
Para instalarlo (en Ubuntu):
sudo aptitude install chkrootkit
Se ejecuta sin argumentos de la siguiente manera:
$ chkrootkit ROOTDIR is `/' Checking `amd'... not found Checking `basename'... not infected Checking `biff'... not found Checking `chfn'... not infected Checking `chsh'... not infected Checking `cron'... not infected Checking `crontab'... not infected Checking `date'... not infected Checking `du'... not infected Checking `dirname'... not infected Checking `echo'... not infected Checking `egrep'... not infected Checking `env'... not infected Checking `find'... not infected ...
Es posible ver la lista de pruebas que chkrootkit puede realizar mediante la opción -l y ejecutar solo una o varias a la vez:
rkhunter es un checador de rootkits mucho más completo y potente que chkrootkit, es ideal para ser usado en servidores. En su página de descarga sostiene (a modo de broma) que verifica en eun 99.9% que estás libre de indeseables rootkits, es decir, realmente se trata de una capa más de seguridad. rkhunter verifica el sistema por:
Para instalarlo (en Ubuntu):
$ sudo aptitude install rkhunter
Una vez instalado, la manera más básica de ejecutar rkhunter es asi:
$ rkhunter -c
[ Rootkit Hunter version 1.3.2 ]
Checking system commands...
Performing 'strings' command checks
Checking 'strings' command [ OK ]
Performing 'shared libraries' checks
Checking for preloading variables [ None found ]
Checking for preload file [ Not found ]
Checking LD_LIBRARY_PATH variable [ Not found ]
Performing file properties checks
Checking for prerequisites [ OK ]
/bin/awk [ OK ]
/bin/basename [ OK ]
/bin/bash [ OK ]
/bin/cat [ OK ]
/bin/chmod [ OK ]
/bin/chown [ OK ]
/bin/cp [ OK ]
/bin/csh [ OK ]
/bin/cut [ OK ]
/bin/date [ OK ]
/bin/df [ OK ]
.... (varias líneas más)
rkhunter con la opción -c realiza un escaneo muy completo del sistema, no es posible apreciarlo aquí, pero en cada sección del escaneo la salida se interrumpe como para poder analizarlo, y hasta que no se presiones ‘Enter’ continua. Puedes deshacerte de este comportamiento interactivo con la opción –sk, por cierto, la lista de opciones o ayuda, la obtienes invocando rkhunter sin ningún argumento.
Si hubiera algo que reportar, el archivo /var/log/rkhunter.log, pero puedes cambiar la salida del archivo a otro que tu desees:
$ rkhunter -c --sk --logfile /root/rkhunter20100109.txt
Lo anterior enviará toda la salida al archivo indicado y sin hacer pausas para continuar. También es posible realizar pruebas personalizadas y no todas a la vez.
$ rkhunter --list (lista de pruebas posibles) Available test names: additional_rkts all apps attributes deleted_files filesystem group_accounts group_changes hashes hidden_procs immutable known_rkts local_host malware network none os_specific other_malware packet_cap_apps passwd_changes ports possible_rkt_files possible_rkts possible_rkt_strings promisc properties rootkits running_procs scripts shared_libs shared_libs_path startup_files startup_malware strings suspscan system_commands system_configs trojans Grouped test names: additional_rkts => possible_rkt_files possible_rkt_strings group_accounts => group_changes passwd_changes local_host => filesystem group_changes passwd_changes startup_malware system_configs malware => deleted_files hidden_procs other_malware running_procs suspscan ... (varias líneas más) $ rkhunter --enable hidden_procs,system_commands (se ejecutan solo las pruebas deseadas) $ rkhunter --disable system_commands (lo contrario, se ejecutan todas las pruebas menos la indicada(s))
Como ya se mencionó previamente, es conveniente que se ejecute periódicamente a través de un cron y con un control por fechas de los reportes que se generan, asi se teendrá una bitacora muy completa de cuando pudieron ocurrir cambios en el sistema.
También, recuerda que estos anti-rootkits son solo una medida de seguridad más para la protección de tu sistema, hay que actualizar continuamente, apagar los servicios que no se usen, configurar adecuadamente ssh, apache, servidores de correo, etc.