Home » Tutorial

Category Archives: Tutorial

Install and Configure Security Software on Ubuntu

security as text and a mouse cursor


The topic of the blog post is applied IT Security on Linux Ubuntu Desktops. IT security is a hot topic since all the aspects of our live is based on IT in one form or another. Many companies around the world are affected by attacks against their IT systems and these attacks do a huge harm and cost a lot of money.

On one side systems and data security is a challenge for companies but on the other side also private individuals are seeking for security and want to have safe IT systems.

Ubuntu Desktop and Linux Desktop users are less exposed to cyber threads than Windows users but Microsoft also geared up its recent Windows versions regarding to IT security.

From my experience I can say that mostly an odd behavior of a Linux desktop system is caused by a software bug rather than a hacker, a virus, a rootkit or another malware. That applies to Windows too.

But to be sure it’s always good to know how to check your Ubuntu PC or Linux Desktop for malware and keep it safe. That’s why I want to introduce 4 Linux IT security tools to you. They are:

  • Rookit Hunter which is a malware scanner
  • ClamAV, an anti virus software
  • Chkrootkit, another malware scanner
  • UFW, stands for uncomplicated firewall

Let’s start with Rootkit Hunter:

Rootkit Hunter

A rootkit is a malicious software which grants a hacker full access to an IT System. There are a lot of different rootkits around for Linux systems.

There is a software for detecting rootkits on Linux systems which is called Rootkit Hunter.

First of all, if we want to use Rootkit Hunter, we need to install it by opening a terminal and and we need to execute:

sudo apt-get install rkhunter

As a next step we need to update Rootkit Hunter:

sudo rkhunter --update

Then we have to do a check of our Linux (Ubuntu) system with:

sudo rkhunter -c

Several checks are done then on the Linux system.

Often Rootkit Hunter doesn’t run immediately after the installation and gives us some errors.

Learn here how to fix WEB_CMD, Update failed, SCRIPTWHITELIST errors.

We learn about a Linux anti virus software next.


ClamAV is the Linux anti virus software which is available since more than two decades. There are every now and then proprietary anti virus solutions for Linux popping up for a short period of time. I have seen Linux versions from the anti virus software vendors Sophos, AVG, Avira and so on. But after so short time these products were vanishing.

So ClamAV is the most reliable anti virus software for Linux. Let’s learn how to install it on Ubuntu:

sudo apt-get install clamav

Next we need to update the virus definitions:

sudo freshclam

Then we are able to scan a directory with the following command and its options:

clamscan /home –recursive=yes –infected

The parameter “–recursive” means that also sub directories of /home are scanned. The option ” –infected” means that there is only output in the terminal if a virus was found. /home is our directory which we want to be scanned.

So far, so good. Now we are learning about another rootkit scanner – Chkrootkit.


Chkrootkit is like Rootkit Hunter a detection software for rootkits on Linux systems.

Since rootkits are often hiding themselves on infected system it could be a good approach to scan the system (the file system) with a Linux live system. Find the instruction here!

The first step is to install Chkrootkit on Ubuntu:

sudo apt-get install chkrootkit

Then do the check with:

sudo chkrootkit 

Here you are seeing if there are finds or suspicious files on the computer. As next we learn about a firewall.

UFW – Uncomplicated Firewall

Not only scanning a system and detecting malicious software is important for systems and data security. Also protecting our services on our Linux system with a firewall is an important prevention and security measure.

Depending on our systems setup probably several services (servers, also called daemons ) are active on our Linux. It could be the SSH server (Secure Shell Server) or any other service. We want to protect these services with a firewall.

The most firewall products need a deeper understanding of networking and networking technologies. But there is a simple solution available for Linux called “UFW – Uncomplicated Firewall”. If installed and activated it blocks incoming network traffic by default and allows all the outgoing network traffic.

Let’s install UFW with “apt-get”:

sudo apt-get install ufw

Then we need to enable the UFW with:

sudo ufw enable

To get more detailed information type:

ufw status verbose

You will see these lines in the output:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip


I introduced 4 important tools to you and I showed you how to install and configure these tools. The rootkit scanners are a good starting point if a systems show an odd or suspicious behavior. And ClamAV is a stable project since many years. It’s always good to have a firewall enabled and UFW is really easy to enable and to handle.

Feel free to comment this post!

Block Brute-Force Attacks against WordPress

hand types on keyboard in the dark


WordPress is a Content Management System (CMS) and blogging software which allows one to publish content in the internet. Many web pages in the internet are built on the popular WordPress software.

