Debian Server

Aus d0b
Zur Navigation springenZur Suche springen

Ist schon etwas älter die Seite, von daher nicht wundern wenn da noch von etch hin und wieder die rede ist.


Grundlagen

Debian Version ermitteln

cat /etc/debian_version 
cat /proc/version
uname -r

Sources.lst

In der Sources.lst tragen wir Quellen für Debian Pakete ein.

nano /etc/apt/sources.lst

Hilfreiche Links zu dem Thema:

Hostname ändern

Mit root rechten folgenden Befehl ausführen:

hostname = neuerhostname

Überprüfen ob der alte hostname noch im System rumschwirrt

grep -R /etc/ -e "<hostname>"


Headerfiles installieren

aptitude install linux-headers-`uname -r`



Sicherheit

Eigentlich steht das Grundlegende alles schon hier ;-)

Debian Secure Howto

Ein paar links dazu


Dienste

Apache

Settings

Fußzeile mit Versionsinformationen ausblenden, dafür öffnen wir die Security Config des Apachen

nano /etc/apache2/conf.d/security

Wir suchen folgende Einstellung und ändern diese entsprechend ab, der Standardwert sollte übrigens "Off" sein.

ServerSignature Off

Nur noch neustarten und fertig ;)

nano /etc/init.d/apache2 restart

Links


Courier-IMAP

Gleichzeitige Zugriffe pro IP erhöhen

nano /etc/courier-imap/imapd
nano /etc/courier-imap/pop3d

In der jeweiligen Config gibts dann einen Parameter namens MAXPERIP welcher bei mir auf 4 gesetzt war, diesen ändern wir dann entsprechend der eigenen Wünsche ab. Nur noch den Dienst neustarten und fertig is dat ding.

/etc/init.d/courier-imap restart

Fail2ban

Alle IPtables Einträge anzeigen

/sbin/iptables --list 

Eintrag 1 in der "fail2ban-ssh" Kette löschen

/sbin/iptables --delete fail2ban-SSH 1

MYSQL

Backup

Backup erstellen

mysqldump --user=<username> --password=<passwort> <database>  > `date -I`-<backupname>.backup

Backup zurückspielen

mysql --user=<username> --password=<passwort> --database=<database>  < [yyyy-mm-dd]-<backupname>.backup

Sollte jedoch nicht in der Form als Skript benutzt werden, denn solange der prozess läuft sehen alle user das passwort im process table ;)


PW reset

Bei folgenden Befehlen dran denken, dass der MYSQL Chef in alten versionen "admin" heißt, nicht "root" ;)

Wir stoppen erstmal Mysql

/etc/init.d/mysql stop

Mysql im Hintergrund starten im safe mode (Ohne PW)

/usr/bin/mysqld_safe --skip-grant-tables &

Jetzt loggen wir uns ohne PW ein!

mysql --user=root mysql

Jetzt befinden wir uns im mysql prompt und setzen uns ein neues PW.

