MySQL Server Installatie Automatiseren

Ik moest onlangs voor school een MySQL server installeren in een VM. Omdat een mysql server installatie
een interactieve prompt gebruikt voor de `mysql_secure_installation` ben ik op zoek gegaan naar een alternatieve
manier om dezelfde stappen te kunnen doen in een shellscript, om zo de installatie te automatiseren.

Het root wachtwoord kan ingesteld worden met `mysqladmin password “password”`, de overige opties kunnen uitgevoerd
worden met SQL queries:

– Anonieme gebruikers verwijderen:
“`sql
delete from mysql.user where user=”;
“`
– Test databases verwijderen:
“`sql
drop database if exists test;
delete from mysql.db where Db=’test’ or DB=’test\\_%’;
“`

Hieronder het gehele script, alsook extra regels die een extra superuser ‘admin’ aanmaken en mysql doen luisteren op all ip’s.

#!/bin/bash
# Dit script automatiseerd de installatie van een MySQL server op een Ubuntu Server
# Voor vragen/hulp mail vincent@vincentlammens.be
#
# Getest op Ubuntu 20.04
#
# 1. Installatie van de software
# ------------------------------
# Eerst moeten we de benodigde software installeren. In dit geval is het enkel het pakket
# 'mysql-server' dat we moeten installeren.
sudo apt update;
sudo apt install mysql-server -y;

# 2. MySQL Secure Installation
# ----------------------------
# De eerste stap is om MySQL veilig in te stellen. Hiervoor word normaal gebruik gemaakt van
# 'mysql_secure_installation'. Echter kan dit ook op een non-interactieve manier waarmee het te
# automatiseren is in een script
# zie: https://vincentlammens.be/blog/2021/02/23/mysql-server-installatie-automatiseren/
# !! NOOT:
# Hiermee word het root wachtwoord op 'root' gezet, en een extra superuser 'admin' gemaakt met
# wachtwoord 'admin'. Dit is niet veilig. Idealieter word dit vervangen door een veiliger
# wachtwoord, of een random gegenereerd wachtwoord.
sudo mysqladmin password "root";
sudo mysql --user=root <<EOF
delete from mysql.user where user='';
drop database if exists test;
delete from mysql.db where Db='test' or DB='test\\_%';
flush privileges;
create user 'admin'@'%' identified by 'admin';
grant all privileges on *.* to 'admin'@'%' with grant option;
flush privileges;
EOF

# 3. MySQL laten luisteren op alle ip's
# -------------------------------------
# Standaard luisterd MySQL server enkel op localhost. Hiervoor moet het bind-address ip veranderd
# worden van '127.0.0.1' naar '0.0.0.0'. Dit kunnen we automatiseren met het programma 'sed'.
sudo sed -i "s/.*bind-address.*/bind-address=0.0.0.0/" /etc/mysql/mysql.conf.d/mysqld.cnf
#restart mysql
sudo service mysql restart

Apache Authenticatie op verschillende manieren

In deze tutorial leg ik uit hoe je op verschillende manieren de toegang tot een website beperkt met apache. Dit kan op enkele manieren: ip-gebaseerd, of uit een bestand, of door middel van een database.

Toegang beperken per IP

Er zijn verschillende manieren, de makkelijkste is om het per IP te beperken. Zo kan je bijvoorbeeld de toegang tot je site beperken tot de ip’s van de developers bijvoorbeeld.

Om dit te doen maak je een bestandje in jouw website aan met de naam `.htaccess`. Zet je dit in een bepaalde map, dan word de toegang tot enkel die map beperkt.

Het stukje hieronder laat enkel gebruikers toe met het IP 12.34.56.78. Wil je meer ip’s toegang geven, dan kan je ze er gewoon aan toe voegen, gesplitst met een spatie.

<RequireAll>
Require all denied
Require ip 12.34.56.78
</RequireAll>

Ook het omgekeerde is mogenlijk, bijvoorbeeld een bepaald IP de toegang beperken.

<RequireAll>
Require all granted
Require not ip 78.65.43.21
</RequireAll>

Ook hier kan je gewoon ip’s toevoegen gesplitst met een spatie.

Toegang beperken met een wachtwoord

Eerst moet je een gebruiker & wachtwoord maken. Hiervoor moet je het linux commando `htpasswd` gebruiken

“`s
htpasswd -cB .htpasswd gebruikersnaam
“`

Dit zal je om een wachtwoord vragen en het in het bestand `.htaccess` zetten. om een 2e gebruiker toe te voegen kan je enkel `htpasswd -B .htpasswd gebruiker2` gebruiken, de `-c` vlag maakt namelijk een nieuw bestand aan.

Om dit te doen maak je een bestandje in jouw website aan met de naam `.htaccess`. Zet je dit in een bepaalde map, dan word de toegang tot enkel die map beperkt, je zet er het volgende in:

AuthName "Beveiligd gedeelte" 
AuthUserFile /pad/naar/.htpasswd 
AuthGroupFile /dev/null 
AuthType Basic 
require valid-user

Je moet uiteraard het pad vervangen naar het pad naar het htpasswd bestand.

Als je hierna de site bezoekt zal je gevraagd worden om een gebruikersnaam & wachtwoord in te geven.

 

Alma Linux Beta (RHEL) Installeren

Eind vorig jaar kondigde Centos aan dat ze de focus gingen leggen naar CentOS Steam, een Rolling release die gebruikt word als development branch voor de RedHat Distributie. Hierbij werd ook de ondersteuning voor CentOS 8 verkort, en zal eind dit jaar geen support meer krijgen. Er zijn een aantal alternatieven gekomen, waaronder Alma Linux. Alma Linux word gemaakt door de makers van CloudLinux, en is volledig Open Source. In deze Tutorial leg ik uit hoe je AlmaLinux installeert

Lees verder