Hardware y slackware server

Aviso : todo lo que vaya en

cita

te lo puedes saltar es exhibición narcisista , algo así como los selfies que se cuelgan en redes sociales .

La informática , la última frontera. Estos son los viajes de la nave estelar Arcadia, que continúa su misión de exploración de aprendizajes desconocidos, descubrimiento de nuevas vidas y de nuevas civilizaciones; hasta alcanzar lugares donde nadie ha podido llegar.

Bitácora del capitán. Hoy exploramos un sistema solar binario cargado de buenos paisajes :

Empezamos por un vistazo a un viejo planeta compuesto solo de Hardware. Para seguidamente meternos de lleno en lo que sería un anillo slackwariano de asteroides muy bonito llamado Servidor.

Después de esta trekkyada ahí van algunas cosas sobre la informática que quiero compartir en la red antes de que se me olviden del todo.

Hardware

Hard = duro

El hardware no es un planeta , creo , sino el término con el cual definimos lo que se toca , lo “real” de la informática .

Las computadoras de sobremesa cada vez mas desplazadas del escenario actual de cacharros táctiles , miniaturizaciones *Pi , smart-cosas , etc son perfectas para conocer la estructura de la informática : almacenar, procesar y transmitir información o datos .

Todas deberíamos conocer los componentes básicos de un sobremesa para poder desenvolvernos progresivamente con mas amplitud de miras y perspectiva por estos lares .

Componentes como el disco duro , un bus , un procesador , un chip gráfico , etc tienen que tocarse para que así queden a modo de imagen en nuestra memoria (la de la cabeza) .

Mediante este método al afrontar un problema de software , por ejemplo con el bus sata , en el que alguien nos diga teclea esto en la terminal:

lspci | grep SATA

SATA controller: Intel Corporation 8 Series SATA Controller 1 \[AHCI mode\] (rev 04)

Ya nos sonaría algo y al buscarlo en la wiki e ir apareciendo mas nombrecitos ;

“Serial ATA, S-ATA o SATA (Serial Advanced Technology Attachment) es una interfaz de bus de computadoras para la transferencia de datos entre la placa base y algunos dispositivos de almacenamiento , como la unidad de disco duro .”

La imagen real , el recuerdo de cada cosa se proyecta en nuestra cavidad craneal , también la relación que hay entre los componentes .

Podríamos profundizar mas en el tema para entender la receta , el camino que empieza con las “pulsaciones” eléctricas , las cuales entran por la fuente de alimentación a través de las puertas lógicas destilándose en lógica binaria para transitar ya en modo magia hasta la CPU .Ahora ya son 1010101010 unos y ceros procesados con tubos de vacío , relés eléctricos o microtransistores para que por fin el usuario vea ante sus ojos bytes , píxeles , paquetes TCP/IP, etc . Es decir software . Apasionante.

Pero por ahora centraremos nuestro pequeño paseo por senderos mas prácticos .

Si tenemos ya una máquina de estas grandes y quisiéramos limpiar o cualquier otra cosa (que implique el toqueteo, estos miniconsejos prácticos pueden mantener un orden para facilitarnos el trabajo :

Antes de ahondar a las tripas de un PC es muy muy muy importante desenchufarlo de la corriente , asegurarse de que esté APAGADO y darle al botón de encendido por si acaso hay electroestática por ahí pululando.

Desmontaje:

1º Quitar las tapas de la caja .

2º Quitar los cables tanto de datos como de alimentación ( ojo con los del panel frontal ).

3º Quitar las tarjetas de expansión, graficas, de sonido, módulos RAM, de red , etc etc etc .

4º Quitar las unidades de almacenamiento .

5º Quitar la placa base .

6º Quitar la fuente de alimentación .

Para montar el PC de nuevo simplemente invertir el orden .

Cuidado con los tornillos , cada uno es para una cosa. Tienen grosores y formas diferentes cuya razón de ser no es la casualidad . Nunca forzarlos , es decir no ejercer fuerza en el destornillador , con suavidad .

Para abrir la bandeja del cd-rom o cualquier unidad óptica arcaica , sin necesidad de electricidad se mete la punta de un clip por un agujerito que esta en el frontal cerca del botón de apertura .

Si alguna tarjeta de expansión sea gráfica o módulos RAM no funcionan bien es muy efectivo revisar sus conexiones físicas o pines de cobre , si están sucios generalmente por la humedad se oscurecen , se limpian frotándolos con una goma de borrar . Eso si hay que asegurarse de no dejar restos del borrado de la goma por ahí .

Servidor

Después de dejar el planeta del hardware quedándonos con un fuerte sabor metálico a silicio en el paladar veremos un poco el cinturón de asteroides Servidor .

Un sitio repleto de recovecos insondables donde poder perderse en innumerables laberintos de servicios ya que un servidor es eso , una máquina que despliega servicios en red. En este caso servicios tipo web sin embargo se podría servir música con mpd , almacenamiento con owncloud , un nodo xmpp con prosody , servir bases de datos (del tipo relacional , php flat-file , multivalor , datos de grafos … ) , hasta email si somos valientes .

La navaja suiza de proyectos posibles se expande en el horizonte como los rayos de sol a su puesta entregándonos el valor de la acción creativa , transformándonos en seres activos no sólo con el poder de comunicar mediante herramientas transparentes y libres , sino también de enriquecernos con ellas creando algo sustancial que sabe a conocimiento interno , se queda en nuestro interior . ¿Y si además saliera al exterior ? , ¿Os imagináis lectoras que cada una de nosotras comenzase a aportar ideas prácticas a ese gran anillo protomolecular llamado Internet ? Qué expansión tan grande sería , un nuevo universo nos espera al otro lado del portal . Las ideas no deberían ser privativas , centralizadas en nodos de poder comercial …

Si pero yo no soy de ciencias escucho al fondo.

Da igual , solo adquiere una base mínima necesaria para poder adaptar tu idea, tu trabajo, tu creación, tu “conocimiento” a la red . Seguro que alguien te usará de referencia para crear una ROM libre de android (OS) o una nueva divisa digital (coin) .

Bueno , veamos ya el baile sobre el vacío de asteroides en la zona slackware:

Me dispongo a describir y enumerar los aburridos pasos llenos de comandos raros para crear un webserver con drupal 7 en slackware , todo muy técnico . Esto está hecho con apuntes viejos que puede no estén demasiado vigentes. Aunque en teoría esta “guía-índice-resumen” está completa y puede ofrecer una visión cenital sobre la instalación de un serverweb , espero os sirva .

Slackware, sistema operativo que exige la puesta a punto de los servicios mas relevantes manualmente y con mimo eludiendo automatismos y cosas raras .Filosofía K.I.S.S . muacx

Slackware es extremadamente sencillo de manejar y mantener , básicamente conocer slackpkg , sbopkg para gestionar los programas que tengamos , actualizaciones y /etc/rc.d/ para demás temas de relevancia .

Una vez el slacky instalado sin entorno gráfico y con LAMP se configura su conexión a la red ; IP fija , los DNS , la máscara de red , el gateway … en /etc/rc.d/rc.inet.conf y /etc/resolv.conf (en este último no hay que olvidar poner nameserver delante de las direcciones ).

-Ya conectados a la red actualizamos el sistema , escogemos los mirrors /etc/slackpkg/mirrors y ejecutamos :

slackpkg update

slackpkg upgrade-all

Con el sistema actualizado el siguiente asteroide sería abrir o redirigir o como se diga los puertos en el router ( 80 y 443 ), para dar salida a Internet sino solo sería accesible en la red local.

Con el sistema ya instalado , conectado , actualizado y abierto al mundo saltamos al asteroide mySQL o mariaDB , para ello ejecutamos estos comandos .

-Permisos a mysql y apache para su ejecución ;

chmod +x /etc/rc.d/rc.mysqld chmod +x /etc/rc.d/rc.httpd 

-Seguidamente:

mysql_install_db –user=mysql

-Se introduce la clave de administrador de mysql:

mysql_secure_installation 

-Se arranca mysql:

/etc/rc.d/rc.mysqld start

-Crear el usuario mySQL y la base de datos de drupal por consola , como puede verse el proceso es muy sencillo y para nada se hecha en falta phpmyadmin :

mysql -h localhost -u root -p 


create database nombre_de_base_de_datos character set utf8;



create user nuevo_usuario@'localhost';


set password for 'nuevo_usuario'@'localhost' = PASSWORD('UnAcl4v3muyDiFiCiL');

grant all on nombre_de_base_de_datos.* to 'nuevo_usuario'@'localhost' ;

 flush privileges;

La instalación de drupal 7 no tiene ninguna complicación pero antes de realizarla será necesario llevar a cabo algunos ajustes en apache.

-Activar PHP descomentando en el archivo de configuración /etc/httpd.conf:

  Include /etc/httpd/mod_php.conf 

-Después añadir “index.php” aquí , al lado de index.html:

DirectoryIndex index.php index.html

-Aprovechando que andamos toqueteando apache se puede activar de paso el SSL o https descomentando:

LoadModule ssl_module lib64/httpd/modules/mod_ssl.so

Include /etc/httpd/extra/httpd-ssl.conf 

Include /etc/httpd/extra/httpd-vhosts.conf

-Seguidamente definimos el nombre del servidor web en:

 ServerName www.miweb.com 

-Reiniciamos apache:

/etc/rc.d/rc.httpd stop 

/etc/rc.d/rc.httpd start

-Comprobamos si el módulo ssl ha sido cargado correctamente:

 httpd -t -D DUMP_MODULES 2>/dev/null | grep ssl 

-Correcto:

 ssl_module (shared)

-Con este otro comando se comprueba que el puerto que usa SSL esté abierto:

 netstat -nl | grep 443 

De nada nos sirve tener activado SSL sin su certificado correspondiente , afortunadamente este es fácil de implementar con Let’s encrypt .

Para ello vamos a instalarlo junto a toda su paquetería desde slackbuilds:

 1º sbopkg -i "psutil python-requests python2-pythondialog pyparsing configobj mock werkzeug pytz"

 2º sbopkg -i " pysetuptools python-configargparse python-parsedatetime pyrfc3339 augeas python-augeas" 

 3º sbopkg -i "zope.interface zope.event zope.component ipaddress enum34 pycparser cffi pyasn1 six idna cryptography pyOpenSSL ndg_httpsclient letsencrypt"

(Algunos paquetes pueden haber sido eliminados o modificados con el tiempo o versión de slackware , de todas maneras el propio sbopkg nos avisará si encuentra errores).

Una vez instalado Let’s encrypt necesitamos su cliente.

El más conocido que uso aquí es certbot pero podemos elegir entre varios como acme-tiny que además de otras cosas es mucho mas liviano .

wget https://dl.eff.org/certbot-auto


chmod a+x certbot-auto

-Dentro del directorio certbot descargado ejecutamos:

 certbot certonly 

-Y nos aparece la primera opción de su configuración:

 How would you like to authenticate with the ACME CA? 

-Me da pereza seguir , el resto de su instalación es muy sencillo , aquí los detalles:

Con las claves SSL ya creadas , guardadas a buen recaudo en un directorio discreto y con sus permisos recortaditos (ejem chmod 600 /root/SSL/ ), es el momento de configurar el vhost para la redirección de http a https:

Aquí la ruta y un ejemplo con hosts ya activado:

/etc/httpd/extra/httpd-vhosts.conf

 ServerAdmin webmaster@dummy-host.example.com 

DocumentRoot "/srv/httpd/htdocs/" 

ServerName miweb.com 
ServerAlias www.miweb.com 

Redirect permanent / https://www.miweb.com/ 

ErrorLog "/var/log/httpd/miweb.com-error_log" 

CustomLog "/var/log/httpd/miweb.com-access_log" common


Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"

 ServerAdmin webmaster@dummy-host.example.com 

DocumentRoot "/srv/httpd/htdocs/" 

ServerName miweb.com 

ServerAlias www.miweb.com 

SSLEngine on 

SSLCertificateFile /ruta/ssl/certfcd/miweb.com/cert1.pem 

SSLCertificateKeyFile /ruta/ssl/certfcd/miweb.com/privkey1.pem 

ErrorLog "/var/log/httpd/miweb.com-error_log" 

CustomLog "/var/log/httpd/miweb.com-access_log" common

-Otra cosa necesaria es poner tambien la ruta aquí: /etc/httpd/extra/httpd-ssl.conf

 SSLCertificateFile " /ruta/ssl/certfcd/miweb.com/cert1.pem"

 SSLCertificateKeyFile " /ruta/ssl/certfcd/miweb.com/privkey1.pem " 

SSLCertificateChainFile "/ruta/ssl/certfcd/ca.crt" 

-Comando para ver la configuración de vhost:

  httpd -S

-Y reininiciamos otra vez apache:

 /etc/rc.d/rc.httpd stop 

/etc/rc.d/rc.httpd start

Ahora activaríamos el cortafuegos iptables , para ello simplemente se crea un script para ser ejecutado en el inicio del sistema .

En dicho script se encuentran las reglas de filtrado conformadas a nuestro servidor .

Cuidado con la política DROP por defecto si no tenemos acceso físico al S.O nos puede jugar una mala pasada cortando la comunicación permanentemente .

-Al script con las reglas hay que darle permisos de ejecución e indicar su ruta , es decir el path donde se encuentra el archivo , dentro de:

/etc/rc.d/rc.local .

-Ver estado de las cadenas del cortafuegos :

 iptables -L 

Ya por fin correctamente configurado apache e iptables activado podemos empezar la instalación de drupal:

-Descargar el paquete drupal core y su traducción .

-Poner la traducción dentro de languages o translations que anda por la carpeta profile.

-Crear la carpeta:

 mkdir /var/www/htdocs/sites/default/files 

-Darle los permisos correspondientes.

-Crear este archivo settings.php :

 cp /var/www/htdocs/sites/default/default.settings.php /var/www/htdocs/sites/default/settings.php 

-Darle los permisos correspondientes.

-Una vez instalado drupal rebajar los permisos a settings.php y files/ .

En el asteroide drupal lo primero que se suele hacer es poner la web en modo mantenimiento donde se informa a los navegantes que estamos de obras o lo que les queramos contar.

Al poner el sitio en mantenimiento no nos saldrá ningún cuadro de logueo ,para poder entrar ;

?q=user/login

Muy recomendable instalar el módulo Security review y hablando de seguridad veamos fail2ban :el cual bloquea y registra los intentos de logearse por ssh y/o muchos mas servicios que queramos añadirle . Practiquísimo para controlar la aduana de nuestro server mediante logs.

Señalaré aquí brevemente que , en slackware , el filtrado que hace fail2ban de ssh no funciona automáticamente por defecto pues el archivo standar …/log/auth no existe . Así que hay que crear y configurar el archivo por defecto de los logs para ssh y luego indicarle a fail2ban cual es ese archivo .Si lo sé parece un trabalenguas pero es mas sencillo hacerlo que explicarlo:

-Primero se crea en …/ssh/sshd_config :

SyslogFacility AUTHPRIV

-y en /etc/syslog.conf :

 authpriv.* /var/log/nombrearchivo_fail2banlog_quemas_teguste

-En nuestro archivo de configuración en fail2ban en el apartado jail->ssh;

 .../fail2ban/fail2ban.local 

(fail2ban.local no existe tenemos/debemos crearlo a partir del fail2ban.conf, es un primer paso despues de la instalación del programa ).

-Indicamos la ruta del log de ssh del paso anterior :

logpath = /var/log/nombrearchivo_fail2banlog_quemas_teguste

Y listo servidor rodando. Si cambiamos el puerto SSH estándar pues mejor todavía pero mucho OJO al hacerlo si no tenéis acceso físico al servidor también hay que tener esto en cuenta en las reglas de iptables y fail2ban pues suelen tener el puerto 22 por defecto para SSH .

root@ubuntu:/home/juanito# fail2ban-client status ssh

Status for the jail: ssh

|- filter

||- File list: /var/log/auth.log

| |- Currently failed: 1

| `- Total failed: 7

`- action

|- Currently banned: 1

| `- IP list: 192.168.82.1

`- Total banned: 1

root@ubuntu:/home/juanito#

Pero claro uno cosa es que ruede otra que esté afinado , el tema de la seguridad es muy importante , software como por ejemplo : lynis , sqlmap , owasp ZAP , web malware scanner , tripwire , etc que nos ayudarán con esto aparte claro está de brindarnos un conocimiento más profundo en estas ciencias . Si por alguna extraña razón usamos una conexión wifi deberíamos tener en cuenta estos tips anti-intrusos .

  • Cambiar la contraseña del administrador del encaminador (router) .

  • Cambiar la contraseña por defecto de la red wifi por una wpa2
    tkip-aes .

  • Comprobar si el firmware está actualizado y si no lo está
    actualizarlo .

  • Desactivar la administración remota si se puede .

  • Desactivar el acceso por WPS .

  • Desactivar upnp .

  • Desactivar DMZ si por alguna extraña razón está activada.

Si disponemos de otra máquina podríamos completar el server con un sistema de backups automatizado y puesto a buen recaudo . Sino un rsync cuando nos acordemos de hacer backup .

-rsync con un número de puerto diferente con el parámetro -e .

rsync -arx --delete –progress -e 'ssh -p 9999' /archivo_origen root@ipxxx:/archvo_destino

Un NAS en el cual volcar nuestras copias de seguridad también sería buena idea , con OMV distro basada en debian podríamos matar dos pájaros de un tiro :(pobres pajarillos ) al reciclar nuestros viejos discos para usarlos en modo raid 0+1 por ejemplo .

Hasta aquí el paseo por esta zona del espacio.

2 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax