CentOS 7

17 març 2015
Josep Ma Solanes 0

El temps passa i les distribucions de Linux també s’han d’actualitzar. En un primer moment havia pensat en modificar l’entrada de CentOS 6.5 amb les novetats de la nova versió. Però al final, he preferit mantenir les dues versions, ja sigui per comparativa i/o material de consulta.

El que trobareu en aquesta entrada és una guia pas a pas pel desplegament mínim d’un servidor basat en CentOS 7. No es tracta de carregar el servidor de tantes aplicacions com sigui possible, sinó més aviat al contrari, reduir la superfície d’atac al mínim. Aquest desplegament de CentOS servirà de base per la construcció de nous projectes, ja siguin Web, base de dades, monitoratge, etc…

El format surt una mica del guió habitual, donant per sabut què fan certs paràmetres de configuració a nivell de concepte.

L’objectiu final és disposar d’un servidor que ofereixi els serveis:

Vaja, que tindrem el què alguns anomenen un LAMP a la nostra mida.

 

Instal·lació de CentOS 7

Pel seu desplegament s’utilitza una màquina virtual sobre Microsoft Hyper-V. Tot i que els laboratoris es munten sobre la 2a generació de maquinari, és més adequat fer-ho sobre la 1a generació, per evitar els problemes d’arrancada segura. La màquina virtual està configurada amb un processador, 2 GB de memòria RAM i un disc dur de 20 GB.

La imatge ISO per la instal·lació us la podeu descarregar del lloc web de CentOS http://www.centos.org. Us recomano la versió de DVD. Abans d’engegar la màquina virtual, assegurar que disposa d’una unitat de DVD amb la imatge ISO carregada i, que aquest, és el primer dispositiu d’arrancada.

A l’arrencar mitjançant el DVD realitza les primeres comprovacions i carrega els binaris necessaris per l’aplicació d’instal·lació.

CentOS-7-01

Primera pantalla de benvinguda de CentOS. Seleccionar l’idioma pel procés de instal·lació. Personalment ho deixo en anglès per evitar problemes de traducció. Clicar el botó Continuar.

CentOS-7-02

Pantalla de selecció d’opcions de instal·lació. Tot i què el sistema operatiu s’instal·li en anglès, no deixa de poder aplicar la configuració regional i carregar altres idiomes. És en aquest punt que fem la selecció de l’idioma español com idioma secundari del sistema i principal pel teclat.

CentOS-7-03

Comencem pel final, clicar a Network & Hostname. Que ens permetrà identificar la màquina, assignar una configuració IP a la targeta de xarxa i potser el més important, activar-la per tenir connexió a l’exterior. Clicar el botó Configure per personalitzar la targeta de xarxa.

CentOS-7-11

Clicar la pestanya IPv4 settings. En el paràmetre method, indicar Manual. Clicar el botó Add per afegir una nova adreça IP, subxarxa i porta d’enllaç a la targeta de xarxa. A l’apartat DNS indicar el/s servidor/s corresponent/s, així com a l’apartat search domains, indicar el nom del domini de cerca.

A la pestanya IPv6 settings, si no s’utilitza, s’aconsella seleccionar ignorar la configuració IPv6 per evitar problemes de seguretat.

Clicar el botó Save per guardar les modificacions realitzades.

CentOS-7-12

Habilitar la targeta de xarxa amb el commutador ON-OFF. A l’apartat del hostname, especificar el nom que ha de tenir l’equip incloent el domini. Clicar el botó Done situat a la part superior esquerra per acceptar els canvis i tornar a la pàgina principal.

CentOS-7-11

Clicar l’opció Date & Time. Indicar la regió i ciutat per la configuració horària del sistema. A la part superior dreta, es permet realitzar una configuració automàtica. Aquesta configuració no la deixa activar si no tenim connexió a la xarxa. Clicar el botó Done.

CentOS-7-04

Clicar l’opció Keyboard per afegir, si ens cal, la distribució de teclat que correspongui. Clicar el botó + per afegir els nous llenguatges. Per exemple Spanish; Castilian.

CentOS-7-06

Els botons de fletxa amunt i fletxa avall permeten establir el teclat per defecte. Clicar el botó Done.

CentOS-7-07

Clicar l’opció Language Support per afegir idiomes addicionals al sistema, marcant els idiomes addicionals. Per exemple Español (Spanish). Quan tinguem tots els necessaris seleccionats, clicar el botó Done.

CentOS-7-08

