Linux-Home-Server mit ubuntu

Dienste / Funktionen

  • Anrufbeantworter & Faxe senden/empfangen (Capisuite)
  • Webcam
  • mldonkey
  • Firewall (iptables)
  • freien Speicherplatz überprüfen, ggf. per Mail warnen
  • Router-Statistik der Fritzbox auslesen, per MRTG visualisieren
  • Konfigurationsdateien-Backup
  • FTP-Server backup (Spiegeln von FTP-Servern)
  • andere Rechner per Wake-On-Lan einschalten

Installation

Ich benutze die ubuntu Version 6.10 Edgy Eft in der Desktop-Variante. Das hat den Hintergrund, dass dort später auch noch mein Media-Center drauf kommt. Ansonsten sollte man vielleicht sinnigerweise die Server-Variante nehmen. Die Einrichtungsschritte sollten die selben sein.

Also von der CD booten.

Mit F2 die Sprache auf Deutsch ändern und das System starten.

Dann auf dem Desktop Install aufrufen und die Fragen beantworten (Deutsch, Zeitzone etc.). Bei mir ist die gesamte Platte für Linux, also übernehme ich die Voreinstellung und lasse ihn selbst meine gesamte Festplatte einteilen.

root-User einrichten

Mir persönlich ist dieser ganze sudo-Kram zu umständlich. Ich weiß (hoffentlich), was ich tue und will einen echten root-User. Also: Im Menü System → Administration → Benutzer und Gruppen gehen wir beim User root auf die Eigenschaften und geben ihm ein neues Passwort und auf der Registerkarte Benutzerrechte die passenden Rechte.

Vi-Editor installieren

Standardmäßig scheint unter ubuntu nur ein abgespeckter vi installiert zu sein. Daher installieren wir den vollwertigen, der z.B. auch Syntax-Highlighting usw. kann.

apt-get install vim

Nun schalten wir noch das Syntax-Highlighting an, was das lesen jeglicher Dateien ungemein erleichtert. Dies ist aber Geschmackssache. Dazu bearbeiten wir die Datei /etc/vim/vimrc und kommentieren diese Zeilen ein:

syntax on
set background=dark

Und dann setzen wir gleich noch vi als Editor (z.B. für die crontab) Dazu die Datei /etc/bash.bashrc bearbeiten und unten diese Zeile einfügen

export EDITOR=vi

ssh installieren

Damit wir nicht alles direkt am Rechner machen müssen, sondern uns auch per ssh einloggen können, installieren wir nun ssh. Dazu in der Konsole als root

apt-get install ssh

aufrufen. Danach können wir uns auch von einem anderen Rechner per ssh einloggen.

Um ssh noch etwas weiter abzusichern, werden wir dem Root-User den Login per ssh verbieten. Dazu bearbeiten wir die Datei /etc/ssh/sshd_config und ändern die PermitRootLogin Zeile und fügen die neue Zeile hinzu:

PermitRootLogin no
AllowUsers username

username ist dabei der persönliche Benutzername, dem der Zugang erlaubt ist. Wenn das vielleicht sogar ein Nickname oder ähnliches und nicht grad “Anna” oder so ist, ist es für die Hack-Bots umso schwieriger überhaupt einen erlaubten User zu finden und dann müssten Sie noch das passende Passwort finden.

Danach den sshd natürlich noch neu starten, damit die Änderung wirksam wird:

/etc/init.d/ssh restart

Ab dann kann man sich nur noch mit den erlaubten Usernamen anmelden und bekommt die Root-Rechte per

su -

Ich habe diese Änderung übrigens erst gemacht nachdem ich das meiste eingerichtet habe und bevor der Rechner ans öffentliche Netz geht. Vorher war mir das zu unbequem.

Bash anpassen

Da ich von SuSE-Linux einige bequeme “Befehle” gewöhnt bin, möchte ich diese auch in ubuntu wieder haben. Dazu bearbeiten wir die /etc/bash.bashrc Datei um es für alle User global einzustellen und hängen folgende Zeilen an:

# some aliases
alias ll='ls -l'
alias la='ls -la'
alias l='ls -alhF'
alias ls-l='ls -l'
alias o='less'
alias ..='cd ..'
alias ...='cd ../..'
alias rd=rmdir
alias md='mkdir -p'

Splash-Screen abschalten

Zum einen sieht so ein Splash-Screen nur halb so “professionell” und “servermäßig” aus, wie die echten Log-Ausgaben, zum anderen kann es durchaus sinnvoll sein, diese zu sehen. Daher schalten wir den Splash-Screen ab. Dazu bearbeiten wir die Datei /boot/grub/menu.lst und ändern die Zeile

kernel          /boot/vmlinuz-2.6.17-10-generic root=/dev/hda1 ro quiet splash locale=de_DE

in

kernel          /boot/vmlinuz-2.6.17-10-generic root=/dev/hda1 ro locale=de_DE

System entschlacken

Ich benutze nur cron. Daher kann atd und anacron deaktiviert werden:

update-rc.d -f anacron remove
update-rc.d -f atd remove

Ich will auch nicht drucken also auch die Unterstützung deaktivieren:

update-rc.d -f hplip remove
update-rc.d -f cupsys remove

Sprachsynthese brauche ich auch nicht

update-rc.d -f festival remove

Ein Notebook mit Hotkeys hab ich auch nicht

update-rc.d -f hotkey-setup remove

Auch rsync brauche ich nicht

update-rc.d -f rsync remove

Bluetooth hab ich auch nicht am Server

update-rc.d -f bluetooth remove

System updaten

Gleich mal von allem die neusten Versionen einspielen

apt-get update
apt-get upgrade

Mailserver Postfix installiere

Anrufbeantworter & Fax mit capisuite

FTP-Client installieren

Standardmäßig scheint unter Ubuntu ein recht magerer Konsolen-FTP-Client installiert zu sein. Er bietet z.B. nicht das Verzeichnis vervollständigen per Tab-Taste und bei Massenoperationen kein “a” wie “all”. Daher installieren wir lukemftp

apt-get install lukemftp

Danach ist dieser unter dem Konsolenbefehl ftp aufrufbar.

Webserver installieren

Wir installieren den apache2 mit PHP5.

apt-get install apache2 php5

Um das ungewünschte/unsichere Directory-Listing abzuschalten, editieren wir die Datei /etc/apache2/sites-enabled/000-default und ändern die Zeile

Options Indexes FollowSymLinks MultiViews

in

Options FollowSymLinks MultiViews

Danach starten wir den Apache mit

/etc/init.d/apache2 restart

neu. Fertig.

MySQL installieren

Dazu müssen wir als erstes neue Paketquellen freischalten. Dazu editieren wir die Datei /etc/apt/sources.list. Dort entfernen wir die # vor jeder Zeile, die auf universe endet. Danach müssen wir die Paketquellen aktualisieren:

apt-get update

Dann installieren MySQL und phpmyadmin für die bequeme Administration der Datenbank:

apt-get install mysql-server phpmyadmin

Danach können wir phpmyadmin im Browser aufrufen: http://server-ip/phpmyadmin

Folgender gestrichener Absatz ist mit der neuen phpmyadmin Version scheinbar nicht mehr notwendig. Wenn phpmyadmin per User root und ohne Passwort nicht an MySQL ran kommt, fragt es automatisch nach dem Benutzernamen. Nun müssen wir MySQL noch gegen unbefugten Zugriff schützen. Dazu gehen wir in phpmyadmin auf Rechte und fügen einen “Kontroll-Benutzer” ein. Dazu einen neuen Benutzer anlegen, ich nenne diesen ctlusr. Host: Lokal und ein beliebiges Kennwort (am besten eines generieren). Globale Rechte bekommt dieser User keine. Im nächsten Schritt bekommt er dann aber Tabellenspezifische Rechte für die Datenbank mysql. Dafür bei Datenbankspezifische Rechte die Datenbank mysql auswählen. Dann bei Tabellenspezifische Rechte die Tabelle db auswählen. Dann in der Liste unter SELECT alle Auswählen und ok. Das gleiche dann nochmal für die Tabelle user. Dann editieren wir die Datei /etc/phpmyadmin/config.inc.php Wir kommentieren und vervollständigen die folgenden Zeilen: $cfg[’Servers’][$i][’controluser’] = ‘ctlusr’; $cfg[’Servers’][$i][’controlpass’] = ‘obengewähltespassworthiereinsetzen’; $cfg[’Servers’][$i][’auth_type’] = ‘config’;

Dann legen wir uns einen neuen Benutzer an, der Root-Rechte bekommt. Viele Hack-Bots werden den Root-User mit diversen Passwörtern durchprobieren. Wenn es diesen User gar nicht gibt, um so besser (gleiches Prinzip wie bei ssh).

Dazu also einen neuen User anlegen (Name beliebig, vielleicht den selben wie bei der Installation) und Kennwort vergeben und Jeder Host. Rechte bekommt er Global ALLE.

Danach können wir die beiden root-User löschen. phpmyadmin sollte dann (oder ggf. auch vorher schon wieder nach einem Login fragen, also dem neuen User).

Fertig.

SVN-Server installieren

Subversion und seine Tools installieren:

apt-get install subversion subversion-tools libapache2-svn

Dabei wird nach der Mail-Konfiguration gefragt. Dort einfach das zutreffende auswählen.

Dann richten wir ein Verzeichnis für svn ein. Ich habe mir vorgenommen, alle “eigenen” Dateien unter /home zu speichern. Das ist möglicherweise nicht ganz Linux-konform, aber ich weiß wenigstens wo alles ist und was ich z.B. sichern muss o.ä.

Also erstelle ich das Verzeichnis /home/svn

Dort können wir dann gleich das erste Repository erzeugen:

svnadmin create /home/svn/repositoryname

Ich werde mir verschiedene Repositories anlegen, für Programmierung, Webseiten, Dokumente, Projekte etc.

Dann bearbeiten wir die Webserver-Config und fügen folgenden Abschnitt ganz unten ein (innerhalb des VirtualHost-Abschnitts):

<Location /svn>
    DAV svn
    SVNListParentPath on
    SVNParentPath /home/svn
    #
    AuthType Basic
    AuthName "Subversion repository"
    AuthUserFile /home/svn/.htsvnusers
    Require valid-user
</Location>

Und mit

htpasswd -c /home/svn/.htsvnusers svn

erzeugen wir eine Passwort-Datei und vergeben ein Passwort für den User svn.

Dann den Apache neu starten:

/etc/init.d/apache2 restart

Dann sollte unter
http://servername/svn
das Repository erreichbar sein.

Zeit-Server

Den Zeitabgleich mit Windows-Clients machen wir über Samba, der hat das integriert. Damit aber unser Server auch stets die korrekte Uhrzeit hat, werden wir ihn mit der Atomuhr in Braunschweig abgleichen.

Dazu legen wir einen neuen Cronjob an. Mit

crontab -e

bearbeiten wir die Cronjobs.

Damit man sich die Syntax merken kann, fügt man oben in die Datei einfach folgende Kommentare ein

# minute  hour  day   month  weekday  command
# 0-59    0-23  1-31  1-12   0-6 (0=Sun)

Dan fügen wir unseren Befehl zum Zeitabgleich ein:

# aktuelle Zeit aus Braunschweig holen
0 0,7,12,19 * * * /usr/sbin/ntpdate ptbtime1.ptb.de >/dev/null 2>&1

Nun wir vier mal am Tag die Uhrzeit mit Braunschweig abgeglichen.

FTP-Server installieren

Als erstes den Server installieren:

apt-get install vsftpd

Dann konfigurieren wir ihn, dazu bearbeiten wir die Datei /etc/vsftpd.conf Als erstes anonyme Benutzer ausschließen

anonymous_enable=NO

Dafür dürfen sich dann die lokalen Benutzer anmelden

local_enable=YES

Die erlaubten Benutzer dürfen auch schreiben

write_enable=YES

Untätige User nach 5 Minuten raus werfen

idle_session_timeout=300

Eine nette Willkommensnachricht hinterlegen

ftpd_banner=Hallo Welt!

Eingeloggte User dürfen sich nur in ihrem Home-Verzeichnis bewegen

chroot_local_user=YES

Dem einen oder anderen User wollen wir aber doch Vollzugriff gewähren

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.nochroot_list

(In dieser Datei müssen die Benutzernamen stehen, die NICHT in ihrem Home-Verzeichnis eingesperrt werden sollen) Außerdem wollen wir überhaupt nur bestimmte User für FTP zulassen. Dafür folgende weitere Zeilen einfügen

userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list

In diese Datei kommen dann alle Benutzer, die sich per FTP einloggen dürfen

Am Schluss den Server mit

/etc/init.d/vsftpd restart

neu starten, damit die Änderungen wirksam werden.

Teamspeak-Server installieren

Zuerst das Paket herunter laden:

cd /tmp
wget ftp://213.202.254.114/teamspeak/releases/ts2_server_rc2_20201.tar.bz2

Dann entpacken wir das Paket

tar -xvjf ts2_server_rc2_20201.tar.bz2

und verschieben es an seinen Zielort. Ich habe es unter /opt gelegt und wechseln in das Verzeichnis

mv tss2_rc2/ /opt/tss
cd /opt/tss

Die Entwickler von Teamspeak selbst empfehlen, den Server nicht als root-User laufen zu lassen. Dann wollen wir dies lieber auch nicht tun. Daher legen wir einen Benutzer tss an:

adduser --no-create-home --home /opt/tss --disabled-login tss

Dann müssen wir die Verzeichnisse auch dem User zuordnen

cd /opt
chown -R tss:tss tss

Nun können wir den Server zum ersten mal starten. Da wir dies ja aber nicht als User root tun wollen, machen wir ein

su - tss

und starten dann den Server, damit er die Konfigurationsdatei anlegt

cd /opt/tss/
./teamspeak2-server_startscript start

und stoppen ihn wieder

./teamspeak2-server_startscript stop

Danach stehen in der Datei server.log die vom Server vergebenen Passwörter für den Admin und den Superadmin. Unter http://servername:14534 findet man dann eine Konfigurationsoberfläche. Diese sollte man nach gebrauch (neue User kann man als ServerAdmin dann auch über den Client anlegen) in der server.ini wieder deaktivieren um unnötige Dienste abzuschalten.

Datei-Server installieren

Samba installieren und auch das smbfs Dateisystem, damit wir freigaben von anderen Rechnern mounten können

apt-get install samba smbfs

Dann den Samba konfigurieren

Den Arbeitsgruppennamen vergeben

workgroup = Arbeitsgruppenname

Wins brauchen wir nicht

wins support = no

Der Samba soll nur intern lauschen

interfaces = lokale-ip/255.255.255.0 #(bsp. 192.168.1.1/255.255.255.0)
bind interfaces only = true

TODO ggf. noch mehr Optionen setzen und Shares beschreiben

Zum Schluss müssen wir für die erlaubten User noch ein Passwort einrichten. Dazu

smbpasswd -a username

Proxy-Server installieren

Wir wollen den Squid installieren

apt-get install squid

Nach der Installation bekommt man gleich ein paar Fehlermeldungen und das Starten schlägt fehl. Das ist normal und liegt daran, dass der Squid erst konfiguriert werden muss.

... TODO

Links

 
public/linux-home-server_mit_ubuntu.txt · Zuletzt geändert: 27.02.2007 22:51 von maniac
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki