Home

 

Server::Configureren

Naar index

Tools en Hulpprogramma's

Voor het configureren en beheren van de Ubuntu Server staan ons diverse tools en hulpmiddelen ter beschikking zoals, puTTY, Webmin en APT

puTTY

Ubuntu Server heeft geen grafische console voor het beheer van de server.
Voor veel applicaties is verdere configuratie alleen mogelijk aan de shell prompt met Bash.
puTTY is een vrije telnet- en SSH-client en hiervoor uitstekend geschikt. Het is software waarmee een verbinding gemaakt wordt met een andere computer, meestal zijn dit servers met een op UNIX gebaseerd besturingssysteem. puTTY is een vervanging voor een terminal (ook wel Teletype, TTY genoemd), een domme machine die voor de introductie van de Personal Computer, gebruikt werd om te verbinden met een server.

De verbinding tussen de terminalsoftware en de server verloopt via het SSH-protocol, dat als de veilige opvolger wordt gezien van het verouderde telnetprotocol.
puTTY is te downloaden van http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

puTTY heeft geen installatieprogramma, het bestaat uit één .exe bestand en kan overal op de harde schijf neergezet worden.
Geef bij hostname het IP adres van de ClearOS server en accepteer de voorgestelde poort 22 voor SSH en selecteer het SSH protocol. Er zijn diverse configuratie schermen om de applicatie naar eigen wens op te zetten.
De configuratie kan op naam opgeslagen worden, zodat bij het opstarten het inlogscherm geopend wordt. Maak hiervoor een desktop icon met de link : "C:\Program Files\Putty\putty.exe" -load "<naam>", waarbij <naam> vervangen wordt door de naam waaronder de configuratie opgeslagen is.

Als puTTY op de desktop geopend is kan door rechts-klikken op de bovenbalk een contextmenu geopend worden met speciale opties en voor aanpassen van de configuratie.

Note: Let er bij het instellen van de server firewall op dat voor puTTY de benodigde poort (22) open gesteld wordt voor SSH. Beperk dit wel tot alleen het lokale netwerk, dwz bron IP-range 192.168.178.0/24. Zie de de regel voor SSH in de sectie Server::Firewall > Trusted IP's en IP Notatie.

Naar index

SSH Server

SSH is een 'Secure SHell' netwerkprotocol waarmee het door cryptografische versleuteling mogelijk wordt om op een veilige manier gegevens uit te wisselen en communicatie te maken tussen twee computers of servers.
OpenSSH werd gedurende de installatie van Ubuntu Server al geïnstalleerd.

Op de Ubuntu Server heb ik een restrictie ingebouwd in de firewall waarmee alleen hosts op hetzelfde lokale netwerk SSH toegang hebben tot de server.

Zie Server::Firewall > Trusted IP's en IP Notatie.

Voor externe toegang tot de Ubuntu Server is het beter gebruik te maken van VPN: Exploring Linux::Projecten > Fritz!VPN

Naar index

SSHPASS

Sshpass is een utility ontworpen om ssh te runnen waarbij een wachtwoord gevraagd wordt. Met SSHPASS verstrekken we dit wachtwoord 'prefetched' uit een bestand met dit wachtwoord.
Installeer: # apt install sshpass

Om met bijvoorbeeld RSYNC data te synchroniseren tussen de Testserver en de Thuisserver zou je de volgende code op de Testserver gebruiken:
# rsync -avzh root@thuisserver:/vault/backup /store
Nu wordt het thuisserver wachtwoord gevraagd.

Als deze synchronisatie vanuit een script plaats vindt moet dit wachtwoord op één of andere manier samen met bovenstaand commando gestuurd worden.
Hiervoor gebruiken we sshpass

  1. Voor het verstrekken van het wachtwoord maken we een nieuw bestand aan:
    root@testserver:/usr/local/bin# vi .rsync_access_to_thuisserver
  2. Zet de permissies:
    root@testserver:/usr/local/bin# chmod 644 ~/.rsync_access_to_thuisserver
  3. Edit bestand en plaats wachtwoord van thuisserver root: RSYNC_PWD="<thuisserver-root-passwd>"
  4. Commando voor rsync /home/files/afbeeldingen/ van thuisserver naar testserver /home/files/afbeeldingen:

    sshpass -p$RSYNC_PWD rsync -avzh --delete root@192.168.1.4:/home/files/afbeeldingen/ /home/files/afbeeldingen

Naar index

WEBMIN

Met dit programma kan vanuit een webbrowser een Unix-achtig systeem onderhouden en geadministreerd worden. Zo is het bijvoorbeeld mogelijk om gebruikersaccounts te beheren, om instellingen te wijzigen voor Apache, Mysql en dns, en om fileshares aan te maken. Webmin bestaat uit een eenvoudige webserver, aangevuld met diverse in Perl 5 geschreven cgi-programma's.
WEBMIN is voor LINUX in het algemeen en heeft veel opties, maar kan daarom ook riskant zijn. Het is mij bijvoorbeeld niet gelukt Clamav (Filescanner) toe te voegen aan Webmin omdat er enkele dependencies (nog) niet beschikbaar zijn.
WEBMIN komt niet voor in de Ubuntu repositorie en moet dus zelf gehaald en geïnstalleerd worden.


Naar index

Installatie

Zie ook: Webmin downloading and installing

Setup

De eenvoudigste manier is het gebruik van het automatische webmin-setup-repos.sh script voor het configureren van repositories op RHEL of Debian systemen.
Het kan uitgevoerd worden in twee eenvoudige stappen:

root@testserver:~# curl -o webmin-setup-repos.sh  https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repos.sh
root@testserver:~# sh webmin-setup-repos.sh

Met dit script wordt de Webmin repository automatisch opgezet en worden de GPG keys geïnstalleerd. Het Webmin package is nu beschikbaar voor installatie en toekomstige upgrades.
De ondersteunde en geteste systemen zijn: Red Hat Enterprise Linux, Alma, Rocky, Oracle, CentOS Stream, Fedora of Debian, Ubuntu en Kali.

This script will automatically setup our repository and install our GPG keys on your system, and provide webmin package for installation and easy upgrades in the future. The supported and tested systems are

-Update Ubuntu repository en Upgrade OS

ububen@testserver:~$ sudo apt update && sudo apt upgrade -y
...
1 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

Naar index

-Installeer WEBMIN

root@testserver:~# apt install webmin
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
bzip2
...
perl-openssl-defaults qrencode unzip
webmin
0 upgraded, 61 newly installed, 0 to remove and 2 not upgraded.
Need to get 40.2 MB of archives.
After this operation, 228 MB of additional disk space will be used.

-Check status

root@testserver:~# systemctl status webmin.service
     webmin.service - Webmin server daemon
     Loaded: loaded (/usr/lib/systemd/system/webmin.service; enabled; preset: enabled)
     Active: active (running) since Sat 2025-02-01 17:39:41 CET; 17h ago
    Process: 13133 ExecStart=/usr/share/webmin/miniserv.pl /etc/webmin/miniserv.conf (code=exited, status=0/SUCCESS)
   Main PID: 13134 (miniserv.pl)
      Tasks: 1 (limit: 19036)
     Memory: 38.2M (peak: 355.7M)
        CPU: 1min 9.305s
     CGroup: /system.slice/webmin.service
             └─13134 /usr/bin/perl /usr/share/webmin/miniserv.pl /etc/webmin/miniserv.conf

-Allow Webmin op poort 10000 (indien firewall aktief)

root@testserver:~# sudo ufw allow 10000

-Open WEBMIN in browser:
  https://192.168.178.5:10000

- Set password voor de Webmin root:
  Gebruiker: ububen
  Wachtwoord: Als Ubuntu Server (zie LastPass)

Naar index

APT

Door Linuxgebruikers en systeembeheerders worden rpm-bestanden gebruikt om op een eenvoudige manier software te kunnen updaten, upgraden of installeren.
RPM Package Manager (Oorspronkelijk Red Hat Package Manager genaamd) is een package manager die primair is bedoeld voor het besturingssysteem Linux.

DEB is de Package Manager voor Linux systemen gebaseerd op Debian.
DEB installeert, updatet, verwijdert, verifieert en bevraagt softwarepakketten en is het standaardsoftwarepakketformaat van de Linux systemen gebaseerd op Debian.

Daar overheen wordt meestal een gebruiksvriendelijke frontend, zoals APT (Advanced Package Tool), gebruikt waarmee een gebruiker via een simpele opdracht een toepassing kan installeren of updaten.
APT is een Linux update-gereedschap dat de afhankelijkheden verwerkt bij het gebruik van DEB.
APT is een commando in 'bash', zie voor details # man apt en voor voorbeelden van gebruik de hierna volgende sectie.

Upgrade met APT

Commando: # apt update
Synchroniseer en update repositories

Commando: # apt upgrade
Als dit uitgevoerd wordt zonder vermelding van packages zal 'upgrade' alle geïnstalleerde packages upgraden. Tijdens het upgraden zal APT zeker stellen dat aan alle afhankelijkheden (dependencies) voldaan wordt.

Andere APT commando's:
# apt list Resulteert in lijst van alle geïnstalleerde packages en alle overige in de repositories beschikbare packages.
Opties: --installed --upgradable --all-versions
# apt list *samba* Als hierboven maar nu alleen de packages waarbij in de naam 'samba' voor komt.
# apt list --installed *apache* Resulteert in lijst met alle geïnstalleerde apache packages
# apt install [package] Installeert gespecificeerde package en zorgt dat dependencies in orde zijn.
# apt remove [package] Verwijdert gespecificeerde package en dependencies.
# apt show [package] Toont de package informatie van het gegeven package(s)

Voor een listing van geïnstalleerde packages:
# apt list --installed | grep ^clamav > clamav.txt

Naar index

VIM Kleurenschema

VIM, afkorting voor Vi IMproved is een uitzonderlijk veelzijdige, krachtige en efficiente tekstbewerker. Het eerst uitgegeven in 1991 door de nederlandse software engineer Bram Molenaar.
VIM is gefocust op efficientie door modale bewerking en uitgebreide aanpassingsopties. VIM is de keuze van veel Linux gebruikers en administrators.

Installatie
# apt install vim

Gebruik:
# vim example.txt

Kleurenschema VIM
Ubuntu Server heeft een nieuwe versie van de editor VIM, o.a. met Color Syntax Highlighting.
Met een donkere achtergrond is sommige tekst moeilijk te lezen.

Edit bestand /etc/vim/vimrc en verwijder de uitmarkering voor de regel:

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
set background=dark

Naar index

Software uit Repositories van Derden

De repositories van Ubuntu bevat software packages die door Ubuntu beschikbaar worden gesteld en die compatibel zijn met de geïnstalleerde Ubuntu versie en door Ubuntu getest en geadopteerd zijn.
Er zijn echter legio aanvullende repositairies van derden. Deze zijn over het algemeen goed te vertrouwen maar Ubuntu staat hier niet voor in.
Maar er zijn situaties dat gebruikers geen andere optie hebben.

Webmin

Met dit programma kan vanuit een webbrowser een Unix-achtig systeem onderhouden en geadministreerd worden.
Om dit package te installeren moet deze eerst aan de repository lijst toegevoegd worden.
Zie vorig hoofdstuk WEBMIN

Naar index

Installatie van aanvullende Packages

Grafische Pakketten

Piwigo heeft de grafische pakketten PHP-GD en/of PHP-ImageMagick nodig.

PHP-GD wordt al automatisch geïnstalleerd met de Ubuntu Server

Imagick is de PHP-ImageMagick extension.
Piwigo en Wordpress maken middels Imagick gebruik van de ImageMagick App en elke PHP versie heeft zijn eigen Imagick extension.
Installeer php-imagick voor de PHP versie die in gebruik is.

root@htestserver:~# apt list available php-imagick*
Listing... Done
php-image-text/noble 0.7.0-3 all
php-imagick-all-dev/noble 3.7.0-4ubuntu3 all
php-imagick/noble,now 3.7.0-4ubuntu3 amd64 [installed]
php-imap/noble 2:8.3+93ubuntu2 all

Naar index

Packages voor Cleware USB Powerswitch

Voor het aan- en uitschakelen van electrische apparaten kan een powerswitch gebruikt worden die aangestuurd wordt via een USB poort op de server.
Op de server op zolder heb ik een Cleware USB powerswitch geplaatst waarmee ik de ernaast geplaatste testserver op afstand aan- en uit kan schakelen.

Zie voor de installatie en controle van de switch op een linux machine ook: USB Netschakelaar in de projectmap

Minimum vereisten voor installatie op de Ubuntu Server:

  1. Clewarecontrol vereist op zijn minst Linux kernel version 2.6.8
    Ubuntu Server 24.04.1 LTS heeft versie Linux version 6.8.0-48-generic x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-23ubuntu4)
    Tevens is al voorzien in de benodigde USB Human Interface Device (HID) kernel module.
  2. g++ : # apt install g++
    De GNU C++ Compiler
  3. libhidapi-dev : # apt install libhidapi-dev
    HIDAPI is een multi-platform library voor communicatie van een applicatie met USB HID-Class devices.
  4. gettext : # apt install gettext
    GNU 'gettext' biedt een set van tools om andere GNU-pakketten te produceren met multi-lingual berichten.

Installatie

  1. Download https://vanheusden.com/drivers/cleware/clewarecontrol-5.0.tgz
  2. Plaats bestand clewarecontrol-5.0.tgz in /usr/lib/
  3. # sudo -i
  4. # cd /usr/lib
  5. # wget https://vanheusden.com/drivers/cleware/clewarecontrol-5.0.tgz
  6. # tar -xzvf clewarecontrol-5.0.tgz
  7. # cd /usr/lib/clewarecontrol-5.0
    Voordat 'make install' uitgevoerd wordt, eerst zorgen dat de volgende packages geïnstalleerd zijn:
     - make
     - g++
     - libhidapi-dev
     - gettext
  8. # make install

Verifieer nu dat executable 'clewarecontrol' in /bin/ voorkomt en zie ook # man clewarecontrol
Volg instructies in readme.txt

Naar index

Updatedb & Locate

Presenteer lijst van bestanden in databases die overeenkomen met een patroon

ububen@testserver:~$ sudo apt install locate

Zie ook # man locate

Naar index

Postfix voor notificaties


Postfix is een mail transfer agent (MTA), een applicatie voor het zenden en ontvangen van e-mail.
Het kan geconfigureerd worden zodat het alleen gebruikt kan worden voor het versturen van mail door lokale applicaties.
Dit is handig in sitaties als er regelmatig e-mail notificaties van applicaties verzonden moeten worden.
Dit is een lichter alternatief van het installeren van een full-blown SMTP server.

Minimum Vereisten:

  • Een Ubuntu Server 22.04 met een non-root gebruiker
  • Een geregistreerde Domeinnaam
  • Een DNS record met je domeinnaam verwijzend naar je server's publiek IP adres

Note: De Hostname van de server en je 'Droplet's name moeten overeenkomen met je domein.

Aanvullend moet in de firewall poort 25 open staan.

Installeer Postfix

Zie voor de gedetailleerde beschrijving: DigitalOcean: How To Install and Configure Postfix as a Send-Only SMTP Server

ububen@testserver:~$ sudo apt update
ububen@testserver:~$ sudo apt install mailutils

Aan het einde van het installatie proces verschijnt het Postfix configuratiescherm:

De default optie is Internet Site. Dat is de aanbevolen optie voor deze configuratie.

Naar index

De System mail name moet hetzelfde zijn als de naam die aan de server gegeven is bij de creatie.

Postfix is nu geïnstalleeerd, nu volgt de configuratie.

Configureer Postfix
I
n deze stap wordt Postfix geconfigureerd dat het alleen berichten zend en ontvangt van de lokale server of te wel localhost
Hiervoor moet Postfix geconfigureerd worden dat het alleen luistert naar de loopback interface die de server gebruikt voor de interne communicatie.

Edit hiervoor het main Postfix configuratiebestand /etc/postfix/main.cf en zet de waarde van 'inet_interfaces' naar 'loopback-only':

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = ipv4

Wijzig ook inet_protocols van all naar ipv4. Op de serverkaart is er (nog) geen ipv6 protocol geactiveerd.

Als je domein homeserver.makkink.eu feitelijk een subdomein is en als je wilt dat het lijkt dat de e-mailberichten van het hoofddomein komen voeg dan de volgende regel toe in main.cf:

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = ipv4
masquerade_domains = makkink.eu

Als laatste is nu een herstart van Postfix nodig

ububen@testserver:~$ sudo systemctl restart postfix

Naar index

Test Postfix
Zend testbericht:

echo "This is the body of the email" | mail -s "This is the subject line" ben@makkink.eu

Systeemmail doorsturen
In deze stap wordt e-mail forwarding opgezet voor de rooty gebruiker zodat berichten gegenereerd door het systeem die naar root gestuurd worden doorgesturrd worden naar een external e-mailadres

Het bestand /etc/aliases bevat een lijst met alternatieve namen voor e-mail ontvangers.

Edit /etc/aliases:
Voeg toe: root: ben@makkink.eu

# See man 5 aliases for format
postmaster:  root
clamav: root
root: ben@makkink.eu

Enabling SMTP Encryption

Om SMTP encryptie te bieden wordt een gratis TLS certificaat aangevraagd bij Let's Encrypt.

Deze certificaten worden vervolgens aangeboden in de map /etc/letsencrypt/live/www.makkink.eu/

Edit nu /etc/postfix/main.cf en voeg onder TLS parameters toe:

smtpd_tls_cert_file=/etc/letsencrypt/live/www.makkink.eu/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/www.makkink.eu/privkey.pem   

Pas de wijzigingen toe door een herstart van Postfix:

root@testserver:~# systemctl restart postfix

Naar index

LetsEncrypt

Het doel van Let's Encrypt en het ACME protocol is het faciliteren van een HTTPS server en het automatisch verkrijgen van een browser-trusted certificaat.
Dit wordt bereikt door het draaien van een Certificaat Management Agent op de webserver.

Let's Encrypt is een gratis, geautomatiseerde en open Certificate Authority beschikbaar gemaakt door de nonprofit Internet Security Research Group (ISRG).

 

 

Certbot is een makkelijk te gebruiken commandlijn-client voor het verkrijgen van een certificaat van Let's Encrypt.

Deze client verzorgt:

  • Het automatisch aan de Let's Encrypt CA bewijzen dat jij het domein beheert.
  • Het verkrijgen van een certifcaat dat vertrouwd wordt door browsers en emailproviders
  • Het automatisch vernieuwen van het certificaat voordat deze verloopt.
  • Het opheffen van het certificaat indien dit nodig is.

Zie ook https://eff-certbot.readthedocs.io/en/stable/man/certbot.html

Lees ook de Certbot gebruikersinstrucies

Certificaat halen voor Postfix

Zie ook How To Install and Configure Postfix as a Send-Only SMTP Server on Ubuntu

  1. Zet op de router portforwarding voor TCP poort 80 naar de 'homeserver' (192.168.178.5).

  2. Zet firewall: # sudo ufw allow postfix

  3. Zorg dat er geen andere service actief is op poort 80, bijv. HTTP
    # sudo systemctl stop apache2

  4. Haal key certificaat:
    # sudo certbot -v certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d www.makkink.eu

Resultaat:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/www.makkink.eu/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/www.makkink.eu/privkey.pem
This certificate expires on 2025-02-08.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Edit Postfix main.cf voor verwijzing naar het certificaat

Naar index

Automatic renewal Failure

Met commando # sudo certbot renew --dry-run wordt een renewal gesimuleerd.
Dit loopt uit op een failure:
ububen@testserver:~$ sudo certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Processing /etc/letsencrypt/renewal/www.makkink.eu.conf
Account registered.
Simulating renewal of an existing certificate for www.makkink.eu
Failed to renew certificate www.makkink.eu with error: Could not bind TCP port 80 because it is already in use by another process on this system (such as a web server).
Please stop the program in question and then try again.

Dit probleem zal verholpen worden als de Apache2 webserver geconfigureerd is voor HTTPS.
De hierbij gecreëerde certificaten zullen dan ook voor Postfix gebruikt worden.

Naar index

Aanvullende Configuraties

Na de installatie van de Ubuntu serverdistributie met de bootdisk en het uitvoeren van de upgrades in de repositories mbv 'APT' wordt de server verder geconfigureerd.
Dit doen we zo mogelijk met Webmin, een Gebruikers Interface voor het beheren van een Linux Server.
Veel zal echter via de commandline uitgevoerd worden
Hieronder verdere configuraties zoals die op de server aangebracht zijn.

Naar index

Wijzigen Computernaam

Als bij de installatie van Ubuntu Server een computernaam gegeven is die achteraf niet bevalt, kan de computernaam eenvoudig gewijzigd worden.
Op Systemd gebaseerde distributies zoals Ubuntu Server 16.04 LTS en hoger kan het commando hostnamectl gebruikt worden om de hostname (computernaam) te wijzigen.
Zie ook https://www.cyberciti.biz/faq/ubuntu-change-hostname-command/

Om de huidige instellingen te zien, geef het commando # hostnamectl

ububen@testserver:~$ sudo hostnamectl
 Static hostname: testserver.makkink.eu
 Pretty hostname: testserver
       Icon name: computer-desktop
         Chassis: desktop
      Machine ID: 025135a9e95f4c298c029c799864162f
         Boot ID: 590ea8b0e58f438a8c02b2aedb24338a
Operating System: Ubuntu 24.04.1 LTS
          Kernel: Linux 6.8.0-48-generic
    Architecture: x86-64
 Hardware Vendor: MSI
  Hardware Model: MS-7817
Firmware Version: V25.5
   Firmware Date: Tue 2014-12-23
    Firmware Age: 9y 10month 2w 6d

Als de computernaam bijvoorbeeld gewijzigd moet worden naar thuisserver.makkink.eu:

ububen@testserver:~$ hostnamectl set-hostname thuisserver.makkink.eu

Als we vervolgens ook de 'Pretty hostname' zouden willen wijzigen naar thuisserver:

ububen@testserver:~$ hostnamectl set-hostname thuisserver -–pretty

Naar index

Verifieer:

ububen@testserver:~$ sudo hostnamectl
 Static hostname: thuisserver.makkink.eu
 Pretty hostname: thuisserver
       Icon name: computer-desktop
         Chassis: desktop
      Machine ID: 025135a9e95f4c298c029c799864162f
         Boot ID: 590ea8b0e58f438a8c02b2aedb24338a
Operating System: Ubuntu 24.04.1 LTS
          Kernel: Linux 6.8.0-48-generic
    Architecture: x86-64
 Hardware Vendor: MSI
  Hardware Model: MS-7817
Firmware Version: V25.5
   Firmware Date: Tue 2014-12-23
    Firmware Age: 9y 10month 2w 6d

CHECK

  1. Check /etc/hosts en maak zeker dat elke verwijzing naar testserver gewijzigd wordt naar thuisserver
  2. Alle browser url's wijzigen van testserver naar thuisserver
  3. In /etc/samba/smb.conf wijzig Serverstring van testserver naar thuisserver
  4. In scripts 'scanfiles' en 'upgrades': wijzig EMAIL_FROM="testserver@makkink.eu"naar EMAIL_FROM="thuisserver@makkink.eu";
  5. In script 'utils-extra' wijzig alle voorkomens 'testserver' naar 'thuisserver';
  6. wijzig namen van 'rsync_thisserver_with_testserver' en bijbehorende '.rsync_access_to_testserver' en wijzig waar nodig de inhoud.

Naar index

Wijzigen default gebruikersnaam (en home-dir)

Zie https://pimylifeup.com/ubuntu-change-username/

Tijdens de installatie van Ubuntu Server geven we de default gebruiker (non-root admin) een naam.
Mogelijk hebben we hiervan later spijt.

Het wijzigen van de gebruikersnaam op de Ubuntu Server is redelijk eenvoudig, maar waar het vaak wat ingewikkeld wordt zijn de bijwerkingen.
je hoeft je geen zorgen te maken over permissies, elk bestand waarvan de huidige gebruiker eigenaar is zal de nieuwe gebruiker volgen, omdat permissies gebonden zijn aan de User ID (UID) en niet aan de gebruikersnaam.

Het is mogelijk dat er problemen ontstaan na het wijzigen van de naam als er specifieke verwijzigingen zijn naar de gebruikersnaam. Dit kan bijvoorbeeld gebeuren in service bestanden, speciaal die je zelf schrijft. Het kan ook gebeuren bij diensten die direct verwijzen naar de gebruikers home-directory. Dit kan echter opgelost worden door in de home map een symbolic link te plaatsen mety de oude gbruikersnaa en verwijzend naar de nieuwe gebruikers map.

Het wijzigen van je gebruikersnaam is ongelooflijk eenvoudig met het usermod commando. Met gereedschap is het mogelijk bijna alle eigenschappen van een gebruiker aan te passen.

Hierna volgend de procedure van het wijzigen van de gebruikersnaam en het creëren van een symbolic link.

Maak nieuwe gebruiker aan:
Het is niet mogelijk de gebruikersnaam te wijzigen van de ingelogde account.
Hiervoor maken we eerst een tijdelijke nieuwe nieuwe gebruiker aan:

root@testserver:~# adduser bentemp
info: Adding user `bentemp' ...
info: Selecting UID/GID from range 1000 to 59999 ...
info: Adding new group `bentemp' (1001) ...
info: Adding new user `bentemp' (1001) with group `bentemp (1001)' ...
info: Creating home directory `/home/bentemp' ...
info: Copying files from `/etc/skel' ...
New password: # vul een wachtwoord in
Retype new password:
passwd: password updated successfully
Changing the user information for bentemp
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
info: Adding new user `bentemp' to supplemental / extra groups `users' ...
info: Adding user `bentemp' to group `users' ...

Vervolgens voegen we de nieuwe gebruiker toe aan de SUDO groep:

root@homeserver:~# usermod -aG sudo bentemp

Naar index

Log uit en Log in als 'bentemp'

Using username "bentemp".
bentemp@192.168.178.5's password:
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-48-generic x86_64)
…
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

bentemp@testserver:~$ sudo su
[sudo] password for bentemp:

Wijzig gebruikersnaam en groep:

root@testserver:~# usermod -l ububen -d /home/ububen -m ubuntu-ben

root@testserver:~# groupmod -n ububen ubuntu-ben

Log uit en login als 'ububen'

Using username "ububen".
ububen@192.168.178.5's password: "zelfde als van oude gebruikersnaam"
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-48-generic x86_64)
...
Last login: Sun Nov  3 14:22:43 2024 from 192.168.178.2
ububen@homeserver:~$

Naar index

Cleanup, verwijder tijdelijke user ‘bentemp’

ububen@testserver:~$ sudo userdel bentemp -f -r
[sudo] password for ububen: "zelfde als hierboven"

Symbolic Link

Na het wijzigen van de gebruikersnaam zal je ook je home-map verhuisd hebben.

Dit kan een probleem opleveren als je scripts of programma's hebt die nog je oude home-map verwachten.
Dit kun je oplossen door het plaatsen van een Symbolic link in /home

ububen@testserver:~$ sudo ln -s /home/ububen /home/ubuntu-ben

Zet owner van symbolic link naar 'ububen'

ububen@testserver:~$ sudo chown -h ububen: /home/ubuntu-ben

Chown -h, wijzig owner van de link en niet het gerefereerde bestand of map

Naar index

Sudo zonder wachtwoord

Per default vereist het gebruik van SUDO elke keer het gebruikerswachtwoord.
Beetje over de top.

Edit het bestand /etc/sudoers en de include aan het einde: @includedir /etc/sudoers.d

Maak vervolgens in de map /etc/sudoers.d een nieuw bestand aan bijv. ububen

Edit bestand /etc/sudoers.d/ububen en voeg toe de regels:

# Members of the admin group may gain root privileges without password
ububen  ALL=(ALL) NOPASSWD:ALL 

Sudo -i
Als er veel commando's uitgevoerd moeten worden waarbij root privileges vereist zijn dan kunnen we 'inloggen als root'

ububen@testserver:~$ sudo -i
root@testserver:~#

Om vervolgens de supermode weer te verlaten:

root@testserver:~# exit
ububen@testserver:~$ 

Naar index

Automatische Upgrades

Zie https://thenewstack.io/enable-automatic-updates-for-ubuntu-server/

Wanneer was het de laatste keer dat de Ubuntu Server een upgrade heeft gehad?
Als een server jaren achtereen draait zonder een reboot kan inhouden dat al die tijd er geen upgrade gedaan wordt.
Unpatched software wordt kwetsbaar voor aanvallen
Tenzij je alle tijd hebt om dagelijks upgrades uit te voeren is het raadzaam upgrades automatisch te laten plaatsvinden.

Canonical (de firma achter Ubuntu) is zo zeker over de onbeheerde upgrades voor de server, dat zij het OS verzenden met de noodzakelijke package al voorgeïnstalleerd.

Verifieer dat de Software geïnstalleerd is
Geef het commando:

root@testserver:~# which unattended-upgrades

De output moet zijn:

root@testserver:~# /usr/bin/unattended-upgrades

Configureer Unatted-Upgrades

root@testserver:~# dpkg-reconfigure -plow unattended-upgrades

Na bovenstaand commando opent er een window met de vraag of je automatische download en installatie van stabiele upgrades wenst.

Kies: <TAB> naar <YES> en klik <ENTER> en hiermee is de onbeheerde utomatische upgrade geactiveerd

Naar index

Check van de configuratie
Om te zien wat de unattended-upgrade configuratie doet, open het configuratiebestand /etc/apt/apt.conf.d/20auto-upgrades, deze bevat 2 regels:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Configuratie opties
Voor bovenstaand bestand zijn geen configuraties nodig.
Er is echter een tweede bestand op de zelfde locatie, /etc/apt/apt.conf.d/50unattended-upgrades. Deze kan/moet door editing nader geconfigureerd worden.
Het meeste van dit bestand is uitgemarkeerd, maar als je door het bestand gaat zul je zekere regels en/of secties vinden die aktief zijn.
Bijvoorbeeld de volgende sectie:

  6 Unattended-Upgrade::Allowed-Origins {
  7         "${distro_id}:${distro_codename}";
  8         "${distro_id}:${distro_codename}-security";
  9         // Extended Security Maintenance; doesn't necessarily exist for
 10         // every release and this system may not have it installed, but if
 11         // available, the policy for updates is such that unattended-upgrades
 12         // should also install from here by default.
 13         "${distro_id}ESMApps:${distro_codename}-apps-security";
 14         "${distro_id}ESM:${distro_codename}-infra-security";
 15 //      "${distro_id}:${distro_codename}-updates";
 16 //      "${distro_id}:${distro_codename}-proposed";
 17 //      "${distro_id}:${distro_codename}-backports";
 18 };

In bovenstaande regels staan de toegestane bronnen.
De regel met -updates, -proposed en -backports zijn uitgemarkeerd omdat deze updates kunnen bevatten die problemen veroorzaken met al geïnstalleerde packages.

Verder in het bestand is een sectie met de opties "true" of "false" bijvoorbeeld:

88 // Do automatic removal of unused packages after the upgrade
89 // (equivalent to apt-get autoremove)
90 //Unattended-Upgrade::Remove-Unused-Dependencies "false";

Als je geen ongebruikte dependencies wilt behouden, verwijder de uitmarkereing '//' en wijzig "false" naar "true".

Een andere configuratie optie is:

 92 // Automatically reboot *WITHOUT CONFIRMATION* if
 93 //  the file /var/run/reboot-required is found after the upgrade
 94 Unattended-Upgrade::Automatic-Reboot "true";

Deze optie activeren is niet aan te raden omdat het niet bekend is wanneer een onbeheerde upgrade zal starten en eindigen en tot onverwachtte downtimes kan leiden.

Als we toch een automatic reboot instellen dan specificeren we ook het tijdstip:

100 // If automatic reboot is enabled and needed, reboot at the specific
101 // time instead of immediately
102 //  Default: "now"
103 Unattended-Upgrade::Automatic-Reboot-Time "03:00";

Herstart na configuratie-wijziging
Als er wijzigingen aangebracht zijn in /etc/apt/apt.conf.d/50unattended-upgrades dan moet unattend-upgrades opnieuw geladen worden.

root@testserver:~# systemctl restart unattended-upgrades

Naar index

Expanded Security Maintenance for Apps

Activeer ESM Apps om extra toekomstige veiligheidsupdates te ontvangen.
Zie https://ubuntu.com/esm

ESM is onderdeel van Ubunto Pro, het meest uitgebreide abonnement voor open-source softwarebeveiliging.
Ubunto Pro is gratis voor persoonlijk gebruik en geeft beveiliging en naleving bovenop Ubuntu LTS met 10 jaar dekking voor meer dan 25.000 pakketten

ESM biedt 10 jaar kwetsbaarheidsbeheer voor kritieke, hoge en geselecteerde gemiddelde CVE's voor alle softwarepakketten die door Ubuntu worden geleverd.
(Common Vulnerabilities and Exposures, meestal afgekort als CVE, is een databank met informatie over kwetsbaarheden in computersystemen en netwerken).

Met Livepatch kunt u CVE's patchen zonder machines buiten geplande onderhoudsvensters opnieuw op te starten.

Gratis Abonneren
Ga naar https://ubuntu.com/pro/subscribe

Klik Register en vul gegevens voor registratie in en geef wachtwoord.
Ontvang FREE PERSONAL TOKEN geldig voor max. 5 machines en verloopt nooit.

Naar index

Activeer Ubuntu Pro met gegeven token

root@testserver:~# pro attach C12JFSwRvsCbmv8ajVQk1KnxvvgWxq
Enabling Ubuntu Pro: ESM Apps
Ubuntu Pro: ESM Apps enabled
Enabling Ubuntu Pro: ESM Infra
Ubuntu Pro: ESM Infra enabled
Enabling Livepatch
Livepatch enabled
This machine is now attached to 'Ubuntu Pro - free personal subscription'

Naar index

Check Status Pro

root@testserver:~# pro status
SERVICE          ENTITLED  STATUS       DESCRIPTION
anbox-cloud      yes       disabled     Scalable Android in the cloud
esm-apps         yes       enabled      Expanded Security Maintenance for Applications
esm-infra        yes       enabled      Expanded Security Maintenance for Infrastructure
landscape        yes       disabled     Management and administration tool for Ubuntu
livepatch        yes       enabled      Canonical Livepatch service
realtime-kernel* yes       disabled     Ubuntu kernel with PREEMPT_RT patches integrated

 * Service has variants

For a list of all Ubuntu Pro services and variants, run 'pro status --all'
Enable services with: pro enable 

     Account: ben@makkink.eu
Subscription: Ubuntu Pro - free personal subscription

Als het gewenst is dat bijvoorbeeld de service 'landscape' enabled moet worden gebruik dan het commando: # pro enable landscape

Check Security Status

root@testserver:~# pro security-status
889 packages installed:
    809 packages from Ubuntu Main/Restricted repository
    76 packages from Ubuntu Universe/Multiverse repository
    1 package from a third party
    3 packages no longer available for download

To get more information about the packages, run
    pro security-status --help
for a list of available options.

This machine is attached to an Ubuntu Pro subscription.

Main/Restricted packages are receiving security updates from
Ubuntu Pro with 'esm-infra' enabled until 2034.

Universe/Multiverse packages are receiving security updates from
Ubuntu Pro with 'esm-apps' enabled until 2034.

Naar index

Handmatige upgrades voor packages en dependencies

In de vorige secties zijn de unattended security upgrades ingesteld.
Voor de reguliere upgrades van geïnstalleerde packages en dependencies geven we de voorkeur aan het op de hand upgraden.

Voordat we deze upgrades uitvoeren maken we eerst een OS systeembackup, zodat als er zich problemen voordoen het systeem van vóór de upgrades teruggezet kan worden.

Om vast te stellen of er upgrades beschikbaar zijn gebruiken we het script 'UPGRADES'

#!/bin/bash
# ***************************************************************************
# * UPGRADES CRONScript                              Ben Makkink 26/01/2025 *
# * De Ubuntu server voert security upgrades automatisch uit                *
# * De reguliere updates wordt bij voorkeur op de hand gedaan, om           *
# * te voorkomen dat mogelijke bugs de werking verstoren. Voordat de upgrade*
# * uitgevoerd wordt kan er eerst een systeem backup gemaakt worden zodat   *
# * zonodig de upgrade ongedaan gemaakt kan worden                          *
# ***************************************************************************
EMAIL_MSG="Upgrades beschikbaar";
EMAIL_FROM="testserver@makkink.eu";
EMAIL_TO="ben@makkink.eu";

# Haal de lijst met upgrades op. apt-check resulteerd in 2 getallen. Het
# eerste getal zijn de reguliere upgrades en het getal na de ';' geeft het
# aantal security upgrades. De laatste  is normaal dus altijd 0
read upd < <(/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 1)
# echo $upd;

# Als er meer dan 25 upgrades klaarstaan wordt er een notificatie mail
# naar  Admin verstuurd.
if [ $upd -gt 25 ]; then
	#compose content e-mail message
	body=$'\n'${EMAIL_MSG}$'\n'"===================="$'\n';
	body+=$'\n'"Er staan "$upd" upgrades klaar.";
	body+=$'\n'"Dit zijn de op de hand uit te voeren upgrades van geïnstalleerde packages en dependencies.";
	body+=$'\n'"(Security upgrades worden automatisch uitgevoerd door Expanded Security Maintenance).";
	body+=$'\n'$'\n'"Procedure";
	body+=$'\n'"=========";
	body+=$'\n'"- Maak eerst een OS systeembackup:"
	body+=$'\n'"  # Utils > Backup-, Restore- en Onderhoudsprogramma's > OS-systeem backup";
	body+=$'\n'$'\n'"- Ververs de repositories met commando #: apt update";
	body+=$'\n'$'\n'"- Haal lijst met beschikbare upgrades met commando #: apt list --upgradable";
	body+=$'\n'$'\n'"- Voer alle upgrades uit met commando #: apt upgrade";
	body+=$'\n'"  Voor alleen package  #: apt upgrade ";
	body+=$'\n'$'\n'"- Reboot server";
	body+=$'\n'$'\n'"Admin Testserver";

	#Send e-mail message
        echo "$body"|mail -s "Testserver Upgrades beschikbaar" -r "${EMAIL_FROM}" "${EMAIL_TO}";
fi

Het commando /usr/lib/update-notifier/apt-check resulteert in 2 getallen gescheiden door ';' xx;yy
Onder xx staat het aantal beschikbare upgrades voor de packages en onder yy de beschikbare security upgrades.
Met cut -d ';' -f 1 selecteren we veld 1 met de delimiter ; en we lezen deze output naar de variabele upd.

Als er meer dan 25 upgrades beschikbaar zijn wordt er een notificatie mail naar Admin gestuurd. Zie Postfix voor notificaties voor het mail commando

CRON.weekly voor UPGRADES

Om script 'upgrades' wekelijks uit te voeren voegen we deze toe aan cron.weekly dmv een harde link:

root@testserver:~# ln /usr/local/bin/upgrades    /etc/cron.weekly/upgrades

Naar index

Upgrade History

Expanded Security Maintenance for Applications is enabled.

0 updates can be applied immediately.

Last login: Mon Dec 16 16:08:10 2024 from 192.168.178.2
root@homeserver:~# less /var/log/apt/history.log

Start-Date: 2024-12-08  11:28:20
Commandline: apt upgrade
Requested-By: ububen (1000)
Upgrade: open-iscsi:amd64 (2.1.9-3ubuntu5.1, 2.1.9-3ubuntu5.2),
     zip:amd64 (3.0-13build1, 3.0-13ubuntu0.1),
     libopeniscsiusr:amd64 (2.1.9-3ubuntu5.1, 2.1.9-3ubuntu5.2)
End-Date: 2024-12-08  11:28:44

Naar index

Gebruikers en Groepen

Zie ook mastering-user-management-and-permissions

Door gebruikersaccounts aan te maken, deze toe te wijzen aan geschikte groepen en zorgvuldig de machtigingen te definiëren, creëert u een veilige en gecontroleerde omgeving voor systeemgebruik.

Deze sectie gaat in op de kernbegrippen van gebruikersbeheer en machtigingen in Ubuntu, het maken, wijzigen en verwijderen van gebruikers en de rol van groepen.
En het instellen van machtigingen met behulp van commando's zoals adduser, usermod, groups, chmod en chown.
We maken de voor de 'homeserver' benodigde beveiligde gebruikersaccounts, het toewijzen van gedetailleerde toegangscontroles en instellen van een goed gedefinieerde machtigingsstructuur.

Naar index

Gebruikersbeheer en machtigingen begrijpen

Gebruikersaccounts:
Een gebruikersaccount op Ubuntu vertegenwoordigt een persoon of een toepassing die toegang heeft tot het systeem.
Elk gebruikersaccount heeft een unieke gebruikersnaam en wachtwoord (of een andere verificatiemethode).
Gebruikersaccounts zijn cruciaal voor het handhaven van de systeembeveiliging door ervoor te zorgen dat alleen geautoriseerde personen toegang hebben tot specifieke bronnen.

Groepen:
Groepen fungeren als een verzameling van gebruikersaccounts met vergelijkbare toegangsprivileges.
Het toewijzen van gebruikers aan groepen vereenvoudigt het beheer van de machtiging, zodat u toegangsbesturingselementen kunt toepassen op een groep als geheel in plaats van individuele gebruikers.

Toestemmingen:

Machtigingen definiëren het niveau van toegang (lezen, schrijven, uitvoeren) dat een gebruiker of groep heeft voor een bestand of map op het Ubuntu-systeem. Toestemmingen worden meestal weergegeven met behulp van een code van drie tekens, waarbij elk teken toegang betekent voor de gebruiker die eigenaar is van het bestand (eigenaar), de groep (groep van de gebruiker) en alle andere gebruikers (andere).

Inzicht in het belang:
Effectief gebruikersbeheer en machtigingen zijn van het grootste belang om verschillende redenen:

Naar index

Essentiële commando's

Gebruikers beheren
Ubuntu biedt een robuuste reeks opdrachten voor het beheren van gebruikersaccounts:

Groepen en groepsbeheer
Essentiële commando's voor groepsbeheer:

Effectief gebruik van de groep:

Naar index

Accounts

Op de homeserver plannen we vooralsnog onderstaande gebruikers en de groepen waaran ze toegevoegd worden:

 
User Naam Groups Shell Omschrijving
ububen default user ububen, adm, cdrom, sudo, dip, plugdev, lxd, lanshare /usr//bin/bash Hoofdgebruiker met admin rechten middels Sudo
ben ben xps ben, lanshare /usr/sbin/nologin homeserver gebruiker aangesloten bij groep 'lanshare'
erica erica lenovo erica, lanshare /usr/sbin/nologin homeserver gebruiker aangesloten bij groep 'lanshare'
benjamin ben lenovo benjamin, lanshare /usr/sbin/nologin homeserver gebruiker aangesloten bij groep 'lanshare'
files samba share files, lanshare /usr/sbin/nologin samba share windows naar Fileshares
archief samba share archief, lanshare /usr/sbin/nologin samba share windows naar Archief

Naar index

Groepen aanmaken

Bij de installatie van Ubuntu Server werd de default gebruiker 'ububen' gecreëerd en deze systeem account werd daarbij toegevoegd aan een hele serie van groepen.
Elke nieuwe gebruiker die we aanmaken wordt per default toegevoegd aan een nieuwe groep met dezelfde naam als de eigenaar. Het is tevens de primaire groep van deze gebruiker.

Zoals in bovendstaand schema te zien willen we alle gebruikers toevoegen aan een nieuw te creëren groep 'lanshare'.
Al deze gebruikers op het Local Area Network (LAN) zullen middels Samba configuraties als groep toegang krijgen tot de Samba File Server shares 'files' en 'archief'.

Maak groep LANSHARE aan

root@testserver:~# groupadd lanshare 
root@testserver:~# cat /etc/group| grep lanshare
lanshare:x:1001:

Voeg 'ububen' toe aan groep 'lanshare'

root@testserver:~# usermod --append --groups lanshare ububen of usermod -aG lanshare ububen
root@testserver:~# id ububen
uid=1000(ububen) gid=1000(ububen) groups=1000(ububen),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),101(lxd),1001(lanshare)

Lijst van users in groep 'lanshare'

root@testserver:~# cat /etc/group| grep lanshare
lanshare:x:1001:ububen

Voorbeeld verwijder user uit groep

root@testserver:~# gpasswd --delete <usernaam> lanshare
Removing user <usernaam> from group lanshare

Naar index

Gebruikers aanmaken

Default Useradd Values wijzigen
Per default krijgt elke nieuwe user ssh login access, wij willen echter alleen ssh login toestaan aan systeem account 'ububen'
Edit /etc/default/useradd en wijzig settings naar:

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/usr/sbin/nologin #was /usr/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
LOG_INIT=yes

Naar index

Maak gebruiker 'ben' aan:

root@testserver:~# useradd -m ben

Optie -m zorgt voor aanmaak map /home/ben en kopieert de bestanden uit de /etc/skel map naar /home/ben

Zie onderstaande resultaten:

root@testserver:~# ls -l /home|grep -w 'ben'
drwxr-x--- 2 ben ben 4096 Nov 5 14:58 ben root@testserver:~# ls -al /home/ben
total 20
drwxr-x--- 2 ben ben 4096 Nov 5 14:58 .
drwxr-xr-x 8 root root 4096 Nov 6 13:01 ..
-rw-r--r-- 1 ben ben 220 Mar 31 2024 .bash_logout
-rw-r--r-- 1 ben ben 3771 Mar 31 2024 .bashrc
-rw-r--r-- 1 ben ben 807 Mar 31 2024 .profile root@testserver:~# id ben uid=1003(ben) gid=1004(ben) groups=1004(ben) root@testserver:~# grep ben /etc/passwd ben:x:1003:1004::/home/ben:/usr/sbin/nologin

Zet wachtwoord voor user 'ben'

root@testserver:~# passwd ben
New password: Zie LastPass
Retype new password:
passwd: password updated successfully

Voeg user 'ben' toe aan groep 'lanshare'

root@testserver:~# usermod -aG lanshare ben

root@testserver:~# groups ben
ben : ben lanshare

Naar index

Maak gebruiker 'erica' aan:

Zie voor uitgebreide outputs bovenstaande aanmaak van gebruiker 'ben'

root@testserver:~# useradd -m erica

root@testserver:~# passwd erica
root@testserver:~# grep erica /etc/passwd
erica:x:1001:1002::/home/erica:/usr/sbin/nologin

root@testserver:~# usermod -aG lanshare erica
root@testserver:~# groups erica
erica : erica lanshare
    

Naar index

Maak gebruiker 'benjamin' aan:

Zie voor uitgebreide outputs bovenstaande aanmaak van gebruiker 'ben'

root@testserver:~# useradd -m benjamin

root@testserver:~# passwd benjamin
root@testserver:~# grep benjamin /etc/passwd
benjamin:x:1006:1006::/home/benjamin:/usr/sbin/nologin

root@testserver:~# usermod -aG lanshare benjamin
root@testserver:~# groups benjamin
benjamin : benjamin lanshare

Naar index

Maak gebruiker 'files' aan:

Files wordt een via Samba gedeelde map in /home die als fileserver fungeert.
Hier maken we de groep LANSHARE de primairy groep

root@testserver:~# useradd  -m -g lanshare  files

root@testserver:~# ls -l /home|grep -w 'files'
drwxr-x--- 2 files lanshare 4096 Nov 5 15:14 files root@testserver:~# passwd files root@testserver:~# grep files /etc/passwd files:x:1004:1001::/home/files:/usr/sbin/nologin root@testserver:~# groups files files : lanshare

Naar index

Maak gebruiker 'archief aan:

Archief wordt een via Samba gedeelde map in /home die als fileserver fungeert.
Hier maken we de groep LANSHARE de primairy groep

root@testserver:~# useradd  -m -g lanshare  archief

root@testserver:~# ls -l /home|grep -w 'archief'
drwxr-x--- 2 archief lanshare 4096 Nov 5 15:14 files root@testserver:~# passwd archief root@testserver:~# grep archief /etc/passwd files:x:1004:1001::/home/archief:/usr/sbin/nologin root@testserver:~# groups archief archief : lanshare

Naar index

Overzicht Groepen en Groepsleden

De geinstalleerde groepen op dit punt van de installatie alfabetisch gesorteerd:

root@testserver:~# cat /etc/group|sort
adm:x:4:syslog,ububen
audio:x:29:
backup:x:34:
benjamin:x:1003:
ben:x:1004:
bin:x:2:
cdrom:x:24:ububen
clamav:x:113:
crontab:x:990:
daemon:x:1:
dialout:x:20:
dip:x:30:ububen
disk:x:6:
erica:x:1002:
fax:x:21:
floppy:x:25:
fwupd-refresh:x:989:
games:x:60:
input:x:996:
irc:x:39:
kmem:x:15:
kvm:x:994:
landscape:x:109:
lanshare:x:1001:ububen,erica,benjamin,ben
list:x:38:
lp:x:7:
lxd:x:101:ububen
mail:x:8:
man:x:12:
messagebus:x:102:
news:x:9:
nogroup:x:65534:
operator:x:37:
plugdev:x:46:ububen
polkitd:x:991:
postdrop:x:112:
postfix:x:111:
proxy:x:13:
rdma:x:106:
render:x:993:
root:x:0:
sasl:x:45:
sgx:x:995:
shadow:x:42:
src:x:40:
_ssh:x:103:
ssl-cert:x:110:
staff:x:50:
sudo:x:27:ububen
syslog:x:104:
systemd-journal:x:999:
systemd-network:x:998:
systemd-resolve:x:992:
systemd-timesync:x:997:
sys:x:3:
tape:x:26:
tcpdump:x:107:
tss:x:108:
tty:x:5:
ububen:x:1000:
users:x:100:
utmp:x:43:
uucp:x:10:
uuidd:x:105:
video:x:44:
voice:x:22:
www-data:x:33:

Gebruikers groepslidmaatschap

ububen  : ububen adm cdrom sudo dip plugdev lxd lanshare
ben     : ben lanshare
erica   : erica lanshare
benjamin: benjamin lanshare
files   : lanshare
archief : lanshare

Naar index

Beveiliging

 

ClamAV is een open source (GPLv2) anti-virus toolkit aangeboden door Cisco Systems Inc.
Het biedt een aantal hulpprogramma's, waaronder een flexibele en schaalbare daemon, een opdrachtregelscanner en een geavanceerd hulpmiddel voor automatische database-updates.
De kern van het pakket is een antivirusmotor in de vorm van een gedeelde bibliotheek.

De voor een fileserver meest belangrijke functies:

  • ClamAV is ontworpen om bestanden snel te scannen.
  • ClamAV detecteert miljoenen virussen, wormen, trojans en andere malware, waaronder macrovirussen van Microsoft Office, mobiele malware en andere bedreigingen.
  • Gesigneerde handtekeningdatabases zorgen ervoor dat ClamAV alleen vertrouwde handtekeningdefinities uitvoert.
  • ClamAV scant in archieven en gecomprimeerde bestanden, maar beschermt ook tegen archiefbommen.
  • Geavanceerde database-updater met ondersteuning voor scripted updates, digitale handtekeningen en op DNS gebaseerde databaseversiequery's

 

ClamAV is speciaal ontworpen voor het middels de Clamav-Daemon scannen van e-mail via e-mail gateways. Op de Testserver wordt geen mailservice geïnstalleerd.
Op deze server wordt Clamav geïnstalleerd, specifiek voor de opdrachtregelscanner en de automatische database-updater.
De kern van het pakket wordt gevormd door een anti-virus engine in de vorm van een gedeelde bibliotheek.

Het installeren van Clamav-Daemon is niet nodig.
CLAMSCAN is een opdrachtregeltool die 'libclamav' gebruikt om bestanden en/of mappen te scannen op virussen.
In tegenstelling tot clamdscan vereist clamscan geen actieve clamd service om te functioneren. In plaats daarvan creëert clamscan, elke keer dat deze wordt uitgevoerd, een nieuwe engine en laadt deze de virusdatabase.
Vervolgens worden de bestanden en/of mappen die zijn opgegeven op de opdrachtregel gescand en wordt een scanrapport gemaakt.

Naar index

Clamscan filescanner installatie

root@testserver:~# apt install clamav clamav-daemon
...
The following NEW packages will be installed:
  clamav clamav-base clamav-freshclam libclamav11t64
...

Update virusdatabase

root@testserver:~# systemctl stop clamav-freshclam.service

root@testserver:~# freshclam
ClamAV update process started at Sat Nov 16 14:55:48 2024
Sat Nov 16 14:55:48 2024 -> daily.cvd database is up-to-date (version: 27460, sigs: 2067964, f-level: 90, builder: raynman)
Sat Nov 16 14:55:48 2024 -> main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
Sat Nov 16 14:55:48 2024 -> bytecode.cvd database is up-to-date (version: 335, sigs: 86, f-level: 90, builder: raynman)

root@testserver:~# systemctl start clamav-freshclam.service

De Clamav-freshclam.service checkt regelmatig voor nieuwe data.
Edit /etc/clamav/freshclam.conf en zet 'Checks' naar 3, dwz 3 x daags.

Naar index

Test CLAMSCAN

