Kategorien
Randnotiz

Hohe CPU Auslastung

Problem war, das ein Lenovo Notebook an einer Dell Docking Station ungewöhnlich hohe CPU Auslastung aufwies. Das Phänomen trat erst nach Verbindung mit dem USB Port auf.

Die Interrupts, bzw den dazugehörigen Zähler, kann man mit

grep . -r /sys/firmware/acpi/interrupts

aufrufen. Dort fallen ungewöhnlich hohe Werte ( > 1.000.000 ) sofort auf und der betroffenen Interrupt lässt sich temporär sofort disablen.

Durchaus normale Werte. Ein permantes Triggern würde schon nach wenigen Minuten sehr hohe Werte anzeigen.

Ich möchte den Interrupt GPE69 ausschalten, maskieren. Das passiert am einfachsten während des Boot Prozesses den wir in der Konfiguration

vi /etc/default/grub

beeinflussen können. In der bereits vorhandenen Zeile GRUB_CMDLINE_LINUX_DEFAULT lässt sich die Maskierung einfach hinzufügen

GRUB_CMDLINE_LINUX_DEFAULT="acpi_mask_gpe=0x69 ......

Aber Vorsicht: Das Verhalten des Systems ist zu beobachten und ich deaktivere immer zuerst nur temporär

echo "disable" | sudo tee /sys/firmware/acpi/interrupts/gpe69
Kategorien
Randnotiz

Ansible: VSFTP

SFTP (Secure File Transfer Protocol) ist ein Netzwerkprotokoll, das es ermöglicht, Dateien sicher zu übertragen. Es ist eine erweiterte Version von FTP (File Transfer Protocol), die zusätzlich die Verschlüsselung von Daten und die Authentifizierung von Benutzern unterstützt. In diesem Artikel zeigen wir Ihnen, wie Sie mit Ansible einen SFTP-Server erstellen und konfigurieren können.

Ansible ist ein Open-Source-Automatisierungswerkzeug, das es ermöglicht, Aufgaben auf Remote-Hosts auszuführen. Es kann verwendet werden, um Server, Netzwerkgeräte und andere IT-Infrastruktur zu verwalten und zu konfigurieren. Einer der Vorteile von Ansible ist, dass es in der Lage ist, Aufgaben auf mehreren Hosts gleichzeitig auszuführen, was die Verwaltung von großen IT-Umgebungen vereinfacht.

Um einen SFTP-Server mit Ansible zu erstellen, benötigen Sie zunächst eine Maschine, auf der Ansible installiert ist. Dies kann entweder ein lokaler Rechner oder ein Remote-Host sein. Sobald Ansible installiert ist, müssen Sie ein Playbook erstellen, das die notwendigen Schritte zur Erstellung und Konfiguration des SFTP-Servers enthält. Ein Playbook ist eine Sammlung von Anweisungen in YAML-Format, die von Ansible ausgeführt werden.

Ein Beispiel für ein Playbook zur Erstellung eines SFTP-Servers mit Ansible sieht wie folgt aus:

---
- name: Create SFTP server
  hosts: all
  become: true
  tasks:
  - name: Install SFTP server
    apt:
      name: vsftpd
      state: present
  - name: Configure SFTP server
    template:
      src: sftp.conf.j2
      dest: /etc/vsftpd.conf
  - name: Restart SFTP server
    service:
      name: vsftpd
      state: restarted

Dieses Playbook führt folgende Schritte aus:

  1. Installation des SFTP-Servers vsftpd auf allen Hosts.
  2. Konfiguration des SFTP-Servers mithilfe einer Vorlage (sftp.conf.j2).
  3. Neustart des SFTP-Servers.

Die Vorlage sftp.conf.j2 enthält die Konfigurationsoptionen für

den SFTP-Server. Diese Optionen können je nach Anforderungen angepasst werden. Einige Beispiele für Optionen, die in der Vorlage enthalten sein können, sind:

  • anonymous_enable: Ermöglicht oder verhindert den Zugriff auf den SFTP-Server durch anonyme Benutzer.
  • local_enable: Ermöglicht oder verhindert den Zugriff auf den SFTP-Server durch lokale Benutzer.
  • write_enable: Ermöglicht oder verhindert das Schreiben auf den SFTP-Server.
  • chroot_local_user: Einschränkung des Zugriffs von Benutzern auf ihr Home-Verzeichnis.

Sobald das Playbook erstellt wurde, kann es mit dem Befehl ansible-playbook ausgeführt werden. Nach Abschluss der Ausführung sollte der SFTP-Server erfolgreich erstellt und konfiguriert sein.

In diesem Artikel haben wir gezeigt, wie Sie mit Ansible einen SFTP-Server erstellen und konfigurieren können. Ansible bietet viele weitere Möglichkeiten, um IT-Infrastrukturen zu verwalten und zu automatisieren. Wenn Sie mehr über Ansible und seine Funktionen erfahren möchten, empfehlen wir Ihnen, die Dokumentation und Tutorials von Ansible zu lesen.

Im nächsten CCGL Workshop beschäftigen wir uns mit:

  • Benutzerkonten und Berechtigungen: Um Benutzer auf dem SFTP-Server anlegen und verwalten zu können, können Sie Ansible-Module wie user und group verwenden. Auch das Zuweisen von Berechtigungen an Benutzer oder Verzeichnisse kann mithilfe von Ansible-Modulen wie file oder acl erfolgen.
  • Sicherheit: Um den SFTP-Server sicher zu machen, empfiehlt es sich, starke Passwörter für Benutzerkonten zu verwenden und Zugriff von unsicheren Netzwerken oder IP-Adressen zu beschränken. Auch das Aktivieren von SSL/TLS-Verschlüsselung kann die Sicherheit erhöhen.
  • Monitoring: Um den Betrieb des SFTP-Servers zu überwachen, können Sie Ansible-Module wie shell oder command verwenden, um regelmäßig Systeminformationen oder Protokolle auszulesen und zu analysieren. Auch das Einrichten von Benachrichtigungen bei Fehlern oder Ausfällen kann hilfreich sein.
  • Skalierbarkeit: Wenn Sie vorhaben, den SFTP-Server für viele Benutzer oder große Dateien zu verwenden, empfiehlt es sich, die Leistung und Skalierbarkeit des Servers im Voraus zu planen. Dies kann beispielsweise durch das Hinzufügen von mehr Speicherplatz oder durch das Verteilen der Last auf mehrere Server erfolgen.

Ich hoffe, dass diese Tipps hilfreich sind und Ihnen bei der Erstellung von SFTP-Servern mit Ansible weiterhelfen! Wenn Sie weitere Fragen haben, zögern Sie nicht, mich zu kontaktieren.

Kategorien
Randnotiz

Ansible: Logparser

Ich musste mal Ansible Zweck entfremden: Auslesen von Log Dateien und Anzeige nur bestimmter Einträge.

---
- hosts: hal52b
  gather_facts: no
  vars:
   nummer: [
            " 500",
            " 404"
           ]

  tasks:
   - name: Suche Error in Access LOG
     shell:
       chdir: /var/log/apache2
       cmd: "grep -ari -e '^halsec.de' other_vhosts_access.log | cat"
     changed_when: false
     ignore_errors: true
     become: true
     register: grep_cmd

   - debug:
       msg: "{{item| regex_findall('\\s\\d{3,5}')}} gefunden"
     when: "item| regex_findall('\\s\\d{3,5}')|intersect(nummer)|length != 0"
     loop: "{{ grep_cmd.stdout_lines }}"

Beim Aufruf des Playbooks lese ich eine Apache Log Datei aus. Mit grep findet die erste grobe Selektion statt. In dem Debug Loop nehmen wir uns Zeile für Zeile und vergleichen 3-5 stellige gefundene Errorcodes mit einer definierten Liste. Kommt der Errorcode in der Liste vor, wird er „OK“ – alle nicht vorkommenden Errorcode werden „skipped“ ausgegeben.

Die Ausgabe kann über Konfiguration der ansible.cfg beeinflusst werden. Bei langen Debug Ausgaben kann es sinnvoll sein, „skipped“ Nachrichten auszublenden. Auch farblich kann die Ausgabe angepasst werden.

Angepasste Farben in der ansible.cfg
[defaults]
display_skipped_hosts = yes
[colors]
ok = purple
skip = dark gray

„display_skipped_hosts = no“ unterdrückt alle skipped Nachrichten. Da kann/muss mit gespielt werden. Viel Spaß!

Kategorien
Randnotiz Schulung

CLI: mySQL pgsql Spickzettel

Zur Zeit arbeiten wir im Team an der Programmierung mit zwei unterschiedlichen Datenbank Backend’s: mySQL und Postgres. „Mal eben“ die Struktur einer Tabelle aufrufen, läuft über die Bash CLI unterschiedlich.

[table id=7 /]

Obacht mit Großschreibung im Schema! Ein Schema mit Großschreibung im Suchpfad, wird in Kleinbuchstaben gespeichert. Das Schema ist als String zu maskieren!

Kategorien
Randnotiz

Tipp: Anpassung Script nach StableNet Update

Nach dem Update von StableNet von Version 10 auf 11 kann es zu Problemen mit sh Agent Scripts kommen.

Die Agent Scripts werden im neuen StableNet vor Aufruf (genauer) geprüft – sh Scripte wohl bemerkt. Der Parameter „Name“ darf nicht fehlen!

sh Script für StableNet Agent

Im StableNet 10 reichte es aus, wenn das sh Script als <parameters> lediglich <version> mitteilte. Jetzt ist auf einen belibigen <name> zu achten.

Grundsätzlich sind Änderungen im XML Schema bzgl. Business Process Scripts ergangen – unter Umständen erscheinen bei JAR Agent Scripts die Fehlermeldung „Attribute default is not allowed“ was dann in jedem AgentScript anzupassen ist.

Die MariaDB nicht auf die höchst mögliche Version updaten. Maximal Version 10.5.13. NICHT 10.5.16

Abgesehen davon läuft das Update einwandfrei.

Kategorien
Randnotiz

Datei Säuberungsaktion

Eine Unart ist es, Sonderzeichen in Datei- oder Ordnernamen zu vereinbaren.

Der Grund ist mir nicht klar. User, eben.

Sonderzeichen sind häufig ein Grund für seltsame Fehler, wenn es um die
Verarbeitung von Dateien geht. Dateinamen mit Sonderzeichen oder Umlauten
lassen sich auf Anwenderebene problemlos vereinbaren – mit Einschränkungen.
Linux mag keine Komma oder Semikolon, Windows verträgt keine | im Namen.

Kurz: Vor der Verarbeitung, insbesondere Datenarchivierung, sollte das
entfernt werden.

Mittels find /dir -type f *[üÜöÖäÄß]* -exec sed.. usw. kann man alle Fehler
nach eigenem Gusto beheben.

Tipp: Einfacher, schneller und fehlerfrei ist detox. Leider nicht in jeder
Distribution enthalten. Debian ist kein Problem – RedHat verwaist auf RPM aus
Fremdquellen.

Hat jemand schönere Lösungen?

Kategorien
Allgemein Randnotiz Schulung

tar: Archive anlegen

Vor geraumer Zeit war das auch Thema im CCGL (Link) – wie nutze ich TAR um Archive verschlüsselt auf einem öffentlichen Laufwerk zu sichern.

Zahlreiche Varianten neben TAR/aespipe/split nutze ich. Eine weitere und sicherere Art ist es, TAR in Kombination mit OpenSSL zu nutzen. Zunächst aber das Handling.

Im CCGL haben wir TAR als Stream durch „split“ in kleinere Pakete zerteilt. Das kann TAR auch alleine:

tar -cvML 1945600 -V Testlauf  –files-from=tarliste.txt -F ‚echo sicherung/${TAR_ARCHIVE}-${TAR_VOLUME} >&${TAR_FD}‘ -f test.tar

Wir sehen, analog zum Beispiel im Link, ein Multi-Volume (M), begrenzt auf eine Bandlänge (L) von 1.9GB. Ohne das Script (F) würde der Befehl zum Wechseln des Mediums auffordern, wenn eine Menge von 1.9GB geschrieben wurde. Die Datei, die wir anstatt Band mit (f) konfiguriert haben, wird zur Laufzeit im Parameter TAR_FD (File Descriptor) gehalten und mit dem Script bei jedem „Bandwechsel“ neu gesetzt. Coole Sache! Aus test.tar wird nach den ersten 1.9GB dann 2-test.tar. Mit „V“ setzte ich gerne Label – vergleichbar mit dem Aufkleber den wir früher auf die Band Rollen oder Disketten geklebt haben.

Versuchen wir den Inhalt darzustellen, ohne zu Wissen das es sich um ein Multi Volume Archiv handelt:

Man erkennt die Problematik? Sicherlich wenn man das ganze mit dem Multi Volume Script sieht:

Das Archiv wird nahtlos und vollständig aufgelistet. Es wird nur das Label des ersten Archivs aufgeführt.

Wenn ich Zeit finde, zeige ich wie ich das in meinem jetzigen Projekt gelöst habe und wie man das Archiv verschlüßelt ablegt.

Kategorien
Randnotiz

fstab: auf richtige UID/GID achten

Kleiner Tipp am Rande:

Es ist gute Sitte, beim mounten von Freigaben eine UID nebst GID zu konfigurieren. Die Distributionen halten dazu eine kleine Falle bereit: Debian und RedHat vergeben im Standard >= 1000 für GID’s und >= 1000 für UID’s.

OpenSuse (Leap) oder SLES beginnen bei der Vergabe der GID bei 100!

Versucht man dann zB. ein WebDAV Laufwerk mit der GID 1000 zu mounten, kommt es zum Fehler: getuid() –> exit_group(1) , da die Gruppe in SLES >= 100 bekommen hat.

Kategorien
Randnotiz Schulung

Ansible: Update Raspbian

Im CCGL halten wir unsere Raspberry Pi’s mit Ansible synchron. Je nach Aufgabe werden Softwarestände und Code gleich gehalten.

Bestimmte Task sollten aber nicht mit dem allgemeinen Playbook ablaufen: Löschen von Verzeichnissen, unbeabsichtigte Installationen und kein ausserplanmäßiges Update.

Dazu habe ich die kritischen Task’s mit dem Tag „never“ versehen. Das Tag „never“ sorgt dafür, dass dieser Tag „never“ abläuft. Es sei denn, wir geben ihn expliziet an.

Beim Aufruf also, auf den „-t“ Tag und eine eventuelle Beschränkung mit „-l“ auf die im Inventory konfigurierten Maschinen achten!

ansible-playbook -D  -i inventory/hosts tasks/main.yml -l pi -t update

Bis zum nächsten Workshop im CCGL 😉

Kategorien
Randnotiz

Tipp: CEntOS 8 No URLs in mirrorlist

Kurzer Hinweis

Die Standrad Repositories für Installation und Updates müssen auf andere Quellen geändert werden. Das ist komfortabel automatisiert:

dnf –disablerepo ‚*‘ –enablerepo=extras swap centos-linux-repos centos-stream-repos

dnf distro-sync

Danach funktioniert dnf update und dnf install

Gibt es andere Lösungen? Oder habt ihr die Distribution gewechselt?