サーバー設定 · 8 min read · Nov 01, 2025

完璧なサーバー CentOS 7.2 と Apache、Postfix、Dovecot、Pure-FTPD、BIND および ISPConfig 3.1 - ページ 2

7 Dovecot のインストール

Dovecot は次のようにインストールできます:

yum -y install dovecot dovecot-mysql dovecot-pigeonhole

空の dovecot-sql.conf ファイルを作成し、シンボリックリンクを作成します:

touch /etc/dovecot/dovecot-sql.conf  
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf

次に、システム起動リンクを作成し、Dovecot を起動します:

systemctl enable dovecot  
systemctl start dovecot

8 Postfix のインストール

Postfix は次のようにインストールできます:

yum -y install postfix

次に、Sendmail をオフにし、Postfix と MariaDB (MySQL) を起動します:

systemctl enable mariadb.service  
systemctl start mariadb.service
systemctl stop sendmail.service  
systemctl disable sendmail.service  
systemctl enable postfix.service  
systemctl restart postfix.service

Sendmail を無効にすることで、サーバーにインストールされている場合に起動しないようにします。したがって、エラーメッセージ “Failed to issue method call: Unit sendmail.service not loaded.” は無視できます。

9 Getmail のインストール

Getmail は次のようにインストールできます:

yum -y install getmail

10 MySQL パスワードの設定と phpMyAdmin の構成

MySQL root アカウントのパスワードを設定します:

mysql_secure_installation
[root@server1 tmp]# mysql_secure_installation  
  
  NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB  
  SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
MariaDB にログインしてセキュリティを確保するには、現在の  
root ユーザーのパスワードが必要です。MariaDB をインストールしたばかりで、  
まだ root パスワードを設定していない場合、パスワードは空白になりますので、  
ここでは Enter を押してください。
Enter current password for root (enter for none):  
OK, successfully used password, moving on...
root パスワードを設定することで、適切な認証なしに誰も MariaDB  
root ユーザーにログインできなくなります。  

Set root password? [Y/n] <-- ENTER  
New password: <-- yourrootsqlpassword  
Re-enter new password: <-- yourrootsqlpassword  
Password updated successfully!  
Reloading privilege tables..  
 ... Success!  
  
デフォルトでは、MariaDB のインストールには匿名ユーザーがあり、誰でも  
ユーザーアカウントを作成せずに MariaDB にログインできます。これはテスト用にのみ  
意図されており、インストールを少しスムーズにするためのものです。  
本番環境に移行する前に、これらを削除する必要があります。  

Remove anonymous users? [Y/n] <-- ENTER  
 ... Success!  

通常、root は 'localhost' からのみ接続を許可されるべきです。  
これにより、誰かがネットワークから root パスワードを推測できなくなります。  

Disallow root login remotely? [Y/n] <-- ENTER  
 ... Success!  

デフォルトでは、MariaDB には誰でもアクセスできる 'test' という名前のデータベースがあります。  
これもテスト用にのみ意図されており、本番環境に移行する前に削除する必要があります。  

Remove test database and access to it? [Y/n] <-- ENTER  
- Dropping test database...  
 ... Success!  
- Removing privileges on test database...  
 ... Success!  

特権テーブルを再読み込みすることで、これまでに行ったすべての変更が  
即座に適用されることを保証します。  

Reload privilege tables now? [Y/n] <-- ENTER  
 ... Success!  

クリーンアップ...  
  
すべて完了しました!上記のすべての手順を完了した場合、あなたの MariaDB  
インストールは今や安全であるべきです。  

MariaDB をご利用いただきありがとうございます!  

[root@server1 tmp]#

次に、phpMyAdmin を構成します。Apache の設定を変更して、phpMyAdmin が localhost からだけでなく接続を許可するようにします(”Require ip” の 2 行をコメントアウトし、 スタンザに “Require all granted” の新しい行を追加します):

nano /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin


   
     # Apache 2.4
     
     #  Require ip 127.0.0.1
     #  Require ip ::1  
        Require all granted
     
   
   
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   

            

次に、phpMyAdmin の認証を cookie から http に変更します:

nano /etc/phpMyAdmin/config.inc.php
[...]
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

次に、Apache のシステム起動リンクを作成し、起動します:

systemctl enable  httpd.service  
systemctl restart  httpd.service

これで、ブラウザを http://server1.example.com/phpmyadmin/ または http://192.168.1.100/phpmyadmin/ に向け、ユーザー名 root と新しい root MySQL パスワードでログインできます。

11 Amavisd-new、SpamAssassin、および ClamAV のインストール

amavisd-new、SpamAssassin、および clamav をインストールするには、次のコマンドを実行します:

yum -y install amavisd-new spamassassin clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd unzip bzip2 perl-DBD-mysql

freshclam 構成ファイル /etc/freshclam.conf を編集します。

