Instal·lar LAMP a Debian 9

Instal·lar serveis

Apache:

# apt install apache2 apache2-mod-php7.0 ssl-cert

PHP:

# apt install php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-gd php7.0-opcache

MariaDB:

# apt install mariadb-client mariadb-server

Phpmyadmin:

# apt install phpmyadmin

Configuracions

Assegurem la instal·lació de MariaDB:

# mysql_secure_installation

És ben lògic què cal respondre a les preguntes.

Donem accés total a l’usuari phpmyadmin:

# mysql -u root -p
> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
> FLUSH PRIVILEGES;

I fet.

Configuració d’etckeeper amb push a Gitlab

etckeeper és un conjunt d’eines que et permeten mantenir un repositori git de /etc.

Instal·lació d’etckeeper

Instal·lem etckeeper:

$ sudo apt install etckeeper

Editem el fitxer de configuració:

$ sudo nano /etc/etckeeper/etckeeper.conf

Aquí ens hem d’assegurar que el VCS sigui git. I que el paràmetre PUSH_REMOTE sigui “origin”.

Generalment s’inicialitza en instal·lar, però per si de cas:

$ cd /etc
$ sudo etckeeper init

Amb això es crea el directori /etc/.git i el fitxer /etc/.gitignore.

Configuració de la clau SSH

Generem una clau:

Seguim el tutorial de Gitlab per generar i afegir claus: https://gitlab.com/help/ssh/README

Editem ~/.ssh/config:

Host gitlab.com
    HostName gitlab.com
    User git
    IdentityFile /home/usuari/keys/git.key

Per afegir la clau al ssh-agent i que ens duri tota la sessió editem ~/.bash_profile:

if [ -z "$SSH_AUTH_SOCK" ] ; then
  eval `ssh-agent -s`
  ssh-add /home/usuari/keys/git.key
fi

Si ens segueix fent mandra posar-la cada cop que iniciem podem crear una clau sense passphrase. Personalment prefereixo no utilitzar el .bash_profile i configurar /root/.ssh/config (només entorns amb un administrador).

Commit i push

Afegim el repositori remot:

$ sudo git remote add origin git@gitlab.com:REPO

Fem un commit:

$ sudo etckeeper commit "Initial commit."

Fem push:

$ sudo -E git push -u origin master # Utilitzo -E per tal de mantenir les variables d’entorn.

A partir d’ara l’etckeeper farà els push automàticament 1 cop al dia i cada cop que es modifiquin paquets.
Si volem fer-ho manualment:

$ sudo -E etckeeper commit “Comentari”

 

Instal·lar i configurar logwatch

El logwatch és una eina que permet analitzar els logs i enviar una còpia més simple a l’administrador.

Instal·lem el paquet:

# apt install logwatch

Per configurar-lo editem /usr/share/logwatch/default.conf/logwatch.conf:

MailTo = correu@exemple.com
MailFrom = logwatch@exemple.com
Range = yesterday
Detail = Med

Per defecte tots els serveis venen activats:

Service = All

Si en volem només alguns de concrets hem de comentar aquesta línia i fer una llista:

Service = http
Service = sshd2
Service = sudo

Si volem desactivar els informes diaris descomentem;

# DailyReport = No

I si volem executar-lo manualment:

$ logwatch --detail Med --mailto correu@exemple.com --service sudo --range today

Instal·lació i configuració d’un servidor FTPS

Com configurar un servidor FTPS amb vsftpd a Debian.

Els certificats que s’utilitzen són verificats per Let’s Encrypt (veure entrada).

Recomanacions prèvies:

Instal·lem els paquets:

$ sudo apt-get install vsftpd openssl

Editem el fitxer de configuració:

$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
$ sudo nano /etc/vsftpd.conf

En el meu cas queda així:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=It's bigger on the inside!
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd_user_conf
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd

Amb aquesta configuració tenim que tots els usuaris queden fixats al seu home, excepte els que posem al fitxer /etc/vsftpd.chroot_list.
La línia user_config_dir=/etc/vsftpd_user_conf ens serveix per tenir configuracions especifiques per cada usuari, en aquest cas el local_root.

Afegim usuaris al vsftpd.chroot_list (un usuari per línia):

$ sudo nano /etc/vsftpd.chroot_list

Afegim configuracions personals d’usuari:

$ sudo mkdir /etc/vsftpd_user_conf
$ cd /etc/vsftpd_user_conf
$ sudo nano <usuari>

Hi posem la línia:

local_root=<directori>

Habilitem l’usuari root:
No és una opció recomanable, però es pot fer. Editem el següent fitxer i comentem la línia root.

$ sudo nano /etc/ftpusers

Reiniciem el servei:

$ sudo /etc/init.d/vsftpd restart

Configuració del TLS

Editem el fitxer de configuració:

$ sudo nano /etc/vsftpd.conf

Afegim:

# Turn on SSL
ssl_enable=YES

# Allow anonymous SSL connections
allow_anon_ssl=NO

# All non-anonymous logins are forced to use a secure SSL connection in order to
# send and receive data on data connections.
force_local_data_ssl=YES

# All non-anonymous logins are forced to use a secure SSL connection in order to send the password.
force_local_logins_ssl=YES

# Permit TLS v1 protocol connections. TLS v1 connections are preferred
ssl_tlsv1=YES

# Permit SSL v2 protocol connections. TLS v1 connections are preferred
ssl_sslv2=NO

# Permit SSL v3 protocol connections. TLS v1 connections are preferred
ssl_sslv3=NO

# Disable SSL session reuse (required by WinSCP)
require_ssl_reuse=NO

# Select which SSL ciphers vsftpd will allow for encrypted SSL connections (required by FileZilla)
ssl_ciphers=HIGH

# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/letsencrypt/live/aniolmarti.cat/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/aniolmarti.cat/privkey.pem

Reiniciem el servei:

$ sudo /etc/init.d/vsftpd restart

Configuració del mode passiu

Editem el fitxer de configuració:

$ sudo nano /etc/vsftpd.conf

Afegim les línies:

pasv_enable=YES
pasv_max_port=10100
pasv_min_port=10090

Reiniciem el servei:

$ sudo /etc/init.d/vsftpd restart

Fitxer final

# Basic configuration
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=It's bigger on the inside!
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd_user_conf
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd

# Turn on SSL
ssl_enable=YES

# Allow anonymous SSL connections
allow_anon_ssl=NO

# All non-anonymous logins are forced to use a secure SSL connection in order to
# send and receive data on data connections.
force_local_data_ssl=YES

# All non-anonymous logins are forced to use a secure SSL connection in order to send the password.
force_local_logins_ssl=YES

# Permit TLS v1 protocol connections. TLS v1 connections are preferred
ssl_tlsv1=YES

# Permit SSL v2 protocol connections. TLS v1 connections are preferred
ssl_sslv2=NO

# permit SSL v3 protocol connections. TLS v1 connections are preferred
ssl_sslv3=NO

# Disable SSL session reuse (required by WinSCP)
require_ssl_reuse=NO

# Select which SSL ciphers vsftpd will allow for encrypted SSL connections (required by FileZilla)
ssl_ciphers=HIGH

# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/letsencrypt/live/aniolmarti.cat/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/aniolmarti.cat/privkey.pem

Configurar client Filezilla

Tot aquest procés es pot fer executant aquest script que tinc al Github: https://github.com/xaldiks/debian-autosetup