Nginx, BIND, Dovecot, ISPConfig 3.1 – Debian 10

W tym wpisie pokazuje wam, jak przygotować serwer Debian 10 do instalacji ISPConfig 3.1 oraz jak zainstalować samego ISPConfig 3.1. Co to ISPConfig 3 z grubsza mówiąc jest to panel sterowania serwerem, który umożliwia konfigurację następujących usług za pośrednictwem przeglądarki internetowej:

  • serwerem WWW Apache lub Nginx,
  • serwerem pocztowy Postfix,
  • serwerem Courier lub Dovecot IMAP / POP3, MySQL,
  • BIND lub MyDNS,
  • PureFTPd,
  • SpamAssassin,
  • ClamAV

jak i wiele innych usług.

W tym wpisie ogarniemy serwer WWW Nginx, BIND jako serwer DNS i Dovecot jako serwer IMAP / POP3.

Wstęp

W tym samouczku będę używał nazwy hosta server1.tranzystor.pl z adresem IP 192.168.0.100 i bramą 192.168.0.1 . Te ustawienia będą się zapewne różnić w twoim przypadku, więc w razie potrzeby musisz je zmienić. Zanim przejdziesz dalej, musisz mieć minimalną instalację Debiana 10. Może to być minimalny obraz Debiana od twojego dostawcy serwera VPS lub możesz skorzystać z minimalnej instalacji Debian na swoim PC.

Wszystkie poniższe polecenia są uruchamiane jako użytkownik root. Najlepiej od razu zaloguj się bezpośrednio jako użytkownik root.

Instalacja serwera SSH

Jeśli nie zainstalowałeś serwera OpenSSH podczas instalacji swojego systemu, możesz to zrobić teraz:

apt-get -y install ssh openssh-server

Od tego momentu możemy używać klienta SSH, takiego jak na przykład PuTTY, i łączyć się ze swojego PC do serwera Debian 10 a następnie postępować zgodnie z pozostałymi krokami z tego wpisu.

Instalacja edytora tekstu (opcjonalne)

Ja najczęściej używam nano i tym razem również też tak będzie. Niektórzy użytkownicy wolą klasyczny edytor vi, dlatego zainstaluję tutaj oba edytory tak profilaktycznie. Zwróć uwagę, że vi zachowuje się dziwnie na Debianie więc aby to naprawić, instalujemy vim-nox:

apt-get -y install nano vim-nox

Jest to opcjonalna instalacja nie musisz tego instalować możesz używać dowolnego wybranego przez siebie edytora.

Konfiguracja nazwy hosta

Nazwa hosta twojego serwera powinna być poddomeną taką jak „serwer1.tranzystor.pl”. Nie używaj nazwy domeny bez subdomeny, takiej jak „tranzystor.pl” jako nazwy hosta, ponieważ spowoduje to problemy z konfiguracją poczty. Najpierw powinieneś sprawdzić nazwę hosta w /etc/hosts i zmienić ją w razie potrzeby. Wiersz powinien brzmieć: „Adres IP – spacja – pełna nazwa hosta wraz z domeną – spacja – część subdomeny”. E dytuj /etc/hosts.

nano /etc/hosts

127.0.0.1 localhost.localdomain localhost
192.168.0.100 server1.tranzystot.pl server1

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Następnie edytujemy /etc/hostname

nano /etc/hostname

zmieniamy zawartość na

server1

Na koniec resetujemy nasz serwer:

reboot

Po zalogowaniu się ponownie, sprawdź czy nazwa hosta jest poprawna, wszystko wykonasz za pomocą następujących poleceń:

hostname
hostname -f

Otrzymać powinieneś:
root@server1 :~ $ hostname
server1
root@server1 :~ $ hostname -f
server1.tranzystor.pl

Dodanie potrzebnych repozytów:

Przydało by się dodać potrzebne nam repozyta w tym celu edytujemy

nano etc/apt/sources.list

następnie dodajemy:

deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

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

Po zapisanu aktualizujemy repozyta i sam system:

apt-get update && apt-get upgrade -y

Zmiana domyślnej powłoki:

Z racji tego, że zamiast /bin/sh potrzedbujemy /bin/dash zmieniamy to poleceniem

dpkg-reconfigure dash
Ukaże się nam komunikat:

Use dash as the default system shell (/bin/sh)? <– wybieramy No

Jeśli tego nie zrobisz, instalacja ISPConfig zakończy się niepowodzeniem, i cała robota pójdzie na marne.

Synchronizacja zegara systemowego

