כל הזכויות שמורות לטל בן שושן – Shushan.co.il
התקנת שרת ISPConfig ורכיביו Linux ISPConfig Server (Apache MySql PhpMyAdmin PostFix Dovecot, Email)
ISPConfig הוא אחד מפאנלי הניהול לWeb החינמיים המפורסמים ביותר כמו Sentora ו VestaCP(שכתבתי עליהם באתר) ISPConfig הוא למעשה פאנל ניהול לשרתי Web ומטרתו העיקרית היא לאחסן אתרי אינטרנט
היתרון של פאנל ניהול הוא האפשרות שלא להתעסק עם קבצי הגדרות של המערכות השונות כמו DNS , גיבויים, סטטיסטיקות, שירותי הדומיינים וצורת האחסון של האתרים השונים, על ידי כך שהוא פאנל ניהול הוא יכול להקל ביצירת אתרי אינטרנט מרובים באותו השרת, הגדרת כתובת IP חיצונית אחת לשרת ולהניח כמה אתרים שיפנו אליו, הקלות שביצירת תיבות דואר והאפליקציות כמו Roundcube (אפליקציה לקריאת מיילים) האפשרות לשחק עם הDNS יצירת מסדי נתונים בקלות ולהחיל את האפשרויות באותו הרגע, נוסף על כך נותן למנהל המערכת אפשרות לפקח ביתר קלות על האחסון, התעבודה, השימוש בשרת ולבקר בכללי את הפעילויות השוטופות.
ההתקנה היא לא אוטומטית כמו שאתם כנראה רגילים מפאנלי ניהול ווב אחרים ולכן קצת ארוכה:
במאמר זה נראה כיצד להתקין שרת Email ב CentOS 7, שרת מלא הכולל את Apache MySql PhpMyAdmin PostFix Dovecot, כלים אלו נותנים לנו שרת אימייל, שרת ווב, ואפליקציה לקבל דואר ולשליחה.
תחילה הסברים על מה נתקין ומה כל דבר עושה:
ISPCconfig – הוא פאנל ניהול לאחסון אתרים, שרת מייל, FTP Server הוא כלי יעיל מאוד
Apache – נתחיל בהתקנת שרת Apache -אך ניתן לקרוא במאמר זה מהו Apache ובמאמר זה ניתן להתקין Apache ו WordPress אך נוסף נתקין גם שרת MySql (שגם מוסבר במאמר השני מהו)
Dovecot – הוא שרת מייל Open-Source שמשתמש בפרוטוקולים כמו IMAP ו POP3 הוא שולט בכ-70 אחוז משוק שרתי המייל הלינוקסאי ומותקן במעל 4 מיליון שרתי לינוקס
PostFix – הוא Mail Relay, הוא אחראי על קבלת המייל והעברה שלו ליעד הנכון.
amavisd-new –הוא סורק אנטי וירוס למייל וגם מבצע חסימת SPAM
SpamAssassin – חוסם SPAM מעולה בנוסף ל amavisd-new
Postgrey – חוסם SPAM על בסיס ניסיון זיוף של כתובת המוען
ClamAV – הוא סורק אנטי וירוס במערכת עצמה ובשרת המיל
BIND – הוא DNS מסוג OpenSource
Apache – Mysql – PhpMyAdmin – Php
קודם נבטל את SELinux
[root@localhost ~]# vi /etc/selinux/config
בשורה
SELINUX=enforcing
שנו ל
SELINUX=disabled
שמרו ובצעו ריסטארט לשרת
[root@localhost ~]# reboot
נוסיף את שם הדומיין שלנו לשרת (אם יש צורך גם במחשב ווינדוס בכדי לבדוק שהכל תקין, שנו את קובץ ה Hosts)
[root@localhost ~]# vi /etc/hosts
הוסיפו בסוף שורה חדשה
192.168.1.100 yourdomain.com
שמרו וצאו
כעת נתקין את Apache , נבדוק מה הכתובת שלנו
[root@localhost ~]# ifconfig
הIP שלנו – (שלי הוא 192.168.1.100)
נתקין את Epel repository על מנת שנוכל להתקין את כל מה שצריך בהמשך
yum install epel-release
כעת נתחיל בהתקנת Apache2
yum -y install httpd
נפעיל את Apache2
systemctl start httpd
נגדיר אותו שיפעל גם כאשר המכונה מבצעת ריסטארט
systemctl enable httpd
כעת נפתח אותו ב Firewall
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload
ונבדוק שהכל תקין, נפתח את הדפדפן במחשב ונראה שהכל תקין
http://192.168.1.100/
מעולה!
כעת נתקין את PhpMyAdminהכולל את MySQL
[root@localhost ~]# yum -y install phpmyadmin
ונתקין את מודל ה PHP
[root@localhost ~]# yum -y install php
כעת על מנת שנוכל לגשת ל PhpMyAdmin עלינו לאפשר גישה
נערוך את קובץ ההגדרות
[root@localhost ~]# vi /etc/httpd/conf.d/phpMyAdmin.conf
ושם בהתחלה יש את השורה
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
נחליף את כל השורה ב:
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
#Require ip 127.0.0.1
#Require ip ::1
Require all granted
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
כעת שמרו את הקובץ, ובצעו ריסט לApache
[root@localhost ~]# systemctl restart httpd
כעת ניכנס לקישור
http://Your_Server_IP/phpmyadmin/
ונגיע לחלון הבא:
כעת נתקין את MySql
נתקין תחילה את wget
[root@localhost ~]# yum -y install wget
כעת נוריד את ההתקנה
[root@localhost ~]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
נתקי את ה RPM
[root@localhost ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
עכשיו נשתמש בyum על מנת להתקין את ה mysql
[root@localhost ~]# yum install mysql-server
נפעיל כעת את הDeamon של Mysql
[root@localhost ~]# systemctl start mysqld
כעת נשיג את הסיסמא של המנהל של PhpMyAdmin
[root@localhost ~]# mysql_secure_installation
כעת הוא ישאל אותם האם יש סיסמא או אין סיסמא כרגע לroot, בגלל שההתקנה חדשה אין סיסמא לכן לחצו רק Enter
Enter current password for root (enter for none):
כעת הוא ישאל האם תרצו להגדיר סיסמא, לחצו y ואז Enter
Set root password? [Y/n] y
כעת הגדירו סיסמא, לאחר הסיסמא לחצו Enter לכל השאלות עד אשר ההגדרה תסתיים
Thanks for using MySQL! Cleaning up...
נגדיר לשירות ה Mysqld לעבוד גם לאחר ריסטארט
[root@localhost ~]# systemctl enable mysqld
כעת יש לנו PHP, MySql, PhpMyAdmin, Apache
Dovecot
כעת נתקין Dovecot
[root@localhost ~]# yum -y install dovecot dovecot-mysql dovecot-pigeonhole
ניצור כעת קובץ הגדרות ל Dovecot
[root@localhost ~]# touch /etc/dovecot/dovecot-sql.conf
ניצור לו סימבוליק לינק על מנת שהוא יטען את קובצי ההגדרות הללו
[root@localhost ~]# ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf [root@localhost ~]# ln -s /etc/dovecot/dovecot.conf /etc/dovecot.conf
נתחיל את השירות
[root@localhost ~]# systemctl start dovecot
נאפשר לו לרוץ כל הפעלה מחדש
[root@localhost ~]# systemctl enable dovecot
Postfix
[root@localhost ~]# yum -y install postfix
כעת נבטל את sendmail שהוא שירות MailRelay אחר שלא נשתמש בו
[root@localhost ~]# systemctl stop sendmail.service [root@localhost ~]# systemctl disable sendmail.service
ונפעיל את postfix ונפאשר לו לעלות בהפעלה
[root@localhost ~]# systemctl enable postfix.service [root@localhost ~]# systemctl restart postfix.service
כעת נתקין את getmail הוא שירות אחזור הודעות מייל ממש כמו בExchange
[root@localhost ~]# yum -y install getmail
SpamAssassin, ClamAV, Postgrey, Amavisd-new
נתקין את כל שירותי האנטי ספאם והאנטי וירוס במכה אחת
[root@localhost ~]# yum -y install re2c perl-DBD-mysql unzip amavisd-new spamassassin clamav-server clamav-scanner-systemd clamav-data clamav-update clamav-filesystem clamav clamav-devel clamav-lib clamav-server-systemd bzip2 postgrey
כעת נפעיל את Calmv כך שיתעדכן אוטומטית
כעת נערוך את
vi /etc/sysconfig/freshclam
בשורה האחרונה הוסיפו בסוף #
# FRESHCLAM_DELAY= #
שמרו וצאו, כעת בצעו עדכון וריסטארט לשירות
[root@localhost ~]# sa-update
[root@localhost ~]# systemctl enable postgrey.service [root@localhost ~]# systemctl enable amavisd.service [root@localhost ~]# systemctl start amavisd.service [root@localhost ~]# systemctl start postgrey.service
Mod_Php, PHP5 & Lets Encrypt More
כעת נתקין את כל המודלים של PHP
[root@localhost ~]# yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel php-fpm wget
נערוך את קובץ ה php.ini
[root@localhost ~]# vi /etc/php.ini
נחפש בקובץ על ידי לחיצה על / ואז נכתוב date.timezone
בשורה זו נסיר את ; ונוסיף Asia/Jerusalem
;date.timezone = Asia/Jerusalem
באותה שיטת חיפוש נחפש את cgi.fix_pathinfo=1 ואצלו נסיר את ה;
;cgi.fix_pathinfo=1
נתחיל את שירות ה
[root@localhost ~]# systemctl start php-fpm.service
ונבצע ריסטארט לשירות ה Apache
[root@localhost ~]# systemctl restart httpd.service
כעת נתקין את שירות Lets Encrypt שעוזר לנו להצפין את תעבורת המייל ו ISPConfig תומך בו
[root@localhost ~]# mkdir /opt/certbot [root@localhost ~]# cd /opt/certbot [root@localhost certbot]# wget https://dl.eff.org/certbot-auto [root@localhost certbot]# chmod a+x ./certbot-auto
לאחר שהורדנו את זה לתיקייה certbot נתקין
[root@localhost certbot]# ./certbot-auto
בסיום הוא ישאל מה האימייל שלכם, הקישו c (ביטול) שכן התעודות יווצרו על ידי ispconfig
כעת נחזור root
[root@localhost certbot]# cd
כעת נוריד ונתקין את Mod_Python
[root@localhost ~]# wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz
נוציא אותו מחילוץ
[root@localhost ~]# tar xfz mod_python-3.5.0.tgz
נכנס אליו
[root@localhost ~]# cd mod_python-3.5.0 [root@localhost ~]# ./configure [root@localhost ~]# make
אם קיבלתם שגיאה הקישו
[root@localhost ~]# sed -e 's/(git describe –always)/(git describe –always 2>\/dev\/null)/g' -e 's/`git describe –always`/`git describe –always 2>\/dev\/null`/g' -i $( find . -type f -name Makefile\* -o -name version.sh )
כעת נתקין
[root@localhost ~]# make install
כעת נכניס אותו כחלק ממודל הApache
[root@localhost ~]# echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf
וריסטארט ל Apache
[root@localhost ~]# systemctl restart httpd.service
נחזור על ידי הפקודה cd
[root@localhost ~]# cd
PureFTP
כעת נתקין את שירות ה FTP
[root@localhost ~]# yum -y install pure-ftpd
[root@localhost ~]# systemctl enable pure-ftpd.service [root@localhost ~]# systemctl start pure-ftpd.service
SSL לא חובה אך מי שרוצה להתקין
[root@localhost ~]# yum install openssl [root@localhost ~]# vi /etc/pure-ftpd/pure-ftpd.conf [root@localhost ~]# mkdir -p /etc/ssl/private/
חפשו על ידי / את השורה
TLS 1
והסירו את ה #
#TLS 1
הקישו את הפקודה על מנת ליצור את המפתח ואת התעודה
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) [XX]:IL State or Province Name (full name) []:Israel Locality Name (eg, city) [Default City]:Jerusalem Organization Name (eg, company) [Default Company Ltd]:Shushan Organizational Unit Name (eg, section) []:Tal Common Name (eg, your name or your server's hostname) []:talbenshushan.com Email Address []:tal@shushan.co.il
נשנה את הרשאות התיקייה
[root@localhost ~]# chmod 600 /etc/ssl/private/pure-ftpd.pem
BIND
[root@localhost ~]# yum -y install bind bind-utils haveged [root@localhost ~]# cp /etc/named.conf /etc/named.conf_Backup
הקישו את הפקודה
[root@localhost ~]# cat /dev/null > /etc/named.conf
[root@localhost ~]# vi /etc/named.conf
הזינו את כל הטקסט הבא לתוך המסמך (זה הגדרת שרת ה DNS שלנו כחלק מהמערכת)
// // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; allow-recursion {"none";} ;recursion no; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; };
include "/etc/named.conf.local";
כעת ניצור קובץ שאליו יוסיף מנהל ה ISPCONFIG את הרשומות DNS החדשות
[root@localhost ~]# touch /etc/named.conf.local
כעת הגדירו את התהליכים שלו שיעלו לאחר ריסטארט והפעילו אותם מחדש
[root@localhost ~]# systemctl enable named.service [root@localhost ~]# systemctl enable haveged.service [root@localhost ~]# systemctl start named.service [root@localhost ~]# systemctl start haveged.service
Jailkit
מאפשר הרצת Cron דרך ISPCONFIG ונותן אפשרויות SSH
נוריד את ההתקנה
[root@localhost ~]# wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
נוציא מחילוץ
[root@localhost ~]# tar xvfz jailkit-2.19.tar.gz
נכנס לתקיייה שיצאה מחילוץ
[root@localhost ~]# cd jailkit-2.19
נבדוק שהכל תקין
[root@localhost ~]# ./configure
נקמפל
[root@localhost ~]# make
נתקין
[root@localhost ~]# make install
נחזור לתיקייה הראשית
[root@localhost ~]# cd ..
נמחק את קבצי ההתקנה
[root@localhost ~]# rm -rf jailkit-2.19*
סטטיסטיקות AWStats ו Webalizer
[root@localhost ~]# yum -y install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder
ערכו את הקובץ
[root@localhost ~]# vi /etc/httpd/conf.d/awstats.conf
בשורה זו מתחת כתוב Require local
# Apache 2.4 Require local
שנו את השורה Require local ל
Require all granted
ובצעו ריסטארט לשירות
[root@localhost ~]# systemctl restart httpd.service
Fail2Ban
זה מערכתה כתובה בפייתון ומטרת המערכת היא לחסום Brute Force, נוסף על כך היא משתמשת כ – IPS, בכך שהיא כתובת ללוגים ועל פי הלוגים היא חוסמת כתובות IP אשר מנסות לעשות Brute Force
נתחיל בהתקנה
[root@localhost ~]# yum -y install iptables-services fail2ban fail2ban-systemd
כעת נבטל את הפיירוואל שקיים לנו עכשיו על מנת שFail2Ban יעבוד במקומו
[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# systemctl mask firewalld.service [root@localhost ~]# systemctl disable firewalld.service [root@localhost ~]# systemctl stop firewalld.service
ערכו את קובץ ההגדרות
[root@localhost ~]# vi /etc/fail2ban/jail.local
הכניסו את כל הטקסט למסמך
[sshd] enabled = true action = iptables[name=sshd, port=ssh, protocol=tcp] [pure-ftpd] enabled = true action = iptables[name=FTP, port=ftp, protocol=tcp] maxretry = 3 [dovecot] enabled = true action = iptables-multiport[name=dovecot, port="pop3,pop3s,imap,imaps", protocol=tcp] maxretry = 5 [postfix-sasl] enabled = true action = iptables-multiport[name=postfix-sasl, port="smtp,smtps,submission", protocol=tcp] maxretry = 3
שמרו וסגרו
הגדירו שיעלה בהפעלת השרת והפעילו את השירות
[root@localhost ~]# systemctl enable fail2ban.service [root@localhost ~]# systemctl start fail2ban.service
Rkhunter
הוא כלי אנטי רוטקיט Anti Rootkit
[root@localhost ~]# yum -y install rkhunter
Roundcube
הוא תוכנת מיילים ממש כמו Office Outlook רק בדפדפן
נתקין את Roundcube
[root@localhost ~]# yum -y install roundcubemail
נערוך את קובץ ההגדרות
[root@localhost ~]# vi /etc/httpd/conf.d/roundcubemail.conf
כל מה שמסומן באדום הוסיפו לו # על מנת שלא יחול ומה שבכחול יש להוסיף בדיוק איפה שזה נמצא:
#
# Round Cube Webmail is a browser-based multilingual IMAP client
#
Alias /roundcubemail /usr/share/roundcubemail
Alias /webmail /usr/share/roundcubemail
# Define who can access the Webmail
# You can enlarge permissions once configured
#<Directory /usr/share/roundcubemail/>
# <IfModule mod_authz_core.c>
# # Apache 2.4
# Require local
# </IfModule>
# <IfModule !mod_authz_core.c>
# # Apache 2.2
#Order Deny,Allow
# Deny from all
# Allow from 127.0.0.1
# Allow from ::1
# </IfModule>
#</Directory>
# Define who can access the installer
# keep this secured once configured
<Directory /usr/share/roundcubemail/>
Options none
AllowOverride Limit
Require all granted
</Directory>
#<Directory /usr/share/roundcubemail/installer/>
# <IfModule mod_authz_core.c>
# # Apache 2.4
# Require local
# </IfModule>
# <IfModule !mod_authz_core.c>
# # Apache 2.2
# Order Deny,Allow
# Deny from all
# Allow from 127.0.0.1
# Allow from ::1
# </IfModule>
#</Directory>
<Directory /usr/share/roundcubemail/installer>
Options none
AllowOverride Limit
Require all granted
</Directory>
כעת בצעו ריסטארט לApache
systemctl restart httpd.service
כעת ניצור טבלה חדשה ולה שם משתמש וסיסמא חדשים
נתחבר על ידי הפקודה ואז הזנת שם המשתמש והסיסמא לMySql
mysql -u root -p
CREATE DATABASE roundcubedb;
הגדירו את הסיסמא והשם משתמש שאתם רוצים
CREATE USER roundcubeuser IDENTIFIED BY 'roundcubePassword';
ניתן הרשאות ל Database שיצרנו
GRANT ALL PRIVILEGES on roundcubedb.* to roundcubeuser ;
ננקה את ההרשאות שהיו
FLUSH PRIVILEGES;
נצא
exit
כעת נתקין את roundcubemail דרך הדפדפן
http://192.168.1.100/roundcubemail/installer
מעולה
נגלול לעבר אמצא הדף ונמלא את הפרטים של המסד נתונים (לפי הנתונים שהזנתם קודם, שם המסד, שם המשתמש סיסמא וכו')
כעת רדו למטה ולחצו Next
כעת הוא יבקש מאיתנו להוריד את קובץ ה Config או להעתיק את התוכן שלו לקובץ הבא
נערוך את קובץ הקונפיג בשרת
[root@localhost ~]# vi /etc/roundcubemail/config.inc.php
נוריד את הקובץ למחשב ואז נעתיק את התוכן שלו לקובץ ה Config בשרת או שנעתיק ישירות מהאתר
נשמור את הקובץ ונצא
נערוך שוב את קובץ ההגדרות של RoundCube
[root@localhost ~]# vi /etc/httpd/conf.d/roundcubemail.conf
את מה שמסומן ב X מחקו לחלוטין ואת כל ה# בשורה האדומה שסימנתי מחקו כדאי שזה יחול( אנחנו מבטלים את הגישה להתקנה של RoundCube)
כעת בצעו ריסטארט לשרת ה Apache
[root@localhost ~]# systemctl restart httpd.service
ISPConfig 3.1
לאחר התקנות מרובות נתקין את ISPCONFIG
נתחבר תחילה לMySql
mysql -u root -p
נקיש את שתי הפקודות אחת אחרי השניה
SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';
כעת נבדוק שזה תקין
SELECT @@sql_mode;
נקבל את הפלט
NO_ENGINE_SUBSTITUTION
כעת נקיש
quit
מעולה נמשיך להתקנה
[root@localhost ~]# wget -O ispconfig.tar.gz https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.1
[root@localhost ~]# tar xfz ispconfig.tar.gz
[root@localhost ~]# cd ispconfig3*/install/
[root@localhost ~]# php -q install.php
כעת הוא ישאל שאלות, רק באלו שסימנתי כאן הזינו את מה שצריך
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [localhost]: talbenshushan.com MySQL root password []: הזינו את סיסמת הMySQL שלכם
כאשר הוא ישאל האם להגדיר תעודה לאתר סמנו לא ( אם אתם מעוניינים סמנו כן)
כעת נכנס לאתר (כמובן לשנות את ה IP לשלכם)
http://192.168.1.100:8080
השם משתמש והסיסמא זה admin admin