サーバー設定 · 8 min read · Oct 24, 2025

完璧なサーバー CentOS 7.4 と 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  
ln -s /etc/dovecot/dovecot.conf /etc/dovecot.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 ルートアカウントのパスワードを設定します:

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 からだけでなく接続を許可するようにします( スタンザ内の 2 つの “Require ip” 行をコメントアウトし、新しい行 “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、および Postgrey のインストール

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 postgrey re2c

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

nano /etc/freshclam.conf

そして、”Example” 行が以下のようにコメントアウトされていることを確認します:

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

freshclam で ClamAV シグネチャの自動更新を有効にするには、ファイル /etc/sysconfig/freshclam を編集します:

nano /etc/sysconfig/freshclam

そして、最後の行の前に # を入れて、まだそうでない場合は次のようにします:

# FRESHCLAM_DELAY=

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

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

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

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

mod_php、mod_fcgid、および PHP を使用して 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 & ~E_STRICT
[...]
; 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” と表示し、続行するかどうかを尋ねます。ここでは “c” を選択してキャンセルしてください。証明書は ispconfig によって作成されます。

CentOS に certbot をインストール

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

コンパイルされたモジュールにはエラーがあり、” version = “fatal: Not a git repository (or any of the parent directories): .git “ というエラーでインストールが失敗します。これを修正するには、この sed コマンドを実行します(コマンドは 1 行です!)。

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 )

次に、このコマンドでモジュールをインストールします。

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 に設定します。TLS を有効にすることを強くお勧めします。

[...]
# 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

国名 (2 文字コード) [XX]: <– 国名を入力します (例: “DE”)。
州または県名 (フルネーム) []: <– 州または県名を入力します。
市名 (例: 市) [Default City]: <– 市名を入力します。
組織名 (例: 会社) [Default Company Ltd]: <– 組織名を入力します (例: 会社名)。
組織単位名 (例: 部門) []: <– 組織単位名を入力します (例: “IT 部門“)。
共通名 (例: あなたの名前またはサーバーのホスト名) []: <– システムの完全修飾ドメイン名を入力します (例: “server1.example.com”)。
メールアドレス []: <– メールアドレスを入力します。

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

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

DHParam ファイルを作成します:

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

最後に、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 を作成します (ISPConfig で DNS ゾーンを作成すると、後で ISPConfig によってポピュレートされます):

touch /etc/named.conf.local

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

systemctl enable named.service  
systemctl start named.service  
systemctl enable haveged.service  
systemctl start haveged.service

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

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

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

ファイル /etc/httpd/conf.d/awstats.conf を編集します:

nano /etc/httpd/conf.d/awstats.conf

そして、行を変更します:

Require local

を:

Require all granted

そして、Apache を再起動します:

systemctl restart httpd.service

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 のシステム起動リンクを作成し、起動します:

mkdir /var/run/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  
ln -s /usr/lib/mailman/mail/mailman /usr/bin/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

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

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