root@testserver:~# clamscan -r /home/benovo
Loading:    15s, ETA:   0s [========================>]    8.70M/8.70M sigs
Compiling:   3s, ETA:   0s [========================>]       41/41 tasks

/home/benovo/.profile: OK
/home/benovo/.bashrc: OK
/home/benovo/.bash_logout: OK

----------- SCAN SUMMARY -----------
Known viruses: 8699757
Engine version: 1.0.7
Scanned directories: 1
Scanned files: 3
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 19.128 sec (0 m 19 s)
Start Date: 2024:11:16 15:12:36
End Date:   2024:11:16 15:12:55

Naar index

Check met Eicar malware testfile

Maak een tekstbestand aan in /home/benovo en plaats hierin de EICAR malware test string:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

root@testserver:~# clamscan -r /home/benovo
Loading:    15s, ETA:   0s [========================>]    8.70M/8.70M sigs
Compiling:   3s, ETA:   0s [========================>]       41/41 tasks

/home/benovo/.profile: OK
/home/benovo/.bashrc: OK
/home/benovo/.bash_logout: OK
/home/benovo/eicartest: Eicar-Signature FOUND

----------- SCAN SUMMARY -----------
Known viruses: 8699755
Engine version: 1.0.7
Scanned directories: 1
Scanned files: 4
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 19.095 sec (0 m 19 s)
Start Date: 2024:11:16 15:28:33
End Date:   2024:11:16 15:28:52

Naar index

Symbolische links worden niet gevolgd (default)

In tegenstelling tot wat soms gesuggereerd wordt, worden met de default Antimalware File Scanner instellingen, Symbolische Links NIET gevolgd.
Als gevolg worden bijv. de Piwigomappen '_data' en 'gallerie' met de grote datahoeveelheid niet gescand, omdat ze met symbolische links buiten de webroot opgeslagen worden.

Zie ook #man clamscan

 --follow-dir-symlinks=[0/1(*)/2]
   Follow  directory  symlinks. There are 3 options:
     0           - never follow directory symlinks
     1 (default) - only follow directory symlinks, which are passed as direct arguments to clamscan
     2           - always follow directory symlinks.

Symbolische links toch volgen
Als alle symbolische links wel gevolgd worden, moeten we zorgvuldig controleren dat data niet dubbel gecontroleerd worden: ten eerste direct de fysieke data en daarna nogmaals via de symbolische link.
Ook moet onnodig scannen van grote datahoeveelheden vermeden worden als deze elders ook al eens gescand zijn.
Als bijvoorbeeld Piwigo gebruikt wordt voor het beheren en presenteren van images dan worden de images en derivaten opgeslagen in sub-mappen van Piwigo.
Voordat ze daar belanden zijn ze al vele malen gescand geweest. De Piwigo app bevindt zich in de webroot /var/www/html en als deze map geselecteerd wordt voor scannen dan worden ook al de images nogmaals gescand, wat uren in beslag neemt.
Dus als we besluiten dat symbolische links gevolgd moeten worden is het belangrijk deze specifieke mappen uit te kunnen sluiten van de scan.

Sluit mappen en bestanden uit van scannen
Er zijn een paar opties die gebruikt kunnen worden om mappen en/of bestanden uit te sluiten van scannen.
Voor het uitsluiten van de Piwigo data voegen we de volgende parameters toe in de commandline

root@testserver:~# clamscan -r /var/www/html --exclude-dir="(\/var\/www\/html\/piwigo\/(_data|galleries))"

Dit resulteert in het niet scannen van:

  1. /var/www/html/piwigo/_data (symlink naar /home/pwgdata/_data met +/- 35 GB)
  2. /var/www/html/piwigo/galleries (symlink naar /home/pwgdata/galleries met +/- 300 GB)

Naar index

Decompress file size exceeds limits

Daily cron waarschuwing na het scannen

test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.daily 2>&1 > /dev/null; }
LibClamAV Warning: cli_scanxz: decompress file size exceeds limits - only scanning 105906176 bytes

Verder werd geen informatie verstrekt.
Het schuldige bestand door eleminatie gevonden zijnde /Gparted/live/initrd.img , een Windows.Image bestand. Het is op het oog niet eens een groot bestand ( 38 Mb) maar explodeert waarschijnlijk bij het decomprimeren.

Het scanfiles script aangepast zodat .img en .iso bestanden niet gescand worden.

Hiervoor in script scanfiles regel 41 gewijzigd:

nice -n19 clamscan -ri --exclude=".img" --exclude=".iso" "$S" >>"${LOGFILE}"

Naar index

Dagelijkse Filescan

SCANFILES script
Voor het dagelijks scannen van de files gebruiken we een script dat middels een cron uitgevoerd wordt.
Bekijk het 'scanfiles' script en/of gebruik Save As om het bestand op te slaan.

NOTE:
Voor de werking van het script is het nodig dat we eerst een aantal mappen en bestanden aanmaken:

root@thuisserver:~# mkdir /var/clamav
root@thuisserver:~# mkdir /var/clamav/quarantine
root@thuisserver:~# touch /var/clamav/scandirs

In het begin van het script worden verschillende variabelen opgeslagen o.a. het pad naar de te scannen mappen.
In deze sectie kan het script dus eenvoudig aangepast worden aan de serverconfiguratie.

SCANDIRS="/var/clamav/scandirs";               #Bestand 'scandirs' waarin te scannen mappen opgeslagen zijn
QUARANTINEDIR="/var/clamav/quarantine";        #Quarantaine map
LOGFILE="/var/log/clamav/scanfiles.log";       #Log bestand met resultaat laatste scan
NEWPATHS="/var/clamav/newpaths";               #Bestand met paths en bestandsnamen van deze scan gevonden malware
RESTOREPATHS="/var/clamav/restorepaths";       #Bestand met path en bestandsnamen van in quarantaine geplaatste malware
EMAIL_MSG="Resultaat dagelijkse ClamAV scan:"; #Mail aan Admin
EMAIL_FROM="testserver@makkink.eu";            #Afzender mail
EMAIL_TO="ben@makkink.eu";                     #Adres admin

Te scannen Mappen

# Lees SCANDIRS met lijst te scannnen dirs voor DIRTOSCAN
DIRTOSCAN=$(tail -1 ${SCANDIRS});

Resultaat op 18/11/2024 van bovenstaande:
root@homeserver:~# echo $(tail -1 /var/clamav/scandirs);
/home/ububen /home/files/documenten /home/files/afbeeldingen/fotos-huidig /var/www

Naar index

Update Clamav database

echo "Disable clamav-freshclam.service"
systemctl stop clamav-freshclam.service;  #Aan het eind van het script wordt deze herstart

echo "Looking for ClamAV database updates...";
freshclam --quiet;

Verwijder log
Voor het script is het essentiëel dat elke daily scan een nieuw leeg logbestand maakt.

# Verwijder oude log
if [ -f "${LOGFILE}" ]; then
 rm "${LOGFILE}";
fi

Scan de gespecificeerde mappen één voor één
De scan resultaten worden opgeslagen in de LOGFILE
De variabele 'MALWARE' is 0. Als 'infected' bestanden gevonden zijn wordt het aantal opgeteld bij MALWARE.

MALWARE=0;
for S in ${DIRTOSCAN}; do
  # total size if we use something like /home/*/public_html for scanning
  DIRSIZE=$(du -shc "$S" 2>/dev/null| cut -f1 | tail -1)
  echo -e "Starting a daily scan of "$S" directory.\nAmount of data to be scanned is "${DIRSIZE}".";
  nice -n19 clamscan -ri --exclude=".img" --exclude=".iso" "$S" >>"${LOGFILE}"
  # get the value of "Infected lines"
  MALWARE=$(($MALWARE+$(tail "${LOGFILE}"|grep Infected|cut -d" " -f3)));
done

Naar index

Geen Malware gevonden
Script eindigt na herstart van de clamav-freshclam.service

Malware gevonden
Als er malware gevonden is wordt er een e-mail met de logfile naar de Admin gestuurd.
Vervolgens worden van de gevonden malwarebestanden de bestandsnaam inclusief path opgeslagen in het bestand RESTOREPATHS.
Daarna worden de malwarebestanden in Quarantaine geplaatst.

# if the value is not equal to zero, send an email with the log details included
if [ "${MALWARE}" -ne "0" ]; then
        #compose content e-mail message
        body=$'\n'${EMAIL_MSG}$'\n'"==========================================="$'\n';
        body+="$(cat "${LOGFILE}")";
        body+=$'\n'$'\n'"De bestanden met Malware zijn naar '/var/clamav/quarantine' verplaatst";
        body+=$'\n'$'\n'"SSH naar 'Utils > ClamScan' om dit af te handelen";

        #Send e-mail message
        echo "$body"|mail -s "ClamAV: Malware gevonden" -r "${EMAIL_FROM}" "${EMAIL_TO}";

        # get newpaths of infected files from logfile"
        echo "$(grep FOUND "${LOGFILE}"|cut -d: -f1)" > "${NEWPATHS}";
        # Store paths for restore
        echo "$(grep FOUND "${LOGFILE}"|cut -d: -f1)" >> "${RESTOREPATHS}";
        # read newpaths file and move infected files to quarantine
        while IFS= read -r file;
        do
          mv "$file" "${QUARANTINEDIR}";
        done < "${NEWPATHS}"
