Instal ISPConfig di Ubuntu Server 20.04

Pendahuluan

Dalam era digital yang semakin berkembang, kehadiran dan keberadaan media daring (online) semakin penting daripada sebelumnya. Situs web, aplikasi web, dan layanan online lainnya menjadi sarana utama bagi perusahaan, instansi, individu dan organisasi untuk berkomunikasi, berbagi informasi, dan menjalankan bisnis. Bagi sebagian besar pengguna, terutama yang tidak memiliki pengetahuan teknis mendalam, mengelola sever web dan situs web mereka sendiri bisa menjadi tugas utama yang sangat rumit dan bahkan menakutkan. Disinilah web hosting control panel memainkan peran pentingnya.

Web hosting control panel adalah sebuah perangkat lunak yang dirancang untuk memudahkan pengguna dalam mengelola hosting web mereka. Ini adalah solusi yang sangat dibutuhkan dalam menyediakan akses mudah, efisien, dan terpadu ke berbagai fitur yang diperlukan untuk menjalankan situs web atau aplikasi web. Dalam konteks ini, tulisan ini akan berusaha menjelaskan mengapa web hosting control panel menjadi kebutuhan yang krusial, serta bagaimana perangkat ini memungkinkan pemilik situs dan administrator server untuk mencapai tujuan mereka dengan lebih cepat dan mudah. Dan juga tulisan ini diharapkan dapat sebagai sumber referensi dan sumber dokumentasi di Pusat Data dan Teknologi Informasi Universitas Muhammadiyah Jakarta.

Web hosting control panel tidak hanya menghilangkan hambatan teknis yang sering kali membuat bingung, tetapi juga memberikan kemampuan untuk mengatur berbagai aspek hosting web, seperti manajemen situs web, domain, database, email, dan aspek keamanan. Dengan antarmuka grafis yang sederhana, bahkan pengguna awam sekalipun dapat dengan mudah membuat dan mengelola situs web mereka, menambahkan domain baru, membuat akun email, serta memonitor kinerja server mereka.

Kemudahan penggunaan yang ditawarkan oleh web hosting control panel memungkinkan pemilik situs web untuk lebih fokus pada konten dan tujuan bisnis mereka, bukan pada aspek teknis yang rumit. Selain itu, control yang lebih baik atas keamanandan kinerja situs web juga dapat dicapai melalui fitur keamanan dan pemantauan yang disediakan oleh control panel.

Dalamera dimana keberadaan media online menjadi semakin krusial bagi kesuksesan bisnis dan expresi diri, web hosting control panel adalah alat yang dapat dihindari bagi mereka yang ingin mengelola situs webdan aplikasi web mereka secara efisien dan efektif. Dengan berbagai pilihan control panel yang tersedia, pemilik situs memiliki fleksibilitas dalam memilih solusi yang sesuai dengan kebutuhan mereka, mulai dari situs web pribadi hingga infrasturktur server perusahaan yang besar. Dengan kata lain, web hosting control panel adalah jembatan yang menghubungkan antara visi online kita dan realitas yang dapat diwujudkan.

ISPCONFIG SEBAGAI WEB HOSTING CONTROL PANEL

ISPConfig adalah salah satu web hosting control panel yang bersifat opensource yang dapat digunakan untuk mengelola server web dan hosting situs web dengan efisien. Diantara beberapa alasan penggunaan ISPConfig yaitu:

  1. Opensource dan Gratis
    ISPConfig adalah perangkat lunak opensource yang dapat digunakan tanpa biaya. Hal ini membuatnya menjadi pilihan yang ekonomis, terutama untuk pemilik situs web yang ingin menghemat biaya operasional dan ingin mengelolanya sendiri.
  2. Kontrol Penuh
    ISPConfig memberikan kontrol penuh atas server yang kita buat. Kita dapat mengatur, mengelola, dan mengkonfigurasi hamper setiap aspek server sesuai dengan kebutuhan.
  3. Antarmuka Pengguna yang Mudah
    ISPConfig dilengkapi dengan antarmuka pengguna yang sederhana dan mudah digunakan. Hal ini memungkinkan pengguna dengan berbagai tingkat keahlian teknis untuk mengelola server dan situs web dengan mudah.
  4. Manajemen Situs Web powerful
    Platform ini memungkinkan kita untuk mengelola situs web dan domain dengan mudah. Kita dapat membuat dan mengkonfigurasi banyak situs web pada satu server.
  5. Manajemen Database
    Dukungan untuk MySQL dan PostgreSQL memungkinkan kita untuk membuat, mengelola, dan mengamankan basis data dengan mudah.
  6. Manajemen Email yang Komprehensif
    Fitur lain yang disediakan oleh ISPConfig adalah manajemen email yang kuat, termasuk pembuatan akun email, penyiapan mailbox, serta filter spam dan antivirus.
  7. Manajemen Sertifikat SSL
    Pengelolaan sertifikat SSL dapat dilakukan di platform ini.
  8. Kustomisasi dan Ekstensibilitas
    Kita dapat menyesuaikandan mengkustomisasi keonfigurasi server dengan kebutuhan kita. Dan dapat juga memasang perangkat lunak tambahan sesuai kebutuhan.
  9. Komunitas yang Aktif
    Komunitas penggunanya pun sangat aktif dan dapat memberikan dukungan dan berbagai pengetahuan.
  10. Monitoring
    Pemantauan sumber daya dan keamanan pun tersedia sebagai pembantu kita dalam mengawasi server hosting yang kita buat.
  11. Manajemen Backup
    Kita dapat mengatur jadwal dan retensi backup dalam platform ini. Sehingga dapat melindungin data web yang ada.
  12. Lisensi Sumber Terbuka
    Karena sumbernya bersifat terbuka (Opensource), maka kita memiliki kendali penuh atas perangkat lunak ini dan damapt memodifikasinya sesuai kebutuhan.

Namun perlu diingat juga bahwa pilihan web hosting control panel ini juga akan bergantung pada kebutuhan dan preferensi kita. ISPConfig cocok bagi mereka yang memiliki kendali penuh atas server dan memiliki kemampuan teknis yang cukup dalam mengelolanya. Sebelum memilih platform web hosting control panel ini, perlu dipertimbangkan secara baik akankebutuhan dan tingkat keahlian dalam mengelolanya.

Persiapan

Pada kesempatan kali ini, kita akan menginstal ISPConfig sebagai web hosting control panel di dalam sistem operasi Ubuntu Server 20.04 yang telah diinstall sebelumnya. Pada tulisan ini, hostname yang akan digunakan sebgai contoh adalah server1.example.com dengan IP Address 192.168.0.100 dan gateway 192.168.0.1. IP Address dan Gateway yang digunakan ini mungkin berbeda dengan kondisi yang sebenarnya pada jaringan masing-masing, jadi silahkan menggantinya dengan settingan yang sesuai dengan kondisi jaringan masing-masing.

Perintah yang digunakan dalam penulisan ini harus dapat dijalankan dengan root permissions. Untuk menghindari penulisan sudo di setiap baris perintah, maka perlu di ubah menjadi root user dengan menjalankan perintah:

sudo -s

Update Ubuntu Server

Update file /etc/apt/sources.list. Hapus comment pada installation CD dan pastikan bahwa repository universe dan  multiverse telah aktif. Tampilannya akan tampak seperti berikut:

nano /etc/apt/sources.list 
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://de.archive.ubuntu.com/ubuntu focal main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu focal main restricted 

## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu focal-updates main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu focal-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 focal universe
# deb-src http://de.archive.ubuntu.com/ubuntu focal universe
deb http://de.archive.ubuntu.com/ubuntu focal-updates universe
# deb-src http://de.archive.ubuntu.com/ubuntu focal-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 focal multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal multiverse
deb http://de.archive.ubuntu.com/ubuntu focal-updates multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal-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 focal-backports main restricted universe multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal-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 focal partner
# deb-src http://archive.canonical.com/ubuntu focal partner 

deb http://de.archive.ubuntu.com/ubuntu focal-security main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu focal-security main restricted
deb http://de.archive.ubuntu.com/ubuntu focal-security universe
# deb-src http://de.archive.ubuntu.com/ubuntu focal-security universe
deb http://de.archive.ubuntu.com/ubuntu focal-security multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal-security multiverse

Kemudian jalankan perintah untuk update package dan database sehingga didapat pembaharuan yang terkini. Jika melihat ada kernel baru yang terinstal pada baian prose update/upgrade, maka diperlukan reboot system setelah proses selesai.

apt-get update
apt-get upgrade
reboot

Mengganti Shell Default

/bin/sh  adalah symlink yang menuju kepada /bin/dash, namun yang kita butuhkan adalah /bin/bash, bukan /bin/dash. Untuk itu kita dapat menggantinya dengan perintah:

dpkg-reconfigure dash
Use dash as the default system shell (/bin/sh)? <-- No

Jika tidak menjalankan perintah tersebut, maka ISPConfig tidak akan dapat di install kedalam server.

Menonaktifkan AppArmor

AppArmor adalah extension sebuah keamanan (security) mirip dengan SELinux yang dapat penyediakan keamanan tambahan. Namun hal ini tidak terlalu dibutuhkan dalam instalasi ISPConfig kali ini dan biasanya dapat menimbulkan masalah pada proses konfigurasi ISPConfig nanti. Untuk menonaktifkannya menggunakan perintah berikut:

service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

Menyelaraskan Sistem Waktu (Jam dan Tanggal)

Akan sangat membantu jika tangal (waktu) diselaraskan dengan server NTP (Network Time Protocol) melalui internet. Perintah yang dapat digunakan adalah:

apt-get -y install ntp

Instal Postfix, Dovecot, MariaDB, rkhunter, dan binutils

Untuk menginstal Postfix, perlu dipastikan sendmail tidak terinstal dan tidak berjalan. Untuk menghentikan service tersebut dapat menggunakan perintah berikut:

service sendmail stop; update-rc.d -f sendmail remove

Pesan error akan mucul seperti berikut:

Failed to stop sendmail.service: Unit sendmail.service not loaded.

Pesan tersebut memberitahu bahwa service sendmail tidak terpasang pada server. Selanjutnya dapat meng instal Postfix, Dovecot, MariaDB, rkhunter, dan binutils dengan satu baris perintah berikut:

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 sudo patch

selanjutnya akan muncul konfirmasi seperti berikut:

General type of mail configuration: <-- Internet Site
System mail name:
<-- server1.umj.ac.id

Penulisan nama subdomain dalam “system mail name” sangat penting. Yang diperlukan disini adalah nama subdomain seperti contoh diatas (server1.example.com) bukan nama domain teratas (example.com).

Selanjutnya adalah mengedit TLS/SSL dan port-port submission di dalam Postfix dengan perintah:

nano /etc/postfix/master.cf

Hapus komen (tanda pagar #) yang berada di bagian submission dan smtps sebagai berikut – tambahkan baris –o smtpd_client_restrictions=permit_sasl_authenticated,reject di kedua bagian dan biarkan yang lain seperti adanya.

[...]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_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       -       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=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
[...]

Lalu restart service Postfix

service postfix restart

Selanjutnya setting MySQL untuk dapat listen di semua interface, bukan hanya di localhost saja. Untuk itu edit file yang berada di /etc/mysql/mariadb.conf.d/50-server.cnf dan hapus komen (tanda pagar #) pada baris 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
[...]

Berikutnya adalah membuat password untuk MariaDB. Jalankan perintah berikut:

mysql_secure_installation

Beberapa pertanyaan akan muncul seperti berikut:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n]
<-- y
New password:
<-- Enter the new MariaDB root password here
Re-enter new password:
<-- Repeat the password
Remove anonymous users? [Y/n]
<-- y
Disallow root login remotely? [Y/n]
<-- y
Reload privilege tables now? [Y/n]
<-- y

Atur password untuk metode autentikasi MariaDB menjadi native sehingga kita dapat menggunakan PHPMyAdmin nantinya.

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Edit file /etc/mysql/debian.cnf  dan atur password root dari MySQL/MariaDB.

nano /etc/mysql/debian.cnf

Password root yang perlu ditambahkan diberi warna merah. Dalam contoh ini, passwordnya adalah “P@ssw0rd”. Ganti password tersebut dengan password yang diinginkan dengan perintah mysql_secure_installation.

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

Buka file /etc/security/limits.conf kemudian edit:

nano /etc/security/limits.conf

lalu tambahkan baris ini di akhir dari file tersebut.

mysql soft nofile 65535
mysql hard nofile 65535

Selanjutnya buat direktori baru /etc/system/system/mysql.service.d/ dengan perintah berikut:

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

dan tambahkan baris baru didalam file :

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

pastekan baris berikut ke dalam file diatas:  

[Service]
LimitNOFILE=infinity

Simpan file tersebut dan keluar dari editor. Kemudian reload service system dan MariaDB.

systemctl daemon-reload
service mariadb restart

Berikutnya adalah memeriksa apakah networking sudah running atau belum dengan perintah:

netstat -tap | grep mysql

Hasilnya akan tampak seperti berikut:

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

Install Amavisd-new, SpamAssassin, and Clamav

Untuk menginstall amavisd-new, SpamAssassin, dan ClamAV, dapat dilakukan dengan perintah berikut:

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 postgrey

Matikan service SpamAssassin untuk menambah/mengosongkan RAM.

service spamassassin stop
update-rc.d -f spamassassin remove

Untuk menjalankan ClamAV dapat menggunakan perintah:

freshclam
service clamav-daemon start

Jika terdapat pesan error seperti berikut, dapat diabaikan saja dan lanjut ke tahap berikutnya.

ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

Install Apache, PHP, phpMyAdmin, FCGI, SuExec, Pear

Apache 2.4, PHP 7.4, phpMyAdmin, FCGI, suExec, dan Pear dapat di install dengan cara berikut:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.4 php7.4-common php7.4-gd php7.4-mysql php7.4-imap phpmyadmin php7.4-cli php7.4-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear libruby libapache2-mod-python php7.4-curl php7.4-intl php7.4-pspell php7.4-sqlite3 php7.4-tidy php7.4-xmlrpc php7.4-xsl memcached php-memcache php-imagick php7.4-zip php7.4-mbstring php-soap php7.4-soap php7.4-opcache php-apcu php7.4-fpm libapache2-reload-perl

Kemudian akan muncul konfirmasi seperti berikut:

Web server to reconfigure automatically: <-- apache2
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press enter

Lalu jalankan perintah berikut untuk menjalankan modul Apache suexecrewritesslactions, dan include (dapat pula menambahkan davdav_fs, and auth_digest jika ingin menggunakan WebDAV):

a2enmod suexec rewrite ssl actions include cgi alias proxy_fcgia2enmod dav_fs dav auth_digest headers

Untuk memastikan celah keamanan pada HTTPOXY, maka perlu di matikan header HTTP_PROXY di apache. Buat sebuah config file berinama httpoxy.conf.

nano /etc/apache2/conf-available/httpoxy.conf

Kemudian salin baris berikut kedalam file tersebut:

<IfModule mod_headers.c>
    RequestHeader unset Proxy early
</IfModule>

Aktifkan file config tersebut dengan perintah:

a2enconf httpoxy

Lakukan restart pada service Apache

service apache2 restart

Install Let’s Encrypt

ISPConfig 3.2 memiliki dukungan bawaan untuk SSL Certificate Authority Let’s encrypt gratis. Fungsi dari Let’s Encrypt memungkinkan kita untuk membuat sertifikat SSL untuk website di ISPConfig.

Untuk menambahkan sertifikat let’s encrypt ini dengan perintah berikut:

apt-get install certbot

Install PureFTPd and Quota

PureFTPd dan quota dapat diinstall dengan perintah berikut:

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

Edit file /etc/default/pure-ftpd-common

nano /etc/default/pure-ftpd-common

… dan pastikan bahwa start mode telah diatur menjadi standalone dan atur pula VIRTUALCHROOT=true.

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

Selanjutnya mengkonfigurasi PureFTPd untuk dapat meng-allow sessions FTP dan TLS. FTP adalah protokol yang sangat tidak aman dikarenakan semua password dan data dikirim menggunakan clear text. Dengan menggunakan TLS, semua komunikasi data dapat di encrypt, sehingga penggunaan FTP dapat menjadi lebih aman dari sebelumnya.

Untuk mengaktifkan FTP dan TLS dapat menggunakan perintah berikut:

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

Untuk dapat menggunakan TLS, kita harus membuat sebuah sertifikat SSL terlebih dahulu. Dalam hal ini pembuatan sertifikat SSL di letakan di dalam folder /etc/ssl/private/.

mkdir -p /etc/ssl/private/

Setelahnya kita dapat meng-generate sertifikat SSL dengan perintah:

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]: <-- Masukan Inisial Negara (contoh., "ID").
State or Province Name (full name) [Some-State]:<-- Masukan nama negara bagian atau provinsi.
Locality Name (eg, city) []:<-- Masukan nama kota.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<-- Masukan nama organisasi (contoh., Example Co).
Organizational Unit Name (eg, section) []:<-- Masukan nama unit bagian (contoh. "IT Div").
Common Name (eg, YOUR name) []:<-- Masukan Fully Qualified Domain Name (contoh. "server1.example.com").
Email Address []:<-- Masukan Email Address.

Ubah permission dari sertifikat SSL:

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

Kemudian restart PureFTPd:

service pure-ftpd-mysql restart

Edit file /etc/fstab. Akan terlihat seperti berikut (pada kali ini ditambahkan baris perintah berikut ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 pada partition dengan moun point / :

nano /etc/fstab # /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).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/server1--vg-root / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
/dev/mapper/server1--vg-swap_1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0

Untuk mengaktifkan quota dapat menjalankan perintah berikut:

mount -o remount /
quotacheck -avugm
quotaon -avug

Hasil nya akan tampak seperti berikut:

root@server1:/tmp# quotacheck -avugm
quotacheck: Scanning /dev/mapper/server1--vg-root [/] done
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Checked 13602 directories and 96597 files
quotacheck: Old file not found.
quotacheck: Old file not found.
root@server1:/tmp# quotaon -avug
/dev/mapper/server1--vg-root [/]: group quotas turned on
/dev/mapper/server1--vg-root [/]: user quotas turned on

Install BIND DNS Server

BIND dapat di install dengan cara berikut:

apt-get -y install bind9 dnsutils haveged

Mengaktifkan haveged Daemon:

systemctl enable haveged
systemctl start haveged

Install Vlogger, Webalizer, AWStats and GoAccess

Vlogger, Webalizer, dan AWStats dapat di install dengan cara berikut:

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

Install versi terbaru dari GoAccess yang diambil langsung dari repository GoAccess:

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
sudo apt-get update
sudo apt-get install goaccess

Buka file /etc/cron.d/awstats …

nano /etc/cron.d/awstats

… kemudian hapus comment yang terdapat pada file tersebut:

#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

Install Jailkit

Jailkit digunakan untuk membatasi shell users dan cronjobs pada ISPConfig. Gunakan perintah apt untuk meng-intall jailkit:

apt-get -y install jailkit

Install fail2ban and UFW

Aplikasi ini adalah hanya pendukung tidak bersifat wajib. Tetapi direkomendasikan karena karena untuk membantu ISPConfig dalam memonitor log:

apt-get -y install fail2ban

Untuk dapat memonitor PureFTPd dan Dovecot menggunakan fail2ban, dapat dilakukan dengan membuat file /etc/fail2ban/jail.local terlebih dahulu:

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  = truep
ort     = smtp
filter   = postfix
logpath  = /var/log/mail.log
maxretry = 3

Selanjutnya restart fail2ban:

service fail2ban restart

Untuk menginstall firewall UFW, jalankan perintah berikut:

apt-get install ufw

Install ISPConfig 3.2

Selanjutnya akan menginstall ISPConfig 3.2 stable build dengan cara berikut:

cd /tmp
wget -O ispconfig.tar.gz https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ispconfig.tar.gz
cd ispconfig3*/install/

Langkah selanjutnya adalah menjalankan:

php -q install.php

Perintah tersebut akan menjalankan proses installasi ISPConfig.

# php -q install.php

--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------
>> Initial configurationOperating System: Ubuntu 20.04.1 LTS (Focal Fossa)Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.
Select language (en,de) [en]:
<-- Hit EnterInstallation mode (standard,expert) [standard]: <-- Hit EnterFull qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.canomi.com]: <-- Hit EnterMySQL server hostname [localhost]: <-- Hit EnterMySQL server port [3306]: <-- Hit EnterMySQL root username [root]: <-- Hit EnterMySQL root password []: <-- Enter your MySQL root passwordMySQL database to create [dbispconfig]: <-- Hit EnterMySQL charset [utf8]: <-- Hit EnterConfiguring Postgrey
Configuring Postfix
Generating a 4096 bit RSA private key
.......................................................................++
........................................................................................................................................++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
<-- Enter 2 letter country code
State or Province Name (full name) [Some-State]:
<-- Enter the name of the  state
Locality Name (eg, city) []:
<-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
<-- Enter company name or press enter
Organizational Unit Name (eg, section) []: 
<-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []:
<-- Enter the server hostname, in my case: server1.example.com
Email Address []: 
<-- Hit Enter
Configuring Mailman
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring BIND
Configuring Jailkit
Configuring Pureftpd
Configuring Apache
Configuring vlogger
Configuring Metronome XMPP Server
writing new private key to 'localhost.key'
-----
Country Name (2 letter code) [AU]: 
<-- Enter 2 letter country code
Locality Name (eg, city) []: 
<-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: 
<-- Enter company name or press enter
Organizational Unit Name (eg, section) []: 
<-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) [server1.canomi.com]: 
<-- Enter the server hostname, in my case: server1.example.com
Email Address []: 
<-- Hit EnterConfiguring Ubuntu Firewall
Configuring Fail2ban
[INFO] service OpenVZ not detected
Configuring Apps vhost
Installing ISPConfig
ISPConfig Port [8080]:Admin password [admin]:Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: 
<-- Hit EnterGenerating RSA private key, 4096 bit long modulus
.......................++
................................................................................................................................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: 
<-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: 
<-- Enter the name of the  state
Locality Name (eg, city) []: 
<-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: 
<-- Enter company name or press enter
Organizational Unit Name (eg, section) []: 
<-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: 
<-- Enter the server hostname, in my case: server1.example.com
Email Address []: 
<-- Hit EnterPlease enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: 
<-- Hit Enter
An optional company name []: 
<-- Hit Enter
writing RSA keySymlink ISPConfig LE SSL certs to postfix? (y,n) [y]:  
<-- Hit EnterSymlink ISPConfig LE SSL certs to pureftpd? Creating dhparam file takes some times. (y,n) [y]:  <-- Hit EnterGenerating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.............................................................+.........................................................................................................................................................................+...................
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

Installer tersebut akan secara otomatis mengkonfigurasi kebutuhan-kebutuhan mendasar dari ISPConfig. Tidak ada konfigurasi yang dilakukan secara manual disini.

Selanjutnya setelah proses installasi selesai. ISPConfig dapat di akses melalui halaman website pada browser dengan alamat http(s)://server1.example.com:8080 atau http(s)://192.168.0.100:8080 .

Login dapat dilakukan dengan menggunakan username: admin dan password: admin.

Sistem telah siap digunakan.

Sumber : https://howtoforge.com