STD - Neubauer | IT - Flexibel, effizient und zielorientiert … STD - Neubauer | IT - Flexibel, effizient und zielorientiert … STD - Neubauer | IT - Flexibel, effizient und zielorientiert … STD - Neubauer | IT - Flexibel, effizient und zielorientiert …

Sidebar

STD Neubauer
  • Home
  • Service
    • Information
    • Coding
  • Kontakt

Login

Angemeldet bleiben
  • Benutzername vergessen?
  • Passwort vergessen?
  • Home
  • Service
    • Information
    • Coding
  • Kontakt

Coding

Zentyal mit Zertifikat von letsencrypt fit machen

Es gefällt nicht allen Anwendern erst mal ein Zertifikat mit Warnhinweisen zu akzeptieren - auch wenn selbst erstellte Zertifikate meist die Funktionalität erfüllen. Gute Dienste leisten hier die freien Zertifikate der Mozilla Gruppe durch die letsencrypt Funktionalität. Zentyal setzt in Zusammenarbeit mit Ubuntu auf allem, was man üblicherweise in der Server Umgebung einer Bürolandschaft braucht, auf - und ein offizielles Zertifikat holt dann das folgende Skript.

Besonders die offiziellen Services, wie das Webmail Interface von SOGo, der SMTP Mailer postfix und der Mail Server dovecot werden angenehmer für Benutzer wenn ein Zertifikat bereits geprüft werden kann. Das kleine Skript hilft den Task umzusetzen, es muss einmal angepasst werden um eine gültige und von außen erreichbare Domain anzugeben. Günstiger Weise wird das bereits der Hostname des Zentyal Servers sein, da dann auch der Name intern für das Büro bereits gleich ist - sonst hilft man mit einem DNS Eintrag sowohl im offiziellen DNS (außen) als auch im Zentyal nach. Im folgenden Skript setzt man den eigenen Domain Namen ein und macht es mit chmod 750 /usr/local/sbin/check-letsencrypt ausführbar. Der erste Aufruf sorgt dafür, dass das entsprechende Environment zur Verfügung gestellt wird bzw. dient es auch als Sanitizer. Als Standalone Lösung ist es hierfür nicht erforderlich die Konfigurationsdateien anzupassen oder die Zentyal Skript Abläufe zu verändern.

/usr/local/sbin/check-letsencrypt

#!/bin/bash
# Author:	Markus Neubauer (at) std - service . com

# Purpose:	Setup a valid certificate in Zentyal for official services.
#		This script is a FAF technic (i.e. Fire And Forget technic), 
#		so call it once interactive on a Zentyal 5 server.
# Version:	1.02 / 2018-03-07
# Modified:	1.03 / 2018-03-27 (honor /etc/ssl/private for apache)

# License:	de: https://www.gnu.org/licenses/gpl-3.0.de.html
#		en: https://www.gnu.org/licenses/gpl-3.0.en.html
#		es: https://www.gnu.org/licenses/gpl-3.0.ca.html

#		YOU HAVE TO CHANGE THE VARIABLE "THIS_DOMAIN" BELOW
#		and choose your favorite day for the re-checks.

# MODIFY THESE TWO LINES
THIS_DOMAIN='your.domain.here'
FAVORITE_DAY=3  # cert renewal will occur on wednesdays only if neeeded

# renewal task
AUTO_UPDATER=/etc/cron.daily/letsencrypt-check

declare -A CRT_TARGET
CRT_TARGET['apache']=/etc/ssl/certs/ssl-cert-snakeoil
CRT_TARGET['postfix']=/etc/postfix/sasl/postfix
CRT_TARGET['dovecot']=/etc/dovecot/private/dovecot

# SANITIZE SCRIPT PRESEEDINGS
if [ 'your.domain.here' == "${THIS_DOMAIN}" ]; then
	echo "
Modify THIS_DOMAIN ~ '${THIS_DOMAIN}' in script and recall $0" >&2
	exit 99
fi

EXE=`which letsencrypt`
if [ -z "${EXE}" ]; then
	EXE=`which certbot`
fi
if [ -z "${EXE}" ]; then
	apt install letsencrypt -y
	EXE=`which letsencrypt`
fi
if [ -z "${EXE}" ]; then
	cat << END_OF_ERROR >&2
ERROR: no LETSENCRYPT functionality found

# Check your installation and manually try:
	apt install letsencrypt
# then return and call ${0}
END_OF_ERROR
	exit 97
fi

# CHECK CERTIFICATE STATUS
# Before using the renew function get a new one:
if [ ! -d /etc/letsencrypt/live/${THIS_DOMAIN} ]; then
	${EXE} certonly -a webroot --webroot-path=/var/www/html -d ${THIS_DOMAIN}

elif [ "`date +'%w'`" == "${FAVORITE_DAY}" ]; then # it's wednesday
	# check once a month for renewal
	${EXE} renew -n
fi
MD5SUM="`md5sum /etc/letsencrypt/live/${THIS_DOMAIN}/fullchain.pem`"
if [ -z "${MD5SUM}" ]; then
	cat << END_OF_ERROR >&2
ERROR: No official certificate found, check your setup!

# Check your router to forward http traffic on Port 80.
# Goto to http://${THIS_DOMAIN} from an external Browser.
# Check finally using a manual call and watch errors:
${EXE} certonly -a webroot --webroot-path=/var/www/html -d ${THIS_DOMAIN}
END_OF_ERROR
	exit 98
fi

# SET APACHE CERT
function apache_cert() {
	cp /etc/letsencrypt/live/${THIS_DOMAIN}/fullchain.pem ${TARGET}.pem
	md5sum ${TARGET}.pem > ${TARGET}.pem.md5sum
	echo "${MD5SUM}" > ${TARGET}.le.md5sum
	# swap to private dir
	TARGET=`echo ${TARGET} | sed "s#/certs/#/private/#"`
	cp /etc/letsencrypt/live/${THIS_DOMAIN}/privkey.pem ${TARGET}.key
	apachectl graceful && echo "Apache reloaded ..."
	# SET NGINX CERT SAME WAY
	nginx -s reload && echo "Nginx reloaded ..."
}

# SET POSTFIX CERT
function postfix_cert() {
	cp /etc/letsencrypt/live/${THIS_DOMAIN}/fullchain.pem ${TARGET}.pem
	cat /etc/letsencrypt/live/${THIS_DOMAIN}/privkey.pem >> ${TARGET}.pem
	md5sum ${TARGET}.pem > ${TARGET}.pem.md5sum
	echo "${MD5SUM}" > ${TARGET}.le.md5sum
	postfix reload && echo "Postfix reloaded ..."
}

# SET DOVECOT CERT
function dovecot_cert() {
	cp /etc/letsencrypt/live/${THIS_DOMAIN}/fullchain.pem ${TARGET}.pem
	cat /etc/letsencrypt/live/${THIS_DOMAIN}/privkey.pem >> ${TARGET}.pem
	md5sum ${TARGET}.pem > ${TARGET}.pem.md5sum
	echo "${MD5SUM}" > ${TARGET}.le.md5sum
	doveadm reload && echo "Dovecot reloaded ..."
}

# MAIN LOOP - CERT STATUS CHECK
for DEST in "${!CRT_TARGET[@]}"
do
	echo -n "Checking ${DEST} cert status - "
	TARGET=${CRT_TARGET[$DEST]}

	CRTSUM="`md5sum ${TARGET}.pem`"
	if [ -f ${TARGET}.pem.md5sum ]; then
		CHKSUM="`cat ${TARGET}.pem.md5sum`"
	else
		${DEST}_cert ${TARGET}
		continue
	fi
	if [ -f ${TARGET}.le.md5sum ]; then
		LE_SUM="`cat ${TARGET}.le.md5sum`"
	else
		${DEST}_cert ${TARGET}
		continue
	fi
	if [ "${LE_SUM}" != "${MD5SUM}" ] || [ "${CHKSUM}" != "${CRTSUM}" ]; then
		${DEST}_cert ${TARGET}
		continue
	fi
	echo "${DEST} cert status ok."
done

# SETUP/CHECK CRON JOB ENTRY TO CONTINUE THE CHAIN
# Sanitizer again
if [ ! -f ${AUTO_UPDATER} ]; then
	cat << END_OF_SCRIPT > ${AUTO_UPDATER}
#!/bin/sh
#
# letsencrypt renewal task
#
# This script updates certificates if due for renewal
#

test -x $0 || exit 0
${0}
## eof
END_OF_SCRIPT
	chmod 750 ${AUTO_UPDATER}
	echo "Update script installed at ${AUTO_UPDATER}"
fi

## eof
Weiterlesen …

Joomla! System Plugin Syslog AuthLog

Joomla plugin syslogauthlogJoomla Installationen sind häufig verschiedenen brute force Angriffen ausgesetzt, zu unterscheiden sind hier meist der FTP-Zugang und die Joomla Installation selbst. In beiden Fällen, bei Joomla normalerweise im Backend, werden in aller Regel die Passworte für bekannte Logins einfach ausprobiert. Das Frontend ist dabei meist nicht so verlockend für Angreifer. Beobachtet wurde dabei, dass die Angriffe oft von wenigen und den gleichen IP Adressen ausgingen.

Weiterlesen …

RC Plugin logout_redirect: Beim Logout auf die Homepage der Domain umleiten

Wenn sich ein Benutzer in RoundCube in einer Virtual Domain Umgebung abmeldet (Logout Funktion) kann mit Hilfe dieses Plugins der Benutzer nach dem Ausloggen automatisch zu seiner oder einer beliebigen Homepage umgeleitet werden. Diese Funktion hatte ich schon früher für squirrelmail eingebaut und wollte das auch wieder in RoundCube haben.

Die Angabe der, der Abmeldung folgenden, Webpage wird in der config.inc.php gemacht. Dabei ist es möglich entweder eine statische Seite anzugeben oder mit %d den Domain Teil der Standard Email ID des Benutzers in die URL einzufügen. Das Plugin logout_redirect muss das letzte in der Liste der plugins in der main.inc.php sein (anschließende Plugins werden nicht mehr ausgeführt).

Weiterlesen …

RC Plugin custom_logo: Eigenes Logo in der Roundcube Session setzen

Das RoundCube Logo ist auf allen Seiten, auch auf dem Ausdruck sichtbar. Insbesondere in Virtual Domain Umgebungen möchte man aber oft ein individuelles Bild, welches dem Benutzer signalisiert wo er sich, je nach Identität, befindet.
Möchte man ein eigenes Logo an dieser Stelle anzeigen lassen, so geht das am einfachsten im Template, wenn es ein statisches Logo ist, welches sich nicht ändert. Im rc-0.7 kann das bereits über die skin_logo Variable in der config/main.inc.php erfolgen.

Wenn man ein wechselndes Logo, z.B. in Abhängigkeit von der verwendeten Email Domain, an dieser Stelle einblenden möchte ist das hier vorgestellte Plugin eine einfache Möglichkeit dieses Ziel zu erreichen ohne alle Templates ändern zu müssen.

Weiterlesen …

RC Plugin login_info: Text auf der Login Seite bei Roundcube einblenden

Auf der Anmeldeseite des RoundCube >= 1.0 Webmail ist es gelegentlich erforderlich eine Nachricht an alle Benutzer zu hinterlassen, spezielle Hinweise zu geben oder eine weitere Grafik anzuzeigen.

Ein kleines RC Plugin login_info übernimmt bei uns die Aufgabe (siehe Demo).

Weiterlesen …

Unterkategorien

Sonstiger Code

Copyright © 2025 STD-M.Neubauer. Alle Rechte vorbehalten. Designed by JoomlArt.com. Joomla! ist freie, unter der GNU/GPL-Lizenz veröffentlichte Software.
Bootstrap is a front-end framework of Twitter, Inc. Code licensed under Apache License v2.0. Font Awesome font licensed under SIL OFL 1.1.