Dobrym pomysłem jest zsynchronizowanie zegara systemowego z serwerem NTP, a czas systemowy będzie zawsze aktualny. Wystarczy proste polecenie:

apt-get install ntp

Instalacja Postfix, Dovecot, MySQL, rkhunter, oraz binutils

Możemy zainstalować Postfix, Dovecot, MySQL, rkhunter i Binutils za pomocą jednego polecenia:

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

Podczas instalacji pojawią się następujące pytania:

General type of mail configuration: zaznacz Internet Site
System mail name: wpisz server1.tranzystor.pl

Aby zabezpieczyć instalację MariaDB / MySQL i wyłączyć testową bazę danych, w tym celu uruchom następującą komendę:

mysql_secure_installation

Nie musimy zmieniać hasła roota MariaDB, ponieważ właśnie ustawiliśmy podczas instalacji. Odpowiedz na pytania w następujący sposób:


Change the root password? [Y/n] <-- y
New password: <-- nowe hasło root do bazy
Re-enter new password: <-- powtórz hasło
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

Następnie edytujemy TLS / SSL i porty przesyłania w Postfix:

nano /etc/postfix/master.cf

Od komentuj sekcje przesyłania i smtps w sposób ukazany poniżej i jeśli jest konieczność dodaj wiersze, plik master.cf musi wyglądać dokładnie tak, jak poniżej. WAŻNE: Usuń # przed wierszami, które zaczynają się od smtps.

[...]
submission inet n - y - - 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 - y - - 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
[...]

Po zapisie resetujemy Postfix:

service postfix restart

Wiadomo, że chcemy aby MariaDB nasłuchiwało na wszystkich interfejsach, a nie tylko na localhost. W tym celu edytujemy /etc/mysql/mariadb.conf.d/50-server.cnf i zakomentuj wiersz bind-address = 127.0.0.1 :

nano /etc/mysql/mariadb.conf.d/50-server.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

[...]

Następnie ustaw metodę uwierzytelniania hasła w MariaDB na natywną, abyśmy mogli później użyć PHPMyAdmin do połączenia jako użytkownik root:
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Edytuj plik /etc/mysql/debian.cnf i ustaw tam dwa razy hasło root MYSQL / MariaDB w wierszach rozpoczynających się od słowa „password”.

nano /etc/mysql/debian.cnf


# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password = tranzystor.pl
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = tranzystor.pl
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

Aby uniknąć błędu „Error in accept: Too many open files”, ustalimy teraz wyższe limity otwartych plików dla MariaDB.

Otwórz plik /etc/security/limits.conf w edytorze:

nano /etc/security/limits.conf

mysql soft nofile 65535
mysql hard nofile 65535

Następnie utwórz nowy katalog /etc/systemd/system/mysql.service.d/ za pomocą komendy mkdir.

mkdir -p /etc/systemd/system/mysql.service.d/

a następnie dodaj nowy plik w środku:

nano /etc/systemd/system/mysql.service.d/limits.conf

wklej wewnątrz poniższe linijki do tego pliku:

[Service]
LimitNOFILE=infinity

Następnie resetujemy usługi MariaDB:

systemctl daemon-reload
systemctl restart mariadb

Następnie zainstaluj system dbconfig-common:

apt-get install dbconfig-common dbconfig-mysql

Obecnie pojawiają się problemy z wspólnym systemem Debconfig dbconfig, który uniemożliwia nam późniejszą instalację RoundCube, więc naprawmy go, uruchamiając następującą komendę:

sed -i -r 's/_dbc_nodb="yes" dbc_mysql_exec/_dbc_nodb="yes"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysql

Teraz przydało by się sprawdzić, czy sieć jest włączona i działa prawidłowo.

netstat -tap | grep mysql

Powinniśmy uzyskać następujący wynik:

root@server1:~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 4027/mysqld
root@server1:~#

Instalacja Amavisd-new, SpamAssassin, oraz ClamAV

Aby zainstalować Amavisd-new, SpamAssassin, oraz ClamAV, uruchamiamy następujące polecenie:

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip 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 libdbd-mysql-perl postgrey

Instalacja ISPConfig 3 używa amavisd, który ładuje wewnętrznie bibliotekę filtrów SpamAssassin, dzięki czemu możemy zatrzymać SpamAssassin, aby zwolnić trochę pamięci RAM:

systemctl stop spamassassin
systemctl disable spamassassin

Instalacja Nginx, PHP (PHP-FPM) i Fcgiwrap

Z racji, że Nginx jest dostępny jako pakiet dla Debiana, możemy zainstalować go w następujący sposób:

apt-get install nginx

po instalacji uruchom Nginx

systemctl start nginx

No to teraz czas na PHP 7.3 (nie będę się bawił ze starszymi) zostanie to zrobione w przypadku nginx przez PHP-FPM jest to to alternatywna implementacja PHP FastCGI z kilkoma dodatkowymi funkcjami użytecznymi dla stron, szczególnie polecane dla stron o większym obciążeniu, sama instalacja jest banalnie prosta

apt-get install php7.3-fpm

Jednak aby uzyskać obsługę MySQL w PHP, powinniśmy zainstalować pakiet php7.3-mysql. Dobrym pomysłem jest za jednym zamachem zainstalowanie inne moduły PHP, które mogą być potrzebne do twoich aplikacji web. Możesz wyszukać dostępne moduły PHP następującym poleceniem:

apt-cache search php7

Wybierz te które są ci potrzebne i zainstaluj je poniżej te które będą mi potrzebne.

apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick libruby php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcu

Po instalacji przydało by się określić naszą strefę czasową w PHP w tym celu edytujemy:

nano /etc/php/7.3/fpm/php.ini


[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Warsaw"
[...]

Po zmienianie strefy koniecznie przeładuj PHP-FPM

systemctl restart php7.3-fpm

Aby uzyskać obsługę CGI w nginx, instalujemy Fcgiwrap.

Instalacja Fcgiwrap

apt-get install fcgiwrap

Instalacja phpMyAdmin:

Co by nie było za kolorowo w Debianie 10 phpMyAdmin nie jest dostępne jako pakiet, jednak to żaden problem polecimy ze źródła.

Na początek trzeba utworzyć foldery dla phpMyAdmin

mkdir /usr/share/phpmyadmin
mkdir /etc/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setup

Po dodaniu folderów oraz nadaniu uprawnień lecimy dalej

cd /tmp

następnie

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

Rozpakuj pobrany plik i przenieś pliki do folderu /usr/share/phpmyadmin po czym wyczyść katalog /tmp.

tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.0.1-all-languages

Utwórz nowy plik konfiguracyjny dla PHPMyaAdmin na podstawie dostarczonego przykładowego pliku konfiguracyjnego:

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Następnie odtwórz plik za pomocą edytora np. nano

nano /usr/share/phpmyadmin/config.inc.php

Teraz przydało by się ustawić hasło, zalecam tu skorzystać z generatora chociażby dostępnego u nas generator haseł, pamiętaj hasło musi mieć 32 znaki.

$cfg['blowfish_secret'] = 'ZWNarC)Ui6oGy8B2v{u9SXOg-1|H&b;M'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Pamiętaj jednak, że hasło ZWNarC)Ui6oGy8B2v{u9SXOg-1|H&b;M zostało wygenerowane na potrzeby tego wpisu użyj swojego !!!!

Następnie dodaj wiersz, aby ustawić katalog, którego PHPMyAdmin będzie używać do przechowywania plików tymczasowych (nie musi być to oczywiście ten katalog:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

W następnym kroku skonfigurujemy magazyn konfiguracji phpMyadmin (baza danych).

Zaloguj się do MariaDB jako użytkownik root:

mysql -u root -p

W powłoce MariaDB utwórz nową bazę danych dla phpMyAdmin:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Następnie utwórz nowego użytkownika:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'twoje_hasło';

Zamień „twoje_hasło” na wybrane przez siebie bezpieczne hasło w poleceniach powyżej i poniżej, używaj tego samego hasła za każdym razem. Następnie udziel użytkownikowi dostęp do tej bazy danych i ponownie załaduj uprawnienia do bazy danych.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'twoje_hasło' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT

Na koniec załaduj tabele SQL do bazy danych:

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

MariaDB zażąda hasła root, wiadomo trzeba je podać ;).

Wszystko, co musimy teraz zrobić, to ustawić dane użytkownika phpmyadmin w pliku konfiguracyjnym. Ponownie otwórz plik w edytorze nano:

mano /usr/share/phpmyadmin/config.inc.php

Przewiń w dół, aż zobaczysz poniższe linie i edytuj je:

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'twoje_hasło';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Pamiętaj, że // przed liniami również należy usunąć!

Po zainstalowaniu ISPConfig 3.1 możesz uzyskać dostęp do phpMyAdmin w następujący sposób:

Vhost aplikacji ISPConfig na porcie 8081 dla nginx jest wyposażony w konfigurację phpMyAdmin, więc możesz użyć http://server1.tranzystor.pl:8081/phpmyadmin lub http://server1.tranzystor.pl:8081/phpMyAdmin, aby uzyskać dostęp do phpMyAdmin.

Let’s Encrypt instalacja

SPConfig 3.1 obsługuje darmowy urząd certyfikacji SSL Let’s encrypt. Funkcja Let’s Encrypt pozwala tworzyć bezpłatne certyfikaty SSL dla Twojej witryny z poziomu ISPConfig. Wiadomo możemy również używać płatnych certyfikatów. Instalacja jest dziecinnie prosta

cd /usr/local/bin
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --install-only

Instalacja Mailman

ISPConfig umożliwia nam zarządzanie (tworzenie/modyfikowanie/usuwanie) list mailingowych Mailman. Jeśli będziesz skorzystać z tej funkcji, zalecam w tym momencie zainstalować Mailman-a.

apt-get install mailman

Podczas instalacji wybierz co najmniej jeden język, ja wgrywam wersję PL.

Languages to support: <– pl (Polski) / en (Angielski)
Missing site list <– Ok

Zanim będziemy mogli uruchomić Mailman, musisz utworzyć pierwszą listę mailingową o nazwie mailman :

newlist mailman


root@server1:~# newlist mailman
Enter the email of the person running the list: <-- admin email mailman@tranzystor.pl
Initial mailman password: <-- hasło admina do mailman
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

## mailman mailing list
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Hit enter to notify mailman owner... <-- ENTER

root@server1:~#

Po tym utwórz /etc/aliases

nano /etc/aliases

… i dodaj następujące wiersze:


[...]
## mailman mailing list
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Zapisz plik, a następnie uruchom

newaliases

następnie zrestartuj Postfix:

systemctl restart postfix

na koniec uruchom demona Mailman:

systemctl restart mailman

Po zainstalowaniu ISPConfig 3 możesz uzyskać dostęp do Mailman w następujący sposób:

Vhost aplikacji ISPConfig na porcie 8081 dla nginx jest dostarczany z konfiguracją Mailman, więc możesz użyć następujących adresów http://server1.tranzystor.pl:8081/cgi-bin/mailman/admin/ lub http: //server1.tranzystor.pl:8081/cgi-bin/mailman/istinfo/, aby uzyskać dostęp do Mailman.

Instalacja PureFTPd and Quota

PureFTPd jak i Quota można zainstalować za pomocą następującego polecenia:
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
Następnie edytujemy plik
nano /etc/default/pure-ftpd-common
Upewnij się, że tryb „STANDALONE_OR_INETD” jest ustawiony jako samodzielny i ustaw VIRTUALCHROOT=true


[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Teraz skonfigurujemy PureFTPd, tak aby zezwalał na sesje FTP i TLS. FTP jest bardzo niepewnym protokołem, wszysto przez to, że hasła i wszystkie dane są przesyłane zwykłym tekstem. Jednak dzięki TLS cała komunikacja może być szyfrowana, dzięki czemu FTP jest znacznie bezpieczniejszy.

Jeśli chcesz zezwolić na sesje FTP i TLS, odpal

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

Aby korzystać z TLS, musimy utworzyć certyfikat SSL. Tworzę go w /etc/ssl/private/, dlatego najpierw tworzę ten katalog.

mkdir -p /etc/ssl/private/

A następnie przechodzimy do generowania certyfikatu SSL w następujący sposób.
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem


Country Name (2 letter code) [AU]: <-- wprowadz swój kraj np. PL.
State or Province Name (full name) [Some-State]:<-- wpisz województwo.
Locality Name (eg, city) []:<-- wpisz miasto .
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<-- Wprowadź nazwę organizacji (np. Tranzystor.pl).
Organizational Unit Name (eg, section) []:<-- Wprowadź nazwę jednostki organizacyjnej np. „Dział IT”
Common Name (eg, YOUR name) []:<--Wprowadź w pełni kwalifikowaną nazwę domeny systemu server1.tranzystor.pl.
Email Address []:<-- wpisz swój adres email.

Zmień uprawnienia do certyfikatu SSL:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Następnie uruchom ponownie PureFTPd:

systemctl restart pure-ftpd-mysql

Zedytuj następnie /etc/fstab . Mój wygląda tak (dodałem , usrjquota = quota.user, grpjquota = quota.group, jqfmt = vfsv0 do partycji z punktem montowania/).


# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#     
# / was on /dev/sda1 during installation
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Aby włączyć przydział, uruchom następujące polecenia:

mount -o remount /
a następnie
quotacheck -avugm
quotaon -avug

Instalacja serwera DNS BIND

BINDa można zainstalować w następujący sposób.

apt-get install bind9 dnsutils

Jeśli serwer jest maszyną wirtualną, zaleca się zainstalowanie demona haveged, aby uzyskać wyższą poziom podpisywania DNSSEC. Możesz również zainstalować haveged na fizycznych serwerach, nie powinno to zaszkodzić.

apt-get -y install haveged
systemctl enable haveged
systemctl start haveged

Instalacja Webalizer oraz AWStats

Kolejną z przydatnych aplikacji są Webalizer i AWStats można je zainstalować w następujący prosty sposób.

apt-get install webalizer awstats geoip-database libtimedate-perl libclass - dbi - mysql - perl

Następnie otwórz

nano /etc/cron.d/awstats

i za komentuj wg. poniższego wzorca


#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Instalacja Jailkit

Jailkit jest potrzebny tylko wtedy, gdy chcesz udostępniać użytkowników SSH. Można go zainstalować w następujący sposób jednak pamiętaj, że Jailkit musi zostać zainstalowany przed ISPConfig – nie można go później zainstalować!

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit-2.20
echo 5 > debian/compat
./debian/rules binary

Możesz teraz zainstalować pakiet .deb Jailkit w następujący sposób.

cd ..
dpkg -i jailkit_2.20-1_*.deb
rm -rf jailkit-2.20*

Instalacja Fail2ban oraz UFW Firewall

Jest to instalcja opcjonalna, jednak zalecana, ponieważ monitor ISPConfig umożliwia wyświetlić logi. Jednak osobiście nigdy nie pomijam tego kroku.

apt-get install fail2ban

Aby monitorować FailFan, PureFTPd i Dovecot, utwórz plik /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local
parę ustawień do wprowadzenia


[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled = true
port = smtp
filter = postfix[mode=auth]
logpath = /var/log/mail.log
maxretry = 3

po czym resetujemy File2ban

systemctl restart fail2ban

Aby zainstalować zaporę UFW, uruchom następującą komendę.

apt-get install ufw

Instalacja RoundCube

RoundCube jest to prosty panel do obsługi poczty, można go zainstalować za pomocą polecenia.

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

Instalator zada kilka pytań


Configure database for roundcube with dbconfig.common? <-- yes
MySQL application password for roundcube: <-- klapnij enter ;)
Password of the databases administrative user: <-- wprowadz hasło. 

Następnie edytujemy plik RoundCube w celu dostosowania ustawień.

nano /etc/roundcube/config.inc.php

Ustaw default_host i smtp_server na localhost.

$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';

ISPConfig ma pewną konfigurację w vhost aplikacji nginx dla squirrelmail, która działa również dla roundcube. Aktywujemy go za pomocą.

ln -s /usr/share/roundcube /usr/share/squirrelmail

Teraz możesz uzyskać dostęp do RoundCube w następujący sposób:

http://ip-serwera:8081/webmail
http://server1.tranzystor.pl:8081/webmail

oczywiście po zainstalowaniu ISPConfig.

Instalacja ISPConfig 3

No to czas na główny temat tego wpisu, instalacja ISPConfig zalecam kożystać z najnowszej wydanej wersji, w tym celu posługujemy się następującymi poleceniami.

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

następnie

php -q install.php

Instalator automatycznie skonfiguruje wszystkie podstawowe usługi, więc nie jest wymagana ręczna konfiguracja, wiadomo zada ci kilka pytań podczas samej instalacji.

Gdy instalacja zostanie ukończona dostęp do ISPConfig 3 można uzyskać w na 2 sposoby https://server1.tranzystor.pl:8080 lub https://ipserwera:8080. Domyślny login i hasło to admin a hasło admin zmień hasło zaraz po pierwszym logowaniu!

Uprzedzająć pytania, tranzystor.pl utrzymywany jest w MyDevil powyższy opis to mój poligon doświadczalny ;). Część z tych rzeczy wymaga dopieszczenia, chodziło o spisanie ogólnego postawienia serwera, dokłądnie zabezpieczenie to już inna kwestia. Tę kwestie musicie ogarnąć samemu, nie piszę tu całości ze względu, że na tym zarabiam 😉 wiadomo logiczne 😉

Szukasz więcej informacji zajrzyj na https://www.ispconfig.org/documentation

Post Author: swistak

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.