Clicar l’opció Software Selection per seleccionar els paquets a instal·lar en el procés de instal·lació. La idea és fer una instal·lació neta i mínima per un servidor. Per tant, seleccionar l’opció Minimal Install i clicar el botó Done.

CentOS-7-09

Clicar l’opció Installation Destination per indicar en quin disc dur i quines particions ha de tenir per fer la instal·lació del CentOS. De moment ja està bé utilitzar les particions automàtiques que proposa, en tot cas, si ho considereu, podeu modificar-les segons les necessitats personals. Clicar el botó Done.

CentOS-7-10

Tot preparat per fer la instal·lació, clicar el botó Begin installation per continuar.

CentOS-7-13

Durant el procés de instal·lació se’ns permet establir la contrasenya a l’usuari root i crear nous usuaris. Clicar a Root Password per establir la contrasenya de root. Deixem la creació de nous usuaris per més endavant des de la consola del CentOS.

CentOS-7-14

Si la contrasenya és curta i no compleix les normatives mínimes de seguretat se’ns advertirà i haurem de clicar dos cops el botó Done per acceptar-la.

CentOS-7-15

Un cop acabada la instal·lació, clicar el botó Reboot per reiniciar ja des del disc dur. Recordeu-vos de treure/desmuntar el DVD i que l’equip / màquina virtual arranqui des del disc dur.

CentOS-7-17

 

Primers passos amb el CentOS

Un cop iniciat el sistema operatiu es queda en el prompt sol·licitant un usuari per accedir al sistema. Iniciar la sessió amb l’usuari root i la contrasenya que s’ha definit en el procés de instal·lació.

CentOS-7-18

Com tot bon sistema operatiu, el primer que toca és l’actualització a la data amb la comanda:

yum -y upgrade

Tampoc utilitzarem l’usuari root per a treballar amb normalitat, per això es crea un usuari de treball diari: l’operador. Per crear-lo i assignar-li una contrasenya s’utilitzen les comandes:

adduser operador
passwd operador

En la segona comanda haurem d’indicar dos cops la contrasenya per verificar-la. Perquè l’usuari pugui iniciar sessió i elevar privilegis, l’afegim al grup de seguretat wheel:

usermod -G wheel operador

Arribem a un tema delicat, el tallafocs. Personalment estic més acostumat a utilitzar IPTABLES que la nova implementació de CentOS amb FIREWALLD. Pel que prefereixo deshabilitar aquesta nova implementació i arrencar els serveis IPTABLES de tota la vida. Les comandes per fer-ho són:

systemctl stop firewalld
systemctl mask firewalld

Cal instal·lar els serveis de IPTABLES:

yum -y install iptables-services

I habilitar-los al sistema com a servei:

systemctl enable iptables
systemctl restart iptables

Un altre canvi que trobem és el desús de ifconfig a favor de ip addr. Ara per veure la configuració IP de les targetes de xarxa utilitzem la comanda:

ip addr sh

L’altre amic meu, el SELinux. Potser deixo de ser tant dràstic de desactivar-lo completament, però si el deixo en mode permissive per evitar bloquejos de les aplicacions. Recordar que per fer-ho, cal editar el fitxer /etc/selinux/config.

vi /etc/selinux/config

Modificar el paràmetre SELINUX=enforcing per SELINUX=permissive:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

 

Desplegant el servei web Apache en CentOS

Aquest apartat no varia massa respecte l’article de CentOS 6 que podeu repassar amb més deteniment. A grans trets:

Per la instal·lació del servei:

yum -y install httpd php php-mysql php-gd php-pear php-pgsql

Còpia de seguretat del fitxer de configuració d’Apache:

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.original

Crear un fitxer per definir els múltiples llocs web:

vi /etc/httpd/conf.d/vhosts.conf

Afegir al principi del fitxer els paràmetres per informar que s’allotgen múltiples dominis:

NameVirtualHost *:80
ServerName localhost

Creació dels directoris/llocs web virtuals. Especial atenció en els paràmetres d’accés de Directory, canvien amb la nova versió d’Apache. En les noves versions cal eliminar (o comentar) els antics paràmetres: order allow,deny i allow from all, substituïnt-los pel require all granted:

<VirtualHost *:80>
   ServerAdmin     webmaster@localdomain
   ServerName      localhost
   ServerAlias     www.llocweb1.com
   DocumentRoot    /srv/www/llocweb1/public_html
   ErrorLog        /srv/www/llocweb1/logs/error.log
   CustomLog       /srv/www/llocweb1/logs/access.log combined
   <Directory /srv/www/llocweb1/public_html>
      AllowOverride   All
      #Order          allow,deny
      #Allow from all
      Require all granted
   </Directory>
