Schlagwort-Archive: GNU/Linux

Unixähnliche Mehrbenutzer-Betriebssysteme, die auf dem Linux-Kernel und wesentlich auf GNU-Software basieren. Wie CentOS, Debian, Ubuntu Fedora.

Befehle Suchen in Bash History

Befehl in Bash History finden und erneut ausführen

Bourne-again shell ist eine freie Unix-Shell unter der GPL. Bash merkt sich die eingegebenen Befehle und speichert sie in einer Verlaufsdatei, um sie später wiederholt ausführen zu können. Es ist die Standard Shell für Terminalumgebungen bei den meisten Linux-Distributionen, unter macOS kann die Standard Shell auf Bash festgelegt werden, für Windows wird Bash mit der WSL Installation verfügbar.

Bash the Bourne-again shell on Debian
Bash the Bourne-again shell on Debian

Die meisten werden es kennen, mit der Pfeiltaste nach Oben kann man durch den Bash-Verlauf scrollen, um ein zuvor ausgeführter Befehl wiederholt auszuführen.

Bash-History Rückwärtssuche

Was viele nicht wissen, es lässt sich nach einer bestimmten Befehlszeile in der history suchen, so kann mit Ctrl+R die Rückwärtssuche aufgerufen werden, hier gibt man die Zeichen ein an die man sich erinnert.

Bash Reverse Search Ctrl+R

Durch erneutes Ctrl+R scrollt man schrittweise zurück, zu Befehlszeilen die dem Suchmuster in der History entsprechen.

  • Ctrl+R: Bash-Verlauf nach einem Befehl durchsuchen. Ruft den letzten Befehl auf, der den eingegebenen Zeichen entspricht.
  • Ctrl+O: Führt den gefundenen Befehl aus, nach Ctrl+R.
  • Ctrl+G: Verlässt den Verlaufssuchmodus wieder, ohne einen Befehl auszuführen.

Befehl in Bash-Verlauf druchsuchen

Ein häufiges Szenario in dem man sich wiederfindet, besteht darin, einen Teil eines Befehls einzugeben um dann festzustellen, dass man ihn zuvor ausgeführt hat und den Verlauf danach durchsuchen könnte.

Die korrekte Suchmethode mit dem was sich bereits in der Befehlszeile befindet, besteht darin, den Cursor mit Ctrl+A an den Anfang der Zeile zu bewegen, mit Ctrl+R die Rückwärtshistorie aufzurufen, und mit Ctrl+Y die aktuelle Zeile in die Suche einzufügen, und um dann erneut mit Ctrl+R rückwärts zu suchen.

Bash-Verlauf im Terminal anzeigen

Die Liste der Befehle im Bash-Verlauf beginnt mit einer Index Nummer.

$ history

Der Befehl mit der höchsten Nummer ist der letzte ausgeführte Befehl.

495 vi /etc/bash.bashrc
496 cd /var/www/3w/dot/html/content
497 uname -promsvm
498 vi /etc/sysctl.conf
499 multitail -cS postfix /var/log/mail.log
500 multitail -cS apache /var/log/apache2/access.log
501 multitail -cS syslog /var/log/syslog
502 history

Wir können die Ausgabe abschneiden, indem wir nach dem Befehl eine Zahl angeben. Wenn wir beispielsweise nur die letzten 5 eingegebenen Befehle sehen möchten, können wir Folgendes eingeben.

$ history 5

Weitere Möglichkeiten bieten sich beispielsweise an, mit weiterleiten an grep, um die Befehlsverlauf Ausgabe zu filtern.

$ history | grep hostname
365 hostname
369 hostnamectl status
484 hostnamectl set-hostname debian
486 cat /etc/hostname
516 history | grep hostname

Befehle aus der Bash-Historie ausführen

Wir können einen zuvor gemerkten Befehl wiederholt ausführen, indem wir die Nummer mit einem Ausrufezeichen (!) voranstellen. Wie beispielsweise in die Historie oben, können wir den Befehl hostnamectl status aus der history schnell aufrufen, indem man !369 eingibt.

$ !369
   Static hostname: debian
         Icon name: computer-vm
           Chassis: vm
        Machine ID: fc5cb9d7ace83e1c9c1fcbe4ec76d302
           Boot ID: 379bf41010125c63bbaa4f2b778ac54c
    Virtualization: vmware
  Operating System: Debian GNU/Linux 10 (buster)
            Kernel: Linux 4.19.0-17-amd64
      Architecture: x86-64