WordPress consists mainly in HTML and PHP Code and stores its data in a SQL database like MySQL or MariaDB.

Like all other IT systems WordPress based web pages can be under attack by hackers. Basically any computer or device in the whole internet can start an attack to a public web page. There are different kinds of attacks but one very often used approach to try to get access to an IT system is password guessing. The technical term for password guessing is brute-force attack.

The strategy of the attackers is to try a lot of different passwords over and over again. After a short analysis of the WordPress page the active users are identified by the attacker. If an active user account is identified, a lot of passwords are tried out. These attacks are done automatically by scripts.

If weak and short password are used for our WordPress page they could be easily guessed. That’s why always use super long and super strong password consisting in numbers, lowercase letters, capital letters and symbols. 16 position or longer passwords are recommended.

The problem of these attacks is that they are often undetected. The password guessing can take days, weeks or months and nothing prevents this if WordPress is not protected.

A good piece of software which protects us from these kind of attacks is “GuardGiant Brute Force Protection”. It’s a WordPress plugin and it is free. Let me introduce this software to you. First of all we need to install it.

Installation of GuardGiant Brute Force Protection

Like any other WordPress plugin we need to install it through the Dashboard of our WordPress page. Search for the plugin by its name. It looks like this:

wordpress brute force protection plugin installation page

Click on “Install Now” and then to “Activate”.

Settings and Configuration

The predefined settings are already fine to protect us. As you see there is distinguished between “Limit Login Attempts On User Account” and “Block IP Addresses Making Multiple Failed Login Attempts”.

This means that if an existing user account is penetrated, this user account will be locked for 2 minutes after 10 wrong passwords are tried. As you see after 8 failed login attempts form a single IP address, from this IP cannot be logged anymore in for 4 minutes.

Important: These setting could lock us out from our WordPress page, if a valid user account is denied from logging in!

That’s why we need to whitelist our IP address, so that our computer is always allowed to log in, no matter how may failed login attempts are done from our computer!

whitelist setting of the plugin

As you see above two IP addresses are whitelisted and they are never affected or locked by the plugin.

Another options which cover up the existence of an existing user you see here:

By default WordPress tells the one who wants to log in if there is a failure in the user name spelling or if just the password is wrong. The option above covers this.

Additionally: Always keep WordPress, its themes and plugins up to date to reduce the probability to be a victim of hackers.


I recommend this plugin because it prevents password guessing attacks. The plugin is easy to configure and the predefined settings make sense. Don’t forget to whitelist your own IP address, so that you are note locked out.

If you observe your WordPress logs you will see that this plugin does its work by reducing the login attempts by unauthorized devices.

Feel free to comment my post and have fun with WordPress and its plugins. 🙂

8 Free and Important WordPress Plugins (2023)

scrabble letters saying blog


WordPress is a popular blogging and Content Management System (CMS) software. It is used to publish blogging content to the internet or as a base system for web pages. Other widespread CMS software is Joomla! or Drupal. These systems exist since many years and over the time theses systems became very similar to each other.

Learn here how to install WordPress. Here is an instruction how to install CMSimple which is another ascending CMS software!

WordPress can be considered as a construction kit with many modules. The basic design is called “theme”. The theme consists in font styles, color schemas, graphical elements, menus and so on.

Plugins on the other hand are modules which are providing not a design but a functionality – like a backup function, a contact form, translations, compliant functions or security improvements.

Themes and plugins are mostly and basically free of costs, but advanced functions can cost money. WordPress itself is free as well.

In this article we will learn which free plugins support us to develop a professional WordPress page. We are starting with a backup plugin.

1. Backup Migration (by Migrate)

The topic backup is ubiquitous in IT. A data backup means that there is in the case of data loss a copy of the lost data, so that the original status of the system can be restored.

In our case, when we develop and maintain a WordPress page, changes happen during the time. Content changes and updates are installed constantly. I the case of a failure, it can be a hacking, a server failure or a maintenance mistake, with a backup the system can be restored.

I recommend “Backup Migration” by Migrate.

user interface of the software backup and migration

The handling is quite intuitive. Manual and automatic backups can be done and backups can be downloaded. There is a special feature called “migration”. A migration of a web page to a new domain or a new server can be done easily.

The data restore in a case of failure can be done easily as well.

2. Disable and Remove Google Fonts (by Fonts Plugin)

Nowadays it is important to have a “General Data Protection Regulation” (GDPR) compliant web page to not catch a juristic case.

