W dzisiejszym poradniku opiszę proces przygotowania w pełni działającego serwera webowego wraz z darmowym panelem do zarządzania ISPConfig.
Poradnik został przygotowany pod najnowszą wersję Ubuntu 18.04
Na początek dokonujemy zmiany hostname systemu. Krok ten opisywałem w tym poradniku.
Logujemy się na konto root poleceniem:
sudo -s
I wpisujemy hasło. Następnie instalujemy nasz ulubiony edytor plików tekstowych dla przykładu nano:
apt-get install nano
Kolejnym krokiem jest ustawienie repozytoriów w pliku /etc/apt/sources.list
wykonujemy je poleceniem:
nano /etc/apt/sources.list
Plik powinien wyglądać następująco:
# # deb cdrom:[Ubuntu-Server 18.04 LTS _Bionic Beaver_ - Release amd64 (20180425.1)]/ bionic main restricted #deb cdrom:[Ubuntu-Server 18.04 LTS _Bionic Beaver_ - Release amd64 (20180425.1)]/ bionic main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://de.archive.ubuntu.com/ubuntu/ bionic main restricted # deb-src http://de.archive.ubuntu.com/ubuntu/ bionic main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates main restricted # deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://de.archive.ubuntu.com/ubuntu/ bionic universe # deb-src http://de.archive.ubuntu.com/ubuntu/ bionic universe deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates universe # deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://de.archive.ubuntu.com/ubuntu/ bionic multiverse # deb-src http://de.archive.ubuntu.com/ubuntu/ bionic multiverse deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates multiverse # deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://de.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse # deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse ## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. # deb http://archive.canonical.com/ubuntu bionic partner # deb-src http://archive.canonical.com/ubuntu bionic partner deb http://security.ubuntu.com/ubuntu bionic-security main restricted # deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted deb http://security.ubuntu.com/ubuntu bionic-security universe # deb-src http://security.ubuntu.com/ubuntu bionic-security universe deb http://security.ubuntu.com/ubuntu bionic-security multiverse # deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse
Następnie dokonujemy aktualizacji repozytoriów oraz aktualizacji systemu:
apt-get update apt-get upgrade
Dla pewności poprawnego działania systemu i zapisania wszystkich zmian dokonujemy restartu systemu poleceniem:
reboot
Po restarcie ponownie logujemy się do systemu na konto root i dokonujemy zmiany powłoki systemu.
Wykonamy to poleceniem:
dpkg-reconfigure dash
W komunikacie zaznaczamy opcję no czyli nie:
Use dash as the default system shell (/bin/sh)?Wyłączamy AppArmor
AppArmor to rozszerzenie bezpieczeństwa (podobne do SELinux), które powinno zapewniać rozszerzone zabezpieczenia. Sprawdzimy, czy jest zainstalowany, i jeśli to konieczne, usuniemy go. Moim zdaniem nie potrzebujemy go do skonfigurowania bezpiecznego systemu i zwykle powoduje więcej problemów niż korzyści.
Dezaktywacji dokonamy wydając polecenia:
service apparmor stop update-rc.d -f apparmor remove apt-get remove apparmor apparmor-utilsSynchronizujemy czas na serwerze z serwerem NTP
apt-get -y install ntp ntpdateInstalacja Postfix, Dovecot, MariaDB, phpMyAdmin, rkhunter, Binutils
Tutaj drobna uwaga aby zainstalować posfixa niezbędne jest odinstalowanie sendmaila. Wykonamy to poleceniem:
service sendmail stop; update-rc.d -f sendmail removeNastępnie instalujemy wszystkie pakiety:
apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudoInstalator poprosi nas o wybranie 2 opcji które zaznaczamy jak poniżej:
General type of mail configuration:Uruchamiamy TLS /SSL w postfix
Edytujemy plik:
nano /etc/postfix/master.cfI od komentujemy sekcję smtpd_client_restrictions=permit_sasl_authenticated,reject
Całość powinna wyglądać jak poniżej:
[...] 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=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=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING [...]Po wykonaniu zmian dokonujemy restartu posfixa
service postfix restartChcemy, aby MariaDB / MySQL nie tylko na localhost. Dlatego edytujemy plik /etc/mysql/mariadb.conf.d/50-server.cnf (dla MariaDB lub /etc/mysql/my.cnf (dla MySQL) i zakomentuj linię bind-address = 127.0.0.1:
nano /etc/mysql/mariadb.conf.d/50-server.cnfDodajemy # przy bind-address
[...] # 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 [...]Ustawiamy hasło root serwera mysql oraz przechodzimy podstawową konfigurację wydając polecenie:
mysql_secure_installationOdpowiadamy na pytania jak poniżej:
Enter current password for root (enter for none):Ustawiamy metodę uwierzytelniania hasła na natywną, abyśmy mogli później do PHPMyAdmin połączyć się jako użytkownik root:
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root
Modyfikacja pliku /etc/mysql/debian.cnf i ustawienie hasła root
nano /etc/mysql/debian.cnfPoniżej zmodyfikowany plik wygląda tak:
# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = root password = HASLO ROOT socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = root password = HASLO ROOT socket = /var/run/mysqld/mysqld.sock basedir = /usrEdytujemy plik /etc/mysql/my.cnf i Haszujemy nasłuch lokalny Mysql
nano /etc/mysql/my.cnfPlik powinien wyglądać jak poniżej:
[...] # 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 [...]Dokonujemy restartu serwera mysql poleceniem:
service mysql restartInstalacja Amavisd-new, SpamAssassin, And ClamAV
apt-get -y install amavisd-new spamassassin clamav clamav-daemon 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 postgreyAby zaktualizować sygnatury antywirusowe ClamAV i uruchomić usługę Clamd wydajemy następujące polecenia:
freshclam service clamav-daemon startAktualizacja bazy wirusów może trochę potrwać należy cierpliwie poczekać.
Poniższy błąd można zignorować przy pierwszym uruchomieniu freshclam.
ERROR: /var/log/clamav/freshclam.log is locked by another process ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).Program amavisd-new zawiera obecnie błąd w Ubuntu 18.04, który uniemożliwia prawidłowe podpisanie e-maili z Dkim. Uruchom następujące polecenia, aby załączyć amavisd-new.
cd /tmp wget https://git.ispconfig.org/ispconfig/ispconfig3/raw/stable-3.1/helper_scripts/ubuntu-amavisd-new-2.11.patch cd /usr/sbin cp -pf amavisd-new amavisd-new_bak patchDokonujemy instalacji Nginx, PHP 7.2 (PHP-FPM), oraz Fcgiwrap
Nginx instalujemy poleceniem:
apt-get install nginxUsuwamy serwer www Apache:
service apache2 stop update-rc.d -f apache2 removeUruchamiamy serwer Nginx
service nginx startInstalujemy PHP
apt-get -y install php7.2-fpmNastępnie wyszukujemy moduły php i dokonamy ich instalacji.
apt-cache search php7.2apt-get -y install php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap php7.2-cli php7.2-cgi php-pear mcrypt imagemagick libruby php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl memcached php-memcache php-imagick php-gettext php7.2-zip php7.2-mbstring php-soap php7.2-soapEdytujemy plik php.ini
Dokonujemy zmian 2 linijkach
nano /etc/php/7.2/fpm/php.iniI zmieniamy:
cgi.fix_pathinfo=0Oraz
date.timezone="Europe/Warsaw"Dokonujemy przeładowania php poleceniem:
service php7.2-fpm reloadInstalujemy pakiet FCIWRAP dzięki niemu ISPConfig zajmie się poprawną konfiguracją vhost.
apt-get -y install fcgiwrapInstalujemy i konfigurujemy phpMyAdmin
apt-get -y install phpmyadmin php-mbstring php-gettextI konfigurujemy
Web server to reconfigure automatically:Instalacja Let's Encrypt
apt-get -y install certbot certbot registerISPConfig pozwala również zarządzać (tworzyć / modyfikować / usuwać) listy mailingowe Mailman. Jeśli chcesz skorzystać z tej funkcji, zainstaluj Mailman w następujący sposób:
apt-get -y install mailmanWybierz co najmniej jeden język, np .:
Languages to support:Wykonujemy polecenie i odpowiadamy na pytania
newlist mailmanroot@server1:~# newlist mailman Enter the email of the person running the list:Hit enter to notify mailman owner...root@server1:~#
edytujemy plik /etc/aliases i dodajemy:
nano /etc/aliases## 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"Przeładowujemy, restatartujemy postfixa i uruchamiamy mailmana
newaliases service postfix restart service mailman startInstalujemy PureFTPd oraz Quota
apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatoolEdytujemy plik /etc/default/pure-ftpd-common i ustawiamy w następujący sposób
nano /etc/default/pure-ftpd-common[...] STANDALONE_OR_INETD=standalone [...] VIRTUALCHROOT=true [...]Uruchamiamy TLS oraz SSL dla serwera FTP:
echo 1 > /etc/pure-ftpd/conf/TLSmkdir -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.pemPodajemy swoje dane jak poniżej:
Country Name (2 letter code) [AU]:Nadajemy chmod i restartujemy serwer FTP
chmod 600 /etc/ssl/private/pure-ftpd.pem service pure-ftpd-mysql restartInstalacja serwer DNS BIND
apt-get -y install bind9 dnsutils havegedsystemctl enable haveged service haveged startInstalacja Vlogger, Webalizer, oraz AWStats
apt-get -y install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perlDokonujemy edycji w pliku /etc/cron.d/awstats i komentujemy go w sposób podany poniżej:
nano /etc/cron.d/awstats#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.shInstalacja Jailkit
apt-get -y install build-essential autoconf automake1.11 libtool flex bison debhelper binutilscd /tmp wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz tar xvfz jailkit-2.19.tar.gz cd jailkit-2.19 echo 5 > debian/compatObecna wersja Jailkit 2.19 ma błąd składniowy, który uniemożliwia jej kompilację. Aby to naprawić, otwórz plik debian / changelog za pomocą nano:
nano debian/changelogI dodaj następujący wiersz w linii 5, a następnie pusty wiersz:
-- Olivier Wed, 18 Nov 2015 20:38:44 +0100Dokonujemy rekompilacji
./debian/rules binary cd .. dpkg -i jailkit_2.19-1_*.deb rm -rf jailkit-2.19*Instalujemy Fail2Ban oraz UFW
apt-get -y install fail2banapt-get -y install ufuNastępnie tworzymy plik:/etc/fail2ban/jail.local o następującej zawartości:
nano /etc/fail2ban/jail.local[pure-ftpd] enabled = true port = ftp filter = pure-ftpd logpath = /var/log/syslog maxretry = 3 [dovecot] enabled = true filter = dovecot action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp] logpath = /var/log/mail.log maxretry = 5 [postfix] enabled = true port = smtp filter = postfix logpath = /var/log/mail.log maxretry = 3Dokonujemy przeładowania usługi
s
ervice fail2ban restartInstalacja Webmaila Roundcube
apt-get -y install roundcube roundcube-core roundcube-mysql roundcube-plugins javascript-common libjs-jquery-mousewheel php-net-sieve tinymcePodczas konfiguracji wybieramy następująco:
Configure database for roundcube with dbconfig-common?Edytujemy plik /etc/roundcube/config.inc.php i zmieniamy domyślny host
nano /etc/roundcube/config.inc.php$config['default_host'] = 'localhost';Instalacja ISPConfig 3.1
Dla pewności zatrzymujemy Apache, usuwamy go i restartujemy Nginx
service apache2 stop update-rc.d -f apache2 remove service nginx restartNastępie Pobieramy najnowszą wersję ISPConfig i ją rozpakowujemy.
cd /tmp wget -O ispconfig.tar.gz https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.1 tar xfz ispconfig.tar.gz cd ispconfig3*/install/Uruchamiamy skrypt instalacyjny:
php -q install.phpOdpowiadamy na pytania jak poniżej:
-------------------------------------------------------------------------------- _____ ___________ _____ __ _ ____ |_ _/ ___| ___ \ / __ \ / _(_) /__ \ | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ / | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ | _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \ \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/ __/ | |___/ -------------------------------------------------------------------------------- >> Initial configuration Operating System: Ubuntu 18.04 LTS (Bionic Beaver) Following will be a few questions for primary configuration so be careful. Default values are in [brackets] and can be accepted with . Tap in "quit" (without the quotes) to stop the installer. Select language (en,de) [en]:Gotowe skrypt został zainstalowany i jest dostępny pod adresem https://ipserwera:8080
Domyślne dane do panelu to login admin hasło admin
Takim sposobem mamy w pełni działający i skonfigurowany serwer www raz z serwerem poczty bazami danych i ftp.
Źródło: https://www.howtoforge.com/tutorial/perfect-server-ubuntu-18.04-with-apache-php-myqsl-pureftpd-bind-postfix-doveot-and-ispconfig/
Poniższy poradnik opisuje sposób instalacji KeePass w systemie Ubuntu. Całość wykonamy za pomocą kilku poleceń…
Master PDF Editor to wszechstronny program PDF, który zawiera wiele funkcji. Oprócz tworzenia i edycji…
Iotop jest prostym narzędziem dla systemów Uniksowych umożliwiającym monitorowanie użycia dowolnego nośnika pamięci flash/hdd/ssd w…
Możesz oddzielić dwa lub więcej poleceń za pomocą średników (;), Średnik (;): służy do oddzielania…
Poniższy poradnik opisuje w jaki sposób za pomocą konsoli możemy dokonać edycji danych zdjęcia exif.…
Poniższy poradnik opisuje sposób instalacji Rocket.Chat W systemie Rocky Linux 8 Całość bardzo prosto zainstalujemy…
Zobacz komentarze
Cześć,
Na wstępie dziękuję za poradnik, spadł mi z nieba :)
Mam jednak problem: w punkcie gdzie: nano /etc/postfix/master.cf
Moja konfiguracja nieco się różni od Twojej, np. nie mam w ogóle opcji smtpd_client_restrictions=permit_sasl_authenticated,reject
Dołączam to co mam:
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
smtp inet n - y smtpd
#smtp inet n y 1 postscreen
#smtpd pass - y smtpd
#dnsblog unix - y 0 dnsblog
#tlsproxy unix - y 0 tlsproxy
#submission inet n y smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=ftua_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_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=ftua_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
#628 inet n y qmqpd
pickup unix n y 60 1 pickup
cleanup unix n y 0 cleanup
qmgr unix n n 300 1 qmgr
Czy coś źle zrobiłem na poprzednim etapie? Czy po prostu jest to nowsza wersja postfixa i coś się inaczej nazywa?
Jest to zapewne nowsza wersja ;)
Poradnik na już trochę czasu.
O ile od komentujesz to co podałem w poradniku całość będzie działać poprawnie :)
Zauważ że przy swoich wpisach masz #hasz
Wkradł się błąd w kodzie z pliku:
nano /etc/mysql/my.cnf
Bowiem w okienku widnieje treść pliku:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Dzięki za informację.!
Jakoś tak bliźniaczo wygląda
https://www.howtoforge.com/tutorial/perfect-server-ubuntu-18.04-with-apache-php-myqsl-pureftpd-bind-postfix-doveot-and-ispconfig/
:D
Pewnie.
Na czymś wzorować się trzeba. Nie każdy jest biegły w Angielskim żeby wiedział co robi w danym poradniku ;)
Powinieneś podać źródło. A tak to wyszedł plagiat.
Faktycznie.
Gotowe.
Witam,
niestety po przeprowadzeniu w całości tutka, serwer postfix działa oraz ispconfig ale niestety nie działa ani phpmyadmin ani roundcube. Druga kwestia tyczy się tego, że mam domenę w az.pl i nie bardzo wiem w jaki sposób ją skierować na swój serwer w domu. Mam zmienny adres ip ale zmienia się on co kilka miesięcy. Czy jest ktoś w stanie mi pomóc w konfiguracji serwera ?
Po instalacji, nie idzie zainstalować żadnego innego php błąd:
dpkg: error processing package pure-ftpd-mysql (--configure):
installed pure-ftpd-mysql package post-installation script subprocess returned error exit status 127
Errors were encountered while processing:
pure-ftpd-mysql
A Spróbuj:
apt-get install -y inetutils-inetd
update-inetd
oraz
apt --fix-broken install