solip.de
Intel Channel Partner
Lancom Reseller

Archiv für die 'Linux' Kategorie

Linux in der Geschmacksvariante debian-basiert, also GNU/Linux und Ubuntu.

apt / apt-get / aptitude zur Benutzung von IPv4 zwingen

Erstellt von solip am 18. Oktober 2016

Das mittlerweile bevorzugte nutzen von IPv6 bringt manchmal Probleme, so wie aktuell bei Abrufen mittels apt. Der Server security.debian.org antwortet schon seit längerem nicht auf IPv6. Das Ergebnis sind Timeouts und lange Wartezeiten bei jedem Durchlauf.

apt lässt sich zwingen IPv4 zu nutzen. Dazu ist unter

/etc/apt/apt.conf.d/

eine Datei zu erstellen, z.B.

99force-ipv4

mit folgendem Inhalt:

Acquire::ForceIPv4 "true";

Diese Option wurde mit Version 0.9.7.9~exp1 eingeführt und ist ab Ubuntu Saucy und Debian Jessie verfügbar, also ca. seit April 2015.

Abgelegt unter debian GNU/Linux, Linux | Keine Kommentare »

Zugriff auf MySQL als Admin mit phpMyAdmin und Plesk

Erstellt von solip am 16. März 2016

Seit Version 10.2 verschlüsselt Plesk das Admin-Kennwort mit AES128. Es ist gespeichert unter /etc/psa/.psa.shadow
Nach einem Upgrade ist es evtl. noch unverschlüsselt, aber Neuinstallationen sind stets verschlüsselt.

Dieses Feature lässt sich umschalten mit den Befehlen:

Verschlüsseln: /usr/local/psa/bin/init_conf ‐u ‐passwd PASSWORD ‐encrypted‐password
Entschlüsseln: /usr/local/psa/bin/init_conf ‐u ‐passwd PASSWORD ‐plain‐password

Nach einem Upgrade sollte die Installation auf Verschlüsselung umgestellt werden.

Wichtig wird diese Sache, wenn Tools mit dem Admin-Account, der auch Zugriff auf alle Datenbanken bietet, auf MySQL zugreifen sollen.
Das gilt auch für eine gewünschte, serverweite Installation von z.B. phpMyAdmin.

Im Falle von Verschlüsselung ist das Kennwort für diese Tools nicht mehr das Admin-Kennwort, sondern der Hash, der in /etc/psa/.psa.shadow gespeichert ist.

Als Alternative zur Verwendung dieser langen Zeichenkette bleibt jedoch die Möglichkeit weitere Accounts anzulegen, die Zugriff auf mehrere oder alle Datenbanken haben.

Abgelegt unter Plesk | Keine Kommentare »

Rekursiver Touch aller Dateien und Verzeichnis mit Unix

Erstellt von solip am 8. Juni 2015

Um alle Dateien und Verzeichnisse rekursiv mit Touch (aktueller Zeitstempel) zu behandeln, kann man auf der Shell wie folgt vorgehen:

find . -exec touch {} \;

Abgelegt unter Shell-Skripting | Keine Kommentare »

Bash: Rekursives Löschen von Dateien

Erstellt von solip am 19. April 2013

Wie löscht man rekursiv immer wieder vorkommenden Datei-Müll, wie ihn z.B. Macs laufend produzieren?

Beispiel:

find ./ -name '.DS_Store' -delete

Zu starten im Wurzelverzeichnis des betroffenen Bereichs.

Beliebig ausbaubar mit Wildcards!

Abgelegt unter Shell-Skripting | Keine Kommentare »

Broadcom BCM5708 Modul bnx2 produziert rx_align_errors, rx_crc_errors, frame errors

Erstellt von solip am 19. April 2013

Viel Ärger in Form von um die 10% Frame Errors (lt. ifconfig) und rx_align_errors sowie rx_crc_errors (lt. ethtool -S) kann erleben wer eine bestimmte Kombination aus Linux Kernel und dem Modul bnx2 für die Broadcom Netzwerkkarten einsetzt.

Was zunächst in jeder Hinsicht auf Hardware-Probleme hindeutet und zum Tausch von Kabeln und anderer Fehlersuche anregt, ist tatsächlich ein Problem des Kernels. So gesehen durch die gerade aktuelle Version 2.6.24-32 x64 induziert. Ein Broadcom BCM5708 verfiel in einen nahezu unbrauchbaren Modus und produzierte gewaltige Mengen an fehlerhaften Ethernet-Paketen.

Das Netz ist voll von Hinweisen darauf das Modul per disable_msi=1 umzukonfigurieren um Probleme zu vermeiden. Dies ist aber nicht in allen Fällen die Lösung und funktioniert auch längst nicht in jeder Kombination aus Treiber, Firmware und Broadcom NIC. Die Lösung besteht für alle anderen im Einsatz eines älteren Kernels – hier -24 – welcher das Problem noch nicht induziert.

Abgelegt unter debian GNU/Linux | Keine Kommentare »

Individuelle Apache-Konfigurationen mit Plesk-vhosts

Erstellt von solip am 11. Mai 2012

Wie man Domains in Plesk individuell anpasst – denn Änderungen der httpd.include sind ohne Effekt.

Häufig wird versucht, Änderungen am Webserver auf einem Plesk-System in der Datei /var/www/vhosts/*domain*/conf/httpd.include (o.ä. je nach Distribution) durchzuführen. Dies funktioniert aber nicht oder nur kurz weil diese Datei zwar korrekt aussieht und dies auch tut, aber vom Verwaltungssystem einfach neu geschrieben wird bei Bedarf.

Die Ursache dafür ist in der Datei selbst beschrieben, wird aber oft übersehen:

# ATTENTION!
# DO NOT MODIFY THIS FILE OR ANY PART OF IT. THIS CAN RESULT IN IMPROPER PLESK
# FUNCTIONING OR FAILURE, CAUSE DAMAGE AND LOSS OF DATA. IF YOU REQUIRE CUSTOM
# MODIFICATIONS TO BE APPLIED TO THE CONFIGURATION, PLEASE, PERFORM THEM IN THE
# FOLLOWING FILE(S):
# vhost.conf

Also legt man im gleichen Pfad (conf der Domain) eine Datei vhost.conf an und trägt dort die Änderungen ein. Hier sind alle Apache-Direktiven für einen Virtualhost zulässig.

Anschliessend veranlasst man Plesk, diese Änderungen zu übernehmen:

Plesk 9 und früher: /usr/local/psa/admin/bin/websrvmng -a -v
Plesk 10 und folgende: /usr/local/psa/admin/bin/httpdmng –reconfigure-all

Abgelegt unter Plesk | Keine Kommentare »

SMTP-Auth mit TLS und POP3 sowie IMAP mit TLS via Courier für Exim4 auf debian 5.0 (Lenny)

Erstellt von solip am 16. März 2010

Als größere Variante zur Einrichtung von Exim4 mit SMTP-Auth und TLS hier eine Anleitung, wie basierend auf der Exim4 Installation SMTP-Auth mit TLS und Postfachzugriff via POP3 und IMAP (beides auch mit TLS) eingerichtet werden kann.

Unterstützt werden damit die folgenden Protokolle: SMTP, SSMTP mit Authentifizierung, POP3, POP3S, IMAP2, IMAPS.

Exim4 als Standard Mail Transport Agent (MTA) von debian kommt in zwei Varianten: light und heavy. Die Variante Heavy lässt sich gut für mehr als nur lokale Mailzustellung ausbauen. Zunächst mal muss das evtl. benutzte light-Paket von Exim4 gegen die heavy-Variante getauscht werden. Dies ist jederzeit ohne Änderungen an der Konfiguration möglich.

aptitude install exim4-daemon-heavy

Dann installiert man einige Pakete nach, die für das Setup ingesamt erforderlich sind.

aptitude install courier-authdaemon courier-imap courier-imap-ssl courier-pop courier-pop-ssl swaks libnet-ssleay-perl ssl-cert

Der Ablauf von Authentifizierungen sieht mit diesem Setup so aus: Connection -> Exim4 -> Courier -> System (PAM). Die Benutzer sind also lokale Benutzer und sie stehen in Ressourcen wie /etc/passwd, /etc/group, und /etc/shadow.

Damit die Benutzer zukünftig auch eine Ordnerstruktur für E-Mail haben, legen wir eine solche für neue Benutzer-Accounts fest. maildirmake erstellt die Struktur in /etc/skel.

maildirmake /etc/skel/Maildir

Bestehende Benutzer ohne Ordnerstruktur für E-Mail können die Ordner wie folgt hinzugefügt bekommen:

maildirmake ~/Maildir

Es empfiehlt sich Benutzer auch in Gruppen zu sortieren. Z.B. E-Mail Benutzer, Benutzer mit gültiger Shell.. die Ordnung sollte hergestellt werden bevor man viele Benutzer anlegt. Dieses Beispiel nimmt unsere Firmen-Gruppe „solip“ für diesen Zweck. Alle Benutzer darin haben keinen Shell-Zugriff, aber ein Postfach.

groupadd solip
useradd -g solip -s /bin/false -d /home/demouser demouser

Benutzer können später auch noch in jedem Punkt mit dem Befehl usermod geändert werden.

An den Einstellungen von Courier muss nichts geändert werden. Jedoch benötigt man eine Änderung an den Zertifikaten für POP3S und IMAPS:

rm -rf /etc/courier/*.pem
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/courier/imapd.pem
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/courier/pop3d.pem

Optional, falls die Authentifizierung später nicht funktioniert, muss noch folgende Änderung gemacht werden:

chmod 755 /var/run/courier/authdaemon

Nun prüft man ob die Services laufen:

netstat -utal | egrep -e 'pop|imap'

Die Ausgabe sollte so aussehen:

tcp6 0 0 [::]:imaps [::]:* LISTEN
tcp6 0 0 [::]:pop3s [::]:* LISTEN
tcp6 0 0 [::]:pop3 [::]:* LISTEN
tcp6 0 0 [::]:imap2 [::]:* LISTEN

Nun prüft man den IMAP Server samt Login interaktiv:

telnet localhost imap2
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc. See COPYING for distribution information.
AB LOGIN "root" "CHANGE"
AB OK LOGIN Ok.
BC SELECT "Inbox"
* FLAGS ($MDNSent NonJunk $Forwarded $label1 $label2 \Draft \Answered \Flagged \Deleted \Seen \Recent)
* OK [PERMANENTFLAGS ($MDNSent NonJunk $Forwarded $label1 $label2 \* \Draft \Answered \Flagged \Deleted \Seen)] Limited
* 190 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1205133440] Ok
* OK [MYRIGHTS "acdilrsw"] ACL
BC OK [READ-WRITE] Ok
ZZZZ LOGOUT
* BYE Courier-IMAP server shutting down
ZZZZ OK LOGOUT completed
Connection closed by foreign host.

Nun zu Exim4. Wir generieren ein X.509 Zertifikat für die Verschlüsselung. Exim4 hat dafür sein eigenes Tool und entsprechende Passagen in der Anleitung.

bash /usr/share/doc/exim4-base/examples/exim-gencert

Dies generiert uns Zertifikat und Key in /etc/exim4.

Nun ist die Exim4-Konfiguration für TLS anzupassen. Dazu fügen wir gem. Dokumentation ein:

2.1.3. Using Exim Macros to control the configuration" and "2.2.2. Enabling TLS support for Exim as server" from /usr/share/doc/exim4-base/README.Debian.gz, you should create a file with name /etc/exim4/conf.d/main/000_localmacros (split configuration) or /etc/exim4/exim4.conf.localmacros (non-split configuration), and insert lines as following:
#####################################################
### main/03_exim4-config_tlsoptions
#####################################################
MAIN_TLS_ENABLE = true
tls_on_connect_ports = 465

An gleicher Stelle kann auch noch bestimmt werden ob SMTP-AUTH verschlüsselt erfolgen muss oder nicht. Standard ist auch unverschlüsselt zugelassen.

auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}

Ermöglicht nur verschlüsselten Verbindungen SMTP-AUTH zu benutzen.

Da wir gerne möchten das Exim4 uns SMTP verschlüsselt am dafür üblichen Port 465 zur Verfügung stellt, bearbeiten wir auch /etc/default/exim4 wie folgt:

# options for daemon listening on port 25
SMTPLISTENEROPTIONS='-oX 465:25 -oP /var/run/exim4/exim.pid'

Nun müssen in der Sektion authenticators in der Exim4 Konfiguration PLAIN und LOGIN wie folgt aussehen. Anpassen oder ersetzen ist hier möglich.


plain_courier_authdaemon:
driver = plaintext
public_name = PLAIN
server_condition = \
${extract {ADDRESS} \
{${readsocket{/var/run/courier/authdaemon/socket} \
{AUTH ${strlen:exim\nlogin\n$auth2\n$auth3\n}\nexim\nlogin\n$auth2\n$auth3\n} }} \
{yes} \
fail}
server_set_id = $auth2
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endif

login_courier_authdaemon:
driver = plaintext
public_name = LOGIN
server_prompts = Username:: : Password::
server_condition = \
${extract {ADDRESS} \
{${readsocket{/var/run/courier/authdaemon/socket} \
{AUTH ${strlen:exim\nlogin\n$auth1\n$auth2\n}\nexim\nlogin\n$auth1\n$auth2\n} }} \
{yes} \
fail}
server_set_id = $auth1
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endif

Ggf. ist Exim4 noch zu konfigurieren. Dies kann jederzeit mittels dpkg-reconfigure exim4-config durchgeführt werden. Wichtige Punkte sind:

  • Split configuration into small files?: No
  • System Mail Name: Gleicher wie beim Zertifikat und in der Systemkonfiguration
  • Delivery method for local mail: Maildir format in home directory

Nun prüft man ob die SMTP Services wie gewünscht laufen.

netstat -utal | egrep -e 'smtp|ssmtp'

Die Ausgabe sollte in etwa so aussehen:

tcp 0 0 *:ssmtp *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp6 0 0 [::]:ssmtp [::]:* LISTEN
tcp6 0 0 [::]:smtp [::]:* LISTEN

Nun kann man ein mal probieren sich selbst eine E-Mail zu senden und auch eine an eine externe Adresse:

echo "test" | mail -s "test" root
echo "test" | mail -s "test" test@domain.de

Die Exim4 Logdatei /var/log/exim4/mainlog gibt Aufschluss darüber ob alles richtig läuft.

Nun prüft man ob TLS aktiv ist:

swaks -a -tls -q HELO -s localhost -au root -ap '<>'

Und ob Authentifizierung mittels TLS ebenfalls läuft (bitte Kennwort eingeben):

swaks -a -tls -q AUTH -s localhost -au root

Nun ist noch Exim4 mittels /etc/init.d/exim4 restart neu zu starten sowie die Logs und die Funktion zu prüfen.

Abgelegt unter debian GNU/Linux | Keine Kommentare »

SMTP-Auth und TLS für Exim4 auf debian 5.0 (Lenny)

Erstellt von solip am 10. März 2010

Exim4 als Standard Mail Transport Agent (MTA) von debian kommt in zwei Varianten: light und heavy. Die Variante Heavy lässt sich gut für mehr als nur lokale Mailzustellung ausbauen. Sie bietet unter anderem von Haus aus Authentifizierung gegen /etc/passwd und /etc/shadow.

Hier eine kleine Anleitung um SMTP-Authentifizierung einzuführen und TLS-Transportverschlüsselung zu nutzen.

Zunächst mal muss das evtl. benutzte light-Paket von Exim4 gegen die heavy-Variante getauscht werden. Dies ist jederzeit ohne Änderungen an der Konfiguration möglich.

aptitude install exim4-daemon-heavy

Dann generieren wir ein X.509 Zertifikat für die Verschlüsselung. Exim4 hat dafür sein eigenes Tool und entsprechende Passagen in der Anleitung.

bash /usr/share/doc/exim4-base/examples/exim-gencert

Dies generiert uns Zertifikat und Key in /etc/exim4.

Nun ist die Exim4-Konfiguration für TLS anzupassen. Dazu fügen wir gem. Dokumentation ein:

2.1.3. Using Exim Macros to control the configuration" and "2.2.2. Enabling TLS support for Exim as server" from /usr/share/doc/exim4-base/README.Debian.gz, you should create a file with name /etc/exim4/conf.d/main/000_localmacros (split configuration) or /etc/exim4/exim4.conf.localmacros (non-split configuration), and insert lines as following:
#####################################################
### main/03_exim4-config_tlsoptions
#####################################################
MAIN_TLS_ENABLE = true
tls_on_connect_ports = 465

An gleicher Stelle kann auch noch bestimmt werden ob SMTP-AUTH verschlüsselt erfolgen muss oder nicht. Standard ist auch unverschlüsselt zugelassen.

auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}

Ermöglicht nur verschlüsselten Verbindungen SMTP-AUTH zu benutzen.

Da wir gerne möchten das Exim4 uns SMTP verschlüsselt am dafür üblichen Port 465 zur Verfügung stellt, bearbeiten wir auch /etc/default/exim4 wie folgt:

# options for daemon listening on port 25
SMTPLISTENEROPTIONS='-oX 465:25 -oP /var/run/exim4/exim.pid'

Damit Exim4 auch gegen die lokalen Benutzer authentifizieren kann, braucht der Daemon Zugriff auf /etc/shadow. Dazu müssen die Rechte geändert werden so das Exim4, welches als User Debian-exim und Gruppe Debian-exim (Schreibweise beachten) läuft, auch darauf zugreifen kann.

chgrp Debian-exim /etc/shadow
chmod g+r /etc/shadow

Nun müssen in der Sektion authenticators in der Exim4 Konfiguration PLAIN und LOGIN wie folgt aussehen. Anpassen oder ersetzen ist hier möglich.

plain:
driver = plaintext
public_name = PLAIN
server_prompts = :
server_set_id = $2
server_condition = "${if pam{$2:$3}{1}{0}}"

login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_set_id = $1
server_condition = "${if pam{$1:$2}{1}{0}}"

Nun ist noch Exim4 mittels /etc/init.d/exim4 restart neu zu starten sowie die Logs und die Funktion zu prüfen.

Abgelegt unter debian GNU/Linux | 1 Kommentar »

Cron / Crontab Struktur

Erstellt von solip am 26. Februar 2010

Cron dient unter Linux zur zeitgesteuerten Ausführung von Aufgaben. Die Konfiguration dazu findet sich in:

  • /etc/crontab – systemweit
  • /etc/cron.d
  • /etc/cron.daily – täglicher Aufruf durch crontab
  • /etc/cron.hourly – stündlicher Aufruf durch crontab
  • /etc/cron.monthly – monatlicher Aufruf durch crontab
  • /etc/cron.weekly – wöchentlicher Aufruf duch crontab

Des weiteren kann per Benutzer ein eigener crontab gespeichert werden. Dazu erstellt man eine Datei mit cron-Jobs und übernimmt diese mittels:

cron dateiname

Das Format von cron-Dateien:

* * * * * auszuführender Befehl
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── Wochentag (0-7) (Sonntag =0 oder =7)
│ │ │ └────── Monat (1-12)
│ │ └──────── Tag (1-31)
│ └────────── Stunde (0-23)
└──────────── Minute (0-59)

Die Wildcard * kann natürlich genutzt werden.
Des weiteren Teiler wie */2 – jede 2. Minute zum Beispiel.
Und Bereiche wie 1-5 für z.B. Wochentage auch.

In der Praxis gibt es fast nichts was sich mittels cron nicht planen liesse.

Abgelegt unter Shell-Skripting | Keine Kommentare »

Verzeichnisse rekursiv ändern ohne den Inhalt zu ändern

Erstellt von solip am 11. Februar 2010

Alle Verzeichnisse rekursiv ändern, z.B. für neue chmod Rechte, ohne jedoch die Dateien in den Verzeichnissen zu ändern.

So geht es mit der Shell:

find . -type d -exec chmod 755 {} \; -print

Abgelegt unter Shell-Skripting | Keine Kommentare »