fi

Naar index

CRON.daily voor Filescan

Om script 'scanfiles' dagelijks uit te voeren voegen we deze toe aan cron.daily dmv een harde link:
root@thuisserver:~# ln /usr/local/bin/scanfiles /etc/cron.daily/scanfiles

NOTE: Alleen op produktieserver. Niet nodig op testserver

Alle scripts in /etc/cron.daily worden dagelijks uitgevoerd, dat zijn op dit moment:

root@thuisserver:~# ls -l /etc/cron.daily
total 36
-rwxr-xr-x 1 root root  539 Mar 18  2024 apache2
-rwxr-xr-x 1 root root  376 Jul 22 16:59 apport
-rwxr-xr-x 1 root root 1478 Mar 22  2024 apt-compat
-rwxr-xr-x 1 root root  123 Feb  5  2024 dpkg
-rwxr-xr-x 1 root root 2211 Feb 10  2018 locate
-rwxr-xr-x 1 root root  377 Aug 27 16:26 logrotate
-rwxr-xr-x 1 root root 1395 Aug 27 16:26 man-db
-rwxr-xr-x 1 root root 2548 Oct 30 16:36 scanfiles
-rwxr-xr-x 1 root root  518 Aug 27 16:26 sysstat

Naar index

De crons starten op tijden zoals vastgelegd in /etc/crontab

root@testserver:~# cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
# You can also override PATH, but by default, newer versions inherit it from the environment
#PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
#MAILTO=""

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.daily 2>&1 > /dev/null; }
47 6    * * 7   root    test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.weekly; }
52 6    1 * *   root    test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.monthly; }
#

De cron.daily start elke dag om 06:25 uur.

Om mail van cron.daily naar root te voorkomen hebben we aan de cron.daily toegevoegd:
 2>&1 > /dev/null

Om mail van alle crons te voorkomen voeg toe na #PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 MAILTO=""

Waarschuwing cron.daily i.v.m te grote gedecomprimeerde filesize.
Oplossing: Scan .iso en .img bestanden niet

Naar index

Whitelist of Delete Malware

Gevonden Malwarebestanden worden in Quarantaine geplaatst en zijn uit de Fileserver en/of Webserver verwijderd.
Het advies is deze malware definitief te verwijderen, maar het is mogelijk dat er met het scannen een false positief geconstateerd is.

Als je om wat voor reden dan ook het malwarebestand wenst te behouden dan is er de mogelijkheid dit bestand te 'whitelisten'.
In dat geval wordt de signatuur van het bestand in een lijst geplaatst en wordt deze in toekomstige scans niet positief bevonden.
Vervolgens wordt het bestand vanuit Quarantaine teruggeplaatst naar zijn oorspronkelijke locatie.

Scanquar script
Bekijk het 'scanquar' script en/of gebruik Save As om het bestand op te slaan.

Als we het script starten terwijl er geen malware in quarantaine staat krigen we onderstaand scherm:

Maar als er Malware in Quarantaine staat:

Het script start met het zetten van enkele variabelen, deze moeten gelijk zijn aan de variabelen zoals gezet in script 'scanfiles'

Naar index

# Set variables
QUARANTINEDIR="/var/clamav/quarantine/";
RESTOREPATHS="/var/clamav/restorepaths";
TEMPFILELIST="/var/clamav/filelist";

Na het weergeven van het 'MALWARE IN QUARANTAINE' scherm vervolgt het script met het opschonen van vorige sessies:

# clear residue mogelijke resten van voorgaande sessie
if [ -f "${TEMPFILELIST}" ]; then
 rm "${TEMPFILELIST}";
fi

Als er geen bestanden in quarantaine staan dan:
Geef boodschap weer en stop script

# Check of er wel malware in quarantaine staat.
if [ -z "$( ls -A "${QUARANTINEDIR}" )" ]; then
  echo "     Er staan geen bestanden in Quarantaine, er valt hier niets te doen"
  echo;
  echo -n "      Druk  om terug te gaan"; read foo;
  exit;
fi

Naar index

Als er wel bestanden in quarantaine staan dan worden deze voorzien van een volgnummer en op de console weergegeven en tevens toegevoegd aan het tijdelijk bestand '$TEMPFILELIST'.

# Lees in  quarantaine geplaats bestanden in 'RESTOREPATHS'.
# Print op console en in tijdelijk bestand 'TEMPFILELIST'.
n=1;
while IFS= read -r line;
  do
    echo "     $n:$line"|tee -a "${TEMPFILELIST}";
    n=$((n+1));
  done < "${RESTOREPATHS}"

Kies op de console uit de weergegeven quarantainebestanden of stop.
Van het gekozen bestand worden variabelen opgeslagen zijnde FULLPATH en deze opgesplitst in DIR en FILE

# Maak keuze uit in quarantaine geplaatste bestanden
echo;
keuze=;
while [ -z $keuze ] ;do
  echo -n "     Kies nummer van gewenst bestand of Q om te stoppen:  ";
  read keuze;
done

# Geef optie voor Cancel
case $keuze in [qQ])
  exit;;
esac

# Haal keuze op. Ga terug naar menu als keuze niet bestaat
FULLPATH="$(grep -w "$keuze:" /var/clamav/filelist|cut -d : -f2)";

# Als $FULLPATH niet bestaat of leeg is > ga terug naar selectiemenu
if [ -z "${FULLPATH}" ]; then
  scanquar;
  exit;
fi

# Sla resultaten op in Var's
DIR="$(dirname "${FULLPATH}")/";
FILE="$(basename "${FULLPATH}")";

Naar index

Als een bestand gekozen is dan worden er twee opties geboden, zijnde:
'V' voor Verwijderen
en
'W' voor Whitelisting en terugzetten

# Geef keuzelijst met opties weer
echo "     Geselecteerd bestand:";
echo "     =====================";
echo "     $(tput setaf 2)"$keuze:""${FULLPATH}"$(tput sgr 0)";
echo;
optie=;
while [ -z $optie ] ;do
echo "     Kies:";
echo "     $(tput setaf 2)V$(tput sgr 0) voor het geheel $(tput setaf 2)verwijderen$(tput sgr 0) van het bestand";
echo "     $(tput setaf 2)W$(tput sgr 0) voor $(tput setaf 2)Whitelisting$(tput sgr 0) en terugzetten in oorspronkelijke map";
echo -n "     of $(tput setaf 1)Q$(tput sgr 0) om te stoppen: ";
read optie;
case $optie in [vVwWqQ]) optie=$optie ;;
*) optie=;
esac
done

case $optie in
  [qQ])
    optie=;
    scanquar;;

NOTE:
De tput settings zijn voor de vormgeving:
tput setaf 1 = set foregound rood
tput setaf 2 = set foregound groen
tput sgr 0 = Turn off all attributes

Naar index

Keuze VERWIJDER

- Verwijder bestand
- Als quarantainemap nu leeg is, verwijder map $RESTOREPATHS
- Keer terug naar begin van het script 'scanquar'


  [vV])
    # echo "Verwijder";
    echo;
    rm "${QUARANTINEDIR}""${FILE}";
    if [ -z "$( ls -A "${QUARANTINEDIR}" )" ]; then
      rm "${RESTOREPATHS}"
    else
      grep -v  "${DIR}${FILE}" "${RESTOREPATHS}"  > /var/clamav/temp && mv /var/clamav/temp "${RESTOREPATHS}";
    fi
    echo "     Het Malwarebestand '"${FILE}"' is van de fileserver verwijderd";
    echo;
    echo -n "     Druk  om verder te gaan"; read foo;
    scanquar;;
    

Naar index

Keuze WHITELIST en zet terug

- Maak checksum van het bestand en plaats deze in /var/lib/clamav/false-positives.sfp
- Plaats het bestand terug naar de map waar het stond voor de scan
- Als quarantainemap nu nog niet leeg is, verwijder de listing van het bestand uit het bestand $RESTOREPATHS
- Als quarantainemap nu leeg is, verwijder map $RESTOREPATHS
- Keer terug naar begin van het script 'scanquar'

  [wW])
    # echo "Whitelist en restore";
    echo;
    sigtool --sha256 "${QUARANTINEDIR}${FILE}" >> /var/lib/clamav/false-positives.sfp
    mv "${QUARANTINEDIR}${FILE}" "${DIR}${FILE}";
    if [ -z "$( ls -A "${QUARANTINEDIR}" )" ]; then
      rm "${RESTOREPATHS}"
    else
      grep  -v "${DIR}${FILE}" "${RESTOREPATHS}"  > /var/clamav/temp && mv /var/clamav/temp "${RESTOREPATHS}";
    fi
    echo "     Het bestand '"${FILE}"' is aan de Whitelist toegevoegd en teruggeplaatst.";
    echo;
    echo -n "   Druk  om door te gaan"; read foo;
    scanquar;;

esac

Naar index