Debian Server: Unterschied zwischen den Versionen
Sysd0b (Diskussion | Beiträge) |
Sysd0b (Diskussion | Beiträge) |
||
Zeile 410: | Zeile 410: | ||
</pre> | </pre> | ||
− | oder aber via cfg Datei (/usr/local/imapcopy/imapcopy.cfg) | + | oder aber via cfg Datei (/usr/local/imapcopy/imapcopy.cfg bzw. usr/share/doc/imapcopy/examples/ImapCopy.cfg). |
<pre> | <pre> | ||
vim /usr/local/imapcopy/imapcopy.cfg | vim /usr/local/imapcopy/imapcopy.cfg |
Version vom 8. Februar 2014, 18:33 Uhr
Ist schon etwas älter die Seite, von daher nicht wundern wenn da noch von etch hin und wieder die rede ist. Ein etwas neuere Seite zu Ubuntu gibts auch noch.
Inhaltsverzeichnis
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:
- apt-get.org - Nach Debian Paket Sources suchen
- dotdeb.org - Repository für Debian-basierende LAMP Server
- Debian Etch Sources (Archiv) - Danke an Huschi für diesen Artikel!
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 ;-)
Ein paar links dazu
- Chkrootkit - Rootkitchecker / Intrusion Detection
- Tripwire - Rootkitchecker / Intrusion Detection
- Fail2ban - Ban by Logfile
Dienste
Apache
Settings
Fußzeile mit Versionsinformationen ausblenden, dafür öffnen wir die Security Config des Apachen
nano /etc/apache2/conf.d/security nano /etc/apache2/apache2.conf // bzw.
Wir suchen folgende Einstellung und ändern diese wie folgt ab:
ServerSignature Off ServerTokens Prod
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
Php
Wir bringen Php bei nicht soviel über den Server zu erzählrn ;-)
nano /etc/php.ini expose_php Off
Postfix
Postfix Config
- Nachrichten auflisten: postqueue -p
- Löschen von einer Nachricht: postsuper -d QUEUE-ID
- Alle Nachrichten löschen: postsuper -d ALL
- Nachrichten festhalten: postsuper -h QUEUE-ID
- Nachrichten loslassen: postsuper -H QUEUE-ID
- Nachrichten Requeuingen: postsuper -r ALL
- Inhalt einer Mail ausgeben: postcat -q QUEUE-ID
- Nachrichten sofort zustellen: postqueue -f
Message Size
/etc/postfix/main.cf öffnen und message_size_limit suchen, wenn es noch nicht in der config steht (Default 10240000), folgende Zeile hinzufügen:
message_size_limit = 20480000
Beispielwert für 20MB, danach Postfix neustarten nicht vergessen.
service postfix reload bzw. service postfix restart
In der php.ini, welche im Verzeichnis /etc zu finden ist sollten folgende Parameter ebenfalls angepasst werden, falls webmail o.ä. genutzt wird:
post_max_size = 20M upload_max_filesize = 20M
Open Relay
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
Attachment size limitations
Diese Einstellung wird hier festgelegt:
/var/qmail/databytes /var/qmail/control/databytes
Default sind 20480000bytes, was 20MB entspricht.
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
Tools
Imapcopy
imapcopy, den source gibts bei google :/ Einfaches Tools zum Kopieren von Mailboxen von Server zu Server. Es reicht wenn es auf einen der beiden Server installiert wird, es könnte auch ein beliebiger 3.ter Server sein.
aptitude install imapcopy
Einsetzbar direkt auf der Kommandozeile
./imapCopy.sh imap://src-usr%40foo.de:src-pw@foo.de imap://dest-usr%40bar:dest-pw@bar.de
oder aber via cfg Datei (/usr/local/imapcopy/imapcopy.cfg bzw. usr/share/doc/imapcopy/examples/ImapCopy.cfg).
vim /usr/local/imapcopy/imapcopy.cfg
SourceServer foo.de SourcePort 143 DestServer bar.de DestPort 143 #CreateEmptyFolders skipfolder INBOX.Trash # SourceUser SourcePassword DestinationUser DestinationPassword Copy "src-usr@foo.de" "src-pw" "dest-usr@bar.de" "dest-pw" Copy "src-usr2@foo.de" "src-pw" "dest-usr2@bar.de" "dest-pw"
danach nur noch auf go drücken und los gehts
imapcopy -esl
Es stehen folgende Parameter zur Verfügung:
- -O SrcFolder : Copy only SrcFolder, -O can be specified more than once
- -M SrcFolder : Skip match SrcFolder, -M can be specified more than once
- -S SrcFolder : Skip SrcFolder, -S can be specified more than once
- -i : Show info about servers and exit without copying
- -1 : Copy only the first message of each folder
- -0 : Copy folders only, dont copy any messages
- -e : Create emtpy folders also
- -t : Test login for all users in config file
- -s : Subscribe all folders on destination server
- -u : Subscribe all folders on Source, needed by some servers to select a folder (only if select failes)
- -X : Copy all Messages to INBOX, dont create Folders on Destination
- -l : Write results to logfile imapcopy.log
SCP
Kann man bei migration gut gebrauchen, in folgenden Fall "schiebe" ich rekursiv Inhalte aus dem Ordner "quelle" in den Ordner "ziel" auf dem anderen Server.
scp -v -P 22 -r quelle/. user@domain.tld:/ziel/
Shell Tools
Sammlung von command line tools einfach via aptitude ;-)
- dstat
- htop
- iostat
- iotop
aptitude install dstat htop iostat iotop
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