Rootserver mit ISPconfig
Autor: stevil
Inhaltsverzeichnis
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...
- länderwahl: 1
- installationsmodus: expert, also 2
- alles mit y beantworten
- 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