Relay mit Sendmail und SMTP-Auth

Soll ein weiterer Mailserver, z.B. der des ISP, als Relay für Sendmail dienen und erfordert dieser Authentifizierung, so ist das kein Problem.

Kenn’ ich irgendwie auch schon … *g*

Verwendet wurde OpenBSD 3.3
Benötigte Pakete:

cyrus-sasl2

Für das gesamte Projekt benötigen wir die Quelltexte vom Sendmail:

# echo WANT_SMTPAUTH= yes >> /etc/mk.conf

# cd /usr/local/lib; ln -s libsasl2.so.2.11 libsasl2.so

# vi /usr/src/gnu/usr.sbin/sendmail/cf/cf/openbsd-proto.mc

nach FEATURE(`no_default_msa’) folgendes einfügen:

define(`confAUTH_MECHANISMS’,`LOGIN PLAIN CRAM-MD5 DIGEST-MD5′)dnl
TRUST_AUTH_MECH(`LOGIN PLAIN CRAM-MD5 DIGEST-MD5′)dnl
FEATURE(`authinfo’,`hash /etc/mail/authinfo’)

# cd /usr/src/gnu/usr.sbin/sendmail

# make && make install && make clean

# cd /usr/share/sendmail/cf/

# make openbsd-proto.cf

# cp openbsd-proto.cf /etc/mail/sendmail.cf

# vi /etc/mail/authinfo

AuthInfo:mein.relay.server “U:blabla” “P=blabla” “M:LOGIN”

# makemap hash /etc/mail/authinfo < /etc/mail/authinfo # vi /etc/mail/sendmail.cf Man suche nach: # "Smart" relay host (may be null) und füge ein: DSmein.relay.server Um die Kerberosfehlermeldungen beim Start ein wenig zu unterdrücken: # touch /etc/kerberosIV/srvtab Jetzt noch ein einfacher Neustart: # kill -HUP `head -1 /var/run/sendmail.pid` Auch ist es mit wenigen Schritten noch möglich, dass der Sendmail als Relay-Schutz eine korrekte Authentifizierung verlangt: # mkdir /var/sasl2 # echo pwcheck_method: saslauthd > /usr/local/lib/sasl2/Sendmail.conf

# /usr/local/sbin/saslauthd -a getpwent

# vi /etc/rc.local

if [ -x /usr/local/sbin/saslauthd ]; then
echo -n ‘ saslauthd’; /usr/local/sbin/saslauthd -a getpwent
fi

# kill -HUP `head -1 /var/run/sendmail.pid`

Nun Langt’s aber.

weiter lesen

Anonymous FTP

Ein Ftp-Server schlägt natürlich ein gewaltiges Loch in eine Firewall, da dieser auf Ports oberhalb 1024 kommuniziert und man demzufolge gezwungen ist diese zu öffnen. Nicht wirklich! Der OpenBSD FTP-Server bietet die Möglichkeit nur über Ports zwischen 49152 und 65535 zu sprechen.
Zur konfiguration:
/etc/shells

/usr/bin/false

# adduser
User Name: ftp
Full Name: Anonymous FTP
Shell: false
Login Group: ftp
Invite to other Groups: No

/etc/rc.conf

ftpd_flags=”-hDllUSAP” # for non-inetd use: ftpd_flags=”-D”

und die ftp verzeichnisse noch mit chmod auf 555 setzen und als Eigentümer root, dann kann nur gesaugt werden

/etc/ftpusers – Nicht wilkommene Benutzer
/etc/ftpchroot – Normale Benutzer die zugelassen werden
/etc/ftpwelcome – Dieser Text wird bei jedem FTP-Login gezeigt

weiter lesen

OpenBSD Ports, make und FLAVORS

Möchte man nicht das gesamte Paket haben oder ähnlich einem ‘configure’ bestimmte Parameter übergeben funktioniert das in diesem Falle über die FLAVORS:

# cd /usr/ports/WasAuchImmer
# make show VARNAME=FLAVORS
# env FLAVOR=”WieAuchImmer” make install

weiter lesen

Apache und SSL-Zertifikate

Für die Erstellung eines selbstsignierten SSL-Zertifikates für z. B. verschlüsselte Kommunikation via Webserver gehe man folgendermassen vor:

1. Schritt: Schlüssel erstellen

openssl req -new > new.cert.csr

2. Schritt: das Passwort entfernen

openssl rsa -in privkey.pem -out new.cert.key

3. Schritt: das Zertifikat signieren:

openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 365

nun nur noch in der /var/www/conf/httpd.conf für den server eintragen:

SSLCertificateFile /path/to/certs/new.cert.cert
SSLCertificateKeyFile /path/to/certs/new.cert.key

weiter lesen

Paket Filter wechsel dich

Mit folgendem kleinen Perl-Skript ist es möglich unterschiedliche Filterregeln auszuwählen und zu aktivieren:

#!/usr/bin/perl -w

use diagnostics;

# VARIABLEN
my $ruleNr = “”;
my $fwr1 = “/etc/pf.open”;
my $fwr2 = “/etc/pf.ftp”;
my $fwr3 = “/etc/pf.conf”;
my $fwr4 = “/etc/pf.closed”;

# USER-EINGABE
system(”/usr/bin/clear”);
print “\n”;
print “\n Bitte waehle Deine gewuenschte Firewall Regel: “;
print “\n”;
print “\n”;
print “\n”;
print “\n”;
print “\n 1. – SSH, FTP, SMTP, POP, WWW, HTTPS, E-Donkey und Webmin von aussen\n”;
print “\n”;
print “\n 2. – SSH, FTP,WWW, HTTPS und E-Donkey von aussen\n”;
print “\n”;
print “\n 3. – SSH, WWW, HTTPS und E-Donkey von aussen\n”;
print “\n”;
print “\n 4. – Alles zu von aussen – Squid von innen\n”;
print “\n”;
print “\n 5. – Neueinwahl zu T-Offline mit Regel 3\n”;
print “\n”;
print “\n”;

chomp($ruleNr = );

if (-e $fwr1 and $ruleNr eq 1){
system(”/sbin/pfctl -R /etc/pf.open”);
print “\nDu hast Nr.$ruleNr gewaehlt \n”;
print “\n”;
print “\n”;
}

elsif (-e $fwr2 and $ruleNr eq 2){
system(”/sbin/pfctl -R /etc/pf.ftp”);
print “\nDu hast Nr.$ruleNr gewaehlt \n”;
print “\n”;
print “\n”;
}

elsif (-e $fwr3 and $ruleNr eq 3){
system(”/sbin/pfctl -R /etc/pf.conf”);
print “\nDu hast Nr.$ruleNr gewaehlt \n”;
print “\n”;
print “\n”;
}

elsif (-e $fwr4 and $ruleNr eq 4){
system(”/sbin/pfctl -R /etc/pf.closed”);
print “\nDu hast Nr.$ruleNr gewaehlt \n”;
print “\n”;
print “\n”;
}

elsif ($ruleNr eq 5){
system(”/bin/kill `cat /var/run/tun0.pid`”);
system(”/sbin/route delete default”);
system(”/bin/sleep 2″);
system(”/usr/sbin/ppp -ddial pppoe”);
print “\nDu hast Nr.$ruleNr gewaehlt \n”;
}

else {
print “\n”;
print “\n”;
print “\nirgendetwas ist schief gelaufen\n”;
print “\nentweder falsche Nr. 1 – 5 sind erlaubt\n”;
print “\noder Deine Firewall Regel Files sind defekt\n\n”;
print “\n”;
print “\n”;
}
__END__

weiter lesen