Tökéletes szerver: Debian 8 (Jessie) V1.0

botond küldte be 2018. 05. 03., cs – 13:10 időpontban

Tartalom

 

Bevezető

Ebben a leírásban készítjük el a Debian 8 tökéletes szerver 1.0-ás változatát. A leírásban a HowtoForge receptje alapján haladunk, néhány dolgot kihagyva belőle.

Ennek a szervernek adok egy 1.0-ás verziószámot, mert a későbbiekben sok kiegészítővel fog még bővülni, így könnyebben meg tudjuk különböztetni őket.

A forráshelyen több változatot is készítettek a 8-as Debiannal. Én ezt telepítettem fel 2017 év elején erre a szerverre, és azóta is ezt használom, hibátlanul működik, tehát tudok róla hitelesen nyilatkozni. Ezért ebben a leírásban is a járt úton haladok végig. Persze azóta már sok mindent finomhangoltam rajta, és bővítettem még számos extrával, amiket a későbbi leírásaimban be fogok majd apránként mutatni.

Frissítés: 2019-03-30:
A Debian 8 (Jessie) 2019. március 20-án archiválta a nem LTS csomagtárait, így azokhoz már nem érkeznek frissítések.
Ezért új szerver építése esetén már erősen ajánlott a Debian 9 (Stretch), vagy a Debian 10 (Buster) változat feltelepítése! Ezt a leírást már inkább csak tanulmányozás céljából tekintsük át.
A tökéletes szerver telepítő leírásának Debian 9 (Stretch) változata itt tekinthető meg.
Tökéletes szerver: Debian 10 (Buster) V1.0 változata pedig itt.

Mivel hosszú anyagnak nézünk elébe, nem is húzom tovább a dolgot, lássunk munkához!

 

A szerver elkészítéséhez szükség van egy korábbi leírásra, mert ez a leírás erre épül:
Debian 8 (Jessie) minimális szerver telepítése
A leírásban elkészített virtuális gép pedig innen tölthető le.
(Itt már előkészítettünk pár dolgot, ezeket itt át is ugorjuk)

 

 

Debian csomagok frissítése

Mint minden nagyobb munka előtt, itt is a tárolók és a csomagok frissítésével kezdjük. Elsőként győződjünk meg róla, hogy a tárolóink megfelelően vannak-e beállítva. Az etc/apt/sources.list fájlnak tartalmaznia kell a jessie/updates tárolót, mert ez tartalmazza a legújabb biztonsági frissítéseket is, valamint a contrib és a non-free komponenseket is engedélyezzük mert előfordulhat, hogy néhány csomag nincs benne a fő tárolóban.

Ha fent említett korábbi leírás alapján telepítettük a 8.10-es Debian-t, akkor  az etc/apt/sources.list fájlunk már majdnem tökéletes, már csak a zöld részekkel kell kiegészítenünk a meglévő tartalmat. Nyissuk meg a nano-val a fájlt:

#

# deb cdrom:[Debian GNU/Linux 8.10.0 _Jessie_ - Official amd64 NETINST Binary-1 20171209-21:51]/ jessie main

#deb cdrom:[Debian GNU/Linux 8.10.0 _Jessie_ - Official amd64 NETINST Binary-1 20171209-21:51]/ jessie main

deb http://ftp.hu.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.hu.debian.org/debian/ jessie main contrib non-free

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

# jessie-updates, previously known as 'volatile'
deb http://ftp.hu.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://ftp.hu.debian.org/debian/ jessie-updates main contrib non-free
Frissítés: 2019-03-30:
A Debian 2019. március 20-án áthelyezte a Debian 8 (Jessie) nem LTS csomagtárait az archive.debian.org tárolójába, így a jessie-updates tárolók már nem frissíthetők a rendes Debian tükrökről (404-es hibákat dobál a csomagkezelő).
A csomagtárak megfelelő beállításairól itt tájékozódhatunk. (új ablakban)
Ha elvégeztük a szükséges módosításokat, akkor hiba nélkül folytathatjuk a frissítést a szokásos parancsokkal.

Ezután (root-ként) frissítsük az APT csomagkezelő adatbázisát, és utána a csomagjainkat:

apt-get update
apt-get upgrade

 

Rendszer óra szinkronizálása

Célszerű szinkronizálnunk a rendszer óráját az NTP (Network Time Protocol) segítségével. Ahhoz hogy folyamatosan szinkronban tarthassuk rendszerünk idejét, telepítsük az ntp csomagokat:

apt-get -y install ntp ntpdate

 

Postfix, Dovecot, MySQL, openSSL, rkhunter, binutils telepítése

Telepíthetjük a címben említett programokat egyetlen paranccsal:

apt-get -y install \
    postfix postfix-mysql postfix-doc \
    mysql-client mysql-server \
    openssl \
    getmail4 rkhunter binutils \
    dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd

A jobb áttekinthetőség kedvéért több sorra bontottam, amit ugyanígy bemásolhatunk a terminálba.

A parancs futtatására megjelenik először a Postfix beállító panelja:

Postfix konfiguráció

Ha szeretnénk email kezelést is használni a szerveren, akkor válasszuk az "Internet Site" opciót. De ha csak fejlesztői vagy tesztkörnyezetet kívánunk összeállítani, akkor válasszuk a "No configuration" opciót. Most válasszuk az Internet Site lehetőséget.

 

Itt megjegyzendő, hogy ha otthoni használatú szervert állítunk össze, és szeretnénk emaileket is küldeni róla, akkor az internetszolgáltatónknál kell igényelni a (havi kb 2-3 ezer forintos) fix IP-cím szolgáltatást, és akkor feloldanak minden port blokkolást, ami a webszerver üzemeltetéséhez szükséges. Továbbá a szerverre rá kell irányítani egy FQDN tartománynevet, amiről ki tudjuk küldeni az emaileket. Máskülönben a kiküldött leveleink visszapattannak.

 

Ezután bekéri tőlünk még a következő adatokat (a leírás nagy terjedelme miatt most nem készítek mindegyikről képet): 

  • System mail name: itt adjuk meg a teljes szerver nevet. (nálam: szerver1.linuxportal.info)
  • Root and postmaster recipient: hagyjuk üresen
  • Other destinations to accept mail for: Itt felajánlja a szerver nevet és a localhostot. Itt vesszővel elválasztva megadhatjuk még a fő domain nevünket is, pl linuxportal.info
  • Force synchronous updates on mail queue: Itt válasszunk nem-et. (Csak rendszerösszeomlás esetén van jelentősége)
  • Local networks: Töröljük ki a felajánlottat, és hagyjuk üresen. (a Postfix alapértelmezés lesz érvényben)
  • Use procmail for local delivery: Nem
  • Mailbox size limit: 0 (nincs postafiók korlát)
  • Local address extension character: Hagyjuk a megadott "+" jelen.
  • Internet Protocols to use: Itt ha mindkét hálózati protokoll rendelkezésünkre áll, válasszuk az All-t. Egyébként pedig az ipv4-et.
  • MySQL root jelszó
  • jelszó ismétlése

Az itt megadott jelszót lementettem az access.txt nevű fájlba, amit a virtuális gépben a /root könyvtárba helyezve mellékelem a géphez.

Majd a rendszer feltelepíti a többi csomagot, és bekonfigurálja őket automatikusan.

 

Ha még nem tudjuk hogyan szeretnénk használni a Postfixet, vagy rosszul állítottuk be, nincs gond, később bármikor újrakonfigurálható a következő paranccsal:
dpkg-reconfigure postfix

 

Ezután nyissuk meg az SSL/TLS és submission portokat a Postfix-ben:

nano /etc/postfix/master.cf

Vegyük ki a submission és az smtps részek elől a kommenteket az alábbi módon, és pótoljuk a zölddel jelzett sorokkal, hogy pontosan így nézzen ki a fájlnak ez a két szekciója:

submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

Ezután indítsuk újra a postfixet pl a service paranccsal:

service postfix restart

 

Szeretnénk, ha a MySQL-re nem csak localhostról tudnánk kapcsolódni, hanem kívülről is, ezért szerkesszük a /etc/mysql/my.cnf fájlt, és kommentezzük ki a "bind-address = 127.0.0.1" sort:

nano /etc/mysql/my.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1
[...]

Indítsuk újra a MySQL-t:

service mysql restart

Ellenőrízhetjük, hogy megfelelően működik-e:

netstat -tap | grep mysql

A kimenetnek ilyesminek kell lennie:

tcp    0    0 *:mysql    *:*    LISTEN    1760/mysqld

 

 

Amavisd-new, SpamAssassin, Clamav és archívum kezelők telepítése

Telepítsük a címben említett programokhoz szükséges csomagokat az apt-get paranccsal:

apt-get -y install \
    amavisd-new \
    spamassassin \
    clamav clamav-daemon clamav-docs \
    zip unzip bzip2 arj zoo nomarch lzop cabextract apt-listchanges daemon \
    libnet-ldap-perl libauthen-sasl-perl libio-string-perl \
    libio-socket-ssl-perl libnet-ident-perl libnet-dns-perl

Az ISPConfig 3 telepítője használja az amavisd-t, ami automatán betölti a SpamAssassin szűrőjét, így most leállíthatjuk a SpamAssassin-t:

service spamassassin stop
systemctl disable spamassassin

 

 

Ez a leírás több oldalból áll: