CentOS 7
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:
- Web operatiu amb Apache que permeti allotjar varis llocs web amb suport pel llenguatge PHP. (Accés directe al servei Web).
- Base de dades basat en MariaDB i gestionat mitjançant el phpMyAdmin. (Accés directe a la base de dades).
- SFTP per carregar i descarregar fitxers del servidor de forma segura. (Accés directe al servei SFTP).
- Fitxers SAMBA per la connexió amb xarxes basades en Microsoft Windows i Apple. (Accés directe al servei SAMBA).
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ó.
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.
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.
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.
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.
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.
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.
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.
Els botons de fletxa amunt i fletxa avall permeten establir el teclat per defecte. Clicar el botó Done.
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.
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.
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.
Tot preparat per fer la instal·lació, clicar el botó Begin installation per continuar.
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.
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.
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.
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ó.
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:
- Microsoft SQL Server con SMB3
- Microsoft SQL Server amb SMB3
- Containers en Linux
- Containers amb Linux
- Migrar el servidor de archivos a Windows Server 2019
- Migrar el servidor de fitxers a Windows Server 2019
- Puerta enlace a Azure en el Windows Admin Center
- Porta enllaç a Azure en el Windows Admin Center
- Hola mundo! WordPress 5 y Gutenberg
- Hola món! WordPress 5 i Gutenberg