Установка ISPconfig на Debian/Ubuntu/Mint
ISPConfig – панель управления хостингом для Linux с открытыми исходниками и выпускается под лицензией лицензии BSD, разработана компанией ISPConfig UG. Сам проект ISPConfig был начат осенью 2005 года немецкой компанией projektfarm GmbH.
1. Для начала нужно установить весь необходимый софт для установки ISPConfig 3.
Стоит сказать что я буду использовать Debian ( для примера), сейчас я отключу оболочку dash и установлю вместо неё – bash, делается следующим образом:
# dpkg-reconfigure dash
Выбираем “No” (нет) и жмем ентер.
Следующей командой собственной мы установим все необходимое для работы ISPconfig:
# aptitude install ntp ntpdate postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudo
Мы установим утилиты для работы с почтой (Dovecot и Postfix), работа со временем (NTP), работа с БД (MySQL) и еще пару полезных утилит.
Система попросит ответить на ряд вопросов, отвечаем и идем далее. Вот скриншоты, если кто то не понял что нужно нажимать:
На первом меню которое выдало нам, просто нажимаем ОК.
Прописываем ( выбираем) имя для нашего сервера с почтой:
Я использую виртуальную машину, по этому я ввожу localhost, а вы, если используете реальный домен, введите его.
У меня собственно вот такое забавное имя. Я ранее установил сервер и клиент с Mysql, по этому я пропускаю этот шаг ( там нужно будет ввести пароль для root и может кое что еще).
Откроем порты TLS/SSL в Postfix:
# vim /etc/postfix/master.cf
Приводим вот к такому виду:
[...] 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 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 milter_macro_daemon_name=ORIGINATING [...]
И сохраняем данный файл, перезапускаем сервис:
# /etc/init.d/postfix restart
Настроем работу БД в Mysql для всех наших интерфейсов, по умолчанию mysql, будет работать только на 127.0.0.1:
# vim /etc/mysql/my.cnf
[...] #закомментируем строку что ниже #bind-address = 127.0.0.1 [...]
Ребутим службу Mysql-а:
# /etc/init.d/mysql restart
Основное мы настроили и подготовили к дальнейшей установки ISPconfig-а, остались последние штрихи, мы установим антиспам утилиту и антивирус для нашего сервера с почтой – Amavisd-new, и утилитой SpamAssassin, так же с антивирусом – ClamAV:
# aptitude install amavisd-new spamassassin clamav clamav-daemon zoo 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
У меня не стартовал amavisd-new, решил проблему:
# vim /etc/amavis/conf.d/05-node_id # нужно прописать доменное имя для нашей почти $myhostname = "localhost";
А делаем собственно для того чтобы была фильтрация спам писем в ISPConfig 3 через утилиту Amavisd, которая загружается во внутренние фильтры библиотек программы SpamAssassin в автоматическом режиме, по этому мы можем легко запустить или выключить SpamAssassin, чтобы не грузить нашу RAM память лишним процессом:
# /etc/init.d/spamassassin stop # update-rc.d -f spamassassin remove
!!! АХТУНГ!!! При долгой работе нашего сервера с почтой, Amavisd будет сохранять очень много различного спама и может даже вирусов в папку с карантином /var/lib/amavis/virusmails/ которая будет иметь очень большой размер если ее не удалять. По этому, добавляем в кронтаб задание которое будет автоматически искать и удалять наш сохраненный спам и так же возможные вирусы которые лежат в папке более 30 дней:
# crontab -e # добавляем строку что ниже в открывшийся файл, я всегда кидаю в самый низ. 0 3 * * * find /var/lib/amavis/virusmails -ctime +30 -and -type 'f' -exec rm {} \;
Это правило будет запускаться каждый день в 3 ночи и будет искать файлы ( спам) старше 30 дней.
Установим еще и веб-сервер apache2 с поддержкой PHP5, PHPMyAdmin, FCGI и suExec и Pear, а так же mcrypt:
# aptitude install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-curl php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby libapache2-mod-python libapache2-mod-perl2 dh-make-php php5-dev build-essential libmagic-dev php5-intl
Нас просят ответить на вопросы:
1. Выбор веб сервера ( выбираем собственно apache).
2. Настроить БД в phpmyadmin с использованием dbconfig-common? – нажимаем Нет.
После этого нам нужно активировать все установленные модули для апача:
# a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest
Перезапускаем сервис с апачем:
# /etc/init.d/apache2 restart
Выполним установку и настроим фтп сервис – PureFTPd:
# aptitude install pure-ftpd-common pure-ftpd-mysql quota quotatool
Настроим сейчас немного файл конфигурации:
# vim /etc/default/pure-ftpd-common
Приводим строчку к виду:
[...] VIRTUALCHROOT=true [...]
Настроим работу нашего фтп с использованием ssl сертефиката и с использованием протокола TLS:
# echo 1 > /etc/pure-ftpd/conf/TLS
Создим директорию в ней будет лежать наш сертификат:
# mkdir -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.pem
Нужно ввести код страны ( у меня это UA), город, организанизацию и мыло.
Выставим права на созданный сертификат:
# chmod 600 /etc/ssl/private/pure-ftpd.pem
Далее, ребутим PureFTPd:
# /etc/init.d/pure-ftpd-mysql restart
Можно ограничить пользователей, создав квоту на диск, добавив в fstab строчки. Мне это не нужно, но если необходимо используйте:
# vim /etc/fstab
UUID=5de3434-1674-4aав-b6кc-rtert460433e / ext4 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
ПРИМЕЧАНИЕ! UUID – у вас будет отличаться от моего, по этому внимательно будьте.
Чтобы включить квоту на жестком диске, нам нужно перемонтировать корневой раздел:
# mount -o remount /
После чего включаем квоты на нашем жестком диске:
# quotacheck -avugm # quotaon -avug
Выполним установку DNS сервер такого как Bind, он тоже будет администрироватся через веб-интерфейс самой ISPConfig панели:
# aptitude install bind9 dnsutils
Можно установить анализатор и утилиту для статистики посещения веб-сервера, что я и сделаю:
# aptitude install vlogger webalizer awstats geoip-database
Отключим автозапуск awstat из cron:
# vim /etc/cron.d/awstats
Приводим к такому виду (закомментируем строки):
#*/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
Сейчас установим еще один полезный инструмент – утилита Jailkit. Если Вы хотите давать для пользователей изолированный доступ к вашему серверу SSH (chroot), то нужно установить утилиту Jailkit. Его нужно установить до того как будите устанавливать ISPConfig, и мы его будем собирать из исходников, а сейчас нужно установить вспомогательные программы для него:
# aptitude install build-essential autoconf automake1.9 libtool flex bison debhelper
И приступаем к созданию директории в нее будем скачивать, а после распакуем и соберем утилиту Jailkit. Для установки Jailkit выполните ряд команд:
# cd /usr/local/src # wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
Распаковываем архив с исходниками и переходим в директорию с исходным кодом:
# tar xvfz jailkit-2.17.tar.gz && cd jailkit-2.17
Начнем сборку:
# ./debian/rules binary # dpkg -i /usr/local/src/jailkit_2.17*.deb
Установим весьма полезную утилиту Fail2ban она будет следить за вашими серверами и защищая от попыток взлома (будет блокировать IP) в интернет сервисах. Сейчас я ее установлю и настрою:
# aptitude install fail2ban
Создадим конфиг с настройками утилиты fail2ban:
Я его прописал в файл, теперь его можно просто скачать и запустить у себя:
# cd /usr/local/src # wget http://linux-notes.org/wp-content/uploads/files/fail2ban/fail2ban.sh # chmod 777 fail2ban.sh
Запускаем его на выполнение:
# bash fail2ban.sh
Прочитать ( поглядеть) можно тут:
#!/bin/sh -e echo ' [pureftpd] enabled = true port = ftp filter = pureftpd logpath = /var/log/syslog maxretry = 3 [dovecot-pop3imap] enabled = true filter = dovecot-pop3imap action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp] logpath = /var/log/mail.log maxretry = 5 ' > /etc/fail2ban/jail.local echo ' [Definition] failregex = .*pure-ftpd: \(.*@<HOST>\) \[WARNING\] Authentication failed for user.* ignoreregex = ' > /etc/fail2ban/filter.d/pureftpd.conf echo ' [Definition] failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P<host>\S*),.* ignoreregex = ' > /etc/fail2ban/filter.d/dovecot-pop3imap.conf
Мы выполняя эту команду, перенаправляем вывод в определенные файлы, так же можно их открыть и вставить, но это же долго.
Перегружаем утилиту для защиты нашего сервера fail2ban:
# /etc/init.d/fail2ban restart
2. Установка ISPconfig на Debian/Ubuntu/Mint
Все необходимое я установил выше, сейчас время пришло установить саму панель управления – ISPconfig 3:
# cd /usr/local/src/ # wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
Распакуем и переходим в директорию для установки:
# tar xfz ISPConfig-3-stable.tar.gz # cd ispconfig3_install/install/
Выполняем установку:
# php -q install.php
Нас просят ввести язык для установки (выбираю en -английский). Затем просят ввести каким образом будет устанавливать (expert или standart) – я выбираю expert. Далее вводим все остальное, интуитивно понятно что и как делать.
После чего нужно подождать некоторое время чтобы установилась данная панель на ваш сервер. После чего еще просит ввести ряд подобной информации.
После чего попросят ввести пароль, отказываемся и просто нажимаем “Enter”. Не введите его, а то работать не будет, я эту ошибку совершил и каялся, пришлось все заново делать.
Желательно пропатчить ISPconfig, так как могут быть различные открытые дыры. На момент написания была самая последняя версия программы ISPconfig -3.0.5.4. Заходим на официальный сайт и скачиваем патч. Я перейду в нужную паку и скачаю его:
# cd /usr/local/ispconfig/server/scripts # wget http://www.ispconfig.org/downloads/ispconfig_patch
выставляем права на файл и пачтим панель:
# chmod 700 ispconfig_patch # chown root:root ispconfig_patch # ln -s /usr/local/ispconfig/server/scripts/ispconfig_patch /usr/local/bin/ispconfig_patch ispconfig_patch
На официальном сайте есть описание, нас интересует именно ID, у меня это 3054_dns, ввожу когда спросит меня об этом.
Ну что ребята, установка завершена, время пришло открыть ваш браузер и перейти по ссылке:
https://your_IP_or_domain:8080
У меня это выглядит вот так:
https://192.168.116.207:8080/
Вводим логин – admin, пароль –admin. Меняем пароль администратора ISPconfig, нужно перейти Tools ->Passaword and Language.
Создадим нового пользователя ( клиента) который сможет управлять своими сайтами, ДНСами, SSH-ем, для этого нужно перейти client->Add new client (я не менял язык, использую английский).
Можно так же указать свою страну и много другой информации, ее можно заполнять по желанию. Можно еще много чего настроить и добавить, но об этом поговорим немного позже.