Have You Tried IT ?

Information Technology from scratch

Podstawowa konfiguracja VPS: LAMP, FTP, poczta, ISPConfig3

Dodano przez Kategoria: Linux

Nowy, goły serwer VPS wymaga zainstalowania wielu niezbędnych programów, aby mógł spełniać swoje zadania. Na początek trzeba się określić co będzie potrzebne i zdecydować się jakie rozwiązania wybrać.
Mój serwer należy do klasy low-cost (1 procesor 2GH, 1GB RAM, 1 IP). Założenie jest takie, żeby w miarę sprawnie wszystko działało i nie przekraczać dostępnych zasobów. Przede wszystkim serwer ma móc kompleksowo serwować strony www wykorzystując PHP i bazę danych MySQL, obsługiwać pocztę, świadczyć FTP itp. oraz względnie chronić się przed prostymi atakami.

Składniki:

  • LAMP (Linux, Apache, MySQL, PHP)
  • Serwer FTP
  • Serwer pocztowy (Postfix + Dovecot)
  • Panel do zarządzania ISPConfig3

Na początek zaczynam od dopisania repozytoriów dla Debiana z dotdeb.org w pliku /etc/apt/sources.list. Na końcu dopisuje takie źródła:

deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all

Aby móc używać powyższych źródeł trzeba je zweryfikować pobierając i instalując klucz GPG

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | sudo apt-key add -

Dalej przystępuję do aktualizacji informacji o repozytoriach (1 linia), a następnie do aktualizacji nowszych wersji programów mojego systemu (2 linia):

sudo apt-get update
sudo apt-get upgrade

 

Ponadto zakładam, że nazwa hosta została już wcześniej odpowiednio skonfigurowana. Ostatnio pisałem jak to dokonać w części zmiana nazwy hosta. Oczywiście konfiguracji binda tutaj nie przeprowadzam, ze względu na to, żeby zaoszczędzić zasoby serwera i dlatego, że to nie ma sensu przy pojedynczym serwerze z jednym IP. Należy skorzystać z serwera nazw od dostawcy albo z jakichś darmowych.

 

Należy zmienić domyślną powłokę shell na /bin/bash:

dpkg-reconfigure dash

Na pytanie  Use dash as the default system shell (/bin/sh)? odpowiedź No

Instalacja sudo w razie jakby nie było:

apt-get install sudo

 

Niezbędny będzie jakiś edytor tekstowy, najpopularniejszy VIM lub NANO

sudo apt-get install vim-nox
# lub
sudo apt-get install nano

 

Dnsutils – zbiór programów związanych z DNS (nslookup, dig, nsupdate)

sudo apt-get dnsutils

 

rkhunter, binutils

sudo apt-get install rkhunter binutils
  • rkhunter – program do ochrony systemu przed różnymi rootkitami i takimi różnymi niebezpieczeństwami
  • binutils – do tworzenia plików wykonywalnych

 

MySQL, phpMyAdmin

sudo apt-get install mysql-client mysql-server phpmyadmin

W trakcje instalacji kreator poprosi o wprowadzenie hasła dla użytkownika root.

Plik konfiguracyjny znajduje się tutaj: /etc/mysql/my.cnf
Domyślnie serwer MySQL nasłuchuje na localhoscie. Jeśli miałby nasłuchiwać zapytań z innego adresu należy zakomentować poniższy parametr albo wpisać adres IP, z którego ma nasłuchiwać.

...
bind-address            = 127.0.0.1
...

Od razu również dla celów testowych włączam logowanie powolnych zapytań, odkomentowując poniższe linie:

...
# Here you can see queries with especially long duration
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 5
...

Po tych zmianach należy zrestartować serwer MySQL

/etc/init.d/mysql restart

 

Serwer WEB: Apache2, PHP5, FCGI, suExec, Pear, mcrypt, imagemagic, openssl

sudo apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork \
apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd \
php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid \
apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick \
php5-curl libapache2-mod-suphp libruby libapache2-mod-ruby libsasl2-2 \
libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl

Na pojawiające się pytania odpowiadam następująco:

Web serwer apache2

Configuring phpmyadmin : apache2

Configuring phpmyadmin: dbconfig-common

Configure database for phpmyadmin with dbconfig-common? No

Dostęp do phpmyadmin jest już dostępny przez przeglądarkę pod adresem xx.xx.xx.xx/phpmyadmin.

Należy jeszcze uruchomić dodatkowe moduły apache2

sudo a2enmod rewrite ssl actions include suexec dav_fs dav auth_digest

i restart Apache2:

sudo /etc/init.d/apache2 restart

 

Postfix, Dovecot, Amavisd-new, SpamAssassin i Clamav

sudo apt-get install postfix postfix-mysql postfix-doc dovecot-pop3d dovecot-imapd \
amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop \
cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon \
libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

Postfix to MTA (Mail Transfer Agent) przekazuje i dostarcza pocztę.
Dovecot to serwer IMAP i POP3
Amavisd-new to pośrednik między MTA a dodatkowymi programami typu antyspam (SpamAssasin) czy antywisrus (Clamav)

 

FTP: PureFTPD i Quota

sudo apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Edytuje /etc/default/pure-ftpd-common

zmieniam parametry:

STANDALONE_OR_INETD=standalone
VIRTUALCHROOT=true

Aby mieć możliwość łączenia się szyfrowanym protokołem FTPS (TLS) należy wykonać:

echo 1 > /etc/pure-ftpd/conf/TLS

a następnie należy utworzyć certyfikat i zmienić prawa dostępu do niego:

mkdir -p /etc/ssl/private/
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
chmod 600 /etc/ssl/private/pure-ftpd.pem

i restart: /etc/init.d/pure-ftpd-mysql restart

 

Vlogger, Webalizer

sudo apt-get install vlogger webalizer geoip-database

Vlogger służy do rotowania logów.
Webalizer analizuje logi i generuje szczegółowe statystki

 

Squirrelmail – klient pocztowy

sudo apt-get install squirrelmail

Należy utworzyć dowiązanie symboliczne:

ln -s /usr/share/squirrelmail/ /var/www/webmail

Konfiguracja Squirrelmail:

squirrelmail-configure

Uruchomiony zostanie taki konfigurator:

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color off
S   Save data
Q   Quit

Command >>

Należy wybrać opcję D i w następnym oknie wpisać dovecot

---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others.  If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct.  This does not change everything.  There are
only a few settings that this will change.

Please select your IMAP server:
    bincimap    = Binc IMAP server
    courier     = Courier IMAP server
    cyrus       = Cyrus IMAP server
    dovecot     = Dovecot Secure IMAP server
    exchange    = Microsoft Exchange IMAP server
    hmailserver = hMailServer
    macosx      = Mac OS X Mailserver
    mercury32   = Mercury/32
    uw          = University of Washington's IMAP server
    gmail       = IMAP access to Google mail (Gmail) accounts

    quit        = Do not change anything
Command >>

Następnie należy opuścić konfigurator wcześniej zapisując zmiany S

Panel SquirrelMail dostępny będzie pod adresem:
http://XX.XX.XX.XX/webmail lub http://moja-domena.pl/webmail 

 

Instalacja panelu ISPConfig

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
php -q install.php

Uruchomi się instalator. Jeśli zada jakieś trudne pytanie należy wybrać domyślną opcję i potwierdzić komendą „enter” 😉

Po zainstalowaniu panel dostępny jest pod adresem:
https://XX.XX.XX.XX:8080 lub https://moja-domena.pl:8080

Login: admin
Hasło: admin
(Należy zmienić jak najszybciej po zalogowaniu)

Od razu najlepiej też zmienić port logowania z 8080 na jakiś inny niestandardowy.
W tym celu należy edytować plik: /etc/apache2/sites-available/ispconfig.vhost

...
 Listen 58880
NameVirtualHost *:58880

<VirtualHost _default_:58880>
  ServerAdmin webmaster@localhost
...

i zrestartować apache

sudo /etc/init.d/apache2 restart

 

 

Konfiguracja Dovecot

Należy sprawdzić plik /etc/dovecot/dovecot.conf i w razie potrzeby zmodyfikować

...
protocols = imap imaps pop3 pop3s
...
auth default {
  ...
  mechanisms = plain login
  ...
  # SQL database </usr/share/doc/dovecot-common/wiki/AuthDatabase.SQL.txt>
  passdb sql {
    # Path for SQL configuration file
    args = /etc/dovecot/dovecot-sql.conf
  }
  ...
  # SQL database </usr/share/doc/dovecot-common/wiki/AuthDatabase.SQL.txt>
  userdb sql {
    # Path for SQL configuration file
    args = /etc/dovecot/dovecot-sql.conf
  }
  ...
  # It's possible to export the authentication interface to other programs:
  socket listen {
    master {
      # Master socket provides access to userdb information. It's typically
      # used to give Dovecot's local delivery agent access to userdb so it
      # can find mailbox locations.
      path = /var/run/dovecot/auth-master
      mode = 0600
      # Default user/group is the one who started dovecot-auth (root)
      user = vmail
      #group =
    }
    client {
      # The client socket is generally safe to export to everyone. Typical use
      # is to export it to your SMTP server so it can do SMTP AUTH lookups
      # using it.
      #path = /var/run/dovecot/auth-client
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}
...

Warto też zwrócić uwagę, żeby reszta opcji autoryzacji w części auth default była ujęte w komentarze. Aby zobaczyć wszystkie niestandardowe opcje należy wywołać taką komendę:

dovecot -n

# 1.2.15: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-xxx.xxx.xxxstabxxx i686 Debian 6.0.5
log_timestamp: %Y-%m-%d %H:%M:%S
protocols: imap imaps pop3 pop3s
login_dir: /var/run/dovecot/login
login_executable(default): /usr/lib/dovecot/imap-login
login_executable(imap): /usr/lib/dovecot/imap-login
login_executable(pop3): /usr/lib/dovecot/pop3-login
mail_privileged_group: mail
mbox_write_locks: fcntl dotlock
mail_executable(default): /usr/lib/dovecot/imap
mail_executable(imap): /usr/lib/dovecot/imap
mail_executable(pop3): /usr/lib/dovecot/pop3
mail_plugin_dir(default): /usr/lib/dovecot/modules/imap
mail_plugin_dir(imap): /usr/lib/dovecot/modules/imap
mail_plugin_dir(pop3): /usr/lib/dovecot/modules/pop3
lda:
  postmaster_address: postmaster@moja-domena.pl
  auth_socket_path: /var/run/dovecot/auth-master
  log_path:
auth default:
  mechanisms: plain login
  verbose: yes
  passdb:
    driver: sql
    args: /etc/dovecot/dovecot-sql.conf
  userdb:
    driver: sql
    args: /etc/dovecot/dovecot-sql.conf
  socket:
    type: listen
    client:
      path: /var/spool/postfix/private/auth
      mode: 432
      user: postfix
      group: postfix
    master:
      path: /var/run/dovecot/auth-master
      mode: 384
      user: vmail

Następnie należy jeszcze edytować plik /etc/dovecot/dovecot-sql.conf

...
# Database driver: mysql, pgsql, sqlite
driver = mysql
...
connect = host=localhost dbname=dbispconfig user=dovecot password=dovecotpass
...
default_pass_scheme = MD5
...
password_query = SELECT password, email  AS user FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
...
user_query = SELECT maildir as home, CONCAT(maildir, '/Maildir') as mail, uid, gid FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'

Jeśli chodzi o użytkownika do połączenia za bazą danych dbispconfig to można:

  • użyć użytkownika i hasło wykorzystywane przez ISPConfig (w pliku: /usr/local/ispconfig/server/lib/config.inc.php )
  • stworzyć nowego użytkownika powielając prawa użytkownika ispconfig
    (bardzo proste do wyklikania w phpmyadmin)

Na koniec należy zrestartować dovecot’a

sudo /etc/init.d/dovecot restart

Dovecot powinien domyślnie wszystkie informacje logować do pliku /var/log/mail.log

Na koniec trzeba jeszcze nadać odpowiednie uprawnienia do plików konfiguracyjnych

# Postfix używa uprawnień dla vmail
chgrp vmail /etc/dovecot/dovecot.conf
chmod g+r /etc/dovecot/dovecot.conf

# root ma możliwość dostępu do pliku, żeby nikt inny nie mógł odczytać hasła MySQL
chown root:root /etc/dovecot/dovecot-sql.conf
chmod go= /etc/dovecot/dovecot-sql.conf

 

Komunikacja Posfix z Dovecot

Dovecot rozszerza możliwości Postfix’a. Aby skomunikować oba programy należy edytować plik /etc/postfix/master.cf i dopisać taką linię:

dovecot unix - n n - - pipe
   flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}

Należy również edytować plik /etc/postfix/main.cf i dopisać na końcu:

virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

lub zamiast edytować plik wystarczy wpisać:

postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1

Na koniec wystarczy odświeżyć Postfix

postfix reload

lub nawet go zrestartować

sudo /etc/init.d/postfix restart

 

Aktualizacja:

Gdyby się jednak okazało, że powyższa konfiguracja pożera zbyt dużo zasobów to zapraszam do zapoznania się z tym o to wpisem: Uproszczenie konfiguracji serwera VPS. Wyłączenie serwera pocztowego.

6 komentarzy

  1. Pingback: Uproszczenie konfiguracji serwera VPS. Wyłączenie serwera pocztowego.

  2. darek Odpowiedz

    Dziękuję Ci serdecznie człowieku za twoją pracę. Ślęczałem nad tym od tygodnia… Przewertowałem dziesiątki stron. I dopiero tutaj kawa na ławę została wyłożona. Szacunek

  3. Jakub Odpowiedz

    Hmm.
    Nie, żebym coś miał do Twoich poradników, są fajne itp itd. Ale: 😉
    Mogę stworzyć konto mailowe przez isp config, mogę wysyłać z niego maile na dowolny adres, ale jeżeli wyślę maila z innego konta na ten adres co utworzyłem to „nieznany odbiorca” 😉

      • nolife Odpowiedz

        Hmm…
        Nie, żebym zignorował Twój komentarz… ale jednak 😉
        Jeżeli oczekujesz wyłącznie gotowych rozwiązań to chyba źle trafiłeś.
        Natomiast bardzo chętnie pomogę w rozwiązaniu Twojego problemu, jeśli oczywiście udostępnisz konkretne informacje, typu: nagłówek tego maila, logi z mail.log oraz czego używasz do odbierania maili.
        Bezpośredni kontakt do mnie nolife@haveyoutried.it.

        Pozdrawiam

Dodaj komentarz

XHTML: Dozwolone znaczniki: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">