- Apache2 installieren:
apt-get install apache2-mpm-prefork
- PHP5 mit MySQL-Unterstützung und Caching installieren:
apt-get install libapache2-mod-php5 php5-mysql php-apc php5-curl php5-gd
Hinweis:
Die entscheidenden Konfigurationsdateien finden sich dann unter
/etc/php5/apache2
und/etc/php5/apache2/conf.d
Die Konfigurationsdateien der PHP-Module liegen unter/etc/php5/mods-available
- MySQL Server mit PhpMyAdmin-Verwaltung installieren
Installation des MySQL-Server und der Datenbankverwaltung PhpMyAdmin mit folgendem Befehl:
apt-get install mysql-server-5.5 phpmyadmin
- mysql-server
Man wird aufgefordert ein Passwort für den administrativen MySQL-Benutzer „root“ anzugeben. - phpmyadmin
PhpMyAdmin fragt, ob es automatisch für einen Webserver eingerichtet werden soll: apache2 auswählen (mit Space-Taste)
Im Anschluss wird man gefragt, ob dbconfig-common die benötigte MySQL-Datenbank für PhpMyAdmin einrichten soll: Ja auswählen
Das administrative MySQL-Passwort wird danach gefordert werden, also eingeben.
Es folgt „Bitte geben Sie ein Passwort ein, mit dem sich PhpMyAdmin beim Datenbankserver anmelden kann. Falls Sie das Feld frei lassen, wird automatisch ein zufälliges Passwort erzeugt.“ Kann man also frei lassen.
- mysql-server
- PhpMyAdmin Zugang sicherer machen
Die zu bearbeitende Konfigurationsdatei liegt in/etc/phpmyadmin/apache.conf
Ändere die Zeile:
Alias /phpmyadmin /usr/share/phpmyadmin
zu zB:
Alias /what_ever /usr/share/phpmyadmin
apache.conf speichern und im Anschluss den Apache-Server neu starten mit
/etc/init.d/apache2 restart
- Apache absichern (Anti-DDoS)
Timeout Wert ändern
Im Anbetracht von DDoS-Angriffen sollte man den Timeout-Wert in der
/etc/apache2/apache2.conf
ändern, dieser kommt mit 300 etwas gross daher.
Timeout 45
- Guter Apache-DDOS Schutz: mod_evasive
Das Apache-Modul mod_evasive Debianpackage.png libapache2-mod-evasive bietet einen guten Schutz gegen DDoS Angriffe, indem es die Zugriffe auf den Webserver innerhalb einer bestimmten Zeit registriert und einen attackierenden Client für eine gewisse Zeit sperrt.
Installation mit
apt-get install libapache2-mod-evasive
Im Anschluss erstellt man einen extra Logfile Ordner
mkdir /var/lock/mod-evasive
Gibt die Rechte für den Ordner an den Benutzer www-data ab:
chown www-data /var/lock/mod-evasive
Es kann die bereits Vorhandene Konfigurationsdatei „/etc/apache2/mods-available/mod-evasive.load“ angepasst werden, mit dem Befehl
nano /etc/apache2/mods-available/mod-evasive.load
Standardmässig sieht die Datei so aus:
LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so
ändere den Inhalt zu:
LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.soDOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify deine@email.ch
DOSLogDir "/var/lock/mod-evasive"
Die Anführungszeichen beim DOSLogDir sind sehr wichtig. Trage deine E-Mail Adresse bei DOSEmailNotify ein, dann wirst du über jeden Angriff via E-Mail benachrichtigt.
Hinweis: Solltest du schon etwas mehr Traffic auf deiner Homepage haben, viele Bilder und Besucher, dann solltest du den DOSPageCount und DOSSiteCount Wert anpassen. Du könntest mit zu niedrigen Werten auch Web-Crawler aussperren. Aber das merkst du schon an den Benachrichtigungen
Der Mod sollte standardmässig aktiviert sein, wir prüfen das mit
a2enmod mod-evasive
Deaktivieren kannst du mod-evasive mit
a2dismod mod-evasive
- SSH-Server installieren und absichern (Fernwartung)
OpenSSH-Server Installation
Wir installieren den SSH-Server mit
apt-get install openssh-server
Verbindung zum SSH-Server herstellen
Bei Wheezy ist der SSH-Client standardmässig installiert, mit dem Befehl
ssh -l deinbenutzername deineserveradresse
kannst du eine Verbindung zu deinem SSH-Server herstellen. Via Standard läuft SSH-Verkehr über den Port 22. - SSH root-Login verbieten
Um den SSH-Server ein Stück sicherer zu machen können wir den direkten Login für den SuperUser „root“ deaktivieren. Sei Dir jedoch bewusst darüber, dass du vorher mindestens einen weiteren Benutzer auf deinem System haben solltest. (Damit man sich als Benutzer einloggen kann und mit dem su – Befehl kann man dann auch wieder root-Rechte erlangen.)
Wir editieren die Datei „nano /etc/ssh/sshd_config
“ und ändern
PermitRootLogin yes
zu
PermitRootLogin no
Jetzt kann sich der Benutzer Root nicht mehr direkt über den SSH-Server am System anmelden. Man meldet sich ganz normal mit einem Benutzer an und wechselt dann mittels su in den Root-Account. - SSH zusätzlich mit Fail2ban absichern
Fail2ban installieren
Debianpackage.png fail2ban ist bereits in den Paketquellen enthalten und lässt sich spielend leicht mit
apt-get install fail2ban whois
installieren. Wir installieren whois mit, um später weitere Informationen zum blockierten Client zu erhalten.Fail2ban konfigurieren (jail.conf)
Wir wollen jetzt mal einen Blick auf die Hauptkonfigurationsdatei von Fail2ban werfen. Es handelt sich dabei um die Datei „nano /etc/fail2ban/jail.conf
„.Generelle Einstellungen finden sich unter [DEFAULT]
[DEFAULT]# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
bantime = 600
maxretry = 3backend = auto
#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost
Die wichtigsten Standard-Parameter:
bantime: Kontrolliert die Blockzeit eines Clients, via Standard 600 Sekunden = 10 Minuten,
maxretry: Steht für die maximalen Regelverstösse, bis ein Client blockiert wird
destemail: Hier sollten wir unsere eigene E-Mail Adresse angeben (dazu später mehr)Hinweis: Die Filter-Einstellungen am Ende der Datei haben immer Vorrang.
Der nächste Absatz beschäfigt sich mit der Aktion, die bei einem Ban ausgeführt werden soll:
#
# ACTIONS
#banaction = iptables-multiport
mta = sendmail
Die wichtigsten Parameter:
banaction: Die Standard-Aktion die ausgeführt werden soll; iptables-multiport kann man so stehen lassen.
mta: Der MTA, der zum Versenden von Mails verswendet wird (Standard: sendmail)Ich möchte jetzt auf den destemail-Parameter zurückkommen: Sobald ein Client blockiert wird, könnt ihr euch eine E-Mail mit IP-Adresse samt WHOIS- und Logdatei Auszug zuschicken lassen.
Das macht Fail2ban aber nicht von Haus aus, wir müssen folgende Zeile
action = %(action_)s
abändern zu
action = %(action_mwl)s
Der E-Mail Versand bei einem Client-Ban wäre damit aktiviert. Wir widmen uns jetzt den zu überwachenden Diensten, bei Fail2ban Filter genannt:
[ssh]enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Wie wir erkennen können, ist der Standard-Filter ssh schon aktiviert. Hier müssen wir nichts ändern. Es gibt jedoch auch noch einen Filter gegen DDoS-Angriffe auf SSH, folgender Abschnitt:
[ssh-ddos]enabled = false
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 6
„enabled = false“ ändern wir hier einfach ab zu „enabled = true“.Wir speichern die Konfigurationsdatei jail.conf. Jetzt müssen wir Fail2ban noch neustarten mittels
/etc/init.d/fail2ban restart
Hinweis: Die Konfigurationsdateien der Filter finden sich in „/etc/fail2ban/filter.d“ und die der Aktionen in „/etc/fail2ban/action.d“
Hinweis: Fail2ban führt eine Logdatei unter /var/log/fail2ban.lorg - logwatch installieren
Damit man seinen Server unter Kontrolle hat ist es wichtig regelmässig die Logdateien der laufenden Serverdienste zu checken. Unter /var/log/apache2 liegen beispielsweise die Logdateien des Apache-Servers. Nun wäre es sehr mühsam, sich jeden Tag über SSH einzuloggen und jede einzelne Logdatei via Hand zu kontrollieren.
Eine Menge Arbeit kann man sich mit Debianpackage.png logwatch sparen, welches täglich eine Zusammenfassung aller Logdateien erstellen und die Zusammenfassung dann an eine hinterlegte E-Mail Adresse schicken kann.
Installation und Konfiguration von Logwatchlogwatch installieren wir mit
apt-get install logwatch
Im Anschluss bearbeiten wir die Konfigurationsdatei „logwatch.conf“:
nano /usr/share/logwatch/default.conf/logwatch.conf
Dort setzen wir diese Einstellungen
MailTo = root
Output = mail
Format = textDetail = High
Die folgenden Zeilen sollte man ausklammern:
#Service = "-zz-network" # Prevents execution of zz-network service, which
# prints useful network configuration info.
#Service = "-zz-sys" # Prevents execution of zz-sys service, which
# prints useful system configuration info.
#Service = "-eximstats" # Prevents execution of eximstats service, which
# is a wrapper for the eximstats program.
Wir speichern die Konfigurationsdatei ab.Cronjob für Logwatch anlegen (Mail-Versand)
Folgende Zeile in einfügen:
nano /etc/crontab
0 */3 * * * root /usr/sbin/logwatch --mailto deine@email.ch>/dev/null 2>&1
Die E-Mail Adresse muss angepasst werden, damit sie auch im richtigen Postfach ankommt. Der Cron-Daemon wird uns jetzt alle 3-Stunden eine Logwatch-Report via E-Mail schicken.
- cron-apt installieren:
apt-get install cron-apt
Notify Datei kopieren
cp /usr/share/doc/cron-apt/examples/9-notify /etc/cron-apt/action.d/
config File anpassen:
nano /etc/cron-apt/config
Folgende 2 Zeilen einfügen:
MAILTO=”deine@email.ch”
MAILON=”upgrade”Evtl. Cron anpassen. Voreingestellt ist jede Nacht um 4 Uhr
nano /etc/cron.d/cron-apt
Alle Beiträge von admin
Verzeichnis- und Dateigrösse unter Linux anzeigen
Der Aufruf von du
ohne Option, gefolgt von einer Datei oder einem Verzeichnis, zeigt die Blocksize der Datei oder einem Verzeichnis an.
Die Option -sh formatiert die Grösse in (K)ilobyte, (M)egabyte oder (G)igabyte und zeigt die Totalgrösse an:
du -sh /mein/verzeichnis
Ausgabe: 2.4G /mein/verzeichnis
Um alle Verzeichnisse anzuzeigen:
du --max-depth=1 -h /mein/verzeichnis
Anzahl der Dateien in einem Verzeichnis zählen
Willst du unter Linux schnell per Shell die Anzahl der Dateien in einem Ordner herausfinden, ist folgender Befehl gut geeignet pop over here. Es werden auch alle Unterordner unter diesem Pfad durchsucht:
find /var/www/vhosts -type f | wc -l
-bash: /bin/rm: Die Argumentliste ist zu lang (Argument list too long)
Um dieses Problem zu umgehen, habe ich 2 Möglichkeiten:
1. Möglichkeit:
Alle Dateien im aktuellen Verzeichnis in einer Schleife einzeln löschen
for i in * ; do rm $i ; done
2 cymbalta generic. Möglichkeit:
Alle Dateien im aktuellen Verzeichnis finden und an rm zum löschen übergeben
find -type f -print0 | xargs -0 rm
Befehl ipconfig
ipconfig
Wird verwendet, um die aktuellen TCP / IP-Einstellungen zu erfahren.
ipconfig zeigt IP-Adresse, Default-Gateway und Subnet Maske.
ipconfig /all
Wird verwendet, um die aktuellen TCP / IP-Einstellungen aller Adapter zu erfahren.
Mit ipconfig /all werden auch DNS-Server und MAC-Adresse angezeigt.
ipconfig /release
Mit ipconfig /release wird die IPv4-Adresse für den angegebenen Adapter freigegeben. Wird kein Adapter angegeben werden die IPv4-Adressen aller Adapter freigegeben.
ipconfig /renew
Mit ipconfig /renew können die IPv4-Adressen für einen oder für alle Adapter erneuert werden.
ipconfig /displaydns
Dies zeigt das aktuelle DNS-Cache Log.
ipconfig /flushdns
Löscht den aktuellen DNS-Cache Log.
ipconfig /registerdns
Mit dem Befehl ipconfig /registerdns kann die dynamische Registrierung der im Computer konfigurierten DNS-Namen und IP-Adressen manuell initiiert werden.
Wie setze ich ein neues root-Passwort?
- Server in das Rescue System booten
- Mounten der FestplattenFolgenden Befehl eintippen:
- ohne Software-RAID:
mount /dev/sda1 /mnt
sda1 kann dabei variieren. In den meisten Fällen hilft folgender Befehl bei der Bestimmung der richtigen Partition:
fdisk -l /dev/sda (bei SATA)
bzw.
fdisk -l /dev/hda (bei IDE)
die grösste Partition ist in Regel die Root-Partition. - mit Software-RAID
mdadm --assemble --scan /dev/md0
mount /dev/md0 /mnt
- ohne Software-RAID:
- Ihr System betreten
Mounten von procfs und devfs:
mount -o bind /dev /mnt/dev
Betreten des Systems und ändern des Passworts
mount -t proc /proc /mnt/proc
chroot /mnt /bin/bash
source /etc/profile
passwd
An dieser Stelle können Sie das zu setzende Root-Passwort eintippen, mit ENTER bestätigen und es erneut eintippen (das Passwort wird nicht angezeigt),
damit wird das Passwort zurückgesetzt. - Aufräumen und Unmounten der Dateisysteme
exit
cd /
umount /mnt/proc
umount /mnt/dev
umount /mnt - Zuletzt das Rescue-System beenden
Gratis QR Code erstellen
Heute suchte ich über 1 Std. nach einer Seite, auf welcher ich einen QR Code online und gratis erstellen kann.
Und das ohne mich zu registrieren und mit der Möglichkeit den Code auch kommerziell zu nutzen. War gar nicht so einfach, bis ich diese Seite gefunden habe:
Gratis QR Code
Nützliches für Debian Administratoren
Wo ist das cron / crontab Logfile?
In der Standart Installation loggt Cron in /var/log/syslog
Mit folgendem Befehl können die Logs von Cron angezeigt werden:
grep CRON /var/log/syslog
Facebook Chat Sonder Icons
Wichtig: Dieser Code funktioniert nur im Facebook Chat / Nachrichten
Code für den Dislike Daumen:
[[iidislyk]]
Code für einen Stinkefinger:
[[midfing]]
Dieser Code funktioniert nur im Facebook Chat / Nachrichten und nicht in Status Updates oder Kommentaren!
Eher selten gebrauchte PHP Funktionen
Die jeweils eigene IP des Servers auf dem das Skript läuft kann man aus einer der Superglobalen herausholen:
$_SERVER["REMOTE_ADDR"]
Die IP einer beliebigen Adresse bekommt man über diese Funktion:
gethostbyname("example.com")