[[TOC]]
- history # Anzeige der Kommandohistorie, beim User student und root: "h"
- Mit der Pfeil-nach-oben-Taste (↑) können Sie durch die vorherigen Befehle blättern.
- Mit der Pfeil-nach-unten-Taste (↓) gehen Sie in der Liste wieder nach vorne.
- !! # Letztes Kommando wiederholen
- !42 # Wiederhole Kommando 42 in der Historie
- Suchen in der History (Ctrl + R)
- Drücke erneut Ctrl + R, um zum nächstälteren passenden Befehl zu springen.
- Doppelklick -> Wort markieren
- Mausrad drücken -> Wort wird an aktueller Cursorstelle eingefügt
pwd
who
who am i # IP-Adresse des Client
date
hostname
echo $PATH # Kommandosuchpfade
which ip
env # Umgebungsvariablen anzeigen
clear # Bildschirm löschen
sudo -i # Root bash starten
history # Anzeige der letzten Kommandos
uname -a # Kernelversion
lsb_release -a # Linuxversion (sudo apt-get install lsb-core)
nano Dateiname #
sshd -T # Anzeige der aktuellen Einstellungen im sshd
nano /etc/ssh/sshd_config :
PasswordAuthentication yes
PermitRootLogin yes
PubkeyAuthentication yes
systemctl status sshd
systemctl restart sshd
ssh-keygen -t ed25519 -c "comment"
ssh-copy-id ~/.ssh/id_ed25519.pub [email protected]
ssh [email protected] "apt install -y nginx"
ssh-keygen -y -f priv_key.pem > pub_key # Public key aus dem private Key erzeugen
.
.
ServerAliveInterval 60
cd # Verzeichniss wechseln
cp, mv,rm # Kopieren, verschieben/umbenennen, löschen
du -sh * Verzeichnis # Speicherplatzbelegung der Verz.
tree # Anzeige des Dateisystems als Baumstruktur
tree -L Level #
mc # Midnight Commander <ctrl><o> ausblenden/aktivieren
vi, nano # Editoren
rsync --archive --delete Quelleverz. Zielverzeichnis
chown Datei User # Den Besitzer einer Datei ändern
chmod Modus Datei # Die Zugriffsrechte auf eine Datei ändern
iotop # Anzahl der Schreib/Lesevorgänge auf den Datenspeicher
lsblk # Anzeige aller Blockdevices
file -s /dev/sda # Dateisystem auf Blockdevice anzeigen
# Self-Monitoring, Analysis and Reporting Technology S.M.A.R.T.
smartctl --all /dev/sda # Control and Monitor Utility for SMART Disks
# pin_Up_Time (verweist auf Motor-/Lagerschaden)
# Seek_Error_Rate und Calibration_Retry_Count (Probleme mit der Kopfmechanik)
# (Raw_)Read_Error_Rate und Reallocated_Sector_Ct (Kopf-/Oberflächenprobleme). I
rsync Quelle Ziel (https://www.computerhope.com/unix/rsync.htm)
Optionen:
-a (Kurzversion für --archive): gleiche Bedeutung wie -rlptgoD
=> recursive,links,perms,times,group,owner,devices
-r (Kurzversion für --recursive): Unterverzeichnisse kopieren
-l (Kurzversion für --links): symbolische Links kopieren
-p (Kurzversion für --perms): Rechte der Quelldatei beibehalten
-t (Kurzversion für --times): Zeiten der Quelldatei beibehalten
-g (Kurzversion für --group): Gruppenrechte der Quelldatei beibehalten
-o (Kurzversion für --owner): Besitzrechte der Quelldatei beibehalten (nur als root User möglich)
-D (Kurzversion für --devices --specials): Gerätedateien der Quelldatei beibehalten (nur als root User möglich)
-v (Kurzversion für --verbose): zeigt während der Ausführung an welche Dateien synchronisiert werden
–delete: entfernt Dateien im Zielverzeichnis die mittelerweile im Quellverzeichnis nicht mehr vorhanden sind
–exclude=.Gerätedateien
–bwlimit=20 #kBps
df -h
fdisk /dev/sdx # Speicherdisk partitionieren
mkfs -t ext4 /dev/sdxy # Ext4 Dateisystem auf SSD/HDD x Partition y erzeugen
mount -t nfs 172.x.y.z:/verzeichnis /mnt
sar -d Intervall Anzahl
dd if=xyz.iso of=/dev/sd... bs=1M conv=fsync # iso-Image auf sd.. sichern
free -m
sar -r Intervall Anzahl
sudo fallocate -l 1G /swapfile
alternativ:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo nano /etc/fstab
die nachfolgende Zeile einfügen:
/swapfile swap swap defaults 0 0
Die Swap - Funktion überprüfen:
sudo swapon --show
sudo free -h
Anzeigen mit cat. more, tail -f:
Verarbeitung mit grep,cut,tail,uniq,sort,nl,…:
<p>
grep "Failed password" /var/log/auth.log # journalctl -u ssh | grep ...
grep "Failed password" /var/log/auth.log | cut -f1-2 -d":" | uniq -c
grep "Failed password" /var/log/auth.log | grep -o -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | sort | uniq -c | sort -n
grep -o "user [a-z]* " /var/log/auth.log | cut -f2 -d" " | sort | uniq -c | sort -n
#fail2ban
bei Debian 12 gibt es keine /var/log/auth.log mehr:
journalctl -u ssh | grep "Failed password"
journalctl -u ssh | grep "Failed password" | cut -f1-2 -d":" | uniq -c
journalctl -u ssh | grep "Failed password" | grep -o -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | sort | uniq -c | sort -n
journalctl -u ssh | grep "Failed password" | cut -f2 -d" " | sort | uniq -c | sort -n
<p>
https://www.linuxcapable.com/how-to-install-fail2ban-on-debian-linux/
https://www.ezeelogin.com/kb/article/install-and-setup-cowrie-honeypot-on-ubuntu-545.html
https://www.ionos.de/digitalguide/server/sicherheit/honeypot-it-sicherheit-durch-ablenkprogramme/
2024-11-06T11:42:28.419780Z [cowrie.ssh.factory.CowrieSSHFactory] New connection: 172.169.207.233:47284 (172.31.33.5:2222) [session: b3f5d5e79b4b]
2024-11-06T11:42:38.301736Z [cowrie.ssh.transport.HoneyPotSSHTransport#info] connection lost
2024-11-06T11:42:38.301908Z [HoneyPotSSHTransport,3,172.169.207.233] Connection lost after 9 seconds
2024-11-06T12:34:51.539217Z [cowrie.ssh.factory.CowrieSSHFactory] New connection: 125.25.33.107:51154 (172.31.33.5:2222) [session: ceb7b3a483cb]
2024-11-06T12:34:51.539904Z [cowrie.ssh.transport.HoneyPotSSHTransport#info] connection lost
2024-11-06T12:34:51.540011Z [HoneyPotSSHTransport,4,125.25.33.107] Connection lost after 0 seconds
2024-11-06T11:42:28.419780Z [cowrie.ssh.factory.CowrieSSHFactory] New connection: 172.169.207.233:47284 (172.31.33.5:2222) [session: b3f5d5e79b4b]
2024-11-06T11:42:38.301736Z [cowrie.ssh.transport.HoneyPotSSHTransport#info] connection lost
2024-11-06T11:42:38.301908Z [HoneyPotSSHTransport,3,172.169.207.233] Connection lost after 9 seconds
2024-11-06T12:34:51.539217Z [cowrie.ssh.factory.CowrieSSHFactory] New connection: 125.25.33.107:51154 (172.31.33.5:2222) [session: ceb7b3a483cb]
2024-11-06T12:34:51.539904Z [cowrie.ssh.transport.HoneyPotSSHTransport#info] connection lost
2024-11-06T12:34:51.540011Z [HoneyPotSSHTransport,4,125.25.33.107] Connection lost after 0 seconds
dmesg -HTwx # Kernel Ringbuffer
uptime # Anzahl der User und Waitqueue length
# 1/5/15 Min.
journalctl -r | more
journalctl --since '2021-09-28' # Anzeige aller Journaleinträge seit dem 28.9.2021
journalctl --until '2021-09-28' # Anzeige aller Journaleinträge seit dem 28.9.2021
journalctl --vacuum-time=10d # /var/log/journal verkleinern
journalctl --vacuum-size=100M
cat 00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
addresses:
- 172.20.46.82/24
gateway4: 172.20.46.254
nameservers:
addresses:
- 172.16.1.10
search: []
version: 2
sudo netplan apply
Hostname ändern
Unter Ubuntu 18.04 reicht es nicht mehr aus, den Hostname über die /etc/hostname oder hostnamectl zu setzen. Nach einem Reboot des Servers wäre der Hostname wieder verloren, da dieser nicht gespeichert wurde. Folgender Weg ermöglicht das dauerhafte Setzen des Hostnames:
nano /etc/cloud/cloud.cfg
This will cause the set+update hostname module to not operate (if true)
preserve_hostname: false
Hier muss der Wert preserve_hostname von false auf true gesetzt werden.
This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true
Danach kann über folgende Befehle der Hostname dauerhaft gesetzt werden:
sudo nano /etc/hostname
sudo hostnamectl set-hostname web-01
cat /etc/network/interfaces
.
.
.
auto ens192
iface ens192 inet static
address 172.20.46.204
netmask 255.255.255.0
gateway 172.20.46.254
dns-nameservers 172.16.1.10
.
.
.
systemctl restart networking
ip a # Alle Netzwerkschnittstellen anzeigen
ip address add 192.168.121.45/24 dev eth0
nmap -sS -p 0-1000 # TCP SYN Port Scan
nmap -sT -p 0-1000 # TCP Connect Scan
nmap -sU # UDP Port Scan
nmap -sV # Versionserkennungm des Dienstes
nmap -O # Betriebssystem Erkennung
netstat -tulpn # Listener mit Portnummer anzeigen
ss -lp4 # Listener mit Portnummer anzeigen
ss -tulpn | grep 9100 # Prozesse an Port 9100 anzeigen
ss -tlpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'
lsof -i :22 # Welche Prozesse nutzen Port 22?
lsof -niTCP # -n: Verhindert die DNS-Auflösung von IP-Adressen.
# Hostnamen werden also nicht aufgelöst, sondern direkt als
# IP angezeigt (schneller und übersichtlicher).
# -iTCP: Beschränkt die Ausgabe auf Netzwerk-Sockets, die das TCP-Protokoll verwenden.
# Hostname.Domain.TLD.<-Root / FQDN->www.cisco.com(.)
nslookup www.heise.de
dig name.tp10cloud.de A # Resource Record A ->IPv4
dig tp10cloud.com TXT # Resource Record AAAA ->IPv6
dig tp10cloud.de NS
# "https://www.whatsmydns.net/" oder "https://www.experte.de/dns-check"
whois 221.181.185.148 # Regional Internet Registry Abfrage
traceroute www.heise.de
nslookup
dnstop -l 5 eth0 # Anzahl den DNS Abfragen anzeigen
nc IP-Adresse 22 # Banner grabbing ;)
nc -lvnp 2222 # Portlistening
ncat IP-Adresse Portnummer
ncat -l -p 1337
sar -n DEV Intervall Anzahl
iptraf-ng
iptables -A INPUT -s 218.92.0.247 -j DROP # Alle IP-Pakete der Adresse 218... löschen
iptables -nvL INPUT
iptables -I INPUT -p icmp -s a.b.c.d -j DROP
iptables -I INPUT -p icmp -s a.b.c.d -j ACCEPT # ????
firewall-cmd --state # ContOS, Fedora und RHEL
uwf status # Ubuntu
curl ifconfig.me # Anzeige der öffentlichen IP-Adresse
curl url -X POST -H 'content-type: application-json' -d '{ "id" : "4711" }'
# DB AG Timetable v1 API:
curl -X GET --header "Accept: application/xml" --header "Authorization: Bearer 8bbc15fe5ad950d50aea3de633a3b89d" "https://api.deutschebahn.com/timetables/v1/plan/8000105/220610/9"
curl --verbose
wget url -o logfile -O index.html # GET auf url
curl url -s -o ausgabe # -s silent, -o Dateiname
python3 -m http.server 2305
# TCP - Pakete anzeigen
tcpdump src ! 5.146.250.241 and dst ! 5.146.250.241
tcpdump -i any -n port 80
ethstatus -i eno1 # Console-based ethernet statistics monitor
iftop # Anzeige einzelner Verbindungen und Bandbreitenmessung
nethogs # Net top tool grouping bandwidth per process
iptraf-ng # Interactive Colorful IP LAN Monitor
ncat -ulp 1234 >/dev/null #
pv < /dev/random | ncat -u IP-Adresse 1234
Host1: nc -l 1234 > /dev/null
Host2: pv /dev/random | nc -N Host2 1234
# ncat als Chat
Host1: ncat --chat -l -p 8888
Hostx: ncat Host1 -p 8888
sudo apt update
sudo apt install ubuntu-desktop
sudo apt install tightvncserver
sudo apt install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal dbus-x11
vi /home/ubuntu/.vnc/xstartup
#!/bin/sh
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
vncserver :1
Server: name.sepe21.de:1
Benutzer: ubuntu
Passwort: SEPE2023!
ps -auxf
ps -auxf | grep -c defunct #Zombiejagt
top
htop
glances # apt install glances
sar -u Intervall Anzahl # apt install sysstat
iostat
vmstat
watch sensors #
mkdir geekbench-tmp
cd geekbench-tmp
wget https://cdn.geekbench.com/Geekbench-5.4.5-Linux.tar.gz
tar -zxvf Geekbench-5.4.5-Linux.tar.gz
cd Geekbench-5.4.5-Linux/
./geekbench_x86_64
apt update # Informationen von Paketquellen herunterladen
apt upgrade -y # Updates aus Paketquellen installieren
apt install -y Paketname
apt remove Paketname
apt list # Anzeige aller installierten Pakete
uname -r # Kernel Release (z.b 5.8.0-43-generic)
apt autoremove -y
systemctl status
systemctl start nginx
systemctl stop nginx
systemctl enable nginx
systemctl disable nginx
systemd-analyze plot > systemstart.svg # Systemstart SVG-Graphik
sudo systemctl status ntp
ntpq -p
sudo apt purge ntp
sudo apt install systemd-timesyncd
sudo systemctl start systemd-timesyncd
sudo systemctl status systemd-timesyncd
timedatectl
vi /etc/systemd/timesyncd.conf
# timesyncd.conf
.
.
.
[Time]
NTP=172.16.1.3
.
.
systemctl restart systemd-timesyncd
ssh-keygen # Schlüsselpaar unter .ssh erzeugen (id_ed25519, id_ed25519.pub)
ssh-copy-id [email protected]
echo "Text123" | sha256sum
echo -n "Hallo Welt" | base64
# Advanced Encryption Standard (AES)
# Verschlüsseln
echo "Geheim" | openssl enc -aes-256-cbc > openssl.dat
# Entschlüsseln
openssl enc -aes-256-cbc -d -in openssl.dat
# RSA (Rivest, Shamir und Adleman)
# Der private Schlüssel wird erzeugt
openssl genrsa -out private_key.pem 1024 # pem = Privacy-Enhanced Mail
# Aus dem privaten Schlüssel wird ein öffentlicher Schlüssel erzeugt
openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout
# Die Nachricht "encrypt.txt" wird mit dem öffentlichen Schlüssel verschlüsselt (encrypt)
#
echo "Eine geheime Nachricht" > geheim.txt
openssl pkeyutl -encrypt -inkey public_key.pem -pubin -in geheim.txt -out encrypt.dat
# Die Nachricht wird entschlüsselt (decrypt)
openssl pkeyutl -decrypt -inkey private_key.pem -in encrypt.dat -out decrypt.txt
# Signieren
openssl dgst -sha256 -sign private_key.pem -out signatur.bin geheim.txt
# Signatur überprüfen
openssl dgst -sha256 -verify public_key.pem -signature signatur.bin geheim.txt
cd /etc/apache2 ; mkdir ssl ; cd ssl
openssl req -x509 -nodes -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
cd /etc/apache2 ; a2enmod ssl
systemctl restart apache2
cd sites-available ;cp default-ssl.conf 001-ssl.conf
nano 001-ssl.conf
---------------------------------------------
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/apache2/ssl/cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/key.pem
---------------------------------------------
a2nsight 001-ssl.conf ; systemctl restart apache2
# Umleitungs auf https/443 einrichten
vi 000-default.conf
-----------------------------------
.
Redirect permanent / https://3.66.188.236/
.
-----------------------------------
cd /etc/ssl/certs
vi cert.conf
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/certs/key.pem;
ssl_protocols TLSv1.3 TLSv1.2;
vi /etc/nginx/sites-available/default
----------default-------------
# SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
.
.
.
# include snippets/snakeoil.conf;
include snippets/cert.conf;
root /var/www/html;
------------------------------
vi /etc/nginx/sites-available/default
https://certbot.eff.org/ aufrufen und Anleitung ausführen
sudo certbot --apache
Zertifikat anzeigen:
cd /etc/letsencrypt/live/domain.name.de/
openssl x509 -in fullchain.pem -text --noout
cat x.c
main(void)
{
int i=1;
while(1){
i=i+2;
printf("%d\n",i);
}
}
gcc -S x.c
cat x.s
.L2
addl $2, -4(%rbp)
movl -4(%rbp), %eax
movl %eax, %esi
movl $.LC0, %edi
movl $0, %eax
call printf
jmp .L2
gcc x.c -o x-dyn
gcc x.c -static -o x-static
ls -l x-*
ldd x-*
.data
s:
.ascii "hello world\n"
len = . - s
.text
.global _start
_start:
movl $4, %eax /* write system call number */
movl $1, %ebx /* stdout */
movl $s, %ecx /* the data to print */
movl $len, %edx /* length of the buffer */
int $0x80
movl $1, %eax /* exit system call number */
movl $0, %ebx /* exit status */
int $0x80
as -o main.o main.S
ld -o main main.o
file main*
./main