Habilitar usuario root y permitir login por ssh

Hola Mundo:
Ubuntu impuso la moda de deshabilitar el usuario root y que todas las operaciones que requerían privilegios se hicieran a través de sudo. Esto fue una ventaja desde el punto de vista de seguridad, ya que la superficie expuesta era mucho menor. 

El procedimiento es sencillo, pero hay que tener consideración con la seguridad.
sudo passwd root
Con esto se le asigna una contraseña al usuario root. Para permitir el acceso por ssh hay que ir a /etc/ssh/sshd_config y buscar la opcion PermitLogin y dejarla en yes.


Luego se reinicia el servicio

sudo /etc/init.d/sshd restart
Con esta configuración aplicada ya estarían en condiciones de usar el usuario root.
Espero que hayan disfrutado este micro post.

Error /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

Hola Mundo:

¡Qué lindo es volver a Linux! Ver que muchas cosas han cambiado, principalmente, para mejor y sin bonito y lo importante de esta súper plataforma.
perder lo

Esta vez, decidí usar Centos porque si. Necesitaba una distro con la robustez de Red Hat y Fedora y aparte que lo que quería hacer estaba bien documentado para ésta línea. Así que descargué el medio de instalación por torrent.

Instalé Java como en los viejos tiempos y configuré algunas variables de entorno para ejecutar la herramienta y ¡paf! me encuentro con este error:

/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

¡Qué basura! Se me había olvidado instalar un componente importante durante la etapa de instalación: Las herramientas de desarrollo que incluyen Glibc.
Así que desde la línea de comandos, con privilegios de superusuario, ejecuté:

yum -y install glibc.i686

Santo remedio. Funcionó sin problemas.

Servidor VPN con Raspberry Pi

En septiembre del año pasado hice la compra de un Raspberry Pi en una conocida página de gadgets

chinos. Fue una teleserie de varios meses, ya que en marzo terminé mi pelea con DHL por el problema con el envío. Es una historia que no viene al caso contar, pero lo importante es que es algo que solo a  mi me puede ocurrir 🙂

Para el que no sepa, el Raspberry Pi es una placa que cabe en la palma de la mano que es un computador. Sus características son:

  • Memoria RAM: 512 MB
  • CPU: ARM de 700 MHz
  • Almacenamiento: No tiene, pero trae una ranura para una tarjeta SD
  • 2 puertos USB
  • Salida HDMI
  • Jack de audio de 3.5 mm
  • Salida de video RCA
  • Puerto de expansión
  • Interfaz de red.
El tamaño es realmente conveniente. Para que logres hacerte una idea de como es mira la imagen:

Fuente: bbc.co.uk
Como ves, el tamaño y las características hacen que las cosas que puedes llegar a hacer con un Rpi tiendan al infinito.
Cuando la compré pensé en levantar el blog, pero necesitaría de tiempo para administrarla y los recursos no iban soportar para tener el sitio en buenas condiciones y Movistar usa el puerto 80 para administrar los enrutadores de los clientes de forma remota.

Después de ponerla como un servidor ftp y de archivos y darme cuenta que Onedrive y Google Drive lo hacen mejor e intentar hacer un smart tv (o un media center) y usar las características de AirPlay de mis dispositivos Apple y que todo fracasara, decidí que una mejor idea sería tener un servidor VPN privado y que usara el enrutador de mi casa como gateway y así navegar por internet de una forma más segura cuando no esté en mi casa y navegar por sitios bloqueados cuando estoy en el instituto haciendo clases. 

Para hacer la configuración usé una release antigua de Raspbian y los motivos son:

  1. Me gustan las distribuciones basadas en Debian. Encuentro que son las mejores distribuciones y no hay nada mejor que APT para la administración de paquetes.
  2. Las nuevas releases de Raspbian no vienen  con el módulo de iptables dentro del núcleo, cosa que tendrías que hacer un cross-compiling, porque no creo que quieras compilar el núcleo en esa cosa.
Teniendo el sistema instalado (no es un punto que discutiremos ahora) realiza la instalación de lo necesario:
sudo apt-get install pptp

Luego habilita un modulo

sudo modprobe ppp-compress-18

Configura el servidor de VPN. Entramos al fichero /etc/pptpd.conf y configuramos los parámetros:

  • localip es la dirección ip local del servidor de VPN. La forma es: localip 192.168.1.189
  • remoteip es el juego de direcciones disponible. La forma es: remoteip 192.168.1.200-210
