miércoles, 19 de diciembre de 2012

Apache2: Introducción y usos básicos I

Vamos a ver cómo instalar un servidor apache basicote para tener una página web alojada en nuestro servidor, algo que es relativamente trivial. Instalarlo es tán fácil como tirar de repositorios (apache2 en debian, httpd en centos rhel).

Con esto, tendremos instalado nuestro servidor apache en el que podremos alojar webs sencillitas en html. Esto se le quedara corto a muchos, ya que para la mayor parte de las webs actuales necesitaremos tener php y mysql instalado. Como siempre, tiramos de repositorios para instalarlos, aunque en el caso de mysql hay una diferencia entre las distros basadas en debian (debian y ubuntu, al menos) y las basadas rhel. Mientras que cuando instalamos el paquete de mysql-server en debian nos pide poner una contraseña para el usuario root, en centos no es asi y habra que ponerla una vez finalizado, ya que no queremos que alguien indeseado pueda acceder y tocar nuestras bbdd.

Para cambiar la contraseña de mysql en centos:
# mysql -u root

mysql>  GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY 'Passwordquequeramos';
.
.
.
mysql> exit;
Para comprobar que está todo bien, volvemos a entrar sin pass "mysql -u root" y nos dará error "ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)". Para acceder a partir de ahora tendremos que usar el comando "mysql -u root -p".


Con todo esto, ya tenemos nuestro servidor lamp preparado, nos centraremos en configurar apache y algo de php para hacer medianamente seguro nuestro servidor. Por defecto en Debian las webs cuelgan de "/var/www" y en Centos de "/var/www/html" (o htdocs, no recuerdo ahora bien y no tengo un centos para verificarlo :P). Si ponemos archivos webs en esa carpeta los prodremos visualizar entrando desde cualquier navegador a la ip (o dominio que apunte a la ip).

En próximos posts veremos cómo crear virtualhosts y modificar un poco el fichero de configuración, que es diferente de Debian a Centos, pese a que en el fondo sean lo mismo estan ordenados de diferentes formas.

viernes, 14 de diciembre de 2012

FTP: Introducción y usos básicos

Vamos a ver como configurar un servidor ftp de manera que sea medianamente seguro. Con el ftp podremos tranferir archivos desde cualquier ordenador al servidor, y descargarlos desde ahí. La pega que tiene este método es que los datos que envía no se encriptan, aunque existen formas (sftp, si lo pruebo algún día lo pongo).

Existen varios servidores ftp para Linux, pureftpd, proftpd, vsftpd... cada uno con sus cosas. Yo uso normalmente el proftpd, que es el que explicaré aquí, pero en lo básico los archivos de configuración son parecidos. Para instalarlo como siempre tiramos de repositorios, yum o apt según distro. Localizamos el archivo proftpd.conf y lo editamos. Pondré aquí las lineas que hay que tocar, no el fichero entero para no alargar innecesariamente el post.

Para instalarlo, tiraremos de repositorios:
apt-get proftpd o yum install proftpd
Acto seguido, pasaremos a configurarlo editando el archivo de configuracion. Cambiamos las líneas acorde:
UseIPv6 on -> UseIPv6 off si no usamos IPv6, es tonteria tenerlo habilitado.
#DefaultRoot ~ -> DefaultRoot ~  Descomentamos esta línea para enjaular a los usuarios en sus homes.
ServerType standalone Por último confirmamos que está en standalone (en Debian te pide configurarlo en la instalación).
Acto seguido reiniciamos el servicio "service proftpd restart" o "/etc/init.d/proftpd restart". Podemos cambiar también el puerto para mejorar la seguridad, pero tampoco es que tarden mucho en sacarte el puerto nuevo si se ponen, eso ya depende del nivel de paranoia de cada uno. Prefiero el puerto estandar (21) por comodidad. También podemos usar "RequireValidShell" para obligar que sólo usuarios con una shell válida se puedan loguear (las encontramos en /etc/shells).

Con todo esto, ya tenemos andando un servidor ftp en el puerto 21 con usuarios enjaulados. Esta configuración se puede complicar todo lo que se quiera, pero con esta en la mayor parte de los casos os valdrá.

¡Un saludo!

miércoles, 7 de noviembre de 2012

Guacamole! Escritorio remoto via web!

Hoy vamos a instalar en nuestra máquina una aplicación web basada en java y en html que nos permitirá usar un navegador para conectarnos por escritorio remoto a cualquier máquina.

Esta aplicación es una pasarela, por lo que si no tenemos instalado el escritorio remoto en la propia máquina de antemano no lo instalará, pero podremos usarlo para conectarnos remotamente a otra. Veamos como instalarlo y luego pasamos a configurarlo, que es relativamente trivial.

Lo primero, instalamos las dependencias:
  1. apt-get install tomcat6 Necesitaremos el tomcat para la parte de java.
  2. apt-get install libcairo2 libpng12-0 libcairo2-dev
  3. apt-get install libvncserver0 Soporte para VNC
  4. apt-get install libfreerdp1 libfreerdp-dev Soporte para RDP
  5. apt-get intsall chechinstall Para compilaciones más adelante
Entramos en la web http://sourceforge.net/projects/guacamole/files/current/binary/ y nos descargamos la versión para nuestra distro (en mi caso uso Debian 7, descargué la de Debian 6 y funciona bien). Descomprimimos y entramos en el directorio. Instalamos los siguientes paquetes:
  • dpkg -i guacd_*.deb guacamole_*.deb libguac3_*.deb libguac-client-vnc0_*.deb
Con estos paquetes tendremos casi todo listo. Sólo falta instalar el último paquete: dpkg -i guacamole-tomcat_*.deb y listo, ya lo tenemos todo configurado automáticamente. Para comprobar que está todo bien instalado, entramos en http://ip_de_nuestro_equipo:8080/guacamole y comprobamos que nos sale la ventana de login.

Ahora nos toca configurar los equipos a los que nos conectaremos.Tenemos dos archivos de configuración: /etc/guacamole/guacamole.properties que no tocaremos y /etc/guacamole/user-mapping.xml que es donde añadiremos las conexiones nuevas.

Ejemlpo RDP:
<!-- Per-user authentication and config information -->
<authorize username="bire" password="1234">
<protocol>rdp</protocol>
<param name="hostname">ip_del_equipo</param>
<param name="port">3389</param>
<param name="domain">DOMINIO</param>
<param name="username">administrador</param>
<param name="password">Passwdmuysegura!</param>
</authorize>

Ejemplo VNC con la contraseña codificada:
<!-- Another user, but using md5 to hash the password (example below uses the md5 hash of "PASSWORD") -->
<authorize
username="USERNAME2"
password="319f4d26e3c536b5dd871bb2c52e3178"
encoding="md5">
<protocol>vnc</protocol>
<param name="hostname">localhost</param>
<param name="port">5901</param>
<param name="password">VNCPASS</param>
</authorize>

En ambos casos, el usuario y la contraseña definidos en "authorize" es el usuario y la contraseña que usaremos al conectarnos. Dentro, con los "param" podremos definir también un usuario y contraseña para conectarnos. Más info en de los tags en su web: http://guac-dev.org/Configuring%20Guacamole

Con todo esto, tenemos listo la pasarela. Si en "hostname" usamos localhost podremos conectarnos desde la web a la propia máquina. Podremos crear tantos usuarios como necesitemos.

Y... ¡yata! No deríamos tener que hacer nada más que entrar en la web y conectarnos. A mí se me olvido instalar libguac-client-rdp así que me toco seguir los pasos que encontré en esta web para compilarlo: http://dokuwiki.pcfreak.de/doku.php?id=public:linux:guacamole aunque creo que si hubiese instalado el paquete (se me pasó... no pude hacer nah!) no habría tenido problemas.

He revisado y en el paquete que bajamos de la web NO viene  libguac-client-rdp0*.deb, así que no tendremos soporte para RDP a no ser que compilemos el paquete. Vamos a ello:
cd
git clone git://guacamole.git.sourceforge.net/gitroot/guacamole/libguac-client-rdp
cd libguac-client-rdp
Con esto descargamos de git el código fuente, lo siguiente es prepararlo:
libtoolize
aclocal
automake --force-missing --add-missing
autoconf
./configure --prefix=/usr 
make
Si nos da algún fallo, instalamos las dependencias que faltasen. Ahora haría falta hacer un "make install" pero como estamos trabajando sobre Debian, haremos un deb y lo instalaremos:
checkinstall -y [email protected] --pkgname=libguac-client-rdp --pkgversion=0.6.0 --install=no -D make install
dpkg -i libguac-client-rdp_0.6.0-1_i386.deb
Con esto, ya debería de funcionar todo bien.

He tenido un problema y es que el demonio guacd no arrancaba:
Nov  8 17:25:16 LIME guacd[18640]: Guacamole proxy daemon (guacd) version 0.6.2
Nov  8 17:25:16 LIME guacd[18640]: Unable to bind socket to host ::1, port 4822: Address family not supported by protocol
Nov  8 17:25:16 LIME guacd[18640]: Successfully bound socket to host 127.0.0.1, port 4822
Nov  8 17:25:16 LIME guacd[18640]: Exiting and passing control to PID 18641
Nov  8 17:25:16 LIME guacd[18641]: Exiting and passing control to PID 18642
Nov  8 17:25:16 LIME guacd[18642]: Could not write PID file: No such file or directory
Lo he solucionado creando una carpeta para el PID del demonio en /var/run llamada guacd con permisos 755 (los que pone por defecto) y dandole la propiedad de la carpeta al usuario guacd. Después de eso, ya arranca.
Nada, al reiniciar lo anterior no es persistente. Toca editar el archivo de inicio /etc/init.d/guascd y añadir estas lineas para que lo cree en el arranque:
if [  ! -d /var/run/$NAME ]; then
mkdir /var/run/$NAME;
chown $NAME /var/run/$NAME;
fi
Esto viene de que en Debian 7 (al menos) la carpeta /run está montada como una carpeta temporal y en cada reinicio se regenera.