</VirtualHost>
<VirtualHost *:80>
   ServerAdmin     webmaster@localdomain
   ServerName      localhost
   ServerAlias     www.llocweb2.com
   DocumentRoot    /srv/www/llocweb2/public_html
   ErrorLog        /srv/www/llocweb2/logs/error.log
   CustomLog       /srv/www/llocweb2/logs/access.log combined
   <Directory /srv/www/llocweb2/public_html>
      AllowOverride   All
      #Order          allow,deny
      #Allow from all
      Require all granted
   </Directory>
</VirtualHost>

Creació dels directoris per allotjar els diferents llocs web:

mkdir -p /srv/www/llocweb1/public_html
mkdir /srv/www/llocweb1/logs
mkdir-p /srv/www/llocweb2/public_html
mkdir /srv/www/llocweb2/logs

Creació d’un grup de seguretat webmasters per establir els permisos adequats als llocs web, afegir l’usuari operador i apache dins el grup:

groupadd webmasters
usermod -a -G webmasters operador
usermod -a -G webmasters apache

Assignació de permisos a l’estructura de fitxers: propietari root o operador, grups: webmasters:

chown root:webmasters /srv/www -R

Assignació de permisos de lectura i escriptura i execució al propietari i grup, i lectura i execució a la resta:

chmod 775 /srv/www -R

Assegurar el fitxer de hosts que es resolen correctament els dominis virtuals creats:

vi /etc/hosts

Afegir si cal:

127.0.0.1   www.llocweb1.com
127.0.0.1   www.llocweb2.com

Comprovació de la configuració del servidor web:

httpd -S

Habilitar l’inici automàtic del servei web i inici del mateix:

systemctl enable httpd.service
systemctl restart httpd.service

Configuració del tallafocs IPTABLES per permetre l’accés pel port TCP 80 (http):

vi /etc/sysconfig/iptables

Afegir la línia:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Reiniciar el servei de IPTABLES per aplicar les modificacions:

systemctl restart iptables

Ja es pot provar la comunicació amb els dos llocs web, també comprovar que el PHP funciona correctament. Es pot crear un fitxer de proves: index.html a copiar a l’arrel dels dos llocs web:

<html>
   <head>
      <title>Lloc Web 1</title>
   </head>
   <body>
      <h1>Lloc Web 1</h1>
      <p>Configuració PHP:</p>
      <p>
         <?php
            phpinfo();
         ?>
      </p>
   </body>
</html>

 

Desplegant el servei MariaDB

MariaDB és el substitut de MySQL en aquesta versió de CentOS. Està basat en MySQL, pel que no es diferencia massa. El procés de instal·lació ve a ser el mateix:

yum -y install mariadb-server mariadb

S’habilita el servei MariaDB per arrancar a l’iniciar l’equip i s’inicia el servei per poder-lo acabar de configurar:

systemctl enable mariadb.service
systemctl start mariadb.service

Aplicar l’script de configuració de la base de dades:

/usr/bin/./mysql_secure_installation

L’assistent ens fa quatre preguntes per aplicar alguna que altra política de seguretat:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]
 - Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
 ... Failed!  Not critical, keep moving...
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Ja es pot provar la connexió a la base de dades:

mysql -u root -p

Executar una consulta per veure les bases de dades del servidor:

show databases;

Recordar que per poder connectar a les bases de dades des de fora del servidor cal obrir el port al tallafocs del CentOS:

vi /etc/sysconfig/iptables

Afegir la línia

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

Reiniciar el servei de IPTABLES per aplicar les modificacions:

systemctl restart iptables

Finalment, la combinació perfecte per poder gestionar les bases des d’un entorn web amigable: el phpMyAdmin. Simplement descarregar de la web oficial i descomprimir dins un directori del servidor Web. Sí, serveix el directori per defecte: /var/www/html. sempre que hi sigui operatiu el servei Web.

Perquè funcioni l’aplicatiu cal instal·lar aquests dos mòduls:

yum -y install php-mysqli php-mbstring

Reiniciar el servei d’Apache:

systemctl restart httpd.service

Provar d’accedir-hi amb el navegador:

 

Servei de SFTP

Tenim el servidor desplegat, però com li carreguem i descarreguem fitxers? Una de les alternatives és el servei FTP que a més, xifrarem la comunicació per donar-li un plus de seguretat. Per oferir el servei farem servir el VSFTP.