Ahora es tiempo de que configures algunos parámetros secundarios. Tienes que entrar al fichero /etc/ppp/pptpd-options

ms-dns DIRECCION.DE.TU.GATEWAY.LOCAL
noipx
mtu 1490
mru 1490


Es necesario contar con nombres de usuario y contraseña para que puedan autenticarse con tu sistema. Tienes que entrar a /etc/ppp/chap-secrets y agregar usuarios de la siguiente forma:

usuario[TAB]*[TAB]password[TAB]*
Agregas todos los que necesites. Guardas y cierras. Reinicia el servicio: 
sudo service pptpd restart 

Si es necesario puedes habilitar tu servidor VPN para que permita el acceso a toda la red. La idea es interactuar con la red, así que en el fichero /etc/systctl.conf  buscas la línea net.ipv4.ip_forward=0 y cambiarla por net.ipv4.ip_forward=1 Guardas, cierras y actualizas el sistema con:

sudo sysctl -p

El penúltimo paso es configurar las reglas del firewall y que éstas se apliquen cada vez que el sistema se levante. Agrega las siguientes líneas al archivo /etc/rc.local justo antes de la linea exit 0

sudo iptables -t nat -A POSTROUTING -s 192.168.1.200/24 -o eth0 -j SNAT --to LA IP DEL RASPBERRY

Para finalizar, en el router abre el puerto UDP 1723 e intenta ingresar de forma externa. Lo bueno es que todos los clientes VPN incluidos en todos los sistemas operativos servirán para tu servidor.

Como extra, le puedes comprar un case y quedará así:

Ah! Lo otro extra es que puedes usar un servicio como No-Ip o alguno otro y será de lujo.
Chau!

LTSP en Debian

Hola Mundo:

 Es complicado ser profe. Se los digo, porque tienes que inventar actividades para hacer que los alumnos se
entusiasmen, se diviertan y aprendan. Encuentro que no hay nada mejor que aprender metiendo las manos.

Uno de mis cursos es un taller de hardware, donde se les enseña a los alumnos las partes del computador, como armar y desarmar y otras clases de dispositivos. El problema está en que ellos ya conocen del tema (y bastante)  y resulta difícil enseñarles algo que ellos dominan bastante bien.

Materiales no teníamos mucho en la sala de clases. Teníamos un puñado de computadores antiguos, en los que no teníamos la certera de que funcionaran. No sabíamos en qué estado estaban, ni mucho menos si encendían o no.

Realizaron pruebas y de todos, lograron hacer funcionar unos cuantos. Durante el armado de los computadores, nos dimos cuenta que todos los discos duros estaban malos o se los habían llevado otros alumnos.

No fue dificil revolver la cabeza y acordarse del píngüino. Les conté que existía una solución llamaba LTSP y que consistía levantar un sistema, escritorio, funcional con una administración centralizada y todo se hacía a través de la red, inclusive el booteo.

Mi distribución favorita es Debian, asi que decidí instalar el sistemita ahí.

Creación de la máquina virtual
Para el propósito usé una máquina virtual sobre Virtualbox con los siguientes recursos:

  • Memoria: 1024 MB
  • Disco Duro: 10 GB
  • Procesador: 1
  • Interfaces de red: 1
Lo importante está en que la interfaz de red estaba conectado a la red interna. La red interna funciona como un switch virtual. Es donde pueden conversar las máquinas virtuales de forma aislada de la red física. Se pueden crear distintas «redes internas» con la herramienta.
Para hacer pruebas, creé una máquina virtual que simulaba ser un cliente tontorrón:
  • Memoria: 512 MB
  • Procesador: 1
  • Interfaces de red: 1
Es imperante que esta máquina tenga el arranque por red habilitado y que sea prioridad,
Instalación del sistema
No hablaré sobre la instalación de Debian. Hay muchos artículos que hablan en internet sobre eso. En todo caso, la instalación es super intuitiva y no requiere de mucho trabajo. Nada más deben asegurarse que están instalando el entorno gráfico.
Una vez que el sistema está instalado, tienen que abrir una consola y como root ejecutar
apt-get install ltsp-server-standalone

Descargará una serie de paquetes. Este proceso toma poco tiempo.

Construcción del cliente
Lo importante es construir una imagen que es que le copiará por TFTP a los clientes que se conecten.
Existen diversos parámetros que los pueden revisar en esta página.
Lo más sencillo es ejecutar:


ltsp-build-client

Y santo remedio. Comenzará a construir y empaquetar una imagen para cliente. La imagen la cream a partir de la configuración que tengan en su computador. Es posible personalizarla, pero escapa de este tutorial.

Configuración servidor DHCP
La configuracion que viene por defecto no funciona. De hecho, se podrán dar cuenta que al arrancar el servicio da un mensaje de error en rojo.
En una rápida configuración, editaremos el archivo /etc/dhcpd/dhcpd.conf  y agregaremos al final del archivo la siguiente linea:

include "/etc/ltsp/dhcpd.conf"

Este cambio agregará la configuración que debiera tener el servidor DHCP para permitir que los clientes reciban una imagen por TFTP. El archivo incluye la dirección del servidor TFTP.
Si no quieres realizar muchos cambios a los archivos de configuración, te recomiendo que configures tu tarjeta de red con la dirección 192.168.67.1 /24.

Retoques en la configuración
Es necesario realizar pequeñas ediciones en la configuración de algunos componentes para asegurarnos que el servicio funcionará como reloj. Lo primero es agregar la siguiente línea al archivo /etc/exports

/opt/ltsp *(ro,no_root_squash,async,no_subtree_check)

Luego, asegúrense que el servicio de TFTP inicia por si solo. Para esto tienen que editar el archivo /etc/default/tftpd-hpa y agregar la línea:

RUN_DAEMON="yes"

Después que ya realizaron el cambio, tienen que comentar,  en el archivo /etc/inetd.conf, la línea:

#tftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

y reinician los servicios:

invoke-rc.d openbsd-inetd restart
invoke-rc.d tftpd-hpa restart

Final
Teniendo todo listo, ya están en condiciones de hacer funcionar el sistema. Tienen que conectar a la red a un computador que soporte arranque por red.
Al final de la implementación debieran llegar a algo así:

El curso completo con los que hicimos la implementación real:

Eso. Chau

Revisar la cola de Sendmail

Hola Mundo:

Sendmail, o cualquier servidor de smtp, es indispensable para cualquier CMS web. Me atrevería a decir que todos los sistemas de administración de contenido hacen uso del servidor smtp para el envío de correos.

Todos los servidores SMTP manejan una cola de correos. Esta cola se utiliza cuando el servidor no puede enviar el mensaje y lo deja en un lugar para intentar enviarlo de nuevo. Si no puede enviarlo, envía un correo de rebote.

La cola se limpia después de un tiempo para que no se sigan utilizando recursos de sistema en enviar un correo que, probablemente, nunca salga. Otro motivo de la autolimpieza, es que hay que ahorrar espacio en disco para otros mensajes en cola.

Para revisar la cola de mensajes salientes de sendmail, hay que ejecutar en la consola:

mailq

Si la cola está vacía, mostrará algo así:

user@box:~$ mailq
MSP Queue status…
/var/spool/mqueue-client is empty
Total requests: 0
MTA Queue status…
/var/spool/mqueue is empty
Total requests: 0
user@box:~$

Si están usando sendmail, también pueden revisar la cola con

sendmail -bp

Como ven, la mía está vacía.

Chau!

Agregar Virtual Hosts en Apache 2.4 Ubuntu 13.10

Hola!

Si has llegado hasta aquí, creo que tienes el mismo problema que tuve hace un momento.

Seguramente estabas acostumbrado a crear Virtual Hosts en versiones anteriores de Apache, donde creabas el archivo, indicabas la ruta, el nombre de servidor y luego habilitabas el sitio.

Desde la versión 2.4, que viene en Ubuntu 13.10  la forma de crear un virtual host cambió, haciendo la tarea un poco mas complicada que las versiones anteriores.

Para crear un virtual host primero copiar el archivo 000-default.conf que se encuentra en /etc/apache2/sites-available y lo pegas ahi mismo con el nombre que quieras .conf (por ejemplo mi.sitio.com.conf)

Luego editas el contenido del archivo mi.sitio.com.conf y agregas la información de: ServerName, DocumentRoot, etc y agregas estas lineas:

<Directory «/mi/ruta/al/sitio»>

Options -Indexes +FollowSymLinks

AllowOverride AuthConfig FileInfo

Order allow,deny

Allow from all

Require all granted

</Directory>

Después habilitas el sitio con a2ensite y reinicias el servicio.

Chau!

Solucionando problemas de VSFTPD

Hola a todos!

Hasta el momento no conozco servidor de ftp de rápida instalación funcional que vsftp. Está presente en los repositorios  de todas las distribuciones conocidas de GNU/Linux.

Lo vengo instalando desde el 2008, mas o menos, y hoy en mi trabajo me toca usarlo y siempre se me presentan los mismos problemas.

La implementación más reciente es de hace algunas horas y está levantado sobre Ubuntu 13.04 en Windows Azure.

A continuación, hay algunos problemas con su solución.

VSFTPD: «500 OOPS: priv_sock_get_cmd»

Es un bug que está presente en la versión 3.0.0 y corregido en la versión 3.0.2, que hace uso de un modulo del kernel (seccomp), pero solo si es 64 bits.

En el archivo /etc/vsftpd.conf se debe agregar la siguiente línea

seccomp_sandbox=NO

Luego reiniciar el servicio y funcionará.

Fixing 500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

Esto ocurre  cuando el directorio del usuario donde se hace el chroot tiene permisos de escritura, pero no se establece en el archivo de configuración que se puede escribir en el directorio.

Agregar la siguiente linea en el archivo /etc/vsftpd.conf 

allow_writeable_chroot=YES

Reiniciar el servicio y funcionará.

Error: Failed to retrieve directory listing

Error cuando no está bien configurado las características de servidor pasivo.

Agregar estas línas al archivo /etc/vsftpd.conf

connect_from_port_20=YES

pasv_enable=YES

pasv_addr_resolve=YES

pasv_address=ftp.miservidor.com

pasv_min_port=4040

pasv_max_port=4041

Abrir los puertos TCP 20, 4040 y 4041 en el firewall y reiniciar el servidor.

Eso

Chau!

Habilitar mod_rewrite en Apache2

Hola a todos.

Este mod de Apache2 sirve para generar direcciones amigables y elegantes. Muchos sistemas hacen uso de esto, por ejemplo WordPress.

Escenario:

  • Ubuntu Server 12.04 LTS
  • Apache2 (instalado por el gestor de paquetes)
  • Un sitio configurado.

Habilitar el modulo

Como super usuario:
a2enmod rewrite

Modificar el archivo del sitio
Debe quedar esta porción del archivo de la siguiente forma:

Options FollowSymLinks
AllowOverride All

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

Reiniciar el servicio
Como super usuario:
service apache2 restart

Y ya quedará listo.

DNS en Linux sobre Windows Azure

Después de estar peleando toda una mañana con esto, lo hice funcionar. Increíblemente NO existe documentación al respecto. Así que espero ser uno de los primeros que publique algo que de luces de como hacerlo.

Para este caso estoy usando una máquina pequeña y Ubuntu Linux 12.04 LTS.

Este artículo lo separaré en tres partes: Puertos, Instalación y Configuración.

Puertos
El servicio de DNS trabaja en el puerto 53 sobre los protocolos TCP y UDP. Así que abrirlos es necesario desde el panel de administración de Windows Azure. No es necesario abrirlos en la máquina virtual.

Instalación
«apt-get» ¿Les suena? Bueno si. Nada mas ejecutar
apt-get install bind9
y todo quedará ok.

Configuración
Aquí se pone entrete la cosa. Cualquier error provocará que, sencillamente, el servicio no arranque. Vamos por pasos:
Añadir zonas
Agregar la zona en el archivo /etc/bind/named.conf.local de la siguiente forma:
zone "midominio.com" {
type "master";
file "db.midominio.com";
};

Configurar zonas
Crear el archivo db.midominio.com en /var/cache/bind/ y poner la siguiente información
$ORIGIN midominio.com.
$TTL 86400;
@ IN SOA ns.midominio.com. info.midominio.com.(
20131126 ;serie
6H ;refresco
1H ;reintentos
2W ;expira
3H ;minimo
)
@ NS ns.midominio.com.
ns A -- Direccion IP --
@ A -- Direccion IP --
www CNAME midominio.com.

Reinicar el servicio. Una vez que se reinicie sin errores, ya se puede indicar a un dominio que su servidor dns primario es ns.midominio.com

Chau.