Einige Dienste installiert - Schritt für Schritt

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
static
Posts: 437
Joined: 2002-10-27 19:56
Location: Schweiz

Einige Dienste installiert - Schritt für Schritt

Post by static » 2003-06-11 20:03

Hi,
ich habe mir heute einen Tag lang Zeit genommen, um meinen 1&1 Rootserver neu zu installieren - da habe ich mir gedacht, bei der Gelegenheit kann ich auch gleich alles dokumentieren... Das ganze soll eigentlich kein HowTo sein, ich beschreibe nicht den Zweck jeder Einstellung, die ich vorgenommen habe, es ist vielmehr wirklich eine Dokumentation - vielleicht hilft es dem einen oder anderen. Wichtig ist noch, dass alles in Hinblick auf Benutzung mit Confixx gemacht wurde, wer das nicht verwenden will, muss einige Ã?nderungen vornehmen. Die Links, die erwähnt werden, befinden sich ganz unten. Dass ich keine Haftung übernehme wenn ihr euch dabei etwas zerschiesst, sollte klar sein - bei den einzelnen Schritten bitte auch selbst etwas mitdenken ;-)
Da ich selbst noch mehr oder weniger in der Lernphase stecke, wird nicht alles 100%ig stimmen und schon gar nicht perfekt sein - hier bitte ich dann die Pro's um nützliche Tipps :wink: Vor allem beim Mailserver weiss ich nicht inwiefern dieser nun sicher ist - den Teil also bitte mit Vorsicht geniessen!

Inhalt:

1. Allgemeines
2. OS: Debian
3. Remote-Zugang: SSH2 über PubKey-Auth
4. Webserver: Apache 1.3 mit PHP4
5. Webserver-SSL: Apache-SSL
6. Datenbank: MySQL
7. Datenbankverwaltung: PhpMyAdmin
8. FTP-Server: ProFTPd
9. Mailserver: Postfix über SMTP-Auth
... eventuell irgendwann mehr

1. Allgemeines

Ich habe mich dafür entschieden meinen Server mit Debian 3.0 Woody (=stable) laufen zu lassen und, wo möglich, keine selbstkompilierten Pakete einzusetzen. Du musst für dich selbst entscheiden ob du das auch willst, da es einige Nachteile (bspw. AWstats nicht die neueste Version) bringt - dafür gibt's keine Probleme bei Updates.
Ich gehe davon aus, dass du die Grundlegenden Kommandos unter Unix verstehst und dich mit VIM auskennst, das ist der Standardeditor bei Linux. Wenn nicht, findest du bei Link (1) eine gute Anleitung dazu. Es ist von Vorteil VIM anstatt VI zu nutzen, da dort die Zeilennummer immer angegeben wird (k.a. ob vi das auch kann...).
Ã?nderungen an Dateien gebe ich der Grösse und Einfachheit wegen über das Kommando diff an. Ich geb zu, die Ausgabe ist erstmal ziemlich verwirrend, aber wenn du das System verstanden hast, ist's ziemlich einfach.

Beispiel:

Code: Select all

meriadoc:/etc/apache# diff httpd.conf.old httpd.conf  
52c52  
< ServerType standalone  
---  
> ServerType inetd  
295a296  
> ServerAdmin postmaster@yourdomain.de  
995d995  
< #NameVirtualHost 12.34.56.78


Dass heisst nun folgendes:
in Zeile 52 (c für change) wurde "standalone" in "inetd" geändert
in Zeile 295 (a für add) wurde "ServerAdmin postmaster@yourdomain.de" hinzugefügt
in Zeile 995 (d für delete) wurde "#NameVirtualHost 12.34.56.78" gelöscht

Ich nutze folgende "Platzhalter", die durch deine Daten ersetzt werden müssen:
IP-Adresse: 217.160.123.123
Domain: yourdomain.de
Standarduser: foobar
Homeverzeichnis: /home/foobar/
Host: p11111111

Noch etwas zu den Nameservern, ich lasse keinen DNS bei mir laufen, ich gehe davon aus, dass die Einträge für "yourdomain.de" "www.yourdomain.de" "mail.yourdomain.de" und ein MX auf "mail.yourdomain.de" stehen.
Informationen wie du einen NS installierst findest du bei Link (2) und hier in der FAQ.


2. OS: Debian

Um nicht das Rad neu zu erfinden, empfehle ich dir das geniale Debian-Install-Script vom Debianserverhowto, du findest die Anleitung bei Link (3).

Partitioniert habe ich wie folgt:

Code: Select all

/ ( 400 MB)  
swap ( 256 MB)  
/boot ( 20 MB)  
/usr ( 2000 MB)  
/home ( 15000 MB)  
/tmp ( 500 MB)  
/var ( -> rest)  


Die Antworten zu den Fragen des Scripts stehen ebenfalls in der Anleitung.
Nachdem die Installation durchgelaufen ist, stellen wir im Configmenu von Puretec den Boot-Modus wieder auf "Normales System" und starten den Server neu:

Code: Select all

shutdown -r now


Nach 1-2 Minuten sollte der Server wieder per SSH erreichbar sein. Wir loggen uns also mit dem User, den wir bei der Installation erstellt haben ein und werden hoffentlich mit

Code: Select all

 Linux p11111111.pureserver.info 2.4.18-bf2.4 #1 Sun Jun 8 23:58:27 UTC 2003 i686 unknown  
  
Most of the programs included with the Debian GNU/Linux system are  
freely redistributable; the exact distribution terms for each program  
are described in the individual files in /usr/share/doc/*/copyright  
  
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent  
permitted by applicable law.  
foobar@p11111111:~$ 


auf unserem Debianserver begrüsst ;)

Als erstes sollten wir nun einige Dienste, die auf dem Server nichts zu suchen haben deinstallieren und einige deaktivieren. Dazu wechseln wir erst noch zu root:

Code: Select all

foobar@p11111111:/$ su  
p11111111:/# apt-get --purge remove analog at bind9-host fdutils lpr nfs-common pcmcia-cs pidentd portmap ppp  


Auf die Frage "Do you want to remove /var/spool/lpd?" antworten wir mit y.

Nun brauchen wir aber noch einen zusätzlichen Dienst und einige Tools, die wir nun installieren:

Code: Select all

p11111111:/# apt-get install bzip2 nmap xinetd


"Do you want to convert /etc/inetd.conf file to /etc/xinetd.conf ?" No

Die Inetd.conf brauchen wir nicht mehr, da wir xinetd einsetzen.

Code: Select all

p11111111:/# rm /etc/inetd.conf


Mit Nmap checken wir nun die offenen ports ab:

Code: Select all

p11111111:/# nmap 217.160.123.123


Hier sollte nun folgendes erscheinen:

Code: Select all

p11111111:/# nmap 217.160.123.123  
  
Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ )  
Interesting ports on p11111111.pureserver.info.pureserver.info (217.160.123.123):  
(The 1552 ports scanned but not shown below are in state: closed)  
Port       State       Service  
22/tcp     open        ssh                       
80/tcp     open        http                      
  
  
Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds  


Wenn gewünscht können wir nun noch unseren Hostnamen ändern:

Code: Select all

p11111111:/# hostname yourdomain.de


Somit wäre die Basisinstallation geschafft, beginnen wir mit der Konfiguration...

3. Remote-Zugang: SSH2 über PubKey-Auth

Als erstes sichern wir den Remote-Zugang ab. Du solltest dich nie direkt als Root einloggen, sondern zuerst als Standarduser "foobar" und dann, wenn wirklich nötig, per "su" zu Root wechseln. Momentan wird das Passwort für den Zugang per SSH zwar schon verschlüsselt, eine grössere Sicherheit bietet aber die Authentifizierung über Public Keys. Dabei werden zwei Schlüssel generiert, einen Private und einen Public. Letzteren kopiert man dann auf den Server und der Zugang ist nur noch für den Besitzer des Private-Keys möglich.
Der Private-Key sollte nie über eine ungesicherte Leitung geschickt werden, am besten gar nicht, darum erstellen wir ihn lokal und übertragen nur den Public-Key.

Unter Windows:
1. PuttyGen starten (herunterladen von Link (4))
2. "SSH2 RSA" auswählen
3. "Generate"
4. Wild mit der Maus herumfahren ;)
5. Wenn du jedesmal beim Verbinden zum Server nach einer Passphrase gefragt werden willst, kannst du diese unter "Key passphrase:" und "Confirm passphrase:" eintragen.

Es ist sehr zu empfehlen, eine gute Passphrase zu wählen, sollte jemand den Key bekommen hat er ansonsten ohne weiteres Zugang zum System

6. "Save private key" -> bspw. "id_rsa.PPK"
7. Wähle die komplette Zeichenfolge im Feld "Public Key for pasting into OpenSSH authorized_keys2 file" aus und kopiere sie (CTRL-C)
8. Weiter zu -> "Auf dem Rootserver"

Unter Linux:
1. Konsole öffnen
2. Key erzeugen:

Code: Select all

ssh-keygen -t rsa

3. Pfad zum Speicherort angeben (bspw. /home/foobar/.ssh/id_rsa)
4. Passphrase (wenn gewünscht)
5. Passphrase wiederholen

Es ist sehr zu empfehlen, eine gute Passphrase zu wählen, sollte jemand den Key bekommen hat er ansonsten ohne weiteres Zugang zum System

6. Es sind nun 2 Dateien erstellt worden, eine mit der Endung .pub, diese zeigen wir jetzt an:

Code: Select all

cat /home/foobar/.ssh/id_rsa.pub

8. Wähle die Zeichenfolge aus, damit ist sie in der Zwischenablage
9. Weiter zu -> "Auf dem Rootserver"

Auf dem Rootserver:
1. Wenn wir noch als Root eingeloggt sind, wechseln wir wieder zu dem normalen user:

Code: Select all

p11111111:/# exit

1. Nun erstellen wir in das Verzeichnis ".ssh" und legen darin eine Datei an, in die der Public-Key eingetragen wird:

Code: Select all

foobar@p11111111:/$ mkdir ~/.ssh  
foobar@p11111111:/$ cd ~/.ssh  
foobar@p11111111:/$ touch authorized_keys  
foobar@p11111111:/$ chmod 600 authorized_keys  
foobar@p11111111:/$ vi authorized_keys  


Nun wechseln wir in den InsertModus ( :i ) und fügen den Public-Key ein, normalerweise geht das mit der Rechten Maustaste. Wenn man den Key mit Hilfe von PuttyGen erstellt hat, hat man eventuell Zeilenumbrüche in der Zeichenkette, diese muss man entfernen ( J ). Nochmal kontrollieren ob der Key richtig übernommen wurde und danach das File abspeichern ( :wq )

Als Root ändern wir die Datei /etc/ssh/sshd_config wie folgt ab:

Code: Select all

30c30  
< PermitRootLogin yes  
---  
> PermitRootLogin no  
35c35  
< #AuthorizedKeysFile   %h/.ssh/authorized_keys  
---  
> AuthorizedKeysFile    %h/.ssh/authorized_keys  


SSH-Config neu laden:

Code: Select all

/etc/init.d/ssh reload


bevor wir nun komplett die Passwort-Authentifizierung abschalten, testen wir unseren Key, starten also eine zweite Session mit dem Server:

Unter Windows:
1. Putty starten
2. IP des Servers eintragen, Port 22, SSH auswählen
3. Unter Menupunkt "Connection" -> "Auto-login username" deinen am Anfang erstellten User eintragen bspw. "foobar"
4. Unter Menupunkt "SSH" -> "2 only" auswählen
5. Unter Menupunkt "Auth" -> "Private key file for authentication:" Den Private Key, den wir vorher erstellt haben auswählen (bspw. "C:id_rsa.PPK")
6. "Open" anklicken

Unter Linux:
1. Konsole öffnen

Code: Select all

ssh -i /home/foobar/.ssh/id_rsa foobar@217.160.123.123

User, Homeverzeichnis und IP natürlich anpassen ;)

Windows & Linux:
Wenn du eine Passphrase angegeben hast, solltest du nun danach gefragt werden, ansonsten sollte direkt der Prompt des Rootservers erscheinen. Wenn das nicht der Fall sein sollte, bitte nochmals alle Schritte durchgehen, denn wenn du nun weitermachst, sperrst du dich ohne funktionierenden Key selbst aus dem Server aus!

Wenn alles funktioniert hat, folgende Ã?nderung in /etc/ssh/sshd_config vornehmen:

Code: Select all

55c55  
< PasswordAuthentication yes  
---  
> PasswordAuthentication no


SSH-Config neu laden:

Code: Select all

/etc/init.d/ssh reload


Einloggen über Passwort ist nun nicht mehr möglich. Nun können wir mit der Konfiguration des Webservers beginnen.


4. Webserver: Apache 1.3 mit PHP4

Code: Select all

p11111111:/# apt-get install php4 


Do you want me to run the apacheconfig script now [y/N] ? y
Save these changes to the configuration files? [Y/n] y
Restart Apache now? [Y/n] Y

Folgende Einstellungen in der /etc/apache/httpd.conf vornehmen:

Code: Select all

< # LoadModule php4_module /usr/lib/apache/1.3/libphp4.so  
---  
> LoadModule php4_module /usr/lib/apache/1.3/libphp4.so  
296c296  
< ServerAdmin webmaster@yourdomain.de  
---  
> ServerAdmin you@yourdomain.de  
310c310  
< #ServerName new.host.name  
---  
> ServerName www.yourdomain.de  
397c397  
<     DirectoryIndex index.html index.htm index.shtml index.cgi  
---  
>     DirectoryIndex index.html index.php index.htm index.shtml index.shtm index.cgi index.phtml index.phtm index.pl index.php4
543c543  
< ServerSignature On  
---  
> ServerSignature Off  
757,758c757,758  
<     #AddType application/x-httpd-php .php  
<     #AddType application/x-httpd-php-source .phps  
---  
>     AddType application/x-httpd-php .php .php4  
>     AddType application/x-httpd-php-source .phps  


und Apache neu starten:

Code: Select all

p11111111:/# /etc/init.d/apache stop  
p11111111:/# /etc/init.d/apache start


Wenn gewünscht, Testfile in /var/www/testfile.php erstellen mit folgendem Inhalt:

Code: Select all

<?php echo phpinfo(); ?>


und über http://www.yourdomain.de/testfile.php aufrufen. Nun sollte eine Informationsseite über PHP erscheinen.


5. Webserver-SSL: Apache-SSL

Für einen sicheren Webzugang installieren wir, Apache-SSL, wenn du lieber nur einen Apachen laufen lassen willst, kannst du bei Link (5) nachsehen wie man das macht ;)

Code: Select all

p11111111:/# apt-get install apache-ssl


Nachdem wir die Daten für den Key angegeben haben ändern wir folgendes in der /etc/apache-ssl/httpd.conf:

Code: Select all

243c243  
< # LoadModule php4_module /usr/lib/apache/1.3/libphp4.so  
---  
>  LoadModule php4_module /usr/lib/apache/1.3/libphp4.so  
300c300  
< ServerAdmin webmaster@yourdomain.de  
---  
> ServerAdmin you@yourdomain.de  
314c314  
< #ServerName new.host.name  
---  
> ServerName yourdomain.de  
401c401
< DirectoryIndex index.html index.htm index.shtml index.cgi
---
> DirectoryIndex index.html index.php index.htm index.shtml index.shtm index.cgi index.phtml index.phtm index.pl index.php4
547c547  
< ServerSignature On  
---  
> ServerSignature Off  
761,762c761,762  
<     #AddType application/x-httpd-php .php  
<     #AddType application/x-httpd-php-source .phps  
---  
>     AddType application/x-httpd-php .php .php4  
>     AddType application/x-httpd-php-source .phps  


und Apache-SSL neu starten:

Code: Select all

p11111111:/# /etc/init.d/apache-ssl stop  
p11111111:/# /etc/init.d/apache-ssl start


Nun sollte euer Host unter https://www.yourdomain.de erreichbar sein.

6. Datenbank: MySQL

Nun geht's weiter mit der MySQL-DB.

Code: Select all

p11111111:/#  apt-get install mysql-server


Wenn ihr wollt, das alle Datenbanken mitgelöscht werden, wenn ihr den MySQL-Server deinstalliert müsst ihr hier mit "Yes" antworten... Ich empfehle "No".

Remove all databases after "purging" the mysql-server package? No
Should MySQL start on boot? Yes

Nun setzen wir ein Passwort für den MySQL-Root User:

Code: Select all

p11111111:/# mysqladmin -u root password neuespasswort



7. Datenbankverwaltung: PhpMyAdmin

Um die Datenbanken zu verwalten und auch anderen Usern zugänglich zu machen installieren wir PhpMyAdmin:

Code: Select all

p11111111:/# apt-get install phpmyadmin


Bei der Auswahl des Servers empfehle ich Apache-SSL.

Folgende Ã?nderung in der /etc/phpmyadmin/config.inc.php vornehmen:

Code: Select all

47c47  
< $cfgServers[1]['auth_type']     = 'http';    // Authentication method (config, http or cookie based)?  
---  
> $cfgServers[1]['auth_type']     = 'cookie';    // Authentication method (config, http or cookie based)? 


Unter https://www.yourdomain.de/phpmyadmin sollte man nun bereits zu einer Authentifizierung für PhpMyAdmin aufgefordert werden.


8. FTP-Server: ProFTPd

Für den normalen Filetransfer verwenden wir den FTP-Server ProFTPd:

Code: Select all

p11111111:/# apt-get install proftpd


Edit configuration file ? Yes
Run proftpd from inetd or standalone? Inetd
Enable anonymous access? No
Do you want /etc/proftpd.conf to be updated? Yes

Ã?nderungen in der /etc/proftpd.conf

Code: Select all

6c6,7  
< ServerName                    "Debian"  
---  
> ServerName                    "yourdomain.de FTP-Server"  
> ServerAdmin                   you@yourdomain.de  
42a44,53  
>   
> DefaultRoot                   ~/html ftponly  
> RootLogin                     off  
> RequireValidShell             off  
> UseReverseDNS                 off  
> IdentLookups                  off  
>   
> <Limit LOGIN>  
> DenyGroup !ftponly  
> </Limit>


Wir haben hier allen Usern, die nicht in der Gruppe "ftponly" sind den Zugang verwehrt - Confixx legt später die Benutzer selbst in dieser Gruppe an. Wer kein Confixx nutzen will, sollte unter "DefaultRoot" nur "~ ftponly" einsetzen, da das entsprechende Verzeichnis sonst nicht existiert.

Da wir den FTP-Server über Inetd starten, müssen wir nun noch den Xinetd konfigurieren.

Code: Select all

p11111111:/# vi /etc/xinetd.conf


Ã?nderungen:

Code: Select all

0a1,9  
> service ftp  
> {  
>         socket_type     = stream  
>         protocol        = tcp  
>         wait            = no  
>         user            = root  
>         instances       = 30  
>         server          = /usr/sbin/proftpd  
> } 


Nun starten wir den xinetd neu:

Code: Select all

p11111111:/# /etc/init.d/xinetd restart


Mittels nmap sehen wir nach ob es funktioniert hat:

Code: Select all

p11111111:/# /etc# nmap 217.160.123.123  
  
Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ )  
Interesting ports on p11111111.pureserver.info.pureserver.info (217.160.123.123):  
(The 1550 ports scanned but not shown below are in state: closed)  
Port       State       Service  
21/tcp     open        ftp                       
22/tcp     open        ssh                       
80/tcp     open        http                      
443/tcp    open        https                     
  
  
Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds



9. Mailserver: Postfix über SMTP-Auth

Bitte diesen Teil mit Vorsicht geniessen - ich weiss nicht, inwiefern dieses System sicher ist - Würde mich über ein paar Infos dazu freuen

Als erstes installieren wir die benötigten Programme

Code: Select all

p11111111:/# apt-get install postfix postfix-tls sasl-bin libsasl-modules-plain libsasl2 libsasl-gssapi-mit libsasl-digestmd5-des  


folgende Ã?nderungen in der /etc/postfix/main.cf vornehmen:

Code: Select all

25a26,32  
>   
> mydomain = yourdomain.de  
> smtpd_sasl_local_domain =  
> smtpd_sasl_auth_enable = yes  
> smtpd_sasl_security_options = noanonymous  
> broken_sasl_auth_clients = yes  
> smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, check_relay_domains  


und in der /etc/postfix/master.cf

Code: Select all

71c71  
< smtp    inet  n       -       -       -       -       smtpd  
---  
> smtp    inet  n       -       n       -       -       smtpd  


authentifiziert wird über pwcheck, also:

Code: Select all

p11111111:/# mkdir /etc/postfix/sasl  
p11111111:/# cd /etc/postfix/sasl  
p11111111:/# vi smtpd.conf


Hier tragen wir folgendes ein:

Code: Select all

pwcheck_method: pwcheck


Nun müssen wir noch eine Umgebung für pwcheck schaffen:

Code: Select all

p11111111:/# mkdir /var/run/pwcheck  
p11111111:/# chown postfix.root /var/run/pwcheck  
p11111111:/# chmod 700 /var/run/pwcheck  
p11111111:/# /usr/sbin/pwcheck 


Nun sollte pwcheck noch bei jedem Booten gestartet, dazu ein kleines Script, welches unter /etc/init.d/pwcheck gespeichert wird:

Code: Select all

#! /bin/sh  
  
DAEMON=/usr/sbin/pwcheck  
NAME=pwcheck  
DESC="pwcheck for postfix"  
  
test -x $DAEMON || exit 0  
  
set -e  
  
case "$1" in  
  start)  
        echo -n "Starting $DESC: $NAME"  
        start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid   
                --exec $DAEMON  
        echo "."  
        ;;  
  stop)  
        echo -n "Stopping $DESC: $NAME "  
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid   
                --exec $DAEMON  
        echo "."  
        ;;  
  *)  
        N=/etc/init.d/$NAME  
        echo "Usage: $N {start|stop}" >&2  
        exit 1  
        ;;  
esac  
  
exit 0  


Startscript aktivieren und Postfix neustarten, SMTP sollte nun funktionieren ;)

Code: Select all

p11111111:/# update-rc.d pwcheck defaults  
p11111111:/# /etc/init.d/postfix restart


Als POP3-Daemon hab ich mich für qpopper entschieden:

Code: Select all

p11111111:/# apt-get install qpopper


und folgendes an /etc/xinetd.conf anfügen:

Code: Select all

service pop-3  
{  
        socket_type     = stream  
        protocol        = tcp  
        wait            = no  
        user            = root  
        instances       = 30  
        server          = /usr/sbin/in.qpopper  
        server_args     = -f /etc/qpopper.conf  
}  


und neu starten

Code: Select all

p11111111:/# /etc/init.d/xinetd restart


und POP3 sollte laufen.

Natürlich ist der Server noch lange nicht fertig installiert - für mehr Dokumentationen habe ich momentan leider keine Zeit... Je nach dem ob ihr hiermit etwas anfangen könnt, gibt's irgendwann mehr.

so long
static

Links:
(1) http://www.linuxfibel.de/vi.htm
(2) http://www.debianhowto.de/de/bind/c_bind.html
(3) http://www.debianhowto.de/de/ausgangssy ... ormal.html
(4) http://www.chiark.greenend.org.uk/~sgta ... nload.html
(5) http://www.debianhowto.de/de/mod_ssl/c_mod_ssl.html
Last edited by static on 2003-06-11 22:08, edited 2 times in total.

kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: Einige Dienste installiert - Schritt für Schritt

Post by kahler » 2003-06-11 21:19

static wrote:

Code: Select all

< ServerType standalone  
---  
> ServerType inetd
Ich hoffe nicht, du lässt deinen Webserver über inetd starten.
static wrote:Nun brauchen wir aber noch einige zusätzliche Dienste, die wir nun installieren:

Code: Select all

p11111111:/# apt-get install bzip2 nmap xinetd
Eigentlich ist es nur ein Dienst (xinetd) und das andere sind Tools, aber ok.
static wrote:"Do you want to convert /etc/inetd.conf file to /etc/xinetd.conf ?" No
Wieso denn nicht?? Was man nicht braucht kann man dann imemrnoch rausschmeißen. Ich würde die Datei konvertieren, da dort schon Beispiele für FTP etc. drin sind, man also nicht nochma die ganze Arbeit von vorne machen muss (Kommentare entfernen und fast fertig)
static wrote:

Code: Select all

p11111111:/# rm /etc/init.conf
Das sollte sicherlich rm /etc/inetd.conf heißen :wink:

rm /etc/init.confMit Nmap checken wir nun die offenen ports ab:[/quote]
Wieso sollte ich das machen. Ich weiß doch, welche Dienste auf dem Server laufen bzw. welche ich installiert habe.
static wrote:Der Private-Key sollte nie über eine ungesicherte Leitung geschickt werden,...
Das ist wohl richtig, aber die SSH Session ist ja verschlüsselt, also sollte es nicht unbedingt so das Problem darstellen
static wrote:...du jedesmal beim Verbinden zum Server nach einer Passphrase gefragt werden willst...
Was zu empfehlen ist, denn wenn der Schlüssel mal in falsche Hände gerät, dann ists zu spät
static wrote:...normalerweise geht das mit der Rechten Maustaste
sofern man Putty benutzt
static wrote:bevor wir nun komplett die Passwort-Authentifizierung abschalten, testen wir unseren Key, starten also eine zweite Session mit dem Server
Sollte man auf jeden Fall tun, sonst steht man am Ende dumm da :wink:
static wrote:

Code: Select all

DirectoryIndex index.html index.php index.htm
Wieso sollte ich denn den DirektoryIndex beschneiden? Vielleicht habe ich ja user, die SSI verwenden, oder es gibt User mit einem Perl/CGI Script als Index. Besser gleich noch index.shtm, index.phtml, index.phtm, index.pl, index.php4 hinzufügen, statt was zu entfernen. Dann ist man auf der sicheren Seite.
static wrote:

Code: Select all

<html>  
<head>  
	<title>phpinfo</title>  
</head>  
  
<body>  
	<?php echo phpinfo(); ?>  
</body>  
</html>

Den HTML Code drumherum kannst du dir eigentlich sparen oder besser, er ist falsch. phpinfo() gibt den HTML Header und Footer selbst aus und durch deinen Code entsteht ungültiges HTML.
static wrote:...ändern wir folgendes in der /etc/apache-ssl/httpd.conf:
hier am besten gleich auch noch die Directory Indexe von oben hinzufügen
static wrote:

Code: Select all

p11111111:/# mysqladmin -u root password neuespasswort
Außerdem sollte man den SQL Server an localhost binden und auch nur den Login von diesem Server aus erlauben. Geht wohl am einfachsten in PHPmyAdmin in der Benutzerverwaltung.
static wrote:Für den normalen Filetransfer verwenden wir den FTP-Server ProFTPd
Gibt es auch abnormalen Filetransfer :wink:
static wrote:

Code: Select all

smtpd_sasl_local_domain = $myhostname
Ich weiß nicht, wie Confixx das genau macht, aber ich würde empfehlen folgendes zu setzen:

Code: Select all

smtpd_sasl_local_domain =
da Postfix sonst hiner den Username noch ein @domain hängt (ein häufiger Fehler bei der Postfix Konfiguration).

Alles in allem eine sehr gelungene Anleitung, die man vielleicht auch in die FAQ/HowTo Sektion übernehmen könnte. Du hast dir richtig mühe gegeben um das alles verständlich aufzuführen.
Ich kann auch so auf den ersten Blick keine Sicherheitsrisiken oder -löcher in deiner Postfix Konfiguration erkennen (mit qpopper kenne ich mich nicht aus, daher kann ich dazu nichts sagen).
Zum Mailserver Test kann man noch folgende Seite verwenden: http://www.ordb.org/
Aber Vorsicht: Wenn dein Server den Test nicht besteht wird er in die Datenbank aufgenommen, die von vielen Hostern abgefragt wird und kann nur durch erneutes prüfen (diesmal natürlich als Closed Relay) wieder entfernt werden.

static
Posts: 437
Joined: 2002-10-27 19:56
Location: Schweiz

Re: Einige Dienste installiert - Schritt für Schritt

Post by static » 2003-06-11 21:58

Hi,
kahler wrote:
static wrote:

Code: Select all

< ServerType standalone  
---  
> ServerType inetd
Ich hoffe nicht, du lässt deinen Webserver über inetd starten.
natürlich nicht 8) war ja auch nur ein Beispiel, wie man die Ausgabe von diff interpretiert...
kahler wrote:
static wrote:Nun brauchen wir aber noch einige zusätzliche Dienste, die wir nun installieren:

Code: Select all

p11111111:/# apt-get install bzip2 nmap xinetd
Eigentlich ist es nur ein Dienst (xinetd) und das andere sind Tools, aber ok.
:roll: hab ich für dich geändert :lol:
kahler wrote:
static wrote:"Do you want to convert /etc/inetd.conf file to /etc/xinetd.conf ?" No
Wieso denn nicht?? Was man nicht braucht kann man dann imemrnoch rausschmeißen. Ich würde die Datei konvertieren, da dort schon Beispiele für FTP etc. drin sind, man also nicht nochma die ganze Arbeit von vorne machen muss (Kommentare entfernen und fast fertig)
Naja, am Anfang sind in der inetd.conf ja noch einige Dienste die wir nicht benötigen (discard, time usw.) Damit ich die nicht gleich wieder entfernen muss, habe ich sie erst gar nicht portiert...
kahler wrote:
static wrote:

Code: Select all

p11111111:/# rm /etc/init.conf
Das sollte sicherlich rm /etc/inetd.conf heißen :wink:
Jop, klar :) -> geändert
kahler wrote:
static wrote: Mit Nmap checken wir nun die offenen ports ab:
Wieso sollte ich das machen. Ich weiß doch, welche Dienste auf dem Server laufen bzw. welche ich installiert habe.
Ich hab immer gerne eine Bestätigung, dass das was ich gemacht habe eine Wirkung zeigt - jedem selbst überlassen ob er's überprüfen will.
kahler wrote:
static wrote:Der Private-Key sollte nie über eine ungesicherte Leitung geschickt werden,...
Das ist wohl richtig, aber die SSH Session ist ja verschlüsselt, also sollte es nicht unbedingt so das Problem darstellen
Stimmt, man könnte den Key auch auf dem Server erstellen, wenn ich aber davon ausgehe, dass der Key mit Putty verwendet werden soll, erstelle ich ihn direkt in Windows, damit ich den Key nicht portieren muss...
kahler wrote:
static wrote:...du jedesmal beim Verbinden zum Server nach einer Passphrase gefragt werden willst...
Was zu empfehlen ist, denn wenn der Schlüssel mal in falsche Hände gerät, dann ists zu spät
Danke, habe einen Hinweis angebracht...
kahler wrote:
static wrote:...normalerweise geht das mit der Rechten Maustaste
sofern man Putty benutzt
Wie ist das bei anderen Programmen?
kahler wrote:
static wrote:bevor wir nun komplett die Passwort-Authentifizierung abschalten, testen wir unseren Key, starten also eine zweite Session mit dem Server
Sollte man auf jeden Fall tun, sonst steht man am Ende dumm da :wink:
:twisted:
kahler wrote:
static wrote:

Code: Select all

DirectoryIndex index.html index.php index.htm
Wieso sollte ich denn den DirektoryIndex beschneiden? Vielleicht habe ich ja user, die SSI verwenden, oder es gibt User mit einem Perl/CGI Script als Index. Besser gleich noch index.shtm, index.phtml, index.phtm, index.pl, index.php4 hinzufügen, statt was zu entfernen. Dann ist man auf der sicheren Seite.
Thx für den Hinweis - habe ich geändert.
kahler wrote:
static wrote:

Code: Select all

<html>  
<head>  
	<title>phpinfo</title>  
</head>  
  
<body>  
	<?php echo phpinfo(); ?>  
</body>  
</html>

Den HTML Code drumherum kannst du dir eigentlich sparen oder besser, er ist falsch. phpinfo() gibt den HTML Header und Footer selbst aus und durch deinen Code entsteht ungültiges HTML.
static wrote:...ändern wir folgendes in der /etc/apache-ssl/httpd.conf:
hier am besten gleich auch noch die Directory Indexe von oben hinzufügen
Auch das wurde verbessert :D
kahler wrote:
static wrote:

Code: Select all

p11111111:/# mysqladmin -u root password neuespasswort
Außerdem sollte man den SQL Server an localhost binden und auch nur den Login von diesem Server aus erlauben. Geht wohl am einfachsten in PHPmyAdmin in der Benutzerverwaltung.
Werd ich noch nachführen...
kahler wrote:
static wrote:Für den normalen Filetransfer verwenden wir den FTP-Server ProFTPd
Gibt es auch abnormalen Filetransfer :wink:
Yep :lol: SCP ist für mich abnormaler Filetransfer :twisted:
kahler wrote:
static wrote:

Code: Select all

smtpd_sasl_local_domain = $myhostname
Ich weiß nicht, wie Confixx das genau macht, aber ich würde empfehlen folgendes zu setzen:

Code: Select all

smtpd_sasl_local_domain =
da Postfix sonst hiner den Username noch ein @domain hängt (ein häufiger Fehler bei der Postfix Konfiguration).
... angefügt :!:
kahler wrote: [...] Ich kann auch so auf den ersten Blick keine Sicherheitsrisiken oder -löcher in deiner Postfix Konfiguration erkennen (mit qpopper kenne ich mich nicht aus, daher kann ich dazu nichts sagen). [...]
Bei Gelegenheit werde ich anstatt qpopper auf courier-pop umstellen... Scheint sicherer zu sein ?!?

Vielen Dank für die Infos und die Fehlerkorrektur dazu :)

kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: Einige Dienste installiert - Schritt für Schritt

Post by kahler » 2003-06-12 00:29

static wrote:
kahler wrote:
static wrote:

Code: Select all

< ServerType standalone  
---  
> ServerType inetd
Ich hoffe nicht, du lässt deinen Webserver über inetd starten.
natürlich nicht 8) war ja auch nur ein Beispiel, wie man die Ausgabe von diff interpretiert...
Ich hab schon Angst bekommen :lol:
static wrote:
kahler wrote:
static wrote:Nun brauchen wir aber noch einige zusätzliche Dienste, die wir nun installieren:

Code: Select all

p11111111:/# apt-get install bzip2 nmap xinetd
Eigentlich ist es nur ein Dienst (xinetd) und das andere sind Tools, aber ok.
:roll: hab ich für dich geändert :lol:
Du hasts nicht für mich sondern für die User geändert, ich kenne den Unterschied :wink:
static wrote:
kahler wrote:
static wrote:"Do you want to convert /etc/inetd.conf file to /etc/xinetd.conf ?" No
Wieso denn nicht?? Was man nicht braucht kann man dann imemrnoch rausschmeißen. Ich würde die Datei konvertieren, da dort schon Beispiele für FTP etc. drin sind, man also nicht nochma die ganze Arbeit von vorne machen muss (Kommentare entfernen und fast fertig)
Naja, am Anfang sind in der inetd.conf ja noch einige Dienste die wir nicht benötigen (discard, time usw.) Damit ich die nicht gleich wieder entfernen muss, habe ich sie erst gar nicht portiert...
Gut, das ist auch ein Argument
static wrote:
kahler wrote:
static wrote:Der Private-Key sollte nie über eine ungesicherte Leitung geschickt werden,...
Das ist wohl richtig, aber die SSH Session ist ja verschlüsselt, also sollte es nicht unbedingt so das Problem darstellen
Stimmt, man könnte den Key auch auf dem Server erstellen, wenn ich aber davon ausgehe, dass der Key mit Putty verwendet werden soll, erstelle ich ihn direkt in Windows, damit ich den Key nicht portieren muss...
Auch wieder war. Hast damit ein Arbeitsschritt gespart. Gibt sich im Prinzip nichts.
static wrote:
kahler wrote:
static wrote:...normalerweise geht das mit der Rechten Maustaste
sofern man Putty benutzt
Wie ist das bei anderen Programmen?
Beim SHH Client von SSH.com gibts dafür ein Menü, bei nem Linux Client mit reiner Textkonsole ists wohl am einfachsten, wenn man den Key per SCP überträgt (könnte man auch noch als Möglichkeit anbringen)
static wrote:
kahler wrote:
static wrote:Für den normalen Filetransfer verwenden wir den FTP-Server ProFTPd
Gibt es auch abnormalen Filetransfer :wink:
Yep :lol: SCP ist für mich abnormaler Filetransfer :twisted:
Naja, ich finds eher abnormal, wenn man ein unsicheres Protokoll benutzt, aber das sei jedem selbst überlassen :wink:
static wrote:Bei Gelegenheit werde ich anstatt qpopper auf courier-pop umstellen... Scheint sicherer zu sein ?!?
Ich kann dir gerne Mal meine Aufzeichnungen zu Courier (komplettes Paket mit IMAP) zukommen lassen.
Ich habs zwar aus den Quellen installiert und eigewntlich nur die Befehle aufgeschrieben, aber vielleicht kannst du ja was damit anfangen.
static wrote:Vielen Dank für die Infos und die Fehlerkorrektur dazu :)
Kein Problem. Aber nimm nicht alle meine Kommentare so ernst :wink:

PS: Langsam wird das mit dem Zitieren unübersichtlich. :-D

static
Posts: 437
Joined: 2002-10-27 19:56
Location: Schweiz

Re: Einige Dienste installiert - Schritt für Schritt

Post by static » 2003-06-12 07:03

kahler wrote: Naja, ich finds eher abnormal, wenn man ein unsicheres Protokoll benutzt, aber das sei jedem selbst überlassen :wink:
Hehe, so kann man's auch sehen 8)
kahler wrote: Ich kann dir gerne Mal meine Aufzeichnungen zu Courier (komplettes Paket mit IMAP) zukommen lassen.
Ich habs zwar aus den Quellen installiert und eigewntlich nur die Befehle aufgeschrieben, aber vielleicht kannst du ja was damit anfangen.
Yep, gerne
kahler wrote: Kein Problem. Aber nimm nicht alle meine Kommentare so ernst :wink:
Mach ich auch nicht :-P

captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Einige Dienste installiert - Schritt für Schritt

Post by captaincrunch » 2003-06-12 13:11

Ich gehe davon aus, dass du die Grundlegenden Kommandos unter Unix verstehst und dich mit VIM auskennst, das ist der Standardeditor bei Linux. Wenn nicht, findest du bei Link (1) eine gute Anleitung dazu. Es ist von Vorteil VIM anstatt VI zu nutzen, da dort die Zeilennummer immer angegeben wird (k.a. ob vi das auch kann...).
Ja, kann er : :set number
Das klappt sogar noch auf alten SunOS-Kisten ... ;)

Bei Gelegenheit (und vor allem, wenn ich mir mal überlegt habe, wo das am besten hinpasst), werde ich das wohl mal in die FAQ aufnehmen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: Einige Dienste installiert - Schritt für Schritt

Post by kahler » 2003-06-12 13:42

@ static: Meld dich einfach Mal per PN, wenn du die Aufzeichnungen haben willst.

hanzdampf
Posts: 24
Joined: 2004-02-08 22:35
Location: Hamburg

Re: Einige Dienste installiert - Schritt für Schritt

Post by hanzdampf » 2004-02-09 13:54

Danke, hat mir geholfen! Ich belass es mal bei diesem positiven Feedback, anstatt den Thread mit spezifischen Fragen zu verunstalten :wink:

hanzdampf
Posts: 24
Joined: 2004-02-08 22:35
Location: Hamburg

Re: Einige Dienste installiert - Schritt für Schritt

Post by hanzdampf » 2004-02-11 19:06

[Blödsinn gelöscht] 8)

Aber eines würde ich wirklich gerne wissen:
Wie mach ich
static wrote:p11111111:/# update-rc.d pwcheck defaults
p11111111:/# /etc/init.d/postfix restart
wieder rückgangig?

Oder muss ich, wenn ich ein anderes PWCHECK Script laufen lassen will einfach nur /etc/init.d/pwcheck mit dme neuen script erstezen und chmodden?

Gruss