Rootserver mit ISPconfig

Aus Linupedia
Wechseln zu: Navigation, Suche

Autor: stevil

Zweck dieses HowTos

Jeder Rootserver Besitzer kennt den leidigen Weg mit den Admin Tools wie Confixx/Plesk oder Visas: kommerziell, Lizensmodell, keine offenen Sources. Dieses HowTo zeigt euch, wie man eine komplette OpenSource Lösung in sein System implementiert. Hier erfinde ich nix neues, ich verschmelze lediglich 2-3 verschiedene HowTos miteinander. Ich setze den Umgang mit SSH Console, beliebigen Editor (meiner ist vi) und allgemeine Spielerein vorraus...

Bevor es losgeht

Einmal den Rootserver reinitialisieren lassen, dabei drauf achten, das es PLAIN also ohne Verwaltungstool gemacht wird. Ich selber nutze SuSE Linux 9.3 auf einem vServer bei Strato. Links zu anderen Systemen schieb ich im letzten Abschnitt nach.

Ich werde nach jedem Schritt ein Posting machen, damit die jeweiligen Schritte schön unterteilt sind .


Was danach das System alles kann

  • Apache 2.x Webserver
  • PHP 5.x
  • MySQL 4.1
  • FTP
  • Bind
  • Webalizer
  • SSL
  • SSI
  • Mailscanner
  • Firewall
  • Quota Support
  • Postfix (SMTP-AUTH und TLS)
  • Courier-IMAP/Courier-POP3

APT installieren

Packet holen Code:

wget http://linux01.gwdg.de/~scorot/install-apt4suse.rpm


Packet installieren Code:

rpm -Uvh install-apt4suse.rpm


Letztendliches APT installieren Code:

install-apt4suse


APT so konfigurieren, das nur die Packete, nicht der Kernel geupdated wird Konfig Datei öffnen Code:

vi /etc/apt/apt.conf.d/apt.conf


GPG check ausschlaten Code:

vi /etc/apt/apt.conf.d/gpg-checker.conf 


die Option GPG::Check auf false gesetzt werden.


Kernel nicht mit updaten Code:

vi /etc/apt/apt.conf.d/apt.conf


über "Ignore {"gpg-pubkey";}; einfügen Code:

Hold { "kernel-default"; "kernel-source"; };


PHP4 rauswerfen yast aufrufen Code:

yast


und unter "install and remove software" nach "php" suchen alles so markieren das ein "-" davorsteht und alles raushauen.

Alles auf den aktuellsten Stand bringen Zitat:

apt update


Zitat: apt upgrade


hier die frage, ob installiert werden soll mit "y" beantworten käffchen/cola trinken gehn...


Nun PHP5 installieren Code:

apt install php5


Wenn bei APT etwas nicht klappt, bitte die Suchfunktion vom linux-club benutzen! allgemein: NIE am kernel von rootservern rumspielen. dort sind funktionen wie die serielle konsole eingebunden und noch andere dinge, die euch verloren gehen, wenn dran rumgespielt wird. wenn ihr einen "höheren" kernel wollt, solltet ihr ein komplett neues image aufspielen lassen. jetzt gehts weiter mit grundinstallationen...

Quota Support installieren Code:

apt-get install quota 


  • wenn es NICHT nach der installation funktionieren sollte, hat der anbieter was an der config der partitionen geändert, hier bitte selber recherchieren!

Bind installieren Code:

apt-get install bind bind-chrootenv bind-devel bind-utils


läuft es? Code:

chkconfig --add named


starten Code:

/etc/init.d/named start


MySQL installieren + Root Zugang Code:

apt-get install mysql mysql-client mysql-shared mysql-devel perl-DBD-mysql perl-DBI perl-Data-ShowTable


läuft es? Code:

chkconfig --add mysql


starten Code:

/etc/init.d/mysql start


RootPasswort festlegen (werte einsetzen!) Code:

mysqladmin -u root password deinpasswort


Postfix installieren

Code:
apt-get install postfix cyrus-sasl cyrus-sasl-crammd5 cyrus-sasl-devel cyrus-sasl-digestmd5 cyrus-sasl-gssapi cyrus-sasl-otp cyrus-sasl-plain cyrus-sasl-saslauthd


läuft es? Code:

chkconfig --add saslauthd


start Code:

/etc/init.d/saslauthd start


OpenSSL Key generieren Directory erzeugen Code:

mkdir /etc/postfix/ssl


Code:

cd /etc/postfix/ssl/ 


Key basteln Code:

openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024


Code: chmod 600 smtpd.key


Code:

openssl req -new -key smtpd.key -out smtpd.csr


Code:

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt


Code:

openssl rsa -in smtpd.key -out smtpd.key.unencrypted


Code:

mv -f smtpd.key.unencrypted smtpd.key


Code:

openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650



auf die "passphrase" denkt ihr euch ein schönes passwort aus. Dann beim Anlegen: Country: DE State: Abkürzung Bundesland Locality: eure nächst größere Stadt Organisation Name: Denkt euch was aus Unit Name: Abteilung? Common: Namen/Idee/Sonstwas E-Mail erklärt sich von selber


Postfix Konfiguration

example.com durch die erste Domain aufm server errsetzen hostname ist die subdomain des hosters, zb (hxxxxx.serverkompetenz.net) ODER "www", je nachdem, was ihr angezeigt bekommen wollt (zB server1.deinedomain.de, www.deinedomain.de" ... ein guter wert ist wie ich finde: "www.$mydomain" die anderen werte alle 1:1 übernehmen Code:

postconf -e 'mydomain = example.com'


Code:

postconf -e 'myhostname = server1.$mydomain'


Code:

postconf -e 'smtpd_sasl_local_domain ='


Code:

postconf -e 'smtpd_sasl_auth_enable = yes'


Code:

postconf -e 'smtpd_sasl_security_options = noanonymous'


Code:

postconf -e 'broken_sasl_auth_clients = yes'


Code:

postconf -e 'smtpd_recipient_restrictions = [code][/code]permit_sasl_authenticated,permit_mynetworks,check_relay_domains'


Code:

postconf -e 'inet_interfaces = all'


Code:

postconf -e 'alias_maps = hash:/etc/aliases'


Code:

postconf -e 'smtpd_tls_auth_only = no'


Code:

postconf -e 'smtp_use_tls = yes'


Code:

postconf -e 'smtpd_use_tls = yes'


Code:

postconf -e 'smtp_tls_note_starttls_offer = yes'


Code:

postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'


Code:

postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'


Code:

postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'


Code:

postconf -e 'smtpd_tls_loglevel = 1'


Code:

postconf -e 'smtpd_tls_received_header = yes'


Code:

postconf -e 'smtpd_tls_session_cache_timeout = 3600s'


Code:

postconf -e 'tls_random_source = dev:/dev/urandom'



starten Code:

/etc/init.d/postfix restart


Courier IMAP installieren

Code:
apt-get install courier-imap fam-server


sämtliche Dienste starten Code:

/etc/init.d/courier-authdaemon start


Code:

/etc/init.d/courier-imap start


Code:

/etc/init.d/courier-imap-ssl start


Code:

/etc/init.d/courier-pop3 start


Code:

/etc/init.d/courier-pop3-ssl start


läuft alles? Code:

chkconfig --add courier-authdaemon


Code:

chkconfig --add courier-imap


Code:

chkconfig --add courier-imap-ssl


Code:

chkconfig --add courier-pop3


Code:

chkconfig --add courier-pop3-ssl


letzte hand anlegen Code:

postconf -e 'home_mailbox = Maildir/'


Code:

postconf -e 'mailbox_command ='


Code:

/etc/init.d/postfix restart



der mailkram steht...jetzt gehts mit dem indianer weiter


Apache installieren

Code:
apt-get install apache2 apache2-devel apache2-mod_perl apache2-mod_php5 apache2-prefork libapr0 perl-HTML-Parser perl-HTML-Tagset perl-Tie-IxHash perl-URI perl-libwww-perl php5 php5-devel



PHP 5 installieren

(alles in eine zeile!) Code:
apt-get install php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dba php5-dbase php5-dbx php5-debuginfo php5-dio php5-dom php5-fam php5-filepro php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mhash php5-mysql php5-mysqli php5-ncurses php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-readline php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-yp php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl



PHP in Apache einbinden

Code:
chkconfig --add apache2


MimeTypes hinzufügen Code:

vi /etc/mime.types


dort die application einträge suchen und erweitern Code:

# application/x-httpd-php                phtml pht php 
# application/x-perl             pl pm 


Directory Indes erweitern Code:

vi /etc/apache2/httpd.conf


dort die Directory Einträge suchen und erweitern Code:

DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php5 index.php4 index.php3 index.pl index.html.var


Apache2 Module einbauen Code:

vi /etc/sysconfig/apache2 


und dort ersetzen/ergänzen Code:

APACHE_MODULES="access actions alias auth [...] setenvif ssl suexec userdir php4 php5 rewrite" 
APACHE_SERVER_FLAGS="SSL" 


In SuSE einbinden Code:

SuSEconfig


starten Code:

/etc/init.d/apache2 start


FTP Server installieren

von SuSE aus ist "wsftp" installiert...doch es gibt viele server und so nehmen auch wir einen anderen... das ist der aktuelle STABLE server, ihr könnt auf dem ftp natürlich auch einen RC kandidaten nehmen...müßt ihr wissen

Runterladen Code:

cd /tmp/ 


Code:

wget --passive-ftp ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.10.tar.gz 


Entpacken/Installieren Code:

tar xvfz proftpd-1.2.10.tar.gz


Code:

cd proftpd-1.2.10/


Code:

./configure --sysconfdir=/etc


Code:

make


Code:

make install


temp kram entfernen Code:

cd ../


Code:

rm -fr proftpd-1.2.10*


konfig schreiben Code:

vi /etc/init.d/proftpd 


1:1 einfügen Code:

#! /bin/sh 
# Copyright (c) 2000-2001 SuSE GmbH Nuernberg, Germany. 
# All rights reserved. 
# 
# Original author: Marius Tomaschewski <mt@suse.de> 
# 
# Slightly modified in 2003 for use with SuSE Linux 8.1, 
# by http://www.learnlinux.co.uk/ 
# 
# Slightly modified in 2005 for use with SuSE Linux 9.2, 
# by Falko Timme 
# 
# /etc/init.d/proftpd 
# 
### BEGIN INIT INFO 
# Provides:                proftpd 
# Required-Start:        $network $remote_fs $syslog $named 
# Required-Stop: 
# Default-Start:        3 5 
# Default-Stop:        0 1 2 6 
# Description:                Starts ProFTPD server 
### END INIT INFO 

# Determine the base and follow a runlevel link name. 
base=${0##*/} 
link=${base#*[SK][0-9][0-9]} 

# Force execution if not called by a runlevel directory. 
test $link = $base && START_PROFTPD=yes  # Modified by learnlinux.co.uk 
test "$START_PROFTPD" = yes || exit 0    # Modified by learnlinux.co.uk 

# Return values acc. to LSB for all commands but 
# status (see below): 
# 
# 0 - success 
# 1 - generic or unspecified error 
# 2 - invalid or excess argument(s) 
# 3 - unimplemented feature (e.g. "reload") 
# 4 - insufficient privilege 
# 5 - program is not installed 
# 6 - program is not configured 
# 7 - program is not running 

proftpd_cfg="/etc/proftpd.conf" 
proftpd_bin="/usr/local/sbin/proftpd" 
proftpd_pid="/usr/local/var/proftpd.pid" 

[ -r $proftpd_cfg ] || exit 6 
[ -x $proftpd_bin ] || exit 5 

# Source status functions 
. /etc/rc.status 

# First reset status of this service 
rc_reset 

case "$1" in 
    start) 
  echo -n "Starting ProFTPD Server: " 
  test -f /etc/shutmsg && rm -f /etc/shutmsg 
  /sbin/startproc $proftpd_bin 
  rc_status -v 
  ;; 

    stop) 
  echo -n "Shutting down ProFTPD Server: " 
  test -x /usr/local/sbin/ftpshut && /usr/local/sbin/ftpshut now && sleep 1 
  /sbin/killproc -TERM $proftpd_bin 
  test -f /etc/shutmsg && rm -f /etc/shutmsg 
  rc_status -v 
  ;; 

    restart) 
  ## If first returns OK call the second, if first or 
  ## second command fails, set echo return value. 
  $0 stop 
  $0 start 
  rc_status 
  ;; 

    try-restart) 
  ## Stop the service and if this succeeds (i.e. the 
  ## service was running before), start it again. 
  ## Note: not (yet) part of LSB (as of 0.7.5) 
  $0 status >/dev/null &&  $0 restart 
  rc_status 
  ;; 

    reload|force-reload) 
  ## Exclusive possibility: Some services must be stopped 
  ## and started to force a new load of the configuration. 
  echo -n "Reload ProFTPD Server: " 
  /sbin/killproc -HUP $proftpd_bin 
  rc_status -v 
  ;; 

    status) 
  # Status has a slightly different for the status command: 
  # 0 - service running 
  # 1 - service dead, but /var/run/  pid  file exists 
  # 2 - service dead, but /var/lock/ lock file exists 
  # 3 - service not running 
  echo -n "Checking for ProFTPD Server: " 
  checkproc $proftpd_bin 
  rc_status -v 
  ;; 

    probe) 
  ## Optional: Probe for the necessity of a reload, 
  ## give out the argument which is required for a reload. 
  [ $proftpd_cfg -nt $proftpd_pid ] && echo reload 
  ;; 

    *) 
  echo "Usage: $0 {start|stop|status|restart|reload|try-restart|probe}" 
  exit 1 
  ;; 
esac 

 # Set an exit status. 
 rc_exit 


läufts? Code:

chmod 755 /etc/init.d/proftpd


Code:

chkconfig --add proftpd


Code:

/etc/init.d/proftpd start


Sicherheits Einstellungen Code:

vi /etc/proftpd.conf 


finden und auskommentieren, bzw am ende einfügen Code:

DefaultRoot ~ 
IdentLookups off 
ServerIdent on "FTP Server ready." 


folgendes finden und auskommentieren Code:

# Bar use of SITE CHMOD by default 
# <Limit SITE_CHMOD> 
#  DenyAll 
# </Limit> 


starten Code:

/etc/init.d/proftpd restart


Webalizer Statistik Tool

apt-get install webalizer



Systemzeit aktuell halten

Netdate ziehen Code:

apt-get install netdate


aktuelle Zeit setzen Code:

netdate tcp 128.2.136.71


Cronjob anlegen Code:

vi /var/spool/cron/tabs/root 


einfügen Code:

# update time with ntp server 
0 3,9,15,21 * * * /usr/sbin/netdate 128.2.136.71 


läufts? Code:

chmod 600 /var/spool/cron/tabs/root


Code:

/etc/init.d/cron restart



SpamAssasin

hier werden wir mit dem pearl interpreter arbeiten is aber genauso einfach wie bisher

die meisten fragen kann man mit enter beantworten aber trotzdem LESEN! erst bei der länderangabe muss man aktiv werden

Shell aufrufen Code:

perl -MCPAN -e shell


danach auf der cpan konsole... einfach immer eintippen/durchraddeln und OK ablesen Code:

install HTML::Parser


Code:

install Net::DNS 

(no bei tests durchlaufen?) Code:

install Digest::SHA1


Code:

install DB_File


q



ISP installieren

runterladen, mirror auswählen auf der projektseite, beispiel: Code: wget http://mesh.dl.sourceforge.net/sourceforge/ispconfig/ISPConfig-2.1.2.tar.gz


entpacken

tar xvfz ISPConfig*.tar.gz 

reinwechseln

cd install_ispconfig 

installer starten

./setup 

so...der installiert für sich selber ein PARALLEL LAUFENDES apache/php system, also nicht wundern...aber es greift nicht in die bestehende config von eben ein!

dann gehen wird mal durch...

  1. länderwahl: 1
  2. installationsmodus: expert, also 2
  3. alles mit y beantworten
  4. webroot nicht auf /home/www zeigen sondern srv/www

5. SSL zertifikat ist ein eigenes für IPSconfig, also wieder unabhängig vom apache2 erstellten. daher "traumwerte" eingeben oder 1:1 wie eben oder was ganz anderes, wie ihr wollt Code:

In step 7 ("Encrypting RSA private key of CA with a pass phrase for security [ca.key]")

und step 8 ("Encrypting RSA private key of SERVER with a pass phrase for security [server.key]")


immer mit "N" antworten, sonst muss man immer ISPconfig manuell neustarten, sonst blockt der server!


MySQL ergibt sich von selbst...

login per https (1) und


Rootserver
Webmin