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.
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.
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
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.
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'
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
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
Gleich mal von allem die neusten Versionen einspielen
apt-get update apt-get upgrade
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.
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.
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.
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.
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.
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.
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.
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
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