In 2022 people were sued because their web site connected to the Google servers to use Google’s fonts. Google got the IP address of the web site visitors and could track the visitors behavior without their consent. This caused juristic troubles to web site owners. WordPress doesn’t suppress this behavior by default.

A plugin is necessary to stop WordPress connecting to Google’s servers.

The plugin has the name “Disable and Remove Google Fonts” by Fonts Plugin:

red rectangle with white cross, logo of disable google fonts plugin

The plugin just needs to be installed and it then provides its function. I will continue with the topic security because it’s important next to the GDPR compliance.

3. Sucuri Security – Auditing, Malware Scanner and Security Hardening (by Sucuri Inc.)

IT systems and data security is a very important topic and integrity, confidentiality and availability of the data and the systems is the aim.

To protect our web page against hackers additional security is desirable. The plugin “Sucuri Security – Auditing, Malware Scanner and Security Hardening” by Sucuri Inc. does a good job in securing our web page.

The free version’s features are security logging, integrity scanning, web page hardening and notification services.

sucuri graphical user interface, buttons and settings

An alternative to the Sucuri Inc. plugin is “Wordfence Security – Firewall & Malware Scan” by Wordfence. On some of my web pages I am using Wordfence on others the Sucuri Inc. plugin.

The next plugin affects the ranking on the Google result page.

4. Yoast SEO (by Team Yoast)

If a web page is designed mostly it should have a good ranking in the Google result page. The technical term is “Search Engine Optimization” (SEO). Since money is invested and money should be made with web pages clients want to be ranked well in Google.

The free version of the Yoast SEO plugin gives hints and feedback about the structure of the content of the web page. It analyzes the structure of the text and gives hints about key words and meta descriptions of the web page and sub pages.

SEO readability red and green dots

As you see in the image feedback by Yoast is given about the SEO and readability of the text.

The next topic is about statistics.

5. WP Statistics (by VeronaLabs)

WP Statistics is a GDPR compliant alternative to “MonsterInsights – Google Analytics”. Google Analytics could cause juristic trouble and a worry free alternative is WP Statistics. For sure the free version is very limited compared to Google Analytics.

WP Statictics shows details like the visitors browser, the country of origin and visitors and visits are distinguished and counted.

The plugin shows popular sub pages and dates and time of the visits as well as the visitors operating system.

It is important to get the Key Performance Indicators (KPIs) an statistics of your web page, so that you can optimize the content and measure your success.

list of browser logos, country flags, dates, operating system names

A clear and handy alternative with a focus on privacy too is “Burst Statistics – Privacy-Friendly Analytics for WordPress” by Really Simple Plugins.

Nowadays it is all about GDPR, privacy and compliance and the next plugin is another building block to stay on the safe side.

6. Real Cookie Banner: GDPR (DSGVO) & ePrivacy Cookie Consent (by devowl.io)

Cookies are small files and they are stored by web pages to the visitors computers and cookies can be used to track visitors. Visitors need to have chance by law to deny the set of cookies on their computers.

Real Cookie Banner is a cookie banner which really prevents the set of the cookies on the visitors computer if he or she denies it by clicking on the “deny” button. I tested it and it works. The only disadvantage of the free version is the fact that it doesn’t cover Google AdSense cookies.

For Google AdSense to be covered the Pro version is needed instead which takes money. The plugin scans the whole web page and detects all the cookie setting code automatically. After the scan an appropriate banner is created and later on served to the web page visitors.

Depending on the setup of the web page a proper functioning cookie banners can be mandatory for your web page. It is very obvious if there is a cookie banner when one enters the web page or there is no cookie banner popping up.

Ask your lawyer to check your web page for its GDPR and privacy compliance.

user interface of cookie banner, setting and scanner button, switches

Because GDPR compliance is an important topic another plugin helps to protect you and your web page.

7. Disable Emojis (GDPR friendly, by devowl.io)

Emojis are small symbols which are enriching the text and content of your webpage. These little smiles can have an impact to the visitors privacy because they are sometimes downloaded from another domain. IP addresses are then transferred to this domain and this causes a violation of the visitors privacy.

To prevent the violation of the visitors privacy just install “Disable Emojis (GDPR friendly)” by devowl.io. You don’t have to do additional configurations and the text enriching Emojis will still work.

Okay, it’s enough now about compliance. Let’s talk about the web page performance at the last point.

8. WP Super Cache (by Automattic)

Let’s speed up our page. The “WP Super Cache” plugin loads the bulky WordPress PHP files in advance and converts them into HTML, which is then served to the visitors computers. This improves the loading times of the web page.

Just install the plugin and activate it. A new menu entry appears in the WordPress Dashboard.

As you see in the screen shot there is an easy mode for quick configuration and no special configuration is needed:

super cache settings, easy mode, caching on is selected


In my role as web developer I nearly always install the plugins listed above. I can recommend you to do so if you want stay compliant, secure and performant with your web page.

Depending on your projects requirements other plugins for sure can be necessary as well. Feel free to give a comment to this post.

Install WordPress and MySQL on Ubuntu

cup of coffee, notebooks, a pen and a table device

WordPress is a software which was initially designed for blogging (weblog) purposes. A blog software can be used to publish content chronologically to the internet. Over the time and with ongoing releases WordPress developed and nowadays it can be used as a basis for ordinary webpages. It can be used similar as Joomla! or Drupal or even Bootstrap (HTML and CSS).

If you want to run your own blog or a small webpage WordPress is first choice.

To customize the base system, a broad range of themes and plugins can be installed. Most of them are free and only advanced use costs money.

WordPress is popular because first successes can be achieved easily a no software development skills are required to set up a nice little web page.

The development of WordPress goes on and the current version is 6 and its sub versions. WordPress is based on PHP and runs on the Apache2 web server and on Linux. This tutorial shows the installation of WordPress on Ubuntu Linux.

1. Install Software

First of all we need to install software on our Ubuntu. Open a terminal and type the following lines to have a web server (Apache2), a database (MySQL) and PHP installed:

sudo apt-get --yes install mysql-server apache2 
sudo apt-get --yes install libapache2-mod-php php-mbstring 
sudo apt-get --yes php-xml php-intl php-mysql
sudo a2enmod php7.4

2. Create the MySQL Database

Now we need to run the MySQL Command Line Interface (CLI). Therefor we need to execute in a terminal:

sudo mysql -u root -p

We are in the MySQL CLI now. Type:

mysql> CREATE DATABASE wordpress;

As the next step, we need to create a user, grant the necessary permissions to the user and at the same time we are setting a password:

mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'secpasswd';
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';

And then we quit the MySQL CLI:

mysql> quit

3. Download WordPress to the right Directory

Now we need to download and extract WordPress in a terminal/shell with these commands:

cd /var/www/html
sudo wget https://wordpress.org/latest.zip
sudo unzip latest.zip

To not run into an error during the installation, the ownership for the WordPress directory has to be changed. On my Ubuntu system the “www-data” user and the “www-data” group need to have the ownership of the directory structure. Run the following command:

chown -R  www-data:www-data /var/www/html/wordpress

6. Install and Configure WordPress

Next, open an internet browser and connect to “http://localhost/wordpress”.

Select a language and click on “Let’s go!”. Now the fine tuning has to be done. Provide these settings:

Database: "wordpress" 

Username: "wordpress"

Password: "secpasswd"

Database Host: "localhost"

Click to “Submit” and on the next page “Run the installation”.

Provide now “Site Title”, the WordPress “Username”, a secure WordPress password, your email address and click to “Install WordPress”.


Congratulations! You successfully installed WordPress on your Ubuntu computer! Open a browser and connect to “http://localhost/wordpress/” and login. You can check out now the backend of WordPress and you have a basic site set up for future customization.

Continue with installing themes and plugins and the configuration of menus. It’s just easy to go on from this point.

If you are interested in other CMS, check out my Joomla!, CMSimple or Confluence tutorials!

Feel free to comment this post!

Install CMSimple on Ubuntu

a computer, a notebook, a pencil and a mobile phone

Basic Information

Many websites in the internet run on Content Management Systems (CMS) nowadays. A CMS provides a relatively easy way to publish web content to the internet. The good thing about a CMS is that no software development skills are necessary. Although there are often good templates and plugins provided the fine tuning to have a CMS with a fancy design still can be tricky.

CMS with high market shares are WordPress, Drupal and Joomla!. These names are around all the time when it is about CMS and web page development. These systems are put on web servers like the Apache web server and they use a database system like MySQL to store the content like blog posts and pages in it.

I am sure there are use cases for CMS where it can be an advantage to not store content in a database system. Webhosters for example limit the amount of available databases to their customers – means in short: more databases cost more money.

I want to introduce a CMS which doesn’t need a database to store its content. The name of the CMS is “CMSimple”. All the pages and the contents of CMSimple are stored in files. The next paragraphs show the procedure to have CMSimple up and running.

Here are the steps I took to install CMSimple on a Ubuntu PC for test purposes:

1. Download

Open a terminal and download the Zip File from the CMSimple download page:

sudo wget https://www.cmsimple.org/downloads_cmsimple50/CMSimple_5-8.zip /tmp
sudo unzip /tmp/CMSimple_5-8.zip

2. Install the Apache2 Web Server

sudo apt-get --yes install apache2 apache2-data apache2-utils
sudo apt-get --yes install libapache2-mod-php

The command above installs the Apache web server on Ubuntu. The next command starts the web server:

sudo service apache2 start

3. Put the CMS on the Webserver

Now the downloaded and extracted files need to be put to the web server directory and permissions need to be modified:

sudo mkdir /var/www/html/cms
sudo cp -r /tmp/CMSimple_5-8/* /var/www/html/cms/
sudo rm -rf /var/www/html/cms/2*
sudo cp /var/www/html/cms/setup/setupControl.php /var/www/html/cms/
sudo chown -R www-data:www-data  /var/www/html/cms/*

4. Login and change the Password

The developers of CMSimple write on their page that there is a limit of 5 minutes for you to change the password. After that time you have to start all over again.

So open a browser and type the following URL to the address line of the browser:


Set a password with at lease 5 positions. I personally recommend to set a 16 positions complex password on production pages.

On the next screen type the same password in to the “Password:” input box. Leave the “User (optional):” input box blank.


Now the hard work just starts. Customize your page with text, images and all the stuff a fancy page requires. As mentioned above the content is just stored in the file system. This can be also an performance advantage and the loading time could be reduced compared to other extensive CMS.

If you are doing a technology evaluation currently, give CMSimple a chance. Small web projects could be done for sure with this CMS. New designs, so called templates, can be easily created for CMSimple.

If you are interested in a CMS with a database as a data storage, check out my WordPress, Joomla! or Confluence tutorial!

Have fun 😊

Install and Test Confluence Wiki and MySQL on Ubuntu

women writes notes to a note book, coffee cup

Basic Information

Confluence is a Wiki system comparable with MediaWiki. In companies it is used for documentation purposes and as an information hub. It is basically a commercial software and Atlassian is the company behind it. It is possible to have a free installation with some limitations or to buy a license to have an instance with full features. Confluence is proprietary software written in Java.

The data store which holds basically the majority of the web content of Confluence is in our case MySQL. MySQL is available in the Ubuntu repositories.

Please notice that a productive installation needs to have a good planning. I provide here a good first impression on how to do a successful setup of a test instance of Confluence.

1. Install Software

On Ubuntu the prerequisite to have Confluence finally up an running is to have these packages installed by Terminal/Shell:

sudo apt-get --yes install mysql-server

2. Create a MySQL Database

After we have installed the MySQL Ubuntu package we need to create a database and an user and grant access to the user with the MySQL Command Line Interface (CLI). First log in with empty password:

sudo mysql -u root -p

Then create a database with the name “confluence”:

mysql> CREATE DATABASE confluence;

The next command creates a user called “confluence” with the password “secpasswd”. And the user gains access to the database:

mysql> GRANT ALL PRIVILEGES ON confluence.* TO confluence@localhost IDENTIFIED BY 'secpasswd';

Exit the MySQL CLI:

mysql> quit

After this stay in the Terminal/Shell and run this command:

sudo echo transaction-isolation=READ-COMMITTED >>/etc/mysql/mysql.conf.d/mysqld.cnf

This step is required. If not done the installation will fail later on.

3. Download Confluence

To download Confluence run in a Terminal/Shell:

wget https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-7.20.1-x64.bin -O /tmp/atlassian-confluence-7.20.1-x64.bin

Now is is necessary to set the right permissions to the downloaded file to make it executable:

chmod a+x /tmp/atlassian-confluence-7.20.1-x64.bin

4. Start the Installation

To start the installation procedure run in a Terminal/Shell:

sudo /tmp/atlassian-confluence-7.20.1-x64.bin

Fontconfig and Jave Runtime Environment (JRE) are configured. The next steps are summarized on a screenshot. The configurations are red marked:

We did an “Express Install” and Confluence is now accessible by an internet browser and the address “http://localhost:8090”. The installation continues now by browser.

I recommend for testing purposes to choose:

Trail Installation

A link is provided to Atlassian.com to register for a trail license. This can be done easily with a Google Account. After setting the trail license choose:

Non-clustered (single node)

Next it’s about the database settings. Use “MySQL”, open a Terminal/Shell and do the following:

wget https://cdn.mysql.com/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.49.zip -O /tmp/mysql-connector-java-5.1.49.zip
unzip /tmp/mysql-connector-java-5.1.49.zip -d /tmp
sudo cp /tmp/mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar /opt/atlassian/confluence/confluence/WEB-INF/lib
sudo service confluence restart

Refresh the browser and continue with “MySQL” and insert the following data into the appropriate fields:

Setup type: "simple"

Hostname: “localhost”

Port: "3306"

User: “confluence”

Database name: “confluence”

Password: “secpasswd”

Click on “Next”

On the “Load Content” Page, let’s set up an “Example Site”.

On the “Configure User Management” page I selected “Manage users and groups within Confluence. I set on the “Configure System Administrator Account” my username, email and password. Then I got “Setup Successful” and clicked to “Start”.


The setup can be very tricky but finally we got a good first impression and a solid test environment. Maybe several health check messages are popping up and some optimizations need to be done. Since Confluence is not completely free, MediaWiki or XWiki could be an alternative. As I wrote above a free license with several restrictions is offered by Atlassian.

Install Joomla! and MySQL on Ubuntu

mobile computer, a note book, someone is writing into the note book

This tutorial is about installing the Content Management System (CMS) Joomla! and the Database system MySQL on Ubuntu. Joomla! is one of the most popular CMS nowadays. It provides an easy way to set up web pages and to publish content in the internet. Joomla! is a typical CMS while other software like WordPress is more focused on providing blogs.

MySQL is the database system and keeps the information stored which is displayed by Joomla!. Another component which is used in out setup is the Apache2 web server. The web server handles the http requests from internet browsers and basically sends the Joomla! content to the visitors computer.

An other compounded which needs to be installed is PHP. Joomla is mainly written in PHP and therefor a bunch of Linux packages related to PHP need to be installed as well.

1. Install Software

As a first step we need to install some Ubuntu packages like MySQL, Apache2 and PHP . They are all in the standard repositories and the installation should not cause problems. Execute this commands in a Terminal or Shell:

sudo apt-get --yes install mysql-server apache2 
sudo apt-get --yes install libapache2-mod-php php-mbstring 
sudo apt-get --yes php-xml php-intl php-mysql
sudo a2enmod php7.4

2. Create the MySQL Database

Since MySQL is installed already we can just enter the MySQL Command Line Interface (CLI) with the following command:

sudo mysql -u root -p

Now we are in the MySQL CLI and we need to create the database for Joomla!

mysql> CREATE DATABASE joomla;

As the next step, we need to create a user, grant the necessary permissions to the user and at the same time we are setting a password:

mysql> GRANT ALL PRIVILEGES ON joomla.* TO joomla@localhost IDENTIFIED BY 'secpasswd';

…and quit then:

mysql> quit

3. Download Joomla! to the right Directory

Now we need to download and extract Joomla! in a terminal/shell with these commands:

sudo mkdir /var/www/html/joomla
cd /var/www/html/joomla
sudo wget https://downloads.joomla.org/cms/joomla4/4-2-4/Joomla_4-2-4-Stable-Full_Package.zip
sudo unzip Joomla_4-2-4-Stable-Full_Package.zip 

The “unzip” command extracts the compressed ZIP file. Notice that the version 4.2.4 is the newest as I am writing this blog post. In a few weeks a new version will be released.

5. Modifications in the File System

To not run into an error during the next steps, the ownership for the Joomla! directory has to be set. On my Ubuntu system the “www-data” user and the “www-data” group have to be the owner of the directory structure. Run the following command:

chown -R  www-data:www-data /var/www/html/joomla

6. Install and Configure Joomla!

Next, open an internet browser and connect to “http://localhost/joomla”. So far so good!.

The rest is a quite simple process:

Enter a site name and click on “Setup Login Data”. Then set a Super User name and a password. Provide an email address. Click on “Setup Database Connection”. On the page “Database Configuration” the data from the step above is needed:

Choose: “MySQLi”

User: “joomla”

Database: “joomla”

Password: “secpasswd”

The host should stay “localhost”.

Then click on “Install Joomla” and wait a few moments.

Then you see “Open Site” and “Open Administrator”.


The most critical step is probably the 5. step “Modifications in the File System”. It took me a few minutes to resolve some permission and server errors. If you follow my instructions it will work.

But now you can log in with the user “user” and the “secpasswd” which you set during the installation procedure.

Other web apps like WordPress and MediaWiki are installed in the same way. You find my MediaWiki blog post here.

Feel free to comment this blog post!

Install MediaWiki and MySQL on Ubuntu

screen displays a web page

Basic Information

The aim of this tutorial is to have MediaWiki running on a Ubuntu PC. MediaWiki is basically a web based system which provides information to visitors. This information can be modified by multiple users. In companies it is used to documentation and collaboration purposes. The famous website “Wikipedia” has as its base system a MediaWiki.

To have MediaWiki running and online other components are required as well. A web server and a database server are needed. The web server handles the http requests from the web browsers and the database contains basically the information which is stored by MedaiWiki.

MediaWiki is written in the programming language PHP. PHP components need to be installed as well.

I use “Apache2” as web server and I use “MySQL” as database server in this tutorial. Both is open source software and available in the Ubuntu repositories.

1. Install Software

As a first step it is necessary to open a terminal with a bash and install the Apache2 web server, PHP and the MySQL database server and client:

sudo apt-get --yes install mysql-server apache2 
sudo apt-get --yes install libapache2-mod-php php-mbstring 
sudo apt-get --yes php-xml php-intl php-mysql
sudo a2enmod php7.4

2. Create a MySQL Database

As I wrote before the database keeps basically the information of the MediaWiki installation.
Run these commands to enter MySQL and to create a database:

sudo mysql -u root -p

Enter the Mysql Root password – in my case the password is blank.

mysql> CREATE DATABASE wiki;

The command above creates the database.

mysql> GRANT ALL PRIVILEGES ON wiki.* TO wikiuser@localhost IDENTIFIED BY 'secpasswd';

The command above creates a user called “wikiuser” with the password “secpasswd”. Then do this:

mysql> quit

3. Download MediaWiki to the right Directory

Now we need to download the latest stable version of MediaWiki. At the date of writing this blog post the following commands did the job:

sudo cd /var/www/html/
sudo wget https://releases.wikimedia.org/mediawiki/1.38/mediawiki-1.38.4.zip
sudo unzip mediawiki-1.38.4.zip 

The last command extracts the compressed zip file.

4. Install and Configure MediaWiki

Now we need to open the browser and connect to this address: “http://localhost/mediawiki-1.38.4/index.php” . Click on “set up the wiki”.

From now it is a quite intuitive process. Select the language for MediaWiki and continue.

On the page called “Connect to Database” we need to provide the setting which we set before in the step “2. Create a MySQL Database” of this tutorial.

Host: “localhost”

User: “wikiuser”

Database: “wiki”

Password: “secpasswd”

Click on “Continue”

On the page called “Name”, set the name of the Wiki installation, set a username and a password. Later you will need the username and the password to log into the MediaWiki.

In our test lab situation we can safely click on “I’m bored already, just install the wiki.”

4. Download the Configuration

Download now the “LocalSettings.php” and copy it to “/var/www/html/mediawiki-1.38.4”.

Click finally the “Enter the Wiki”.


The process is basically not very complicated. A lot of web applications have a similar setup procedure. I will post soon an instruction about installing WordPress. I did a Joomla” tutorial already – click here to see it. That’s basically very close to what I posted today.

Keep in mind that there could problems with the PHP version arise. Not every MediaWiki version is compatible with all the PHP version. See here the MediaWiki requirments: https://www.mediawiki.org/wiki/Manual:Installation_requirements

Another issue could be that the MediaWiki is not accessible from other computers in the network. A host firewall could cause this problem.

Minix – First Steps

I want to introduce a UNIX teaching system to you called Minix which means Mini Unix. A quite interesting system, is licensed under a BSD license and comes with pkgin package manager.

During the last years no new versions were released – the current stable version is 3.3.0 since the year 2014.

I used Virtual Box for my tutorial. VirtualBox is a software to virtualize other systems in a kind of a container. The virtual “container” is then isolated from the rest of the host system. This means that you can run two or more operating systems on the same hardware. In our case we use the host system, which can be a Windows or a Linux and then we use Minix as a virtual guest.

Minix is a small system and the download has approximately 288 Megabytes. Very low RAM is used by Minix and a modern computer can easily run Minix as a VirtualBox guest.

1. Download Minix

First of all download Minix 3.3.0 from here:

Recognize that as http URL is used instead a https URL. Some modern browsers will give some kind of warning when downloading this file.

After the download completed, it is necessary to extract the compressed bz2 file. In Windows you can use “7 Zip” and under Ubuntu there is a binary called “bzip2” which can be used for extraction. Finally you will hat a ISO (DVD image) file.

2. Create a Virtual Box Guest

Create a new virtual machine with around 800 Megabytes of RAM (i.e. VirtualBox) and boot the VM with the ISO file. Minix will also run if you assign less RAM but the performance will be poor. You will find information about how to use VirtualBox easily in the internet. Also how to boot from the ISO file is well described in the internet.

3. Setup

After starting the virtual guest you should log in with root privileges (no password). After logging in run the command to start the installation:


During the setup select your preferred language, select automatic installation mode rather than expert mode and select the appropriate disk for the installation.
Around 8000 files will be installed.

4. Network Interface Card Selection

Important! Select the appropriate NIC – I selected number 9, the VirtualBox driver.

5.Network Settings

Next question was about using DHCP or manually config. I choosed DHCP in my testlab.

6. Eject the ISO file

Shutdown the VirtualBox guest (the Minix), eject the ISO file from the virtual guest and start the VM again. To eject the ISO is necessary so that when you boot the virtual guest next time the already installed Minix is started instead of the setup procedure again.

7. Start Minix

The Bootloader appears. Select number 1 and login as root with no password.

8.Verify the Network Configuration


does the same job as in Linux. In a modern Linux the command is mostly “ip a”. The equivalent in Windows would be “ipconfig”. If executed, it shows the IP address configuration of Minix.

9. Software installation

For software installation use for example:

pkgin update
pkgin search ssh
pkgin openssh-6.6.1


pkgin install bash

The commands above install the “Secure Shell” (SSH) which is a software for accessing remote system in a secure way. You will find tons of information in the internet about it. The “bash” is a command interpreter an is widely used in Linux. With the command above the “bash” is installed in Minix.

10. Add Repositories

But at this point we are very limited. There are too less packages available for installation. So we must add another repository. This is done in this file:

Uncomment this repository and change ftp:// to http:// :
and give a hash to the http://www.minix3.org/ … repo.

11. Synchronize the Repositories


pkgin clean
pkgin update

12. Add Software

Now we have a huge package list available. We could now easily setup Samba, Apache, Postgres, Mysql or other more interesting stuff, servers and services. The mentioned software is popular Unix/Linux software and definitely worth to learn and know about.

13. Start a Service

Other good commands for testing purpose are:

sh /usr/pkg/etc/rc.d/sshd status
sh /usr/pkg/etc/rc.d/sshd start

This starts the previously installed Secure Shell Server or outputs the status of the server.


If you are interested to go beyond Linux this could be a nice way to do so. If you are Windows user, Minix could be an interesting stopover before exploring the exciting Linux world.

Keep in mind that originally the main purpose of Minix was to provide a UNIX teaching system. In my testlab the performance in the VirtualBox guest was not very impressive.

Rootkit scan with Ubuntu Live System

Black man with mobile computer

Basic Information

Sometimes it is the case that Linux, like other Operating Systems, shows odd behavior. And in some cases the cause of the odd behavior cannot be comprehended although log files are verified and the hardware is checked. I had this problem too often in the past years.

Then often I check the system for malicious software. On Linux are programs available which are scanning for a so called Rootkits. A Rootkit is a malicious software which grant administrative access to the attacker or hacker.

Well known detection software for Rootkits are programs like Rootkit Hunter, Unhide or Chkrootkit.

The difference between a Rootkit and a Virus is that the Virus doesn’t necessarily administrative access to the system.

The Problem

If the Rootkit scan is done on a System which is already infected, then the Rootkit is probably not found because the Rootkit is hidden. There are only hints which are only difficult to distinguish from false positives.

The Fix

Rootkit scans can then be done from a Linux Live system. Just follow the following steps:

1. Step

Download Ubuntu Live Iso file and install the Iso file to a USB stick.

2. Step

Boot the Ubuntu Live system and select “Try Ubuntu”.

3. Step

Install Chkrootkit:

apt-get update
apt-get install chkrootkit

4. Step

On my system the following partitions exist:

  • sda1 – swap space
  • sda2 – this is the root partition /
  • sda3 – this is my home partition /home
  • sda4 – this is the home directory of the root user /root

5. Step

mkdir /mnt/disk – creates a directory
mount /dev/sda2 /mnt/disk – provides access to the filesystem and the files on the system which I want to scan
mount /dev/sda4 /mnt/disk/root – this location will be also scanned, so it is important to grant access to it

6. Step

Do the Scan with the following command:

chkrootkit -r /mnt/disk/

Normally the output should say things like “nothing found” or “not infected”.


If there is a detected Rootkit do another scan with Rkhunter. It could still be a false positive.
Rkhunter needs to be installed and updated.
If there is a Rootkit installed you should reinstall the Operating System.

consulting picture

WordPress Cookie Notice by Real Cookie Banner