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 [email protected]
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