mysql> update user set Password=PASSWORD(''''neues_pw'''') WHERE User='root';
mysql> flush privileges;
mysql> exit;

Jetzt nur noch mit "ps x" in der shell mysql_safe raussuchen und beenden und den mysql Dienst normal starten. Fertig.

ps x
kill mysql_safe-process-id
/etc/init.d/mysqld start

Postfix

Folgende Zeilen sollen bewirken das unser Postfix nicht als Open Relay dient.

# Erweiterung
smtpd_helo_required = yes             
smtpd_delay_reject = no
disable_vrfy_command = yes
smtpd_helo_restrictions = 
        permit_mynetworks,
        reject_invalid_hostname,
        reject_unknown_hostname,
        reject_non_fqdn_hostname

Jetzt nur noch Postfix neustarten

/etc/init.d/postfix restart

Qmail

Life with Qmail - Hier steht so ziemlich alles was man so braucht

Mail Queue mit qmHandle

inetd > xinetd

Hier eine Kurzanleitung für den Umstieg von Inetd auf Xinetd.

Erstmal auf Updates checken und dann holen wir uns Pakete.

aptitude update
aptitude install xinetd

Mit folgendem script erzeugen wir nach der erfolgreichen xinetd Installation, eine zum System passende xinetd.conf und speichern diese in einen temporären Verzeichnis.

/usr/sbin/xconv.pl < /etc/inetd.conf > /tmp/xinetd.conf

Jetzt erzeugen wir Backups von der inetd.conf und der der Standard xinetd.conf, dann können wir die im /tmp/ erzeugte xinetd.conf nach /etc/ verschieben.

mv /etc/inetd.conf /etc/inetd.conf.bak
mv /etc/xinetd.conf /etc/xinetd.conf.bak
mv /tmp/xinetd.conf /etc/xinetd.conf

xinetd neu starten um die Änderungen zu übernehmen und anschliessen kurz checken ob alles läuft.

/etc/init.d/xinetd restart
ps ax | grep xinetd

Eine 2.Shell öffnen und darin die neu erzeugte xinetd.conf öffnen, um dessen Inhalte gleich in mehrere Dateien zu stückeln.

nano /tmp/xinetd.conf

Zurück in der 1.Sell erzeugen wir nun folgende Dateien und füttern diese mit Info`s aus der geöffneten xinetd.con, welche wir im Schritt zuvor in der 2.Shell geöffnet haben.

In der xinetd.conf bleibt nur der Block "defaults" bestehen, für die anderen erzeugen wir neue Dateien in dem bereits vorhandenen Unterverzeichniss "/etc/xinetd.d/*"

smtp_psa erzeugen:

nano /etc/xinetd.d/smtp_psa

mit dem entsprechenden infos aus der xinetd.conf füllen:

service smtp
{
	socket_type     = stream
	protocol        = tcp
	wait            = no
	disable		= no
	user            = root
	instances       = UNLIMITED
	server          = /var/qmail/bin/tcp-env
	server_args     = -Rt0 /var/qmail/bin/relaylock /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
}

genauso geht es auch mit den anderen Blöcken

nano /etc/xinetd.d/smtps_psa :

service smtps
{
	socket_type     = stream
	protocol        = tcp
	wait            = no
	disable		= no
	user            = root
	instances       = UNLIMITED
	server          = /var/qmail/bin/tcp-env
	server_args     = -Rt0 /var/qmail/bin/relaylock /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
} 


nano /etc/xinetd.d/ftp_psa :

service ftp
{
        socket_type = stream
        protocol    = tcp
        wait        = no
        user        = root
        server      = in.proftpd
}

nano /etc/xinetd.d/poppassd_psa :

service poppassd
{
        socket_type = stream
        protocol    = tcp
        wait        = no
        user        = root
        server      = /opt/psa/admin/bin/poppassd
}

Und in etwa so sollte die xinetd.conf danach aussehen :

# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/

defaults
{
        #The maximum number of requests a particular service may handle
        # at once.
        instances   = 25

        # The type of logging.  This logs to a file that is specified.
        # Another option is: SYSLOG syslog_facility [syslog_level]
        log_type    = FILE /var/log/servicelog

        # What to log when the connection succeeds.
        # PID logs the pid of the server processing the request.
        # HOST logs the remote host's ip address.
        # USERID logs the remote user (using RFC 1413)
        # EXIT logs the exit status of the server.
        # DURATION logs the duration of the session.
        log_on_success = HOST EXIT DURATION

        # What to log when the connection fails.  Same options as above
        log_on_failure = HOST ATTEMPT

        # The maximum number of connections a specific IP address can
        # have to a specific service.
        per_source  = 5
}

includedir /etc/xinetd.d


Nochmal Prüfen ;-)

/etc/init.d/xinetd restart
ps -x | grep xinetd

Fehler / Troubleshooting Nachdem ich ein Plesk Update durchgeführt hatte (Hotfix für 8.4, ohne Versionsupgrade) wurde die Dateien "smtp_psa" und "smtps_psa" entfernt, was dazu führte das ich nur noch über webmail eMails versenden konnte, jedoch nicht über mein lokales Mail Programm. Der Fehler wurde schnell klar, als ich die "Plesk-Update-Info" Mail, welche dem admin des Servers zugesandt wird durchgesehen habe. Da stand dann:

Trying to replace files and set up right permissions...  Trying to remove old xinetd.d entries... removed `/etc/xinetd.d/smtp_psa'
removed `/etc/xinetd.d/smtps_psa'

Spamdyke (greylisting)

Iptables

Aktuellen Regelsatz speichern, vorher sollte natürlich einer erstellt werden ;)

mkdir /var/lib/iptables
iptables-save > /var/lib/iptables/rules

Startskript erstellen

/bin/sh
iptables-restore < /var/lib/iptables/rules

und im einen runlevel verlinken

cd /etc/rc2.d
ln -s ../init.d/iptables S99iptables

Logging

Logrotate

Wer mehrere Systeme betreut wird an diesen netten tool nicht vorbeikommen.

aptitude install logrotate

Einstellungen werden unter "/etc/logrotate.conf" vorgenommen. Mehr info`s dazu auch hier

Troubleshooting

Logfiles prüfen

Wenn nach der Installation irgendetwas nicht funktioniert, führt euch der erste Weg nach /var/log/. Hier ein paar Ansätze

less /var/log/syslog | grep xinetd
ps ax | grep xinetd

Mail Server testen via Telnet

Manueller Telnet Test via Shell

1. Shell / Terminal / Eingabeaufforderung öffnen und folgendes eingeben:

telnet localhost 25

Ausgabe: 220 (Der Mail-Horst identifiziert und meldet sich)


2. Hier steht domain.tld für die eigene Domain.

HELO domain.tld

Ausgabe: 250 Servername


3. Eigene E-Mail-Adresse angeben, mit spitzen klammern!

MAIL FROM:<e-mail-adresse@domain.tld>

Ausgabe: 250 OK


4. Empfänger E-Mail-Adresse angeben, auch wieder mit spitzen klammern!

RCPT TO:<postmaster@synserver.de>

Ausgabe: 250 OK


5. Folgendes eingeben:

DATA

Ausgabe: 354 GO AHEAD


6. Nochmal eigene E-Mail-Adresse angeben, nicht vergessen mit spitzen klammern!

FROM:<e-mail-adresse@domain.tld>


7. Test Nachricht eingeben und dann mit folgenden Befehlen abschließen

"Enter"
. 
"Enter"

Ausgabe: 250 OK