Dadurch wird der mit der Verlaufsnummer 369 verknüpfte Befehl direkt aufgerufen und auch gleich ausgeführt.

Wir können auch Befehle relativ zu unserer aktuellen Position ausführen. Das wird ermöglicht indem wir die Syntax !-n verwenden, wobei n durch die Anzahl der Befehle ersetzt wird, die wir zurückgehen möchten.

Wenn wir beispielsweise einen Befehl abrufen und ausführen möchten, den wir vor unserem letzten eingegeben haben, können wir !-5 eingeben, die Session könnte so aussehen.

$ !-5
hostname
debian

Um den vorherigen Befehl erneut auszuführen, macht Bash eine Verknüpfung zum letzten Befehl. Mit der Abkürzung !! wird der neueste Befehl wiederholt ausgeführt.

Bash-Verlauf löschen

Den Verlauf der aktuellen Benutzersitzung bereinigen, beispielsweise nach einer Serie fehlerhaften Befehle, die man nicht weiterverwenden möchte.

$ history -c

Der gespeicherte Bash-Verlauf unter Linux komplett löschen.

$ cat /dev/null > ~/.bash_history

Der Befehl cat löscht den Inhalt der Datei .bash_history des aktuell angemeldeten Benutzers.

Fazit

Dies sollte jetzt eine gute Vorstellung davon geben, wie die zur Verfügung stehenden Verlaufsoperationen genutzt werden können. Einige davon werden wahrscheinlich nützlicher sein als andere, aber es ist gut zu wissen, dass Bash diese Fähigkeiten hat, falls man sich in einer Position befindet, in der es hilfreich wäre, sie auszugraben.

Nicht zuletzt sollte der Befehl history, die Rückwärtssuche und die einfachen History-Erweiterungen helfen, den Arbeitsablauf zu beschleunigen.

LAMP Stack auf Debian Installieren

Linux – Apache – MySQL – PHP – LAMP Stack Installation auf Debian

LAMP ist eine auf Open-Source basierte Kombination aus Software, die normalerweise zusammen installiert wird, damit ein Server dynamische Webseiten und Web-Apps hosten kann. LAMP ist das Akronym für Linux Apache MySQL PHP, dass für Linux mit dem Apache Webserver, der MySQL-Datenbank und PHP für die dynamische Verarbeitung von Webseiten steht.

Linux Apache MySQL PHP Debian Installation

In diesem Tutorial wird der LAMP Stack auf einem Debian 10 (buster) komplett mit Apache/2.4, MariaDB 10, PHP 7.4 und vsftpd sowie Fail2ban und allen erforderlichen Pakete installiert und konfiguriert. Der geschätzte Zeitaufwand der Installation beträgt etwa 10 Minuten, am Ende steht ein Webserver für Content-Management-Systeme bereit. Neu erstellte Benutzer für den FTP Zugang werden automatisch zu chroot der eigenen DocumentRoot.

LAMP Installation für Debian

Wir sind auf einem Debian 10 Linux als root eingelggt, wie immer wird erst Update durchgeführt, bevor weitere Pakete installiert werden.

apt update

Erst werden benötigte Pakte als voraussetzung zur weiteren Installation bereitgestellt.

apt install ca-certificates apt-transport-https lsb-release gnupg curl vim unzip -y

Das Debian Repository enthält nicht die neusten PHP Versionen, daher verwenden wir das Sury Repository.

wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list

Erneut den Paketindex aktualisieren.

apt update

Nun den Apache 2 Webserver auf dem Debian 10 installieren.

apt install apache2 -y

Die von den meisten CMS benötigten Tools und Bibliotheken auch gleich installieren.

apt install php7.4 php7.4-cli php7.4-common php7.4-curl php7.4-gd php7.4-intl php7.4-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-readline php7.4-xml php7.4-xsl php7.4-zip php7.4-bz2 libapache2-mod-php7.4 -y

Als nächstes wird der MariaDB-Server installiert.

apt install mariadb-server mariadb-client -y

Nun geben wir den Befehl ein, um die Konfiguration des MariaDB-Servers abzuschließen.

mysql_secure_installation

Bei der ersten Abfrage des aktuellen Passworts muss man nichts eingeben, sondern einfach die Enter-Taste drücken. Bestätige die nächste Frage bzgl. der Änderung des Root-Passworts mit Enter. Nun wird ein Passwort für den Root-Benutzer des MariaDB-Servers vergeben (nicht der Linux root User). Während der Eingabe erscheinen keine Zeichen, das ist normal. Bestätige alle folgenden Fragen (Löschung des anonymen Benutzers, Verbieten des externen Root-Logins aus Sicherheitsgründen, Entfernen der Testdatenbank und Aktualisieren der Rechte) ebenfalls mit Enter. Danach ist der MariaDB-Server fertig installiert und konfiguriert.

phpMyAdmin installieren

Jetzt wechseln wir mit dem Befehl cd /usr/share das Verzeichnis, in diesem phpMyAdmin installiert wird.

Um phpMyAdmin herunterzuladen, führen wir nun wget aus.

wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -O phpmyadmin.zip

Entpacke das soeben heruntergeladene Archiv wie folgt.

unzip phpmyadmin.zip

Nach dem entpacken entferne nun das heruntergeladene Archiv.

rm phpmyadmin.zip

Anschließend muss der Name des entpackten Verzeichnis zu phpmyadmin umbenannt werden, mit folgendem Befehl.

mv phpMyAdmin-*-all-languages phpmyadmin

Wir vergeben anschließend die benötigten Rechte auf das phpMyAdmin-Verzeichnis mithilfe des Befehls.

chmod -R 0755 phpmyadmin

Jetzt noch die Datei config.sample.inc.php ubenennen zu config.inc.php.

mv /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Erstellen wir nun eine Apache2-Konfigurationsdatei für phpMyAdmin, mit Copy & Paste der folgenden Zeilen.

cat <<EOF> /etc/apache2/conf-available/phpmyadmin.conf
# phpMyAdmin Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>
EOF

Im Bash Terminal Copy Paste jede Zeile in der Codebox.

Die soeben hinzugefügte Apache2-Konfigurationsdatei Aktivieren.

a2enconf phpmyadmin

Und das Neuladen des Apache2-Webservers durchführen.

systemctl reload apache2

Erstelle das temporäre Verzeichnis, welches phpMyAdmin benötigt.

mkdir /usr/share/phpmyadmin/tmp/

Und vergebe dem Webserver-Benutzer nun die benötigten Besitzerrechte für dieses temporäre Verzeichnis.

chown -R www-data:www-data /usr/share/phpmyadmin/tmp/

Es ist aus Sicherheitsgründen die Passwort-Authentifizierung beim MariaDB-Server nicht mehr empfohlen, um sich direkt als Root-Nutzer anzumelden (z.B. über phpMyAdmin).

Ein zusätzlichen Benutzer mit allen Rechten anlegen, dazu melden wir uns mit dem MySQL-Client am MariaDB-Server an.

mysql -u root

Wenn bis hier alles klappte, bist Du jetzt im MySQL (MariaDB) Prompt.

MariaDB [(none)]>

Und führen jetzt die folgenden SQL Befehle aus um den MariaDB-Benutzer zu erstellen und ihm die Rechte zu erteilen.

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Ersetze hierbei „username“ und „password“ durch den gewünschten Benutzernamen und ein Passwort. Beende die MariaDB-Konsole abschließend mit exit.

MariaDB [(none)]> exit

Jetzt kann man sich mit dem neu erstellten Benutzer am MariaDB-Server anmelden (z.B. auch über phpMyAdmin).

http://192.168.2.12/phpmyadmin

Fertig – der Apache2-Webserver inkl. PHP 7.4, MariaDB-Server und phpMyAdmin ist nun einsatzbereit. Das phpMyAdmin-WebUI erreichet man, indem man nach der IP-Adresse oder des FQDN im Browser /phpmyadmin anhängt.

Hinweis. Bei der ersten Anmeldung in phpMyAdmin wird man eine Fehlermeldung am unteren Seitenrand sehen.

Ab sofort muss ein geheimes Passwort zur Verschlüsselung in der Konfigurationsdatei gesetzt werden (blowfish_secret).

Abhilfe schaft eine Passphrase die in der Datei config.inc.php bei $cfg['blowfish_secret'] eingefügt wird. Hier ein Beispiel:

vi /usr/share/phpmyadmin/config.inc.php

$cfg['blowfish_secret'] = 'ttTo4Zhy6zEOdUatH6vcOQFbXpnnM/WmOZpO1bM9BH2R7i4WZJVpdBntcsvSDVlM'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Hinweis: Wenn man zum editieren vim nutzt, bemerkt man das nach eingabe zum insert mode beim text einfügen mit der rechten Maustaste sich der blockwise Visual mode aktiviert — (insert) VISUAL — das sich als unerwünscht zeigt, das kleine Malheur kann aber schnell behoben werden, indem man die Maussteuerung für vim deaktiviert, erstelle hierzu die Datei mit echo "set mouse-=a" > ~/.vimrc

Tipp! Eine Passphrase erzeugen ist einfach wie folgende Befehlszeile zeigt. Beispiel mit 48 Zeichen lange zufällige Zeichenkette.

openssl rand -base64 48
ttTo4Zhy6zEOdUatH6vcOQFbXpnnM/WmOZpO1bM9BH2R7i4WZJVpdBntcsvSDVlM
# oder andere 48 Zeichen
date +%s | sha256sum | base64 | head -c 48 ; echo
MjhhMGUwMjYyYjljNWI2MjFiMGZmNmQ5MjdiYjY2MGE2YWNl

Debian Webserver absichern und härten

Als erstes wird die Kernel Firewall für den Webserver konfiguriert, es sollen nur die erforderlichen Services eingehend erlaubt werden. Bei Debian ist standardmässig nach der Installation die ufw (Uncomplicated Firewall) aktiviert. Die für den Webserver benötigten Ports werden wie folgt geöffnet.

ufw reset
ufw allow "WWW Full"
ufw allow 20/tcp
ufw allow 21/tcp
ufw allow 22/tcp
ufw allow 40000:50000/tcp
ufw default allow outgoing
ufw default deny incoming
ufw enable

Mit den folgenden Befehlen können die Firewall Regeln abgefragt werden um die Konfiguration zu überprüfen.

ufw status verbose
iptables -vnL
iptables -S

Wird für Debian das firewalld Paket beforzugt, kann mit ufw disable diese deaktiviert werden, und firewalld installiert werden.

apt instll firewalld -y

Bei Debian müssen für firewalld die Links geändert werden.

update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

Nach der Installation von firewalld können die Regeln definiert werden.

firewall-cmd --zone=public --change-interface=ens192
firewall-cmd --zone=public --permanent --add-service=ssh
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --zone=public --permanent --add-port=20/tcp
firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
firewall-cmd --reload

Hinweis: anstelle von interface=ens192 der mit ip link oder ifconfig ermittelte Interafce Name verwenden.

Die ausgeführten firewalld Regeln mit folgendem Befehl anzeigen.

firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: dhcpv6-client ftp http https ssh
  ports: 40000-50000/tcp 20/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Weitere Befehle um die aktuellen Firewall Regeln auszugeben.

firewall-cmd --list-all
firewall-cmd --get-active-zones
iptables -vnL

Hinweis: nach jeder änderung muss firewalld die änderung aktivieren.

firewall-cmd --reload

FTP-Server Installation mit vsftpd

vsftpd ist ein FTP-Server für das alte File Transfer Protocol. Als Akronym steht sein Name für Very Secure File Transfer Protocol Daemon. Ob gleich OpenSSH mit sFTP bei jedem Linux und FreeBSD zum Standard gehört, ist FTP noch immer weit verbreitet.

Der vsftpd Daemon wird wie folgt installiert.

apt install vsftpd -y

Die vsftpd Konfigurationsdatei für Änderungen editieren.

vi /etc/vsftpd.conf

Wir deaktivieren die anonyme Anmeldung und erlauben lokalen Benutzern zu schreiben.

anonymous_enable=NO
local_enable=YES
write_enable=YES

Einstellungen für das Logging und Portbereiche.

use_localtime=YES
xferlog_enable=YES
log_ftp_protocol=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
pasv_min_port=40000
pasv_max_port=50000

chroot steht für change root und ist eine Funktion für Unixoide Systeme, um das Rootverzeichnis zu ändern. chroot wirkt sich nur auf den aktuellen Prozess und seine Child-Prozesse aus, es ist ein einfacher Jail-Mechanismus in dem das FTP-Dienstprogramm verhindert das Benutzer auf Dateien ausserhalb seines Verzeichnisses zugreifen können. chroot bietet auch eine einfache Möglichkeit, nicht vertrauenswürdige Daten in eine Sandbox zu versetzen. Die chroot Einstellungen für VSFTPD Benutzer findet man in der Datei vsftpd.conf bei Zeile chroot_local_user und ändere dort auf YES, so auch bei chroot_list_enable.

chroot_local_user=YES
chroot_list_enable=YES

Alle Benutzer werden chroot zugeteilt, bis auf einige die befreit sind, dazu wird die Datei /etc/vsftpd.chroot_list erstellt, diese Benutzer enthält, die von chroot ausgeschlossen werden.

chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES

Um für bestimmte Benutzer die Anmeldung ganz zu verweigern, fügen wir der Datei vsftpd.conf folgende Zeilen hinzu.

userlist_deny=YES
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist

Erstelle eine Datei vsftpd.userlist und füge Benutzer hinzu diese abgeleht werden sollen. Abgelehnt werden sollten die Service Accounts, da diese gerne für Angriffe genutzt werden. Ein Benutzer pro Zeile hinzufügen, Beispiel: vsftpd.userlist

root
bin
daemon
sys
sync
man
backup
admin
sshd
lp
sync
proxy
list
irc
shutdown
halt
mail
news
uucp
operator
games
nobody
postfix
www-data
ftp
mysql

Den vsftpd Daemon starten.

systemctl start vsftpd

Schutz gegen DoS Angriffe mit Fail2ban

Das in Python geschriebene Tool fail2ban verfolgt das Ziel, Serverdienste gegen DoS Angriffe abzusichern. Es prüft Logdateien nach vordefinierten Mustern und sperrt bei wiederholtem fehlgeschlagenem Zugriff temporär die entsprechenden IP-Adressen.

fail2ban wird auf Debian wie folgt installiert und konfiguriert.

apt install fail2ban -y

Die Konfiguration von Fail2ban für ein Webserver mit Jail Filter für Zugriff auf den SSH und FTP Service, um Brute-Force Attacken zu blockieren.

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Nach dem die Konfigurationsdatei jail.conf kopiert ist, kann die Datei jail.local in den Editor geladen werden, alle Einstellungen hier übersteuern den Wert in jail.conf.

vi /etc/fail2ban/jail.local

Hier können Einstellungen angepasst werden und Filter für Services aktiviert oder deaktiviert werden. Der DEFAULT erlaubt eine globale Definition der Optionen. Die Optionen können anschließend in jedem Jail außer Kraft gesetzt werden.

[DEFAULT]
bantime = 43200
findtime  = 600
maxretry = 5

Die Optionen haben folgende Funktion:

  • bantime definiert die dauer der blockierung, hier 12 Std. (in Sekunden angegeben).
  • findtime definiert die dauer in der fehlgeschlagene versuche stattfinden können, hier 10 min.
  • maxretry gibt die Anzahl versuche an.

fail2ban hat Standardmässig nur den SSH Filter aktiviert, weitere Filter werden mit enabled = true aktiviert.

[sshd]
enabled = true
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode   = normal
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

[vsftpd]
enabled  = true
# or overwrite it in jails.local to be
# logpath = %(syslog_authpriv)s
# if you want to rely on PAM failed login attempts
# vsftpd's failregex should match both of those formats
port     = ftp,ftp-data,ftps,ftps-data
logpath  = %(vsftpd_log)s

fail2ban Status abfragen, Status für SSH detailert ausgeben.

fail2ban-client status
fail2ban-client -vvv status sshd

Hinweis: Seit fail2ban 0.10 (IPv6-Unterstützung) wird mit actionstart die IP-Familie On-Demand ausgeführt, bei dem ersten Ban pro Jail, sodass iptables-multiport den Chain f2b-sshd nur erstellt, wenn die erste IP im sshd-Jail gesperrt wird.

Weitere nützliche Tools für den Webserver

apt install open-vm-tools -y
apt install dnsutils -y
apt install net-tools -y

Apache Virtual Host für eine Domain erstellen

Mit einem einfachen Skript lässt sich ein neuen Apache VirtualHost erstellen, zusammen mit einer neuen DocumentRoot und einem eigenen Benutzer, der Dateien hochladen kann, um die Website zu erstellen.

#!/bin/bash
if [ $# -lt 2 ]; then
    echo "Missinng argument!"
    echo "use: addvhost [example.com] [username]"
  exit 1
fi
# make directory for new docroot
mkdir -p /var/www/$1 /var/www/$1/html
# add user for new docroot
useradd -s /sbin/nologin -d /var/www/$1/html $2
# put index.html into docroot
echo -e "<html>
  <head>
    <title>Welcome to $1</title>
  </head>
  <body>
    <h1>Howdy! Apache2 virtual host $1 is working!</h1>
  </body>
</html>" > /var/www/$1/html/index.html
# assign owner and grant rights
chown -R $2:$2 /var/www/$1
chmod -R 755 /var/www
# create new apache virtual host config
cat <<EOF> /etc/apache2/sites-available/$1.conf
<VirtualHost *:80>
    ServerAdmin webmaster@$1
    ServerName $1
    ServerAlias www.$1
    DocumentRoot /var/www/$1/html
    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined
</VirtualHost>
EOF
# enable the new apache virtual host
a2ensite $1
systemctl restart apache2

Die Zeilen in eine Skriptdatei als addvhost speichern und wie folgt ausführen.

chmod 755 addvhost
./addvhost example.com username

Verwende das erste Argument für den Domänennamen und das zweite für den zu erstellenden Benutzernamen.

Hinweis. daran denken das der neue Benutzer noch ein Passwort benötig mit passwd [username]

Nach dem Ausführen des Skripts findet man eine neue Docroot unter /var/www sowie die zugehörige Apache Virtual Host-Konfiguration unter /etc/apache2/sites-available diese bereits aktiviert ist.

Für HTTPS Webseiten kann Certbot integriert werden, mit Let’s Encrypt SSL-Zertifikate, mehr im Beitrag hier.

Fazit

Somit ist es möglich, in kurzer Zeit einen kompletten Webserver mit allen notwendigen Diensten aufzubauen, ohne das eine grafische Benutzeroberflächen oder andere Tools zur Einrichtung und Administration eingesetzt werden.

bash ifconfig command not found

Gibt man bei modernen Linux Betriebssystemen den Befehl ifconfig in der Shell ein, wird man Befehl nicht gefunden erhalten.

-bash: ifconfig: command not found

ifconfig ist das Dienstprogramm zum Anzeigen und Einstellen der Netzwerkkonfiguration bei Red Hat, Fedora, CentOS, Debian und Ubuntu Linux-Systemen. Der Befehl ist im Paket net-tools enthalten, dieses durch das Paket iproute2 ersetzt wurde.

net-tools – ifconfig Installation

Die Binärdatei ifconfig wird mit dem Debian-Paket net-tools geliefert. Installiere das Paket mit dem folgenden Befehl, dieses in den Standard-Repositorys verfügbar ist.

$ sudo apt install net-tools -y

Anschließend kann ifconfig ausgeführt werden, um die Netzwerk-konfiguration zu überprüfen. Der folgende Befehl zeigt Details für alle auf einem Debian-System konfigurierten Schnittstellen an.

$ ifconfig

Bei RHEL 8 und CentOS 8 wird das Paket net-tools mit dem Paket Manager YUM bereitgestellt.

$ sudo yum -y install net-tools

HINWEIS: Das Programm ifconfig ist veraltet! Ersatz geben die Befehle ip addr und ip link.

ifconfig zeigt die Ausgabe der Netzwerk Schnittstellen und deren Konfiguration.

$ ifconfig
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.127.0.123  netmask 255.255.255.0  broadcast 10.127.0.255
        inet6 fe80::20b:25ff:fefb:28db  prefixlen 64  scopeid 0x20<link>
        ether 00:0b:25:fb:28:db  txqueuelen 1000  (Ethernet)
        RX packets 103153  bytes 86175369 (82.1 MiB)
        RX errors 0  dropped 519  overruns 0  frame 0
        TX packets 47536  bytes 42444582 (40.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Lokale Schleife)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Das neue Dienstprogramm ip addr ersetzt ifconfig wie folgt.

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0b:25:fb:28:db brd ff:ff:ff:ff:ff:ff
    inet 10.127.0.123/24 brd 10.127.0.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::20b:25ff:fefb:28db/64 scope link
       valid_lft forever preferred_lft forever

Der Befehl ifconfig eth0 wird durch ip link ersetzt.

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:0b:25:fb:28:db brd ff:ff:ff:ff:ff:ff

Um die routing table auszugeben wird anstelle route der Befehl ip route ausgeführt.

$ ip route
default via 10.127.0.1 dev ens192 proto static metric 100
10.127.0.0/24 dev ens192 proto kernel scope link src 10.127.0.123 metric 100