yum -y install vsftpd

Còpia de seguretat del fitxer de configuració original:

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.original

Editar el fitxer de configuració del servei vsftpd:

vi /etc/vsftpd/vsftpd.conf

Canviar els següents paràmetres per no permetre l’accés anònim:

anonymoys_enable=NO
chroot_local_user=YES
local_umask=002
allow_writeable_chroot=YES

I afegir al final del fitxer els nous paràmetres per xifrar la comunicació:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

I per acceptar les comunicacions FTP en mode passiu:

pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100

Creació del certificat a la part servidor. En el fitxer de configuració ja li hem indicat on anar a buscar aquest certificat, però encara no tenim creat ni el directori ni el certificat:

mkdir -p /etc/ssl/private

Crear el certificat que s’assigna al servei de FTP:

openssl req -x509 -nodes -days 365 -newkey 2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Introduir les dades personals que demana l’assistent per crear el certificat: País, província, nom, etc…

Pels que tingueu el SELinux habilitat, cal permetre l’accés dels usuaris a les seves carpetes personals. Executar:

setsebool -P ftp_home_dir on

Habilitar el tallafocs per permetre l’accés des de la xarxa:

vi /etc/sysconfig/iptables

Afegir la línia:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

Reiniciar el servei de IPTABLES per aplicar les modificacions:

systemctl restart iptables

Establir que el servei de FTP arranqui automàticament cada cop que s’iniciï el sistema i iniciar-lo:

systemctl enable vsftpd.service
systemctl restart vsftpd.service

Ja es poden crear els usuaris de sistema, sense accés per iniciar sessió de consola:

useradd -m ftpuser1 -s /sbin/nologin
passwd ftpuser1

En el cas dels serveis Web, podria interessar disposar d’un enllaç a la ubicació del servidor virtual a la carpeta personal de l’usuari de FTP. En aquest cas el creariem amb la següent instrucció:

ln -s /srv/www/llocweb1/ /home/ftpuser1/www

 

Servidor SAMBA o CIFS

L’altra alternativa per accedir al sistema de fitxers del servidor, en cas que el tinguem localment, és el servei de SAMBA. Què permet accedir a l’equip per la xarxa com si d’un equip Windows o Apple es tractés. L’avantatge de desplegar aquest servei localment és poder editar segons quins fitxers de configuració directament sense necessitat de carregar i descarregar pel servei de FTP.

Per instal·lar-lo:

yum -y install samba samba-client

Còpia de seguretat del fitxer original de configuració:

cp /etc/samba/smb.conf /etc/samba/smb.conf.original

Modificació del fitxer de configuració per “compartir” directoris addicionals, per exemple, el què conté els diferents llocs web:

vi /etc/samba/smb.conf

Afegir al final del fitxer el nou directori compartit (Webs) en què permet l’accés al grup webmasters i que enmascara els permisos a lectura, escriptura i execució pel propietari i el grup i permisos de lectura per la resta:

[webs]
        comment = Servidor Web Linux de desenvolupament
        path = /srv/www
        browseable = yes
        guest ok = no
        writable = yes
        admin users = operador
        valid users = +webmasters
        ;force user = root --> Aquest paràmetre no funciona amb les noves versions.
        force group = webmasters
        create mask = 0774
        directory mode = 0775
        force create mode = 0775
        force directory mode = 0775

Carregar el mòdul de CIFS al sistema operatiu CentOS:

modprobe cifs

Configurar el servei perquè arranqui automàticament a l’iniciar el sistema operatiu i l’arrenquem per primer cop:

systemctl enable smb.service
systemctl restart smb.service

Habilitar el tallafocs per permetre l’accés des de la xarxa:

vi /etc/sysconfig/iptables

Afegir les línies:

-A INPUT -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT

Reiniciar el servei de IPTABLES per aplicar les modificacions:

systemctl restart iptables

Habilitar els usuaris de Linux al SAMBA i assignar les contrasenyes, per exemple, amb l’usuari operador:

smbpasswd -a operador

Ja es pot provar la connexió des d’un equip de la xarxa al servidor Linux. Demanarà un nom d’usuari i contrasenya, recordar que ha d’estar enllaçat amb el servei SAMBA, no serveix tenir-lo creat únicament al sistema Linux.

 

T’ha agradat l’article? El pots compartir a les xarxes socials. També pots deixar la teva opinió, comentari o suggeriment. Gràcies!

Similar Posts by The Author: