martes, 15 de octubre de 2019

Servidor OpenSuSE en modo consola

                               (P) Hugo Napoli, 2019                              

Imagen: https://www.networkworld.com/article/3334781/suse-releases-enterprise-linux-for-all-major-arm-processors.html

Esta instalación fue concebida para una máquina portátil convencional, de prestaciones básicas.
También fue muy importante que el tiempo invertido en la concreción de este proyecto no fuera excesivamente "largo".
La idea, es presentar una guía rápida y útil, y a su vez, también rápidamente, poner un servidor Linux a funcionar, sin mucho trámite ni burocracia.
Para la preparación de un servidor de mayor "potencia", habría que hacerle un montón de ajustes a este artículo, o bien, escribir otro, únicamente para ello.

Hemos tenido en cuenta a aquellos procedimientos que representan un trabajo muy tedioso al ser realiozados desde la consola, y para alivianar la carga laboral, los realizaremos sirviéndonos del entorno gráfico que facilita OpenSuSE durante la fase de instalación.

Es importante aprovechar el entorno gráfico, sin desmerecer al resto de las herramientas disponibles. Luego, todo se reducirá a una pantalla negra y un teclado.

Dejaremos para después, entonces, únicamente aquello que sea más o menos sencillo de realizar en modo consola.


Parte I/III: preparación de OpenSuSE.

                  MODO "GRÁFICO"                 

Particionado.

Considerando que el servidor poseerá una partición especialmente dedicada a datos (fuera de "home"), reduciremos el tamaño de home a un mínimo aceptable, cuando en realidad debería ser mucho más grande en una instalación estandarizada.

Tamaños para las particiones:

boot:  512 MB,
root:  20 GB,
tmp:   10 GB,
swap:  4 GB (o igual de "grande" que la cantidad de memoria RAM instalada en el equipo),
home:  8 GB,
datos: todo el espacio restante libre.

La partición "datos", deberá ir montada en "/datos", con la opción "el usuario puede montar la partición".


Arranque.


Marcaremos la opción en Grub2 acerca de proteger con contraseña el cargador de arranque (es recomendable utilizar una contraseña diferente a la del usuario root, para aumentar la seguridad del sistema).
Si este paso no se realiza en este momento (durante la instalación), será bastante difícil llevarlo a cabo después, puesto que no habrá escritorio ni ventanas en donde hacer clic, buscar información, etc.

Desmarcaremos la opción de "buscar sistemas operativos foráneos", ya que OpenSuSE será el único en este ordenador.

Repositorios.


Repositorios no oficiales y no open source se han desestimado.
Por consiguiente, únicamente se han utilizado los dos oficiales y de código abierto (no packman, ni libdvdcss, ni ningún otro).


Puertos y servicios.


Puerto y servicio SSH: abiertos

Red.

Podemos configurar la IP estática del servidor durante esta fase, así también como el encaminamiento y los distintos atributos del nombre de "host", pero lo explicaremos breve y detalladamente más abajo, en "modo consola".

Software adicional.

Marcar para instalar mysql-workbench
Los servicios más utilizados, probablemente sean samba y este que acabamos de citar.

Finalizar la instalación.


                  MODO "CONSOLA"                 

          Iniciar sesión como usuario root antes de proseguir         

Más ajustes en el cargador de arranque.

Reducción del tiempo de espera para la carga del sistema.

El tiempo "por omisión" del cargador de arranque (Grub) en OpenSuSE es de 8 segundos.
Durante este tiempo (y si no se pulsa Enter) Grub espera a que el usuario pulse la tecla "e" para pasarle parámetros de inicio al sistema.
Esto puede ser útil una vez cada cierto tiempo, o bien puede no ser necesario en absoluto.
Lo cierto, es que no es útil para el día a día, por lo tanto, lo reduciremos a 1 segundo.
A partir de ahora, si alguien necesita pasarle parámetros a Grub, será mejor que se preocupe por estar muy atento a la pantalla de arranque.

Escribiremos, entonces:

nano /etc/default/grub (y daremos "Enter")

Cambiaremos GRUB_TIMEOUT=8 por GRUB_TIMEOUT=1

CTRL + O y ENTER para confirmar los cambios y guardar, y
CTRL + X para finalizar la edición del archivo de arranque.

No buscar sistemas operativos foráneos.

Cuando hay más de 1 sistema instalado en la misma máquina, es correcto mantener esta configuración tal como viene por omisión, pero, tratándose de la búsqueda de la reducción máxima de los tiempos de arranque del servidor, cambiaremos la línear GRUB_DISABLE_OS_PROBER="false" por GRUB_DISABLE_OS_PROBER="true"
Con esto, nos aseguraremos que OpenSuSE será el único sistema que Grub "verá"; por lo tanto, no "perderá tiempo" buscando a otros.

Adicional.

Se puede emitir un pitido al iniciarse Grub (muy recomendable para máquinas que no van a tener conectado un monitor para poder comprobar visualmente su estado), activando la línea GRUB_INIT_TUNE="480 440 1".
Para ello, simplemente debemos quitarle (a dicha línea) el símbolo # (y posiblemente el espacio) que la misma posee al inicio.

Al finalizar con estos cambios, debemos escribir en la consola lo siguiente:

grub2-mkconfig -o /boot/grub2/grub.cfg

Pulsaremos "Enter", entonces, para terminar de reconfigurar Grub.

Creación de usuarios del sistema.

Se puede crear un usuario, darle nombre, directorios personales y descripción, todo en una sola línea.
El comando necesario para ello, es "useradd". Los parámetros "-m" y "-d", hacen que el usuario sea creado con directorio home incluido (y, por consecuencia, con sus directorios personales "Descargas", "Documentos", Escritorio", "Imágenes", etc.). A la misma línea, puede agregársele un comentario (atributo --comment), el cual será el "nombre fantasía" del usuario en cuestión.
Así se escribe:

useradd -m -d /home/estudiante estudiante --comment "Estudiante Liceo IEP"

Inmediatamente, habrá que establecer una contraseña para el inicio de sesión en OpenSuSE, y para ello, ejecutaremos lo siguiente:

passwd estudiante

Crearemos, de este modo, todos los usuarios de sistema que sean necesarios.

Al finalizar, será necesario registrar la contraseña de cada usuario del sistema en Samba, para permitir a los usuarios del sistema conectarse con equipos de la intranet (o red a la cual ya estén conectados), o a equipos "remotos" (hacia y desde Internet).

Para esto, escribiremos lo siguiente y pulsaremos "Enter":

smbpasswd -a estudiante

Y así haremos con todos los usuarios del sistema (OpenSuSE) que queramos que posean las capacidades que acabamos de comentar, es decir, que puedan conectarse desde y hacia otras máquinas (Samba), ya sean estas "cercanas" o "remotas".

Dar nombre al equipo.

En Linux, el "nombre de host" o "nombre de equipo", puede poseer más de una denominación.
Lo que generalmente se considera, es el "host name" (o "static name"), pero existen también el "pretty name", el "icon name" (o "transient name") y otros.

El "host name", es el clásico "nombre de red" del equipo: es el nombre por el cual la máquina será identificada en la red.

hostnamectl set-hostname "servidor-linux" --static

El "pretty name" es mas bien la descripción del equipo, es decir, una idea del uso que se le da a ese ordenador (o del tipo de trabajo que en él se desempeña), expresada en pocas palabras.

hostnamectl set-hostname "Máquina del proyecto ITEX" --pretty

El "icon name" es el nombre de... no sé, pero existe XD
Generalmente, se utiliza para indicar el tipo de computadora, por ejemplo: servidor de datos, servidor http, servidor dhcp, máquina de escritorio, etc.
También, generalmente, no se dejan espacios al crear este nombre. Los mismos se sustituyen por guiones (signos de "menos").

hostnamectl set-icon-name "servidor-local-de-datos"

Para ver los cambios (o para consultar todos los nombres de un equipo), podemos ejecutar el comando:

hostnamectl



Conectar a través de la terminal a redes inalámbricas.

A través del servicio wicked (el que ya se está ejecutando en OpenSuSE):

* * * PROCESO PENDIENTE * * *

A través de Gnome Network Manager:

nmcli d wifi connect <SSID> password <CONTRASEÑA> iface <INTERFAZ_DE_RED>

Dar IP estática al equipo.

Para ver las conexiones físicas de red (es decir: ver con qué nombres lógicos OpenSuSE identifica a las conexiones físicas), ejecutaremos:

ip link show (o ip link)

Con esto, obtendremos algo parecido a lo que aparece aquí:


lo = loopback.

El dispositivo de red loopback es una interfaz de red virtual. La (...) dirección (...) [que] se utiliza, de forma mayoritaria, [es] la '127.0.0.1' (...), [añadiéndose] '::1' para el caso de IPv6 ('127.0.0.1::1').
Las direcciones de loopback pueden ser redefinidas (...), y son usualmente utilizadas para probar la capacidad de la tarjeta interna [y ver] si se están enviando datos BGP [Border Gateway Protocol]. 
[BGP] es un protocolo mediante el cual se intercambia información de encaminamiento entre sistemas autónomos. (...) Los proveedores de servicio registrados en Internet [,] suelen componerse de varios sistemas (...) [de este tipo].

Texto tomado de Wikipedia, con modificaciones del autor del post.

eth0 = ethernet 0

Conexión física tipo "RJ45" (cableada común).

wlan0 = wireless lan 0

Conexión física tipo "wifi" (inalámbrica común).

Una vez que sepamos a qué dispositivo (lo, eth0, wlan0, etc.) queremos asignarle una dirección IP fija, ejecutaremos:

ip addr add xxx.xxx.xxx.xxx/yy dev zzz

Siendo:

xxx.xxx.xxx.xxx = bits de la dirección de red, tales como 192.168.6.100

yy equivale a la máscara de red, y normalmente es "/24" (por "8 x 3 = 24"), lo cual equivale a los 3 primeros bit "encendidos" (en 255) y el último "apagado" (en 0): 255.255.255.0.

zzz es uno de los nombres que aparece cuando ejecutamos ip link show, y responde al dispositivo físico con el cual queremos trabajar.

Ejemplo general:

ip addr add 192.168.6.100/24 dev eth0

Luego de esto, habrá que apagar y encender la conexión de red, a los efectos de actualizarla:

ip link set eth0 down
ip link set eth0 up

Para visualizar esta información y comprobar que todo está bien, podemos ejecutar:


ip addr show zzz

Ejemplo:

ip addr show eth0

También es útil el comando ip route para esto mismo.

Habilitar e iniciar demonios Samba y NetBios.

Generalmente, los protocolos "Server Message Block" (smb) y "NetBios Message Block" (nmb), no están habilitados al inicio del sistema (y por consiguiente, tampoco están encendidos).

Lo que debemos hacer, es correr los siguientes comandos, para habilitarlos:

systemctl enable smb
systemctl enable nmb

Ahora que están habilitados, hay que encenderlos:

systemctl start smb
systemctl start nmb

Para comprobar el estado de actividad de ambos protocolos:

service smb status
service nmb status

Imagen de salida de consola de los comandos "service smb status" y "service nmb status", en un equipo al cual no se le habían habilitado ni activado los protocolos smb y nmb previamente:


Imagen de salida de consola de los comandos "service smb status" y "service nmb status", en un equipo al cual se le acaban de habilitar (pero no de activar) los protocolos smb y nmb:


Imagen de salida de consola de los comandos "service smb status" y "service nmb status", en un equipo al cual se le acaban de habilitar y activar los protocolos smb y nmb. Ahora sí, el sistema está listo para comenzar a actuar como servidor de datos:



Parte II/III: preparación de Samba y NFS.

Creación y preparación de directorios.

Anteriormente, habíamos creado un directorio en el directorio raíz del sistema:

/datos

Algo bien importante es tener en claro que los permisos de acceso debería otorgarlos samba, según la información dentro de "smb.conf", no el sistema (OpenSuSE).
Imaginemos los casos siguientes:

Linux permite acceder a /datos, pero Samba no. Resultado: fracaso.
Linux no permite acceder a /datos, pero Samba sí. Resultado: fracaso.
Linux permite acceder a /datos, y Samba también. Resultado: éxito.
Evidentemente, quien obligatoriamente debe permitir el acceso es Samba, ya que los equipos que se conectarán al servidor, lo harán a traves de su protocolo.
Se pueden establecer credenciales de acceso a través de permisos de Linux y Samba, conjuntamente, pero eso implicaría un trabajo más pormenorizado que tendría que ver con la asignación de permisos diversos (lectura, ejecución, escritura) por usuario y por grupo en Linux, que no veremos en este artículo.
Por consiguiente, dejaremos "via libre" (en Linux) al directorio "/datos", y controlaremos su acceso únicamente a través de Samba, solo por temas de practicidad.

Como solamente el usuario "root" puede escribir en el mencionado directorio, haremos:

chmod 777 /datos

chmod = change mode.

Luego de esto, crearemos los directorios "00_info" y "datos_de_usuario", dentro de /datos:

cd /datos
md 00_info
md datos_de_usuario

cd = change directory.
md = make directory.

De nuevo, daremos via libre (en Linux) a los directorios recientemente creados, para que Samba controle totalmente el acceso al mismo:

chmod 777 00_info
chmod 777 datos_de_usuario


Respaldo y modificación del archivo Samba.

Conviene -siempre antes de manipular un archivo esencial para el sistema- realizar una copia del mismo (con otro nombre, lógicamente).
Haremos una copia, entonces, de "smb.conf", y la llamaremos "smbANT.conf":

cd /etc/samba
cp smb.conf smb_ANT.conf

cp = copy

Ahora que estamos trabajando sobre seguro, utilizaremos el editor "nano" para editar el archivo Samba:

nano smb.conf

Traduciremos los encabezados al español.

Cambiaremos [homes] por [directorios_home].

Cambiaremos [profiles] por [perfiles], y así con todos los encabezados.
Luego, continuamos con la primera línea de cada encabezado:

workgroup = WORKGROUP, por workgroup = aula (puede ser cualquier palabra, no precisamente debe ser "aula").
comment = Home Directories, por comment = Directorios 'home'.
comment = All users, por comment = Usuarios, y así con todas las líneas "comment" que haya.


Al final de todo, agregaremos:

[00_info]
          comment = Reglamentación e información del uso del servidor.
          path = /datos/00_info
          readonly = yes
          valid users = root,estudiante,sololectura

[datos_de_usuario]
          comment = Directorio de datos del servidor OpenSuSE Linux.
          path = /datos/datos_de_usuario
          readonly =no
          valid users = root,estudiante,sololectura

CTRL + O     ENTER
CTRL + X

Ahora es momento de ejecutar systemctl restart nmb (reinicio de NetBios), puesto que hemos alterado información en el encabezado [global] y hay que informárselo a toda la intranet (o a la red).

debido a que todos los demás encabezados también han sido editados, también debemos ejecutar systemctl restart smb para el reinicio de Samba. 

Ahora, pondremos un archivo de texto dentro del directorio 00_info (opcional).

cd /datos/00_info

Con "echo" escribiremos cada línea, y con ">>" nos aseguraremos de que lo que previamente existía en el archivo, no sea borrado por lo que estemos escribiendo a continuación.

Ejemplos.

I

echo "Hola." > info.txt
echo "¿Qué tal?" > info.txt

Resultado:

El archivo "info.txt" posee el contenido "¿Qué tal?", el cual sobreescribió (y por lo tanto, borró) al contenido "Hola." que existía previamente. ">", implica "sustituír".

II

echo "Hola." >> info.txt
echo "¿Qué tal?" >> info.txt

Resultado:

El archivo "info.txt" posee el contenido

Hola.
¿Qué tal?

Esto es así, porque el indicador ">>" implica "agregar".

Para crear un archivo con varias líneas de texto dentro, escribiremos cada una de las líneas siguientes, pulsando ENTER al final de cada una de ellas.


echo "Reglamentación e información importante." >> info.txt
echo "---------------------------------------- >>" info.txt
echo "Al utilizar este servidor de datos, ud se compromete a no alojar archivos" >> info.txt
echo "que no sean de trabajo, tales como películas, álbumes musicales, respaldos" >> info.txt
echo "personales, etc." >> info.txt
echo "Ud. también entiende que este es un servicio que no posee garantía, ya que" >> info.txt
echo "se brinda únicamente para la seguridad y flexibilidad del usuario." >> info.txt
echo "La no lectura de este documento, no es causa para que se efectúen reclamos" >> info.txt
echo "por falta del servicio, pérdida o alteración de datos, etc." >> info.txt
echo "Por otra parte, le aseguramos que mantendremos en condiciones el servidor." >> info.txt
echo "Al mismo, se le realizarán tareas de mantenimiento y respaldo de la información," >> info.txt
echo "de ser posible. Se lo protegerá de ataques externos, pero no del mal uso" >> info.txt
echo "de los usuarios habilitados." >> info.txt
echo "Disfrute a Linux. Sea bienvenido, and have a lot of fun!" >> info.txt





Parte III/III: configuración del cortafuegos.

Cortafuegos o firewall.


Habilitar e inhabilitar el cortafuegos.

systemctl enable firewalld
systemctl disable firewalld

Iniciar y detener el cortafuegos.

systemctl start firewalld
systemctl stop firewalld



Algunos comandos más a tener en cuenta.

init 6: reiniciar equipo
init 0: apagar el equipo

Este artículo está dedicado al grupo de 3er. año de Informática (egreso 2019) de Liceo IEP.

1era. actualización: 22/10/2019.
2a. actualización: 24/10/2019.
3a. actualización: 28/10/2019.



Fuentes consultadas:

Centro Linux

https://cubiclenate.com/linux/system-configuration/simple-samba-setup/

https://www.freedesktop.org/software/systemd/man/hostnamectl.html

https://doc.opensuse.org/documentation/leap/reference/html/book.opensuse.reference/cha.grub2.html

https://unix.stackexchange.com/questions/422104/make-grub-boot-on-default-without-waiting

https://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-samba-daemons.html

https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant

https://www.initpals.com/suse/how-to-enable-or-disable-firewall-in-sles-15/

https://upcloud.com/community/tutorials/troubleshoot-network-connectivity-linux-server/

https://www.tecmint.com/linux-networking-commands/

https://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-samba-servers.html

https://www.sergio-gonzalez.com/doc/10-ldap-samba-cups-pykota/html/samba-configuracion-estructura-smb.conf.html

https://es.wikipedia.org/wiki/Loopback

https://es.wikipedia.org/wiki/Border_Gateway_Protocol

https://www.howtogeek.com/177621/the-beginners-guide-to-iptables-the-linux-firewall/



No hay comentarios.:

Publicar un comentario