30.12.16

OpenVas - Admin Oberfläche nicht nur von localhost

sysctl -w net.ipv4.conf.eth0.route_localnet=1
iptables -t nat -A PREROUTING -p tcp -d [eigene IP von OpenVas] --dport 443 -j DNAT --to-destination 127.0.0.1:9392

27.12.16

Luks - cryptsetup - Fehlermeldung kernel aes-xts-plain64


System: Root Server von 1blu

Luks installieren
apt-get install cryptsetup

Modul aktivieren
modprobe dm-crypt 


Nachdem ich ein dynamisches Laufwerk (als Datei) mittels

truncate -s 4G DATEINAME

erstellt hatte, wollte ich es mittels

cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y GERÄTEDATEI 
 
formatieren.

Danach kam die Fehlermeldung, dass das Modul kernel aes-xts-plain64 nicht unterstützt wird.
Abhilfe schaffte ein

apt-get install linux-image-generic linux-headers-generic

und ein anschließender Reboot.

Dann kann das Gerät geöffnet werden mit
cryptsetup luksOpen DATEINAME NAME_DES_GERAETES
Dateisystem installieren

mkfs.ext4 /dev/mapper/NAME_DES_GERAETES
 
und mounten
 
mount /dev/mapper/NAME_DES_GERAETES /mnt/MOUNTPOINT
 
Aushängen:

umount /mnt/MOUNTPOINT
cryptsetup luksClose NAME_DES_GERAETES


16.12.16

Quickstart - Webseite mit Symfony

sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony
sudo chmod a+x /usr/local/bin/symfony
 
 
symfony new symfony
 
Wenn Apache, dann 
 
chmod -R www-data:www-data /var/www/html/symfony
 
a2enmod mod_rewrite
Wenn Fehlermeldung: 

Options FollowSymLinks and SymLinksIfOwnerMatch are both off, so the RewriteRule directive is also forbidden due to its similar ability to circumvent directory restrictions : 
/var/www/html/symfony/web/
 
 
Dann hinzufügen:
 

<IfModule mod_rewrite.c>
Options -MultiViews +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
 
 
 

13.12.16

Postfix - Standard Installation mit Dovecot Auth - quick memo

apt-get install dovecot dovecot-managesieved postgrey spamassassin dovecot-lmtpd


main.cf:

smtpd_recipient_restrictions =.
    # Unsere Kinderchens erlauben!
    permit_sasl_authenticated,
    permit_mynetworks,
    # RBL checken (könnte auch nur über policyd-weight erfolgen)
    reject_rbl_client zen.spamhaus.org,
   reject_rbl_client ix.dnsbl.manitu.net,
    reject_rbl_client bl.spamcop.net,
    # policyd-weight
    #check_policy_service inet:127.0.0.1:12525,
    # Greylisting checken über TCP-Socket:
   check_policy_service inet:127.0.0.1:10023,
    reject_unauth_destination,
   reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
   reject_unknown_recipient_domain

Dazu:
 smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_use_tls = yes
soft_bounce = yes


Fehler beim Versenden:
fatal: no SASL authentication mechanisms


In /etc/dovecot/conf.d/10-master.conf ggfs. einkommentieren

unix_listener auth-userdb {
    mode = 0666
    user = postfix
    group = postfix
  }

 # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
  }

LMTP für Sieve aktivieren
/etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins sieve
}


Pfad:
/etc/dovecot/conf.d/90-sieve.conf:  sieve = file:~/sieve;active=~/.dovecot.sieve

Im Home:
.dovecot.sieve -> sieve/Alles.sieve



Bei Änderung in der config von Postfix, soft_bounce = yes => alle Fehler werden zu temporären Fehlern, d.h. Mails bleiben in der Queue.


Login lokal testen:
telnet localhost 143
a login "user@domain" "password"


Sieve läuft auf Port 4190. Nach Update von dovecot(?) startete der Sieve-Daemon nicht mehr.
Gucken, ob in der /etc/dovecot/dovecout.conf folgende Zeile enthalten ist:

protocols = imap pop3 sieve


12.12.16

Postfix und Sieve / Pigeonhole


Autoresponder und  andere Sachen in
/var/zpanel/vmail/andreas-gregor.de/archiv/sieve/managesieve.sieve

Bzw. nach /home/user/sieve, wenn Mail dort abgelegt wird.

Anstoßen und Test des Filters mit:
sieve-filter -v -u archiv /home/archiv/sieve/Test.sieve 'INBOX'

dann

sieve-filter -e -W -u archiv /home/archiv/sieve/Test.sieve 'INBOX'


# Bestellungen in extra Ordner
if header :contains "subject" ["Bestellung", "Rechnung"] {
  fileinto "Bestellungen";
}


require ["fileinto", "envelope", "vacation"];
# Einordnen
if address :is "from" ["xxx@gmx.de","yyyy@web.de"]
{
  fileinto "Important";

}



vacation
  # Reply at most once a day to a same sender
  :days 1
  :subject "Out of office reply"
  # List of additional recipient addresses which are included in the auto replying.
  # If a mail's recipient is not the envelope recipient and it's not on this list,
  # no vacation reply is sent for it.
  :addresses ["root@myurl.de", "archiv@testmail.de"]
"Dies ist ein Autoresponder";

sievec -u archiv managesieve.sieve
Testen:
sieve-filter -v -C -u "my@email.de" .sieve 'INBOX'

Ausführen:
-e - excute, -W write

Can't load plugin sieve_plugin : Plugin is intended to be used only by binaries: lda lmtp (we're managesieve)
Lösung war:
sieve in protocols /usr/share/dovecot/protocols.d/ aktivieren mit
!include_try /usr/share/dovecot/protocols.d/*.protocol

Auskommentieren von
#mail_plugins = $mail_plugins quota sieve


5.12.16

Rsyslog - Nachricht in eigene Logdatei schreiben und nicht nach /var/log/syslog

Neue Regel definieren, z.b.

/etc/rsyslog.d/45-[meineRegel].conf
Diese Regel muss greifen vor der 50er-default-Regel!

Inhalt:

:programname,contains,"Was auch immer" /var/log/neuesLog.log
& stop

Dann
service rsyslog restart

2.12.16

Apache: Symbolic link not allowed or link target not accessible

Fehlermeldung:
Symbolic link not allowed or link target not accessible:

Meine Lösung war:
Options +FollowSymLinks -SymLinksIfOwnerMatch

GGfs. Rechte in der Verlinkung noch anpassen.

29.11.16

ip - Kurzübersicht

Wie manch anderen war mir bis vor kurzem nicht bekannt, dass die "klassischen" Befehle ifconfig, route, arp etc. deprecated sind.

ip aus der Suite iproute2 löst sie alle ab.

Anzeigen der IP Adressen


ip addr show

oder kurz auch: ip a

 Route anzeigen


ip route show

oder kurz: ip r

Default Route löschen

ip route del default via xx.xx.xx.xx

Default Route hinzufügen

ip route add default via xx.xx.xx.xx

Route für einzelne IP hinzufügen

ip route add 192.168.178.223 via 192.168.178.245 dev eth0

"ARP"


ip neighbour
oder kurz: ip n

ARP-Einträge löschen


ip neighbour delete 192.168.0.77 dev eth0

ARP-Eintrag ändern auf permanent

ip neighbour change 192.168.0.200 dev eth0 lladdr 45:43:34:34:34:54 nud permanent

Link anzeigen


ip link show eth0

Link aktivieren/deaktivieren


ip link set eth0 up/down

IP hinzufügen / löschen

ip addr add 192.168.0.5/24 broadcast + dev eth0
ip addr delete 192.168.0.5/24 dev eth0

Löschen aller IP Adressen von einem Device


ip -4 address flush label eth0

Statistiken abrufen


ip  -s -s link show eth0
ip -s neigh show

MAC Adresse ändern

ip link set eth0 address 45:45:45:45:45:45

Interfacenamen ändern

ip link set eth0 name eth20

Socket Statistics

ss -t
ss -lnt - TCP
ss -lnu -UDP
ss -ltun -beides







Node.js | Onvif auf dem RPI installieren

apt-get install npm

Dann versuchen nach dieser Anleitung vorzugehen.

Also:
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt install nodejs

Fehlermeldungen:

1.  jshint nicht gefunden
2. jscs nicht gefunden
3. coffee nicht gefunden 
4. xml2js nicht gefunden
5. dot nicht gefunden
6. nimble nicht gefunden
7. istanbul nicht gefunden
8. cover nicht gefunden
9.  _mocha nicht gefunden
npm install jshint jscs coffee test-coffee-module xml2js dot nimble istanbul cover mocha




Fehlermeldung beim Installieren:
pi@pi-3:~/tmp/node_modules/onvif $ npm install jshint
npm ERR! Linux 4.1.19-v7+
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "jshint"
npm ERR! node v4.2.6
npm ERR! npm  v3.5.2

npm ERR! Cannot read property 'target' of null
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /home/pi/tmp/node_modules/onvif/npm-debug.log

Abhilfe: Ich war in einem Verzeichnis, wo ein package.json existierte!

Dank an https://github.com/ashleygwilliams für den Hinweis!

Nach dem Installieren von onvif über npm, das Beispiel example2.js anpassen (IP, User, PW, Ports) und mit 

node example2.js 

ausführen.
 

 

21.11.16

Systemd - eigenen Service erstellen

Zunächst erstelle ich ein kleines Script in

/usr/local/bin/myscript

Darin wird testweise alle 5 Sekunden eine Zeile an den Logger (syslog) geschickt.
Damit es auch über den Service beendet werden kann, wird ein trap eingebaut.

#!/bin/bash

killit()
{
    echo "...Ende" | logger
    exit 0
}
trap killit HUP

while true; do


    sleep 5
    echo "...sleeping" | logger
done

 Ausführbar machen mit

chmod +x /usr/local/bin/myscript


Nun erstelle ich die Datei
/lib/systemd/system/myscript.service

mit folgendem Inhalt:
 [Unit]
Description=My own little script
After=network.target.

[Service]
#EnvironmentFile=
ExecStart=/usr/local/bin/myscript
ExecStop=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=myscript.service

Den Service aktivieren mit

systemctl enable myscript

Status  anzeigen lassen mit

service myscript status

Starten mit
service myscript start

Im Systemlog (/var/log/syslog) sollten nun alle 5 Sekunden neue Einträge auftauchen.
Service stoppen mit

service myscript stop

Sehr schön ist in diesem Zusammenhang das Zusammenspiel mit journalctl.

Ein

journalctl -u myscript.service listet nur die Einträge des soeben definierten Services auf.

2.11.16

Per X11 auf den RPI zugreifen

Nach einigen Mißerfolgen eine Kurzanleitung:

1. Xming Server unter Windows installieren
2. auf dem RPI unter /etc/ssh/sshd.conf => X11Forwarding yes (Standard bei  Raspbian, Ubuntu Mate)
3. auf dem Windows Rechner z.B. mit Cygwin Terminal export DISPLAY=127.0.01:0 (mit 0:0 ging es bei mir nicht)
4. ssh -Y user@rpi
5. z.B. iceweasel starten

27.10.16

Joomla - Inhalte per Script auf neue Version übertragen

Ich stand vor dem Problem, die Inhalte einer ziemlich alten Joomla Version (V 1.5) auf eine neue Joomla Installation zu übertragen.

Hier ein schnell dahin gehacktes Script. Dieses muss noch mit den Zugangsdaten der alten und neuen Datenbank angepasst werden. Dann noch die Startwerte von  $rgt und $lft anpassen. Ich habe keine Ahnung, wozu sie sind. Auf jeden Fall müssen sie hochgezählt werden. Einfach mal in die Tabelle assets nach den entsprechenden Spalten gucken und die letzten Werte +1 übernehmen in das Script.

<?php


$prefix = "c27gy_";
$rgt = 36;
$lft = 35;

class mydatabase
{

    var $database = "";
    var $prefix = "c27gy_"; // Prefix der Joomla Tabellen

   
    function db_connect($database)
    {
       
        $user = "[user]";
        $pw = "[PASSWORD]";

        $mysqli = new mysqli("localhost", $user, $pw, $database);
        /* check connection */
        if (mysqli_connect_errno())
        {
            $error = "Connect failed: " . mysqli_connect_error();
            //$this->errorReport($error, true);
            exit();
        }
        $mysqli->query("SET NAMES 'utf8'");
        return $mysqli;
    }


    function getAssetID($title, $lft, $rgt, $name)
    {
       
        $sql_asset = "INSERT INTO " . $this->prefix . "assets
    (level,name,title, lft, rgt, parent_id, rules)
    VALUES
    ('3', '$name','$title', '$lft', '$rgt', '27','{\"core.admin\":{\"7\":1},\"core.manage\":{\"6\":1},\"core.create\":{\"3\":1},\"core.delete\":[],\"core.edit\":{\"4\":1},\"core.edit.state\":{\"5\":1},\"core.edit.own\":[]}')";
        $link=$this->db_connect("[DATABASE]");
        $link->query($sql_asset);
        //echo "DEBUG $sql_asset <br>";
        return $link->insert_id;
    }

    function truncateTables()
    {
        $link=$this->db_connect($this->db_new);
        // Die u.a. id anpassen!!! Nicht, dass existente Datensätze gelöscht werden
        $link->query("DELETE FROM " . $this->prefix . "assets WHERE id > 65");
        $link->query("TRUNCATE TABLE " . $this->prefix . "content");
        $link->query("TRUNCATE TABLE " . $this->prefix . "content_frontpage");
       
    }
}

$db = new \mydatabase();
// ACHTUNG: NICHT UNBEDINGT NÖTIG!!
//$db->truncateTables(); // Tabellen leeren bzw. Einträge löschen

// Mit den Datenbanken verbinden
$link = $db->db_connect("[DATABASE]");
$link1 = $db->db_connect("[DATABASE_OLD]");
// Daten aus der alten Tabelle holen
$sql_abfrage = "SELECT * FROM jos_content where state=1 ORDER by created DESC";
$result = $link1->query($sql_abfrage);
$zaehler = 0;
while ($row = $result->fetch_array())
{
    $zaehler++;

    echo $zaehler . " " . $row['alias'] . "<br>";
    $title = $row['title'];
    $alias = $row['alias'];
    $introtext = $row['introtext'];
    $fulltext = $link->real_escape_string($row['fulltext']);
    $created = $row['created'];
    $old_id=$row['id'];
    $id = $db->getAssetID($title, $lft, $rgt, "com_content.article." . $old_id);
    $rgt+=2;
    $lft+=2;
    $sql_insert = "INSERT INTO ${prefix}content (
                asset_id,
                title,
                alias,
                state,
                catid,
                introtext,
                `fulltext`,
                language,
                created, publish_up,
                featured,
                version,
                access)
VALUES('$id', '$title',
        '$alias',
        1,
        2,
         '$introtext',
         '$fulltext',
         '*',
        '$created', '$created',
         1,
         2,
         1)";
    if(!$link->query($sql_insert))
    {
        echo "Fehler! " . $link->error . "<br>$sql_insert";
    }
    $content_id=$link->insert_id;
   
    $sql_frontpage="INSERT INTO ${prefix}content_frontpage (content_id, ordering)
    VALUES ('$content_id', '$zaehler')";
    if(!$link->query($sql_frontpage))
    {
        echo "Fehler! " . $link->error . "<br>$sql_frontpage";
    }
}

7.10.16

Webmin / Apache: Virtuelle Hosts einrichten


Belegen:

Document_Root
ServerName

Alles andere auf Default lassen.

Für Subdomains unter Virtual Server Options -> Networking and Addresses -> Alternate Virtual Server Names z.B. *.meineseite.de eintragen.

Nicht:

<VirtualHost gehrdener.de:80>

sondern

<VirtualHost *:80>

eintragen!!

 certbot-auto --apache -d gehrdener.de -d www.gehrdener.de

3.10.16

Raspberry LCD Display aus China ansteuern

Das 3.2 Inch Display habe ich für wenig Geld aus China bekommen (Gearbest.com?).

Es ist nicht plug&play, d.h. ich brauche einen Treiber.

Hier wurde ich schließlich fündig.

Falls die Seite mal verschwindet:

Method 1. Driver installation

Description: Supports the latest version of Raspbian and Ubuntu Mate.
1. Configure your Pi:
sudo raspi-config
Set as:
  • Select Expand Filesystem.
  • Boot Option -> Desktop Autologin (may differ depending on Raspbian revision)
2. Copy the driver (choose the driver according to your OS) into your OS then Run the following commands:
tar xvf LCD-show-YYMMDD.tar.gz
cd LCD-show/
This toggles the mode to LCD display: ./LCD32-show 3. After system rebooting, the RPi LCD is ready to use.

DHCP Server konfigurieren

Adresspool definieren:

class "virtualbox"
{
  match if binary-to-ascii(16,8,":",substring(hardware,1 ,2)) == "08:00";
}

Eigenen Adressraum für virtuelle Maschinen festlegen:

pool
{
   allow members of "virtualbox";
  range 192.168.1.200 192.168.1.220:
}

 Unbekannte Geräte ausschließen

subnet 192.168.178.0 netmask 255.255.255.0
{
option routers x.x.x.x;
range 192.168.178.50 192.168.178.150;
deny unknown-clients;

}


subnet 192.168.1.0 netmask 255.255.255.0
{
option routers x.x.x.x;
range 192.168.1.50 192.168.1.150;
option host-name = concat("intruder", binary-to-ascii(10,8,"",substring(leased-address,3,1)));
allow unknown-clients;

}



DHCP Server im Netz finden

dhcping -s 255.255.255.255 -r -v
Ein Dank an Heise!

10.8.16

Default Gateway einrichten

Linux

Shell als root

Default gw löschen

route del default gw 192.x.x.x

Neuen gw eintragen

route add default gw 192.x.x.x


Windows

Powershell als Admin starten
route change 0.0.0.0 mask 0.0.0.0 192.x.x.x

Ansehen der Config:

netsh interface ip show config


15.7.16

Screen Multiuser - Reminder

Hier ist die Anleitung. Zur Sicherheit werde ich es bei mir auch noch auszugsweise verewigen...

User1:
screen -S Testscreen

Ctr-A : multiuser on 

Screen mit anderem User teilen:

Str.-A :acladd User2


GGfs:
chmod u+s $(which screen)
chmod 755 /var/run/screen 
rm -fr /var/run/screen/*

User2  loggt sich ein:

screen -x  User1/Testscreen

8.7.16

Transparente Bridge mit dem RPI

Hier habe ich eine kleine, feine Anleitung gefunden.


Hardware:
RPI mit USB-Ethernet (eth1 - wird automatisch erkannt)
USB WLAN Dongle Dlink (wird auch automatisch erkannt)

Software installieren:

apt-get install bridge-utils tcpdump


/etc/network/interfaces anpassen:

############ WLAN
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

########## Bridge
auto br0
iface br0 inet dhcp
    bridge_ports eth0 eth1
    bridge_stp on

WPA Passwort für das Wlan-Netzwerk (erforderlich hier zur Fern-Administration) erstellen mit

wpa_passphrase 'SSID des Routerst' 'Passwort'

und in die Datei wpa_supplicant.conf einfügen

country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="Name des Routers"
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP TKIP
    group=CCMP TKIP

    psk=[erstellt mit WPA-pass] }

Wenn Wlan läuft, kann man sich per SSH einloggen und den RPI rebooten bzw. das Netzwerk br0 hochfahren mit

ifup br0 (als root)



19.5.16

Bitcoin - Bruteforce wallet - BitcoinD installieren

Hier ist der Sourcecode für Unix Maschinen.

Nötig ist die Installation der SSL libs

apt-get install libssl-dev

sowie der Berkeley DB

apt-get install make


apt-get install libdb6.0++-dev

Configure, Make, Make install


Bitcoind installieren

Hier gehts zur Anleitung.

sudo add-apt-repository ppa:bitcoin/bitcoin


7.4.16

zPanel mit SSL - Part 2

Nach der Installation mehrerer Zertifikate von letsencrypt hatte ich zunächst mit "Override a Virtual Host Setting" diese eingefügt.
Das klappte aber nur bedingt. Trotz nahezu identischer Einstellungen konnte man  manchmal per https zugreifen und gleichzeitig per http, aber manchmal komischerweise nicht.
Außerdem wurde bei manchen Domains das CSS nicht mehr richtig angezeigt.

Hier nun eine (wie immer geklaute) Anleitung, mit der es klappen soll.

Meine Zertifikate für jede Domain liegen in

/etc/letsencrypt/live/[DOMAIN]

Dort relevant fullchain.pem und privkey.pem.


Damit das Ganze mehr oder weniger automatisiert abläuft, habe ich mir eine SSL-Vorlage erstellt:


# DOMAIN: NEWDOMAIN
<virtualhost *:443>
ServerName NEWDOMAIN
ServerAlias NEWDOMAIN www.NEWDOMAIN
ServerAdmin admin@localhost.de
DocumentRoot "/var/zpanel/hostdata/zadmin/public_html/NEWPATH"
php_admin_value open_basedir "/var/zpanel/hostdata/zadmin/public_html/NEWPATH:/var/zpanel/temp/"
php_admin_value suhosin.executor.func.blacklist "passthru, show_source, shell_exec, system, pcntl_exec, popen, pclose, proc_open, proc_nice, proc_terminate, proc_get_status, proc_close, leak, apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, escapeshellcmd, escapeshellarg, exec"
ErrorLog "/var/zpanel/logs/domains/zadmin/NEWDOMAIN-error.log"
CustomLog "/var/zpanel/logs/domains/zadmin/NEWDOMAIN-access.log" combined
CustomLog "/var/zpanel/logs/domains/zadmin/NEWDOMAIN-bandwidth.log" common
<Directory />
Options FollowSymLinks Indexes
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>
AddType application/x-httpd-php .php3 .php
ScriptAlias /cgi-bin/ "/_cgi-bin/"
<location /cgi-bin>
AddHandler cgi-script .cgi .pl
Options ExecCGI -Indexes
</location>
DirectoryIndex index.html index.htm index.php index.asp index.aspx index.jsp index.jspa index.shtml index.shtm
# Custom Global Settings (if any exist)
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/NEWDOMAIN/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/NEWDOMAIN/privkey.pem

# Custom VH settings (if any exist)

</virtualhost>
# END DOMAIN: NEWDOMAIN



Dann habe ich  ein Verzeichnis
/etc/zpanel/configs/apache/ssl_enabled 
erstellt, in dem dann die SSL-Konfigurationen hineinkopiert werden sollen.

Damit diese includiert werden einfach in die

/etc/zpanel/configs/apache/http.conf 

folgende Zeile einfügen:

 # Custom SSL Apache config
Include /etc/zpanel/configs/apache/ssl_enabled

Das nachfolgende Script (create-ssl-domain.sh) erwartet als ersten Parameter die Domain, für die ein SSL-Eintrag eingerichtet werden soll:

#!/bin/bash

CONFIGPATH=/etc/zpanel/configs/apache/ssl_enabled
VORLAGE=/etc/zpanel/configs/apache/VORLAGE
domainstring="s/NEWDOMAIN/$1/g"
replacepath=`echo $1 | sed 's/\./_/g'`
pathstring="s/NEWPATH/$replacepath/g"

if [ ! "$1" ]; then
echo "Fehler! Domain übergeben!"
    exit 0
fi

echo "Bereite SSL für Domain " $1 "vor"
sed -e $domainstring -e $pathstring $VORLAGE > $CONFIGPATH/$1.conf

Ausführbar machen, dann ausführen mit

create-ssl-domain.sh [DOMAIN]

und schwups, eine neue Konfiguration ist angelegt und wenn die entsprechenden Zertifikate vorhanden sind, meckert der Apache bei einem

service apache2 restart

auch nicht!



6.4.16

SSL mit Postfix

Das Postfixbuch ist das Mittel der Wahl bei der Installation von Postfix.
Auf Seite 595 ff. der 3. Auflage ist auch beschrieben, wie man Zertifikate erstellt.
Leider hat sich dabei ein kleiner Fehler eingeschlichen, der natürlich in einer neueren Version wieder ausgebügelt sein wird (nicht Peer? ;)).

Also zum Mitschreiben.....

Neues CA erstellen (Pfad stammt aus einer Ubuntu Installation)

/usr/lib/ssl/misc/CA.pl -newca

Request erstellen

/usr/lib/ssl/misc/CA.pl -newreq
(Passwort des Root CA angeben)

Wichtig

Common Name (e.g. server FQDN or YOUR name) []:

Hier muss der FQDN des Mailservers stehen, z.B. mx1.example.com

Dann das Client Zertifikat signieren mit

/usr/lib/ssl/misc/CA.pl -sign

Nun muss man noch das Passwort des neuen Zertifikates entfernen, damit Postfix ohne Rückfrage starten kann.
Hier fehlen im Postfixbuch die Anweisungen -in und -out.

openssl rsa -in newkey.pem -out key.pem

Damit nicht jeder lesen kann, die Rechte mit

chmod 400 *.pem

setzen. Auch im Verzeichnis demoCA (falls angelegt) und demoCA/private.

In Postfix braucht es nur eine Anweisung und drei Pfade:

smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_cert_file = /etc/postfix/cert.pem
smtpd_tls_key_file = /etc/postfix/ssl/key.pem
smtpd_use_tls = yes

Wenn Dovecot installiert ist, kann man die gleichen Zertifikate zum Abruf der Emails verwenden.

Datei:
/etc/dovecot/conf.d/10-ssl.conf

## Meine Zertifikate
ssl_cert = </etc/postfix/cert.pem
ssl_key = </etc/postfix/key.pem


SSL aktivierern dort mit

ssl = yes (oder required)
Protokoll ergänzen in der dovecot.conf

protocols = imap pop3 lmtp sieve imaps


Verbindung testen:

openssl s_client -starttls smtp -crlf -connect localhost:25


5.4.16

Über Konsole mit TLS auf Mailserver einloggen

Einloggen mit TLS

openssl s_client -host mail.irgend.wo -port 25 -starttls smtp

ehlo test

AUTH PLAIN [Benutzer|Passwort - base64]



Username&Passwort base64 codieren


 echo -ne "\0mail@test.de\0password"|base64


Zertifikat auf dem Server überprüfen

  apt-get install gnutls-bin
gnutls-cli -s -p smtp mail.picoda.de
Dann ctrl-D drücken....


Oder so:
openssl x509 -noout -in [PFAD ZUM ZERTIFIKAT] -subject -issuer -dates

31.3.16

Putty / Kitty Konfiguration sichern / kopieren

Nach jahrelanger Nutzung von Putty bin ich vollends auf Kitty umgestiegen, da es einige Funktionen bietet, die über die von Putty hinausgehen.

Hier kann man sich darüber informieren.

Eines der "Probleme", die insbesondere bei extensiver Nutzung von eingetragenen Port-Forwardings auftauchen ist die Frage, wie ich mal schnell eine Session kopieren kann.

Das ist unter Kitty (ich nutze die portable Version) ganz einfach.

Man muss einstellen, dass die Sessions nicht irgendwo in der Registry versteckt werden, sondern in einem Ordner.

Hier ist die Anleitung dazu (kitty.ini -> savemode=dir).

 Danach kann ich die erstellten Sessions, die im Ordner von Kitty/Sessions aufgeführt sind, ganz normal kopieren und die Einstellungen bleiben erhalten für andere Sessions.

11.3.16

FFP mit NAS 540 - Fix von uwsiteloader.sh

Installation des externen Repos von Mijzelf:

Link


mkdir /i-data/sysvol/admin/zy-pkgs
echo "http://zyxel.diskstation.eu/Users/Mijzelf/zypkg-repo/" > /i-data/sysvol/admin/zy-pkgs/web_prefix

Fehler:
uwsiteloader.sh -- no checksum

Ändern:
wget  http://wolf-u.li/u/439 -O $TMPFILE1 || --no-check-certificate -> aber falsche Links
daher:
wget http://ffp.picoda.de/ffp-list -O $TMPFILE1

Links angepasst:

FFP
http://zyxel.diskstation.eu/Users/Mijzelf/FFP/

 /ffp/funpkg/cache/sites
Alt:
s       rsync://ffp.inreto.de/ffp/0.7/arm/packages
mz      http://downloads.zyxel.nas-central.org/Users/Mijzelf/FFP-Stick/packages/0.7/arm


Neu:
s       rsync://ffp.inreto.de/ffp/0.7/arm/packages
mz      http://zyxel.diskstation.eu/Users/Mijzelf/FFP/packages/0.7/arm/
uli     rsync://funplug.wolf-u.li/funplug/0.7/arm/packages

 


5.2.16

zPanel - SSL Verbindung mit letsencrypt

 Anhand dieser Anleitung habe ich die entsprechenden Zertifikate erstellt.

Hier wird beschrieben, wie diese dann in zPanel eingebunden werden.


Meine Config sieht dann so aus:


Port Override 443

ServerName picoda.de

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/picoda.de/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/picoda.de/privkey.pem
DocumentRoot "/var/zpanel/hostdata/zadmin/public_html/picoda_de"



Diese Änderungen werden vom Cron-Daemon alle 5 Minuten in die /etc/httpd-vhosts.conf Datei geschrieben.
Der Daemon kann händisch gestartet werden mit

 /usr/bin/php -q /etc/zpanel/panel/bin/daemon.php
Er ist als Cronjob in /etc/cron.d/zdaemon definiert.

Openhab und Ecoflow Max - API Anbindung

 Ich wollte die neu erworbene Powerstation in Openhab einbinden, um den aktuellen Status (Ladestand etc.) über Openhab auswerten zu können. ...