Espero que a alguien le sirva todo esto, ¡Un saludo! 

viernes, 26 de octubre de 2012

Reparar MBR con una live de linux

Bueno, resulta que has instalado una distro de linux junto a tu windows y ahora quieres quitarlo ¿no?
Si eliminas la partición de linux te va a dejar el grub por ahí danzando y dando fallos, por lo que no te dejará iniciar.

¿Qué hacer? Cogemos una live e instalamos lilo. ¿Lilo? ¡Pero si eso es del año de la tana! Pues sí, luego con el comando

"lilo -M /dev/sda mbr"

Lo reparamos y listo, a cargar windows!

martes, 11 de septiembre de 2012

SNMP: Qué es, instalación y usos básicos

El SNMP (Simple Network Management Protocol) es un protocolo que lee el estado de varios dispositivos y nos permite ver su estado. Por ejemplo, podemos averiguar el tráfico que tiene una tarjeta de red en un momento dado. Antes de nada, vamos a instalarlo para entender cómo hacer lo anterior. Para este caso, usé una Debian 6 x64, pero es extensible al resto. Tiramos de repositorios para instalarlo:

apt-get install snmp

Y pasamos a configurarlo, editando el archivo "/etc/snmp/snmp.conf". Ahí comentaremos la linea "mibs :". Con esto, tenemos el cliente instalado. Lo que podremos hacer es ver la información de los dispositivos que tengan instalado un servidor SNMP, cosa que pasaremos a instalar a continuación.

La instalación es sencilla, como siempre podremos usar el repositorio y el apt: "apt-get install snmpd". Ahora viene la configuración, que hay que tener algo más de cuidado y sobre todo entenderlo, ya que si lo hacemos mal podemos exponer el estado de nuestra máquina a cualquier atancante. Editamos el archivo "/etc/snmp/snmpd.conf" y descomentamos la linea "rocommunity public localhost". Con esto estamos habilitando que desde el localhost se pueda leer la informacion usando la clave public. Si queremos algo más de seguridad, debemos de cambiar esta clave. Reiniciamos el daemon y listo.

Para probarlo, podemos usar "snmpwalk -v1 -c public localhost" que nos devolverá un chorreton de numeros. Esos numeros son el OID que describe cada componente que usaremos más adelante para configurar el MRTG en otro post. Si queremos que esos numeros se conviertan en una cadena de texto más o menos legible, tenemos que instalar los MIBs que por defecto en Debian no vienen debido a restriciones. Para solucionarlo, tan sencillo como instalar desde el repositorio "snmp-mibs-downloader", editar el archivo "/etc/default/snmpd" y añadir "export MIBS=/usr/share/snmp/mibs".

La ventaja de este protocolo es que se puede usar en red, y se puede acceder a esos valores desde cualquier punto que tenga acceso a ese dispositivo y posea la clave. Usaremos el comando snmpwalk anterior, de la forma "snmpwalk -v1 -c CLAVE IP" y nos mostará todos los valores de los dispositivos de esa máquina. Si queremos saber el estado de un OID en concreto, tendremos que usar el snmpwalk de la siguiente forma: "snmpwalk -v1 -c CLAVE IP OID". Por ejemplo muchos routers Liksys y Cisco traen este protocolo activado y es sencillo motitorizar el estado de estos.

En la segunda revision del SNMP se introducen diversas mejoras, el uso es igual, cambiando v1 por v2: "snmpwalk -v2 -c CLAVE IP OID".

Con todo esto, podremos monitorizar los componentes de los dispositivos de la red, la mayor dificultad es encontrar el OID de lo que se quiere monitorizar ya que cambian de dispositivo a dispositivo. En el siguiente post haré una lista con los OIDs que he encontrado tanto para mi ordenador como para mi router Linksys.

No me extiendo más en el tema, ya que es una preparación para poder instalar más adelante el MRTG y no he investigado mucho más. Espero que esta explicación básica sirva a alguien ;)

¡Saludos!

PD: El puerto que usa es el 161, lo añado a la lista de puertos que podeis encontrar aquí.

martes, 14 de agosto de 2012

SSH: Transferir archivos por SCP

Una de las formas más comodas y seguras que conozco en linux para transferir archivos es el SCP. El SCP usa ssh para tranferir los archivos, por lo que están encriptados. Por lo que he visto la velocidad de tranferencia puede bajar respecto al ftp, pero es sólo una suposición por ahora :P

Vamos con un resumen rápido, tomemos una máquina A con ip 192.168.0.10 y otra B con la ip 192.168.0.11. Para distinguir usaremos el usuario1 para la maquina A y usuario2 para la maquina B, pero se puede usar cualquiera que tenga acceso por ssh y shell. Trabajaremos todo el rato desde la máquina A.

Pasar un archivo de la máquina A a la máquina B:

scp /ruta/maquinaA/archivo [email protected]:/ruta/maquinaB

Pasar un archivo de la máquina B a la máquina A:

scp [email protected]:/ruta/maquinaB/archivo /ruta/maquinaA

Para indicarle un puerto sería con la opción -P (mayúscula) y para pasar carpetas la opción -r.

El comando scp también nos permitirá pasar archivos de la máquina A a la máquina B desde otra máquina C:

scp [email protected]:/ruta/maquinaA/archivo [email protected]:/ruta/maquinaB

Existen más opciones, pero para un uso básico nos vale con estos.

Saludos!

lunes, 6 de agosto de 2012

Actualizar Plesk 9.x a 10

Esto es del pdf que ofrece Plesk, lo pongo aquí para tenerlo a mano y hacer anotaciones de los errores que vayan surgiendo, ya que tocará actualziar unos cuantos Plesks para Windows.

Saludos!!

------------------------------------

Para actualizar versiones 8.x, 9.x y 9.5 de Parallels Panel a la versión más reciente a través del interfaz web, siga las instrucciones que se detallan a continuación.
Si desea incluir el componente Administrador de Clientes y Negocio (C&BM) durante la actualización, tenga en cuenta que el nombre de host del Panel debe poder resolverse a una dirección IP. Esta limitación se debe a que el Panel usa Single Sign-On (SSO) para interactuar con C&BM y el servicio SSO no puede funcionar correctamente con nombres de host que no puedan resolverse o directamente con direcciones IP.


Importante: Parallels Plesk SiteBuilder 4.5 no se actualiza. Como alternativa, la nueva versión de SiteBuilder se instala al lado de la anterior. Por este motivo, usted puede administrar sitios web existentes en SiteBuilder 4.5 y crear sitios nuevos en SiteBuilder 5.0 o en 4.5. La actualización de sitios existentes al formato nuevo se realiza de forma manual.


Importante: Si usted también dispone de Parallels Plesk Billing, añada el componente Administrador de negocio y clientes a la lista de componentes a actualizar.


? Para actualizar el Panel a través del interfaz web:


1. Descargue la utilidad Instalador de Parallels apropiada para su sistema operativo en http://www.parallels.com/products/plesk/download/.


2. (Sólo para Linux) Establezca el permiso de ejecución para el Instalador de Parallels. chmod +x parallels_products_installer_file_name


3. Ejecute el Instalador de Parallels.

En un servidor Linux/Unix: ./parallels_products_installer_file_name --web-interface

En un servidor Windows: parallels_products_installer_file_name

(Sólo para Linux) Abra su navegador e introduzca https://your-host-name-or-IP-address:8447/ en la barra de dirección. Se abrirá el interfaz web del Instalador de Parallels.

(Sólo para Windows) El asistente del Instalador de Parallels se abre en una ventana nueva del navegador. Una vez iniciado el instalador, se abre otra ventana de la consola. Esta ventana muestra las operaciones realizadas por la utilidad. Esta se cierra una vez completada la instalación o al cabo de 30 minutos de inactividad.


4. (Sólo para Windows) Seleccione el idioma para el asistente de instalación.


5. Acceda al interfaz web.

? Si está ejecutando Windows, introduzca el nombre de usuario del administrador ("Administrador"), la contraseña del administrador y haga clic en Iniciar sesión.

? Si está ejecutando Linux, introduzca el usuario root de sistema y la contraseña y haga clic en Iniciar sesión.


6. (Opcional) Haga clic en Actualizar configuración de instalación y origen y especifique el origen del paquete de distribución de Parallels Panel:

? La opción seleccionada por omisión es Servidor oficial de actualizaciones de Parallels. Especifique la ubicación donde se almacenarán los archivos de instalación.

? Si selecciona un servidor mirror, especifique la ubicación del archivo .inf3 en el campo URL al directorio con el archivo .inf3. Especifique la ubicación donde se almacenarán los archivos de instalación.

? Si selecciona medio local, especifique la ubicación del archivo .inf3 en el campo Ruta absoluta al archivo .inf3.


7. Si utiliza un servidor proxy, seleccione la casilla Conectar usando un proxy y especifique los siguientes parámetros:

? Especifique el número de puerto y el nombre de host del proxy en los campos Dirección del proxy y puerto.

? Si este proxy requiere autenticación, seleccione la casilla Requerir autenticación y especifique el nombre de usuario y la contraseña.


8. (Sólo para Linux) Seleccione el paquete de instalación y haga clic en Guardar para guardar las preferencias de instalación e iniciar la instalación.


9. Haga clic en Instalar o actualizar producto. Se le redireccionará a la lista de productos.


10. Seleccione la casilla correspondiente a Parallels Panel y las versiones de producto Parallels Panel a las que desea actualizar. Por omisión, se seleccionan las versiones más recientes de los productos.


11. Para revisar los componentes que se instalarán, seleccione la casilla Previsualizar selección de componentes y haga clic en Continuar. Podrá ver la lista de los componentes disponibles. Para seleccionar o deseleccionar un componente, seleccione o deseleccione la casilla correspondiente. Para seleccionar o deseleccionar todos los componentes, haga clic en Seleccionar todo o Ninguno respectivamente.


12. Para iniciar la actualización, haga clic en Continuar.

Se descargarán e instalarán los paquetes. Una vez completada la actualización. verá una notificación que afirma que "Todos los productos y componentes han sido instalados y actualizados correctamente." Haga clic ACEPTAR.

lunes, 30 de julio de 2012

OpenVPN en un VPS Proxmox

Post rápido para hoy. Me tocó montar una VPN a un cliente, el problema es que su servidor era una máquina virtual con openVZ sobre Proxmox . Dejo aquí un manual de los pasos que seguí para montarlo, espero que a alguien le sea de utilidad como a mi!

Saludos!!
---------------------------------
1. Preparar host:
Entramos en el proxmox por ssh:
Desde la consola del servidor Proxmox (como root) activamos el soporte TUN/TAP en el kernel

modprobe tun 

comprobamos que esté activado

lsmod | grep tun 

teniendo que ver una salida como esta:

tun                    18815  1 vhost_net 

Para que esto sea permanente, debemos poner que el módulo “tun” sea cargado en el inicio del servidor. Para ello usamos la siguiente orden:

echo tun >> /etc/modules 

Podemos reiniciar Proxmox y ejecutar la orden anterior para verificar que se ha cargado el módulo al inicio.

Desde la consola del servidor Proxmox editamos el fichero

nano -w /etc/vz/vz.conf 

y en la línea donde pone (sobre la linea 46)

## IPv4 iptables kernel modules to be enabled in CTs by default 
IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length" 

añadimos al final

ipt_state iptable_nat 

dejamos esa línea como sigue:

IPTABLES="ipt_REJECT ipt_tos ipt_TOS ipt_LOG ip_conntrack ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ip_nat_ftp"
#IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat" 

Con este paso hacemos accesible los módulos de “nat” y “state” de iptables a los VPS
Instalamos algunos módulos más en nuestro servidor Proxmox

modprobe ipt_mark 
modprobe ipt_MARK 
modprobe tun 

Haciéndolos permanentes del mismo modo que hicimos en el paso 4.

echo ipt_mark >> /etc/modules 
echo ipt_MARK >> /etc/modules 

Damos permisos para que nuestra máquina virtual pueda hacer uso del dispositivo tun/tap

vzctl set 101 --devnodes net/tun:rw --save 

En nuestro caso, como solo tenemos una máquina virtual, esta tiene el ID 101.

La salida del comando anterior deberá ser:

Setting devices
Saved parameters for CT 101

Permitimos a nuestro VPS abrir el interface TUN/TAP, asegurándonos primero que el VPS esté apagado.

vzctl set 101 --devices c:10:200:rw --save 
vzctl stop 101 
vzctl set 101 --capability net_admin:on --save 
vzctl start 101

Creamos el dispositivo “tun net” en nuestra máquina virtual

vzctl exec 101 mkdir -p /dev/net 
vzctl exec 101 mknod /dev/net/tun c 10 200 
vzctl exec 101 chmod 600 /dev/net/tun

2. Cambiar tipo de red a veth desde el panel de proxmox:
- Eliminar la ip y guardar
- seleccionar veth y guardar
- seleccionar interfaz

3. Si no carga la red:
Editar  /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
IPADDR=212.34.xx.xx
NETMASK=255.255.255.0
GATEWAY=212.34.xx.xx
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
BOOTPROTO=none
TYPE=Ethernet

Y editar /etc/sysconfig/network y cambiar GATEWAY por la correspondiente. Reiniciar demonio de red. Cambiar venet0:0 a eth0 en /usr/local/directadmin/conf/directadmin.conf si no peta DA
4. Instalar openvpn

4.1 Instalamos desde repositorio EPEL el openvpn.
[root@dlp ~]#
wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
[root@dlp ~]#
rpm --import RPM-GPG-KEY-EPEL-6

[root@dlp ~]#
rm -f RPM-GPG-KEY-EPEL-6

[root@dlp ~]#
vi /etc/yum.repos.d/epel.repo
# create new

[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=0
# when you use the repository, input yum command like follows

[root@dlp ~]#
yum --enablerepo=epel install [package]

4.2 Generamos certificados para la conexión:
cp -R /usr/share/openvpn/easy-rsa/ /etc/openvpn

nano /etc/openvpn/easy-rsa/2.0/vars (Editamos lineas finales)

export KEY_COUNTRY="ES"
export KEY_PROVINCE="MA"
export KEY_CITY="Madrid"
export KEY_ORG="server.dominio.es"
export KEY_EMAIL="[email protected]"

Preparamos el terreno:
cd /etc/openvpn/easy-rsa/2.0/
source ./vars
./vars
./clean-all
./build-ca

./build-key-server server                # certificado para el servidor
./build-key client1                          # certidicado para el cliente, supuestamente uno por cada cliente
./build-dh                                      # generar parametros Diffie Hellman (various stuff)

4.3 nos llevamos los certificados client y ca al equipo cliente para luego.
Además movemos estos certifiados a /etv/openvpn

    ca.crt
    ca.key
    dh1024.pem
    server.crt
    server.key

4.4 Configuramos VPN

cp /usr/share/doc/openvpn-2.1.4/sample-config-files/server.conf /etc/openvpn/
cp /usr/share/doc/openvpn-2.1.4/sample-config-files/client.conf ~/
cd ~/

nano ~/client.conf

client
dev tun
proto udp
remote 212.34.xx.xx 1194
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3

Editamos /etc/openvpn/server.conf y descomentamos:
push "redirect-gateway def1 bypass-dhcp"

Editamos /etc/sysctl.conf y cambiamos:
net.ipv4.ip_forward = 0 a net.ipv4.ip_forward = 1

echo 1 > /proc/sys/net/ipv4/ip_forward

Añadimos reglas a iptables:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to 212.34.xx.xx # IP del equipo

Y además al rc.local para que carguen de inicio

4.5 instalamos dnsmasq

yum install dnsmasq
/etc/init.d/dnsmasq start
chkconfig dnsmasq on

Reinciamos para que coja el dnsmasq

Editar /etc/openvpn/server.conf

Y añadir

push "dhcp-option DNS 10.8.0.1"

Y listo: /etc/init.d/openvpn restart


5. Configurar openVPN Cliente:

Bajar:

client1.conf
certificados ca.crt client1.crt client1.key

Editar archivo client1.conf. cambiar la ruta de loscertificados a la real (para poner un \ hay que poner \\) y renombar el archivo a client1.ovpn.

Poner los archivos en "c:\\Program Files (x86)\\openVPN\\config"

Conectar y listo

----------------------------------------------------
Server.conf:

port 1194
proto udp
dev tun
#---- Seccion de llaves -----
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
#----------------------------
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status-servidorvpn-udp-1194.log
verb 8
push "dhcp-option DNS 10.8.0.1"
push "redirect-gateway def1 bypass-dhcp"
----------------------------------------------------


http://tipupdate.com/how-to-install-openvpn-on-centos-vps/

martes, 10 de julio de 2012

Firewall: Lista de puertos

Voy a hacer una lista con los puertos más comunes de algunas aplicaciones y protocolos, que luego se me olvidan. Una lista más exhaustiva se puede encontrar en /etc/services.

FTP: 21
SSH: 22
TELNET: 23
SMTP: 25
HTTP: 80
HTTPS: 443
POP3: 110
SNMP: 161
SAMBA: 135,139,445 TCP | 137,128 UDP
VNC: 5900 (en adelante)
Netatalk (AFP): 548,5353
MiniDLNA: 8200
RDP: 3389
Webmin: 10000**
Tomcat: 8080*
Mysql: 3306
Plesk: 8443**
Directadmin: 2222**
OpenVPN: 1194

Iré ampliando la lista con más cuando vaya necesitandolos. Recordad que en /etc/services teneis un registro de la mayoría de protocolos usados.

¡Saludos!

* Aportación de Aaliyah
** Son paneles de control, en el caso de webmin gratuito, comunes en los servidores, por lo que hay que tenerlos en cuenta a la hora de configurar un firewall.

viernes, 29 de junio de 2012

Herramientas de virtualización: Proxmox

Actualmente está muy de moda el tema de la virtualización, ya que es una buena forma de explotar con más eficiencia un ordenador o en la mayoría de los casos, servidores. En un uso normal, el servidor no está usando todos los recursos de los que dispone, por lo que es una “perdida” y se puede aprovechar corriendo otro servidor virtual para ofrecer otros servicios.

Proxmox tiene otra visión. El sistema base no se usa más que para crear instancias que sí usaremos, por lo que no consumirá apenas recursos y nos lo dejará todos para los virtuales en los que montaremos el servicio. Los usos que les demos a estos será cosa nuestra, nosotros el uso que le estamos dando es para ofrecer instancias a clientes y que hagan lo que quieran con ellas, principalmente hosting y mailing. Básicamente Proxmox es una distro con un panel de control que nos permitirá gestionar las máquinas virtuales, pero se puede gestionar también desde consola.

Proxmox ofrece dos tipos de vitualización, KVM que ofrece una virtualización completa pero requiere de un hardware más potente y procesador que soporte virtualización. En este modo los recursos son dedicados para cada instancia. Otra opción es la openVZ, que hace una pseudo virtualización, no nos ofrece recursos dedicados, son compartidos, lo que se puede poner es un máximo de recursos que puede usar, pero es posible que otra instancia las esté usando.

En este post comentaré cómo gestionar las instancias creadas con openVZ desde consola, ya que el panel en sí es trivial en general. Si me da más adelante pondré algunos detalles del panel como la creación de clusters. Lo primero es entender que las máquinas virtuales creadas con openVZ son instancias enjauladas,

es decir, son parte del sistema de ficheros del nodo y mediante un chroot se aislan, no tienen un disco duro virtual (un archivo con sistema de ficheros) como por ejemplo en Xen.

Si nos logueamos por ssh, podremos usar una serie de comandos para gestionarlo:

vzlist: nos mostrará las instancias que se están ejecutando, con una serie de información.
vzctl enter ID: nos lanza una terminal de la instancia ID, por si perdemos el acceso por ssh a la instancia.
vzctl stop ID: para la instancia ID, como hacer un halt.
vzctl start ID: arranca la instancia ID cuando está parada.
vzctl restart ID: reinciia la instancia ID, como hacer un reboot.
vzctl destroy ID: borra permanentemente la instancia ID, perdiendo todos los datos.

Con esto podremos tenemos unas indicaciones básicas de cómo gestionar las instancias desde consola. Para crearlas, lo más comodo es desde el panel de Proxmox, pero podemos crearla desde consola con unos cuantos comandos:

vzctl create ID --ostemplate osname (Indicamos la ID y el template que usaremos)
vzctl set ID --ipadd a.b.c.d --save  (Le indicamos la IP que usará)
vzctl set ID --nameserver a.b.c.d --save (Le indicamos el servidor DNS que usará)
vzctl start ID (Iniciamos)

Os recomiendo hacerlo desde el panel, es simplemente rellenar un formulario.

Para finalizar, con vzdump ID podremos crear una copia de seguridad de la instancia:

vzdump --quiet --snapshot --compress --storage back --mailto [email protected] 102

Con esto, hará la copia y nos enviará un correo una vez esté hecha. Para restaurar la copia, tenemos que usar vzrestore ruta ID. Esto nos servirá para programar un cron y que se haga una copia regularmente.


Con esto más el propio panel del proxmox, ya tenemos lo necesario para usar el Proxmox. Si quereis más información podeis visitar su wiki.



¡Un saludo!

lunes, 25 de junio de 2012

Streaming de audio: Ampache

Llevo tiempo buscando una forma de poder escuchar la música de mi ordenador en cualquier parte, y he encontrado la solución en Ampache.

Ampache es un site web desde el que podemos descargarnos una lista de reproducción y abrirla (winamp en windows, por ejemplo) o usar el reproductor flash que trae incorporado. Lo único que se necesita tener instalado previamente es apache (o lighthttpd funciona también), php y mysql.

En debian, si hacemos un “apt-get build-dep ampache” nos descargará todos los paquetes necesarios. No instalaremos el paquete ampache de los repositorios ya que el reproductor flash que trae no funciona (algo de que debian no lleva los xspf que usa el reproductor, no lei mucho).

Lo siguiente es descargarnos desde la web de ampache la última versión disponible (3.5.4 en el momento) y descomprimimos el contenido en una carpeta a la que pueda accederse por apache (/var/www/ por ejemplo, comprobarlo en el httpd.conf o apache2.conf según distro) y accedemos via navegador. En mi caso, he puesto los archivos en una carpeta llamada ampache por lo que accedemos desde http://IP.o.ur.l/ampache, se lanzará un instalador y seguimos los pasos que ponen. A tener en cuenta en el paso 2, una vez puestos los datos del mysql y validar, pedirá descargarse un archivo, ampache.cfg.php, lo subimos a la carpeta config de la web (por ftp o por donde queramos) y le damos a comprobar de nuevo.

Una vez finalizado, podremos acceder usando el usuario que creamos en el paso 3 y empezar a escanear la música que tenemos en el servidor. Por ahora es lo único que he probado, por lo que no puedo detallar más, pero es investigar la web.

Con estos sencillos pasos, ya podremos escuchar nuestra música donde queramos… y haya internet claro (patapum chas! Risas enlatadas).

¡Un saludo!

lunes, 18 de junio de 2012

Mediatomb en Debian

Otros post anteriores trataban de cómo hacer para que una televisión Samsung utilizase los subtítulos, pero para los que no necesiten usarlos, no hay que armar tanto jaleo.

Para instalarlo, bastará con tirar de repositorios apt-get install mediatomb lo que hará que se instalen las dependencias y dos paquetes de mediatomb: mediatomb-common y mediatomb-daemon. También podemos instalar el mysql server para que genere la bbdd de los archivos en mysql en vez de sqlite.

Si decidimos usar el mysql, tendremos que crear previamente un usuario y una base de datos. Por comodidad de evitar instalar más cosas, lo haremos desde consola, pero se puede hacer usando el phpmyadmin o cualquier otro programa. Abrimos una sesión como root del mysql:
$mysql –u root –p
> CREATE DATABASE mediatomb;
> GRANT ALL ON mediatomb.* TO mediatomb@localhost IDENTIFIED BY ‘clavequequeramos’;
Apuntamos los datos y empezamos a configurar el archivo de configuración del mediatomb. Por defecto, mediatomb se ejecuta con el usuario root en el inicio, pero podemos ejecutarlo desde cualquier usuario. Esto es importante ya que dependiendo de quien lo ejecute el archivo de configuración estará en un sitio diferente. Yo lo ejecuto mediante root, por lo que el archivo de configuración es /etc/mediatomb/config.xml. Para el resto de usuarios, estará en su home.
Lo primero a modificar del config.xml es:
<ui enabled="yes" show-tooltips="yes">
     <accounts enabled="yes" session-timeout="30">
       <account user="usuario" password="password"/>
     </accounts>
</ui>
Con esto habilitaremos una interfaz web para gestionar los archivos y lo protegeremos con usuario y contraseña. La contraseña queda en texto plano en el archivo de configuración, a tenerlo en cuenta.
Lo siguiente si hemos decidido usar el mysql, es poner los datos en la sección de mysql:
<storage caching="yes">
  <sqlite3 enabled="no">
    <database-file>mediatomb.db</database-file>
  </sqlite3>
  <mysql enabled="yes">
    <host>localhost</host>
    <username>mediatomb</username>
    <database>mediatomb</database>
    <password>password</password>
  </mysql>
</storage>
Si quisiésemos usar el sqlite, ponemos el enabled correspondiente a yes.
Si vamos a usar una televisión Samsung conviene poner estas líneas:
   <custom-http-headers>
<!--     <add header="X-User-Agent: redsonic"/>-->
     <add header="transferMode.dlna.org: Streaming"/>
     <add header="contentFeatures.dlna.org:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000"/>
   </custom-http-headers>
Con estas cambios, ya deberíamos poder usar el mediatomb sin problemas, faltaría nada más reiniciar el servicio (service mediatomb restart como root). Por defecto, mediatomb se ejecuta en el puerto 49152 (o superior). Podemos cambiarlo en el config.xml dentro de la sección <server> añadiendo <port>1234</port>, hay que asegurarse que el puerto está libre. Accederemos a la interfaz web desde http://IP:PUERTO.

Dejo un config.xml funcional en http://pastebin.com/sPgA255r para quien lo necesite, funciona a la perfección excepto por lo de los subtítulos.
Espero que esto ayude ya que poner en marcha el mediatomb puede ser un poco coñazo.
¡Un saludo!

PD: Acabé usando MiniDLNA por lo de los subtítulos, que funciona a la perfección con la Samsung. Además, el config.xml que pongo, lo he probado tanto en Debian como en Ubuntu y Mint, por lo que no debería dar problemas. Supongo que en las demás distros también funcionará.

sábado, 16 de junio de 2012

Firewall: iptables y ufw

El mejor “firewall” que nos ofrece Linux son las iptables. Con ellas podemos abrir y cerrar puertos a voluntad, tanto a rangos de ips como a ips suelta, en uno o varios puertos. Como siempre, en linux las cosas más completas no son las más comodas de usar, pero existen formas alternativas de gestionarlas.
Como muestra un boton, vamos a bloquear el acceso al puerto 22 para ver la diferencia de usar uno u otro:
iptables:
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j DROP

ufw:
ufw deny 22/tcp
Como veis, la diferencia es enorme. Con ufw podemos usar un lenguaje natural y se encarga el programa de traducirlo a reglas de iptables. En ambos casos, tenemos el control total del firewall. Somos nosotros quienes tenemos que bloquear o aceptar las conexiones. Lo ideal es bloquear todo el tráfico e ir abriendo los puertos necesarios, así nos aseguramos que no haya ningún programa mandando datos sin nuestro consentimiento.
Para habilitar y deshabilitar el ufw, tenemos dos comandos:
ufw enable
ufw disable
En algunas distros como Ubuntu ya viene preinstalado, pero deshabilitado por defecto, en otras como Debian tendremos que instalarlo.
Como he comentado, vamos a cerrar todos los puertos y luego ir abriendolos uno a uno. Usaremos el comando ufw default deny para ello (ufw default allow para aceptar todo el tráfico). También podemos activar el log para ver qué está pasando con ufw loggin on.
Hay varias formas de abrir y cerrar puertos, podemos hacerlo por ip o por servicios. Para bloquear por servicios, estos tendrían que estar añadidos en el archivo /etc/services. Por ejemplo, para habilitar el ssh nos bastaría con ufw allow ssh (el puerto 22 se abre para acceder desde cualquier IP). Para abrir por puerto se usa ufw allow 22 (abre para acceder desde cuaquier ip al puerto 22 usando tanto tcp como udp). Si queremos que sólo acepte algun tipo de tráfico, tcp por ejemplo, podemos hacerlo así ufw allow 80/tcp que nos abriría el puerto 80 (web) con tráfico tcp.
Podemos hacer que nos acepte las conexiones desde una IP determinada, para ello usaremos ufw allow from 192.168.1.10 o por ejemplo un rango entero de IPs con ufw allow from 192.168.1.0/24 que daría acceso a toda nuestra red privada.
Podemos bloquear o aceptar también usando IP y puerto: ufw allow from 192.168.1.10 to any port 22.
Para bloquear específicamente puertos o ips, en vez de allow usaremos deny.
Repaso rápido:
ufw allow <port>/<optional: protocol>
ufw deny <port>/<optional: protocol>
ufw allow from <ip address>
ufw deny from <ip address>
u
fw allow from <ip address> to <protocol> port <port number>
Si aun así os resulta complicado, podeis usar el gufw, una interfaz gráfica sencilla para añadir las reglas.
¡Un saludo!

viernes, 8 de junio de 2012

Directadmin: Pasar de customapache a custombuild

Versiones antiguas de Directadmin usan el script customapache para actualizar los programas. Actualmente se acaba de lanzar oficialmente el custombuild 1.2, por lo que me parece buen momento para que todos aquellos que tengan el customapache aún, se pasen por lo menos al custombuild 1.1.

Para cambiar el customapache y usar el custombuild seguir estos pasos:

cd /usr/local/directadmin
wget http://files.directadmin.com/services/custombuild/1.1/custombuild.tar.gz
tar xvzf custombuild.tar.gz
cd custombuild
./build update
En este punto editamos el options.txt y seleccionamos el apache, php y mysql que queramos.
./build all d
Sólo falta regenerar el httpd.conf que seguramente pete el apache al levantarse:

./build rewrite_confs

Con esto ya estamos usando el custombuild.

Podeis ver cómo se usa el custombuild desde este post: http://www.directadmin.com/forum/showthread.php?t=29824 que lo explican al detalle.

¡Saludos!

martes, 5 de junio de 2012

Compartición de archivos: Samba

Una de las ventajas de usar Linux es su compatibilidad con todo. El protocolo de Windows smb que se usa para compartir archivos en red tiene su versión en linux y se llama samba. No sólo nos permite eso, si no incluso montar un Directorio Activo y gran parte de las cosas que ofrece nativamente un Windows Server en este sentido.
Para instalarlo, tiramos de repositorios y no nos complicamos. Vamos a ver cómo configurar el samba para compartir archivos en un grupo de trabajo de Windows, puede que en otro post ponga como meterlo en un dominio de AD.
Para configurar este servicio, tendremos que editar el archivo smb.conf (en Debian en /etc/samba y en CentOS si no recuerdo mal en /etc).
Hay varias partes en este archivo de configuración. La primera es la sección [global] en la que configuraremos las opciones del servidor, el resto ya son comparticiones en sí. La primera compartición que nos aparece es la de [homes] que comparte a cada usuario su home y luego [printers] y [print$] para comparticion de impresoras. En estas tres secciones no habría que tocar nada. Para añadir más comparticiones bastaría con añadir [nombre_compartición] y colocar los atributos necesarios.
Y ahora, vamos a hacer trampa Lengua fuera. Hay un panel muy bonito (no tanto, la verdad) y muy útil llamado swat desde el que podemos configurar todo esto de manera gráfica. Es instalarlo desde los repositorios y conectarse a través del navegador a “http://IP:901”.
Otro panel útil con el que podremos editar las comparticiones es el webmin (más info en algún futuro post), pero que para instalarlo tenemos que añadir los repos que indican en su web e instalarlo. Una vez instalado entramos por “https://IP:10000”.
Un detalle importante a tener en cuenta, es que para que un usuario se pueda conectar por samba, hay que darlo de alta con el comando smbpasswd y no tiene porqué existir en el sistema linux. Existe la posibilidad de mapear usuarios samba a usuarios linux, lo podeis hacer desde los paneles de una forma fácil.
Si quereis info más extensa podeis ir a esta web: http://dns.bdat.net/documentos/samba/usando_samba/using-samba.html pero a muchos les resultarán útiles los paneles mencionados.
¡Saludos!

sábado, 2 de junio de 2012

Instalar Mediatomb con el Samsung Hack en Debian 6

Bueno, tras pegarme varios días y documentarme, ya tengo instalado el mediatomb con el parche para las Samsung. Necesitaremos descargar el parche, en el post anterior está, e instalar el ffmpeg y el ffmpegthumbnailer (con apt).
Yo lo hago en todo momento con el usuario root, manías que tengo, pero con sudo debería de funcionar. Lo primero es crear una carpeta para descargar todo el código, en mi caso he usado /opt/mediatomb, pero puede ser cualquiera a la que se tenga acceso.
# mkdir /opt/mediatomb
# cd mediatomb
Lo siguiente será descargar el código fuente de los repositorios y resolver las dependencias del paquete:
# apt-get build-dep mediatomb
# apt-get source mediatomb
Si vemos el contenido de la carpeta, sería una cosa así:
mediatomb-0.12.0~svn2018  mediatomb_0.12.0~svn2018-6.1.debian.tar.gz  mediatomb_0.12.0~svn2018-6.1.dsc  mediatomb_0.12.0~svn2018.orig.tar.gz
Yo he borrado la carpeta mediatomb-0.12.0~svn2018 porque si parcheaba directamente sobre ella me daba problemas. Si decidís trabajar sobre esa carpeta, podéis saltar este comando y avisarme si os funcionó Guiño. Una vez borrada la carpeta, la reconstruiremos con el contenido del dsc:
# dpkg-source –x mediatomb_0.12.0~svn2018-6.1.dsc
Entramos al directorio mediatomb-0.12.0~svn2018 y parcheamos:
# patch –p0 –i /ruta/hacia/samsung_video_subtitles.patch
Reconstruimos los paquetes:
# dpkg-buildpackage –rfakeroot –b
Nos creará tres .deb en el directorio anterior, mediatomb_0.12.0~svn2018-6.1_all.deb  mediatomb-common_0.12.0~svn2018-6.1_amd64.deb  mediatomb-daemon_0.12.0~svn2018-6.1_all.deb, sólo nos queda instalarlos:
# dkpg –i mediatomb*.deb
Si todo ha ido bien, ya tendremos funcionando el mediatomb y la televisión reconocerá automáticamente los subtítulos. No se si el resto de dispositivos también lo harán o tocará hacer transcodificación (editando el config.xml y añadiendo scripts, más info aquí, lo probé en su momento y funciona relativamente bien, aunque depende mucho del equipo que tengas porque hace la conversión al momento).
¡Saludos!

NOTA: Esto con el mediatomb 0.12.0 que está en los repositorios de Debian 6 no funciona, compila y hace todo bien, pero no muestra los subs. Cuando lo hice en el Mint, usé la version 0.12.1-4 que está en los repositorios testing y sí funcionó. Al no poder instalar esa vesión del mediatomb por problemas de dependencias, habría que actualziarlo todo a testing y paso. Al final me he decantado por usar el minidlna y ha funcionado a la primera.

lunes, 28 de mayo de 2012

Registro de Windows

A modo de apunte rápido para no olvidarme, voy a poner una serie de valores del registro que se pueden editar y ayudan en el post anterior. Las claves que no existan en tu registro, las tienes que crear.

Deshabilitar programas aislados:

Lo que haremos con esto será prohibir la ejecución de algunos programas.

HKCU\Software\Microsoft\Windows\Current Version\Policies\Explorer

Creamos una clave DisallowRun y un registro DWORD DisallowRun que pondremos a 1 para habilitarlo y 0 para deshabilitarlo.

Entramos en la clave recién creada (DisallowRun) y creamos entradas de cadena. El nombre del registro es un numero y el valor el nombre del ejecutable. Si añadimos más programas, los valores tienen que ser consecutivos.

1    iexplore.exe
2    firefox.exe

Estos programas NO se ejecutarán.

Deshabilitar todos los programas y permitir excepciones:

Esto es el caso contrario al anterior. Por defecto no se permitirá el uso de ninguna aplicación excepto las que nosotros queramos. Veamos:

HKCU\Software\Microsoft\Windows\Current Version\Policies\Explorer

Creamos una clave RestrictRun y un registro DWORD RestrictRun que pondremos a 1 para habilitarlo y 0 para deshabilitarlo.

Entramos en la clave recién creada (RestrictRun) y creamos entradas de cadena. El nombre del registro es un numero y el valor el nombre del ejecutable. Si añadimos más programas, los valores tienen que ser consecutivos.

1 iexplore.exe
2 firefox.exe

Estos programas SON LOS UNICOS que se ejecutarán.

Quitar acceso a unidades de disco desde Mi PC:

No se mostrarán las unidades indicadas en Mi PC y no dejará entrar a esa unidad. Vamos a:

HKCU\Software\Microsoft\Windows\Current Version\Policies\Explorer

Y añadimos una entrada DWORD llamada NoViewOnDrive y le daremos el valor deseado. Para que no se vea ninguna unidad: 03FFFFFF. Por lo que veo es una conversión de binario a hexadecimal:

A    B    C    D    …    Z

1     0    0     0    …    0  = 1 Deshabilita unidad A
1     1    0     0    …    0  = 3 Deshabilita A y B
0     0    1     0    …    0  = 4 Deshabilita C

Restricciones Internet Explorer:

Ahora unas cuantas restricciones para el navegador Internet Explorer:

HKCU\Software\Policies\Microsoft\Internet Explorer\Restrictions

Creamos valores DWORD, 1 activada la restricción, 0 desactivada.

NoBrowserClose: Evita que se cierre el navegador. También evita que se cierren las pestañas, por lo que andar con ojo.
NoBrowserContextMenu: Deshabilita el botón derecho del ratón.
NoBrowserOptions: Deshabilita las opciones del navegador.
NoBrowserSaveAs: Deshabilita el guardar páginas en disco.
NoFavorites: Deshabilita la sección de favoritos.
NoFileNew: Deshabilita la opción de nuevo documento del menú.
NoFileOpen: Deshabilita la opción de abrir archivo.

Se puede ejecutar el navegador en modo privado si modificamos el acceso directo y al final añadimos –private (válido también para ponerlo como Shell).

Con estas opciones podremos limitar un poco más el uso a algún usuario. Para editar HKCU (HKEY CURRENT USER), hay que loguearse con el propio usuario a limitar y que tenga en ese momento permisos administrativos (y acceso al regedit). Para hacerlo a nivel de máquina sería editar HKLM (HKEY LOCAL MACHINE), y afectaría a todos los usuarios (no lo he probado, habrá algunas limitaciones que no se puedan hacer a nivel de máquina).

Otro día pondré alguna edición más del registro que sea útil.

¡Saludos!

viernes, 25 de mayo de 2012

Enjaular usuario en Windows

Hoy vamos un poco con Windows, que no suelo tocarlo y también tiene sus posibilidades. Hoy lo que me planteo hacer es crear un usuario que sólo pueda ejecutar un navegador, por ejemplo para un ordenador que esté en un hotel. Seguramente haya programas que hagan esto y sean mucho más seguros, pero ¿para qué instalar algo cuando podemos hacerlo nosotros con un poco de tiempo? Bueno, vale, el tiempo Lengua fuera, pero por lo que estoy investigando no hay tanto problema.
El primero obstáculo que me encuentro es que tengo un Windows 7 Home Premium, por lo que la forma fácil de hacerlo que es editando la política de grupos no puedo hacerla (válido para AD y local), por lo que me toca hacerlo de forma universal, es decir, modificando a pelo el regedit. Lo primero es crear el usuario desde el panel de control, con permisos de administrador para poder hacer los cambios. Al finalizar, le cambiaremos a usuario normal. Nos logueamos con ese usuario y empezamos:

Paso 1: Modificar la shell de Windows

Lo primero que vamos a hacer es que Windows no cargue el explorer.exe y cargue el navegador que nosotros elijamos. En este caso lo haremos para sólo un usuario, pero dejaré un link con información más detallada.
Lo primero que tenemos que hacer es decidir el navegador que vamos a usar y localizar la ruta en el disco duro. Estas son las rutas por defecto de los tres navegadores más usados de Windows (De todas formas, comprobarlo en cada equipo):
Internet explorer: "C:\Program Files\Internet Explorer\iexplore.exe"
Firefox: "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
Chrome: “C:\Users\USUARIO\AppData\Local\Google\Chrome\Application\chrome.exe”

Lo siguiente será modificar la entrada “Shell” del registro para el propio usuario:
HKCU\Software\Microsoft\Windows\Current Version\Policies\System
Creamos una entrada de tipo “String Value” llamada “Shell” y como valor ponemos la ruta del navegador. Si no existiese la carpeta System, la creamos (Crear clave).

Paso 2: Deshabilitando el Administrador de Tareas.

Para ganar algo de seguridad y que los listillos no ejecuten lo que quieran “porque son hackers” vamos a deshabilitar el Administrador de Tareas. Esto deshabilitará la opción del Administrador de Tareas al pulsar “Ctrl+Alt+Supr”. De nuevo vamos al registro y añadimos una entrada de tipo Dword.
HKCU\Software\Microsoft\Windows\Current Version\Policies\System
Entrada a crear: DisableTaskMgr y le ponemos el valor 1. Para volver a habilitarlo, o borramos la entrada o la ponemos a 0.
En la misma clave, podemos añadir otros dos valores útiles, DisableChangePassword y DisableLockWorkstation, que evitarán que se de la opción de cambiar la contraseña de ese usuario y de bloquear el equipo.
Si queremos que no puedan cerrar sesión, tenemos que editar la clave:
HKCU\Software\Microsoft\Windows\Current Version\Policies\Explorer
Y añadir también como DWORD “NoLogoff”
Por último, si queremos deshabilitar el cambio de usuario (dejar abierta la sesión y cambiar a otro) tenemos que ir a la clave:
HKLM\Software\Microsoft\Windows\Current Version\Policies\System
Y añadir también como DWORD “HideFastUserSwitching”. La pega de esto, es que lo deshabilita para todos los usuarios.

Paso 3: Securizar un poco más el equipo.

Para más seguridad, podemos deshabilitar las StickyKeys y el FilterKeys. ¿Porqué? A parte de porque pueden llegar a ser un coñazo, son un agujero de seguridad en estos casos (he hablado de ello en otros post de como usarlo para cambiar contraseñas), pero también porque permiten acceso al panel de control. Si fuese un Windows 7 Professional o superior, esto se puede limitar por políticas de usuarios, pero el home no trae eso.
Para deshabilitarlos podemos hacerlo bien desde el propio panel de control o bien editando el registro:
StickyKeys (pulsar 5 veces Shift izquierdo):
HKCU\Control Panel\Accessibility\StickyKeys
Cambiamos el valor de “Flags” por “506” (510 para activarlo).
FilterKeys (dejar pulsado durante 8 segundo el Shift derecho):
HKCU\Control Panel\Accessibility\Keyboard Response
Cambiamos el valor de “Flags” por “122” (126 para activarlo).

¿FIN?

Falta cambiar los permisos del usuario a estándar y ya tendremos un usuario que sólo podrá ejecutar el navegador. Lo que haga desde el navegador es otra cosa, porque podrá ejecutar otros programas seguramente y acceder al contenido del disco duro. Esta parte tengo que investigarla ya que aun no he tenido tiempo, pero con esto tendremos una terminal un poquito más segura que si dejamos un usuario sin modificar, aunque sea una cuenta estándar (nunca dejar una cuenta de administrador abierta).
Esto es válido con cualquier programa, por lo que si lo que queremos es tener un centro multimedia, podemos usar de Shell el XBMC por ejemplo.
Si alguien ve como mejorarlo o algún punto de fallo que avise Guiño
¡Saludos!
Enlaces:
http://geeks.ms/blogs/checho/archive/2011/12/18/cambiar-el-shell-de-ejecuci-243-n-predeterminado-explorer-exe-en-windows-7.aspx
http://www.dgtallika.com/2010/07/windows-7-avanzado-como-restringir-el-ingreso-a-aplicaciones-con-la-herramienta-applocker/
http://windowsxp.mvps.org/es/tareas-ha-sido-deshabilitado.htm

martes, 22 de mayo de 2012

Instalar Mediatomb con el Samsung Hack (Parte 2)

Bueno, seguimos con el post anterior que me quede sin espacio. Después de la bonita historia de superación vamos a ver cómo aplicar el hack al paquete. Hay que descargar el parche desde http://sourceforge.net/tracker/?func=detail&aid=3014026&group_id=129766&atid=715782 y recordar la ruta donde se ha guardado.
1. Añadir repos a /etc/apt/sources.list
deb http://ftp.de.debian.org/debian sid main
deb-src http://ftp.de.debian.org/debian sid main
Y actualizamos: “apt-get update”.
2. Descargamos el paquete y resolvemos dependencias:
apt-get build-dep mediatomb
apt-get source mediatomb
3. Entramos en la carpeta descargada y nos ponemos al lio:
cd mediatomb-0.12.1/
patch -p0 -i /opt/samsung_video_subtitles.patch (o donde lo hayamos guardado)
./configure
NOTA: Si da errores de dependencias, instalar con apt lo necesario. Lo ultimo que tengo instalado es:
apt-get install ffmpeg ffmpegthumbnailer
apt-get install libmysqld-dev
apt-get install libdvdread-dev libdvdnav-dev
apt-get install libsqlite3-dev
apt-get install libtag1-dev libexpat1-dev libexif-dev libmp4v2-dev libmagic-dev libcurl4-openssl-dev libmozjs-dev

Pero no se si hará falta más cosas, ya que he instalado muchos paquetes anteriormente.
Esto es para que funcione lo siguiente:
apt-get install  build-essential dh-autoreconf libcurl4-gnutls-dev libmozjs185-dev

dpkg-source --commit (Si no fallará porque hemos aplicado el parche.)
dpkg-buildpackage -us -uc (esto como root, si no hay que añadir fakeroot, revisar enlaces)
Con esto ya tendremos los .deb preparados. Volvemos al home y vemos que tenemos varios .deb nuevos. Para instalarlos:
dpkg -i mediatomb*.deb
apt-get install -f
Si todo ha ido bien con "ps aux | grep mediatomb" lo veremos ejecutándose. Sólo falta añadir en el config.xml
<protocolInfo extend="yes" samsung-hack="yes"/>
Reiniciamos el servicio y listo.
Con esto finalizo la guía de lo que hice estos dos días anteriores y a mí me funcionó con LMDE como dije en el post anterior. Espero que le sirva a alguien ya que me volví loco para conseguirlo, pero se hizo Guiño.
¡Un saludo!

POST: Estoy intentandolo hacer en Debian 6, pero me da fallo de dependencias. Cuando lo consiga, actualizo con los pasos extra.

Enlaces (compilándolo de cero y como modificar un deb):
http://sourceforge.net/projects/mediatomb/forums/forum/440751/topic/3991443
http://juliensimon.blogspot.com.es/2008/12/howto-compiling-mediatomb.html
http://www.debian-administration.org/articles/20
https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide

Instalar Mediatomb con el Samsung Hack (Parte 1)

Mediatomb es un servidor DLNA, con el podremos hacer streaming de audio, video y fotos en nuestra red a todo dispositivo DLNA compatible. La instalación básica es realmente sencilla, el problema me vino a la hora de añadir subtítulos para verlos en mi tele (una Samsung Smart TV). Empezaremos por lo básico que es instalarlo, ya que a la mayoría de gente con eso le vale.

Antes de empezar, aclarar que empecé haciéndolo en una Ubuntu 11.10 y luego con una Ubuntu 12.04, pero ahora mismo estoy usando una Linux Mint Debian Edition, que es donde he aplicado el hack, por lo que asumiré que esto es válido para distros basadas en Debian (no creo que haya mucha diferencia con las demás).

Para instalarlo, es tan sencillo como usar los repositorios “apt-get install mediatomb”. Instalará el mediatomb-common y el mediatomb-daemon, y el resto de dependencias. Con esta instalación, está usando el fichero de configuración que está en /etc/mediatomb/config.xml por lo que es el que tendremos que editar. Si ejecutásemos el mediatomb con nuestro usuario, el archivo de configuración estaría en ~/.mediatomb, pero como vamos a usar el daemon, editaremos el de /etc.

Al final del post, adjuntaré un config.html que funciona con las Samsung, sería copiarlo a /etc/mediatomb/config.xml y reiniciar el demonio. Pondré también los enlaces que usé para configurarlo por si queréis indagar y modificar cosas.

Con esta configuración he conseguido hacer streaming de video (avi, mp4 y mkv que haya probado hasta ahora) sin problemas y sin hacer transcodificación (convertir los archivos de video a otro formato, consume más recursos en el pc), pero sin subtítulos. De primeras lo que intenté fue hacer una transcodificación y que se añadiesen los subtítulos, pero no he sido capaz de hacerlo (lo dejo en los enlaces) aunque tampoco investigué mucho.

Esta configuración la deje durante unos meses, ya que funcionar funcionaba, pero como no lo estaba usando regularmente (no veo muchas películas) necesitaba conseguir poner los subtítulos para ver los capítulos de las series en VO con subtítulos. Era la forma en que le diese un uso regular. Investigando, acabe descubriendo que hay un parche que hace que las televisiones Samsung cojan los subtítulos sin necesidad de transcodificación, pero claro, no sabía como aplicar parches a programas por lo que tocaba seguir la investigación.

Lo primero que encontré fue que había que aplicar el parche sobre el código fuente, así que ni corto ni perezoso me lie la manta a la cabeza y me puse a compilar el mediatomb y todas sus dependencias. Esto es algo a tener en cuenta en las distros basadas en debian, las dependencias no están en el sitio en el que el compilador las busca. Por lo que leí es problema de los que hacen los paquetes para esas distros. Lo primero que me costó fue compilar el ffmpeg, pero una vez hecho, compilar el mediatomb sería ya cosa de poco, con las dependencias resueltas y el parche puesto. Así que cogí el código que había bajado usando el svn y… nada. Después de horas investigando y parcheando, me seguía dando fallos de compilación. Estaba apunto de quemar el ordenador. Y se me encendió una bombilla. ¿Y si aplico el parche al paquete de los repositorios? ¿Se podría hacer? Ya desesperado busqué y busqué, y de primeras fallé. Se puede descargar el código fuente de los repositorios con “apt-get source paquete” siempre y cuando tengas habilitado en los repositorios la descarga de las fuentes. Fallé por culpa del LMDE, que no tenía el mediatomb en los repositorios de código fuente (o no supe dar con él) así que siguiendo la lógica de que está basada en debian, ni corto ni perezoso añadí los repositorios de debian al “/etc/apt/sources.list”. Y a partir de ahí, como la seda. En el siguiente post, los pasos detallados.

Enlaces:

Config.xml e info de transcodificación: https://vanalboom.org/node/9
Básico Samsung: http://ubuntuforums.org/showthread.php?t=1198689
Config xml mío: http://pastebin.com/9xR8BgHm sacado de http://sourceforge.net/projects/mediatomb/forums/forum/440751/topic/4398387/index/page/1

miércoles, 25 de abril de 2012

SSH: Introducción y usos básicos

A la hora de administrar servidores existen incontables inconvenientes. El servidor tiene que estar operativo (y por lo tanto administrable) 24 horas al día, los 7 días de la semana, durante todo el año. En la mayor parte de los casos, no tenemos la posibilidad ni las ganas de estar delante del equipo cuando necesitamos hacer algo en él. Existen varias soluciones para los distintos sistemas operativos para administrarlo de forma remota. Centrándonos en los sistemas Linux (para qué cambiar a Windows…) el que se usa por excelencia es el ssh (Secure Shell).
Al conectarse por ssh, lo que conseguimos es una shell remota, desde la cual podremos hacer todo lo que nos permita nuestro usuario. Para usarlo, necesitaremos dos componentes, el ssh-server instalado en la máquina a la que queremos conectar y un cliente en la maquina desde la que conectemos. Si conectamos desde un Linux, generalmente viene ya instalado por defecto, y si no recuerdo mal en OSX también. Si lo que tenemos es un ordenador con Windows, tranquilos, se puede. El cliente más usado es el Putty, es un pequeño ejecutable que no hace falta instalar. Existen más con más opciones (mNGremote por ejemplo), pero Putty cumple con todas las necesidades.
Para instalar el servidor ssh, es tan sencillo como usar el gestor de paquetes preferido (apt-get install sshd-server o yum install sshd-server)*. Ahora viene la parte divertida, configurarlo (no se asuste nadie, es fácil).
Lo primero que haremos será editar el sshd_config (/etc/ssh/conf/sshd_config en las distros basadas en redhat, /etc/sshd_config en las basadas en debian)**. Usaremos nano, vi, gedit o lo que queramos, como siempre al gusto de cada uno.

Puntos importantes a editar:

Vamos a ver una configuración sencilla y segura para empezar. Buscamos la línea que ponga “port 22”, que puede estar comentada, y la cambiamos por otro puerto que no esté en uso (mayor de 1100 generalmente). El 22 es el puerto estándar por el que se usa el ssh, cambiándolo pondremos un poco más de seguridad.
Otra línea a editar, es la de “Protocol", que la pondremos a 2. Esto indica la versión de ssh a usar, pero la 1 está en desuso y con varias vulnerabilidades, por eso usamos la 2.
Esta que comento, se debería de deshabilitar, “PermitRootLogin”, habría que ponerla a no. Con esto hacemos que el usuario root no se pueda conectar por ssh ganando en seguridad, ya que es el usuario más importante del equipo (acceso total a todo)***. Si permitimos el acceso, hay que asegurarse de que tiene una contraseña robusta. Junto con esta línea, podemos editar otra que se llama “AllowUsers”, en la que indicamos que usuarios tendrán acceso ssh, importante si deshabilitamos el acceso al root. Desde cualquier usuario se puede hacer su o sudo su (dependiendo de la distro) para cambiar a root. La forma de esta línea es “AllowUsers gato perro [email protected]”, dejando que gato y perro se conecten siempre, pero que periquito se conecte sólo desde la ip 123.4.5.678.
Para un extra de seguridad podemos editar “LoginGraceTime 20”, que limita el tiempo en el que se puede poner la contraseña (en segundos), “MaxAuthTries 3” numero de intentos fallidos antes de cortar la conexión y “MaxStartups 4” que limita el numero de usuarios conectados a la vez. Los dos primeros vienen bien para cortar un poco los ataques de fuerza bruta.
Una vez editado, salimos y reiniciamos el demonio del sshd (/etc/init.d/sshd restart o service sshd restart).
Con esto, tenemos una configuración medianamente segura y podremos acceder a nuestro servidor para administrarlo de forma remota. Podremos hacer cualquier cosa que nos permita nuestro usuario, instalar paquetes, toquetear los servicios, etc… siempre desde una terminal.
En siguientes post, si me da, veremos cómo transferir archivos de forma segura usando el ssh, y cómo usar programas con interfaz gráfica mediante ssh.
¡Saludos!
PD: Para conectar por Putty, simplemente ponemos la IP o url del servidor y el puerto que hayamos configurado, y desde linux/mac con el comando “ssh usuario@ip” si usamos el puerto 22 o “ssh –p 12345 usuario@ip” si lo hemos cambiado.
* No estoy al 100% seguro que se llame así el paquete, me puede la pereza de comprobarlo. Tan sencillo como buscarlo.
** Escribo de memoria, si no están ahí, se pueden buscar, ya que cada distro es un mundo.
*** Por ello en los ataques de sacar contraseñas por fuerza bruta de ssh, este usuario no falta.

lunes, 5 de marzo de 2012

Como evitar las ciberestafas

Mientras se cocina la tarta tengo un rato para escribir por aqui. Acabo de leer en mi feed un titular que viene a decir que los ciberdelincuentes se estan aprovechando del posible lanzamiento del iPad 3 para timar a la gente. Y yo me pregunto, ¿tamos tontos o que?
Lo primero y esencial, ¿ha salido a la venta el famosisimo ipad con retina display? Si ni siquiera se sabe si van a sacar un ipad o si Apple ha decidido meterse en el mercado del porno y va a presentar una gama de productos para tocar(se).
Esta noticia me ha hecho recordar otra serie de post en diversos blogs acerca de este tipo de noticias, y como la gente por mas que se le dice sigue picando. Antiguamente, recuerdo que el mayor foco de malware (no me gusta esta palabra pero si todos la usan, no sere menos) eran las webs de cracks, ademas de la mula. Habia que tener un cuidado extremo para no coger nada por esos lares (moraleja: no piratees).
Pero desde que se puso de moda esto del internet la cosa ha ido a peor. Se aprovechan de que la gente no tiene ni idea ni memoria. En el curro he visto autenticas joyas de phising que engañarian hasta a los propios dueños de los bancos, pero con los repetidos avisos que han dado los bancos de que no pediran nunca nada por correo este tipo de engaños no deberia ser efectivo, ¿o no? Cada semana nos llegan avisos de que alguien tiene metida una web de este tipo, por lo que parece ser que siguen siendo efectivos.
"¿Entonces que se puede hacer para evitar que nos timen? Tengo instalado dos firewall, cinco antivirus y 10 antispyware, pero aun asi he tenido problemas." Lo esencial es evitar dar cualquier tipo de dato por internet ni en casa, ni en el trabajo y menos ¡en un cibercafe! Si fuese necesario, hay que asegurarse que el ordenador no tiene mierda extraña instalada, pasamos el antivirus, la aspiradora y un poco de chilitbang, y ante todo, accederemos a las webs directamente escribiendo las direcciones en el navegador, nada de enlaces.
Y no, la mujer de nuestro mejor amigo no te va a enseñar sus partes privadas ni por facebook, ni por twitter, ni tampoco la de tu jefe. Que ese es el foco principal de este tipo de engaños, las redes sociales. ¿creeis que alguien os va a pasar ponno por en muro? Lo mejor que os puede pasar siguiendo esos enlaces es que acabeis viendo un video de Rick Ashley, o que os hagan un Hasselhof.
En resumen, para evitar caer en este tipo de estafas, ten dos dedos de frente. No vas a comprar el coche a un descampado a las afueras de tu ciudad en mitad de la noche. Esa es la logica en estos casos ;).
¡Saludos!

jueves, 16 de febrero de 2012

¿Problemas de red?

Bueno, volvemos un día más a escribir en un poco en el blog, que entre la pereza y el poco tiempo lo tengo abandonado.

Hoy vamos a ver unos sencillos pasos para que si un día nos falla la red, sepamos dónde está el problema y si nos toca llamar al proveedor de internet, que no nos timen.
Un día cualquiera nos levantamos de la cama, tomamos nuestro café, encendemos nuestro gadget favorito para ponernos al día con el Tumblr y… ¿No va internet? … Interneeeeeeeeeeeee!!! ¿Qué usaremos para comprobarlo? Con un simple ping nos sobrará.

Lo primero es desactivar el firewall y si sigue fallando, hacer un ping a la ip 127.0.0.1, que es una ip especial que representa a nuestro equipo.
ping 127.0.0.1
Haciendo ping a 127.0.0.1 con 32 bytes de datos:
Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128
Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128
Estadísticas de ping para 127.0.0.1:
    Paquetes: enviados = 2, recibidos = 2, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 0ms, Máximo = 0ms, Media = 0ms
Si falla aquí, tenemos algo mal con nuestro ordenador.

Lo siguiente será hacer un ping a la ip de nuestro router “ping 192.168.0.1”. Si falla, el problema está en nuestra red. Dependiendo del tipo de fallo, es posible que nos de mensajes explícitos como “Cabe de red desconectado”, pero no siempre es así. Probamos a reiniciar el router y si no va, tirarlo a la basura y compraros un buen router ejem… ¡Y comprobar que estamos en el mismo rango de ips que el router!

Una vez que comprobamos que llegamos al router, tendremos que ver si pasamos de él, por tanto haremos un ping a un dominio como puede ser google.es que es raro que esté caído. Si no falla, perfecto, pero si falla, tendremos que hacer otro ping a una ip externa como puede ser la 8.8.8.8 (dns de google). Si responde el ping, el problema que tenemos es con las DNS. Si tenemos configurada la red por DHCP, lo más seguro es que tengamos como servidor de DNS el router y éste tenga los servidores DNS de la compañía y estén caídos. Lo solucionamos editando la conexión de red y poniendo manualmente los DNS. Unos válidos son 8.8.8.8 y de secundario 8.8.4.4, que son los de google y si cae Google… Apple gana mal vamos. Si fallase es que existe un problema en la conexión del router.

Lo siguiente a comprobar será que las luces del router están todas como deben, si sale alguna lucecita es que hay problema de comunicación del router, reiniciar router y si sigue fallando, es cosa del proveedor con lo cual hay que esperar un rato o llamarles. Si las luces están bien y hemos comprobado todo, el problema lo tiene el proveedor en alguna línea, por lo que sólo queda esperar a que lo solucionen, y con suerte, si les llamas, que reconozca que tienen el fallo. En estos casos, recomiendo coger un libro e ir comprobándolo rato a taro, porque si no acabareis de los nervios.

Espero que os sirva, por lo menos para saber quien tiene la culpa. ¡Saludos!

lunes, 2 de enero de 2012

Securizando servidores (VI)

Bueno, año nuevo, post nuevo. Como propósito de este año voy a intentar, otra vez, mantener actualizado el blog. Para empezar, seguimos con unos consejos para tener nuestro servidor linux un poco mas seguro. Como siempre, toda medida de seguridad que pongamos sera poca.

Hoy lo que haremos sera crear usuarios con privilegios administrativos para no usar el root. ¿Porque haríamos eso? Sencillo. Existen una serie de ataques que intentan sacar la contraseña de root por fuerza bruta, por si tiene una clave fácil, pero si "eliminamos" al usuario root, esos ataques nos preocuparán menos.

Lo primero que vamos a hacer es prohibir que el usuario root pueda acceder por ssh, luego bastará con conectarse con cualquier otro usuario y hacer "su". Para ello, tenemos que editar el archivo sshd_config, generalmente en /etc o /etc/ssh, según distro.Buscamos la linea que ponga "PermitRootLogin ", la descomentamos si lo estuviese y cambiamos (o no) el valor a "no". Reiniciamos el servicio de ssh (/etc/init.d/sshd restart) y listo, el root no se podrá conectar por ssh.

Lo siguiente será crear un usuario, que usaremos para conectarnos por ssh en adelante. Cada uno lo puede llamar como quiera, una idea sería "admin". Con "useradd admin" y "passwd admin" lo tenemos finiquitado. Ahora falta probarlo. Mediante putty (windows), alguna terminal (linux) o cualquier otro método que prefiramos, nos conectamos mediante ssh al servidor. Probamos a loguearnos como root y vemos que nos rechaza. Luego lo haremos como admin y vemos que va como la seda.

Una cosa a tener en cuenta, es que el usuario admin ahora mismo es un usuario normal sin ningún tipo de privilegios. Si hacemos un su (o sudo su, según distro), nos loguearemos como root.

Si el servidor que tenemos es un servidor ftp, podemos tener problemas con los usuarios que están añadidos o se añadan ya que por defecto tienen asignada una shell y pueden loguearse también por ssh. Para evitarlo y restringir quien puede y quien no puede tener una shell (para usar por ssh o en local), lo que tenemos que hacer es editar el archivo /etc/passwd. Buscamos el/los usuarios a editar y cambiamos el /bin/bash (o /bin/sh o cualquier otra válida) por /bin/false. Acto seguido, editamos el archivo /etc/shells y añadimos a la lista /bin/false si no estuviese para evitar que el ftp de problemas.

Con estos sencillos pasos, tendremos el servidor un poco más seguro y evitaremos algún que otro problemilla. Lo siguiente que haremos será darle privilegios a ese usuario que hemos creado para depender menos del root e incluso hacer como hace ubuntu por defecto, y es deshabilitar la cuenta de root.

Volveremos cuando volvamos, ¡Saludos!