nano /etc/freshclam.conf

そして、”Example” の行をコメントアウトします。

[....]  
# Example  
[....]

次に、freshclam、amavisd、および clamd.amavisd を起動します:

sa-update  
freshclam  
systemctl enable amavisd.service  
systemctl start amavisd.service  
systemctl start [email protected]

12 mod_php、mod_fcgi/PHP5、PHP-FPM を使用した Apache のインストール

ISPConfig 3 では、mod_php、mod_fcgi/PHP5、cgi/PHP5、および suPHP をウェブサイトごとに使用できます。

mod_php5、mod_fcgid、および PHP5 を使用して Apache2 を次のようにインストールできます:

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

次に、/etc/php.ini を開きます…

nano /etc/php.ini

… そして、エラーレポートを変更します(通知が表示されないように)、タイムゾーンを設定し、cgi.fix_pathinfo=1 のコメントを外します:

[...]
;error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PAppp.tldTH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1  
[...]  
date.timezone = 'Europe/Berlin'
[...]

httpd と PHP-FPM を起動時に開始するように有効にし、PHP-FPM サービスを起動します。

systemctl start php-fpm.service  
systemctl enable php-fpm.service  
systemctl enable httpd.service

最後に、Apache を再起動します:

systemctl restart httpd.service

これで、Let’s encrypt のサポートを追加します。

mkdir /opt/certbot  
cd /opt/certbot  
wget https://dl.eff.org/certbot-auto  
chmod a+x ./certbot-auto

次に、certboot-auto コマンドを実行すると、ソフトウェアとその依存関係がダウンロードおよびインストールされます。

./certbot-auto

コマンドは “no names were found in your configuration files” と言い、続行するかどうかを尋ねますので、ここでは “no” を選択してください。certs は ispconfig によって作成されます。

13 mod_python のインストール

apache モジュール mod_python は RPM パッケージとしては利用できないため、ソースからコンパイルします。最初のステップは、python 開発ファイルをインストールし、現在の mod_python バージョンを tar.gz ファイルとしてダウンロードすることです。

yum -y install python-devel
cd /usr/local/src/  
wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz  
tar xfz mod_python-3.5.0.tgz  
cd mod_python-3.5.0

次に、モジュールを構成してコンパイルします。

./configure  
make  
make install

そして、apache でモジュールを有効にします。

echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf  
systemctl restart httpd.service

14 PureFTPd のインストール

PureFTPd は次のコマンドでインストールできます:

yum -y install pure-ftpd

次に、システム起動リンクを作成し、PureFTPd を起動します:

systemctl enable pure-ftpd.service  
systemctl start pure-ftpd.service

これで、PureFTPd を構成して FTP および TLS セッションを許可します。FTP は非常に安全でないプロトコルであり、すべてのパスワードとすべてのデータが平文で転送されます。TLS を使用することで、通信全体を暗号化でき、FTP をはるかに安全にします。

TLS には OpenSSL が必要です。OpenSSL をインストールするには、次のように実行します:

yum install openssl

/etc/pure-ftpd/pure-ftpd.conf を開きます…

nano /etc/pure-ftpd/pure-ftpd.conf

FTP および TLS セッションを許可する場合は、TLS を 1 に設定します:

[...]
# This option can accept three values :
# 0 : disable SSL/TLS encryption layer (default).
# 1 : accept both traditional and encrypted sessions.
# 2 : refuse connections that don't use SSL/TLS security mechanisms,
#     including anonymous sessions.
# Do _not_ uncomment this blindly. Be sure that :
# 1) Your server has been compiled with SSL/TLS support (--with-tls),
# 2) A valid certificate is in place,
# 3) Only compatible clients will log in.

TLS                      1
[...]

TLS を使用するには、SSL 証明書を作成する必要があります。私はそれを /etc/ssl/private/ に作成しますので、まずそのディレクトリを作成します:

mkdir -p /etc/ssl/private/

その後、次のようにして SSL 証明書を生成できます:

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]: <– あなたの国名を入力してください (例: “DE”).
State or Province Name (full name) []: <– あなたの州または省名を入力してください。
Locality Name (eg, city) [Default City]: <– あなたの市名を入力してください。
Organization Name (eg, company) [Default Company Ltd]: <– あなたの組織名を入力してください (例: あなたの会社名)。
Organizational Unit Name (eg, section) []: <– あなたの組織単位名を入力してください (例: “IT 部門“).
Common Name (eg, your name or your server’s hostname) []: <– システムの完全修飾ドメイン名を入力してください (例: “server1.example.com”).
Email Address []: <– あなたのメールアドレスを入力してください。

SSL 証明書の権限を変更します:

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

最後に、PureFTPd を再起動します:

systemctl restart pure-ftpd.service

これで完了です。FTP クライアントを使用して接続を試みることができますが、FTP クライアントを TLS を使用するように構成する必要があります。

15 BIND のインストール

BIND は次のようにインストールできます:

yum -y install bind bind-utils haveged

既存の /etc/named.conf ファイルのバックアップを作成し、新しいファイルを次のように作成します:

cp /etc/named.conf /etc/named.conf_bak  
cat /dev/null > /etc/named.conf  
nano /etc/named.conf
// 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";

/etc/named.conf の最後に含まれるファイル /etc/named.conf.local を作成します (/etc/named.conf.local は後で ISPConfig によって DNS ゾーンを作成するときにポピュレートされます):

touch /etc/named.conf.local

次に、起動リンクを作成し、BIND を起動します:

systemctl enable named.service  
systemctl start named.service

16 Webalizer および AWStats のインストール

AWStats は次のようにインストールできます:

yum -y install awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder

Webalizer はソースからコンパイルする必要があります。

yum install -y libpng-devel gd-devel  
cd /tmp  
wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-08-src.tgz  
tar xvfz webalizer-2.23-08-src.tgz  
cd webalizer-2.23-08  
./configure  
make  
make install

17 Jailkit のインストール

Jailkit は SSH ユーザーと cronjob を chroot するために使用されます。次のようにインストールできます (重要: Jailkit は ISPConfig の前にインストールする必要があります - 後からインストールすることはできません!):

cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz  
tar xvfz jailkit-2.19.tar.gz  
cd jailkit-2.19  
./configure  
make  
make install  
cd ..  
rm -rf jailkit-2.19*

18 fail2ban のインストール

これはオプションですが推奨されます。なぜなら、ISPConfig モニターがログを表示しようとするからです。

yum -y install iptables-services fail2ban fail2ban-systemd  
systemctl stop firewalld.service  
systemctl mask firewalld.service  
systemctl disable firewalld.service  
systemctl stop firewalld.service

次に、/etc/fail2ban/jail.local ファイルを作成し、ssh、email および ftp サービスの監視を有効にします。

nano /etc/fail2ban/jail.local

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

次に、fail2ban のシステム起動リンクを作成し、起動します:

systemctl enable fail2ban.service  
systemctl start fail2ban.service

19 rkhunter のインストール

rkhunter は次のようにインストールできます:

yum -y install rkhunter

20 Mailman のインストール

サーバーで Mailman を使用してメーリングリストを管理したい場合は、今すぐ mailman をインストールします。Mailman は ISPConfig によってサポートされているため、後で ISPConfig を通じて新しいメーリングリストを作成できます。

yum -y install mailman

Mailman を開始する前に、最初のメーリングリストを mailman という名前で作成する必要があります:

touch /var/lib/mailman/data/aliases  
postmap /var/lib/mailman/data/aliases  
/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Enter the email of the person running the list: <– admin email address, e.g. [email protected]
Initial mailman password: <– admin password for the mailman list
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: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”
Hit enter to notify mailman owner… <– ENTER
[root@server1 tmp]# /etc/aliases をその後開きます… nano /etc/aliases … そして、次の行を追加します: [...] mailman: "|/usr/lib/mailman/mail/mailman post mailman" mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/usr/lib/mailman/mail/mailman join mailman" mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman" mailman-request: "|/usr/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman" その後、 newaliases を実行し、Postfix を再起動します: systemctl restart postfix.service 次に、Mailman の Apache 構成ファイル /etc/httpd/conf.d/mailman.conf を開きます… nano /etc/httpd/conf.d/mailman.conf … そして、行 ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/ を追加します。Alias /pipermail/ /var/lib/mailman/archives/public/ のコメントを外し、行 Alias /pipermail /var/lib/mailman/archives/public/ を追加します: # # httpd configuration settings for use with mailman. # ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/ ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/ AllowOverride None Options ExecCGI Order allow,deny Allow from all #Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /pipermail /var/lib/mailman/archives/public/ Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all AddDefaultCharset Off # Uncomment the following line, to redirect queries to /mailman to the # listinfo page (recommended). # RedirectMatch ^/mailman[/]*$ /mailman/listinfo Apache を再起動します: systemctl restart httpd.service Mailman のシステム起動リンクを作成し、起動します: systemctl enable mailman.service systemctl start mailman.service ISPConfig 3 をインストールした後、次のようにして Mailman にアクセスできます: すべての Apache vhosts に対して /cgi-bin/mailman のエイリアスを使用できます(Mailman にアクセスしたいすべての vhosts では suExec と CGI を無効にする必要があります!)。つまり、リストの Mailman 管理インターフェースには http:///cgi-bin/mailman/admin/ でアクセスでき、メーリングリストのユーザー用のウェブページは http:///cgi-bin/mailman/listinfo/ で見つけることができます。 http:///pipermail/ ではメーリングリストのアーカイブを見つけることができます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。