サーバー設定 · 5 min read · Oct 27, 2025

完璧なサーバー – CentOS 7 (Apache2, Dovecot, ISPConfig 3) - ページ 2

10 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

11 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がサーバーにインストールされている場合に自動的に起動しないようにするために、Sendmailを無効にします。したがって、エラーメッセージ「メソッド呼び出しの発行に失敗しました: ユニットsendmail.serviceが読み込まれていません。」は無視できます。

12 Getmailのインストール

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

yum -y install getmail

13 MySQLパスワードの設定とphpMyAdminの設定

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

mysql_secure_installation
[root@server1 tmp]# mysql_secure_installation  
  
  
NOTE: このスクリプトのすべての部分を実行することは、すべてのMariaDB  
サーバーで本番使用に推奨されます! 各ステップを注意深くお読みください!
MariaDBを保護するためにログインするには、現在の  
rootユーザーのパスワードが必要です。MariaDBをインストールしたばかりで、  
まだrootパスワードを設定していない場合、パスワードは空白になりますので、  
ここでEnterを押してください。
Enter current password for root (enter for none):  
OK, successfully used password, moving on...
rootパスワードを設定することで、適切な認証なしに誰もMariaDBの  
rootユーザーにログインできないようにします。  
  
rootパスワードを設定しますか? [Y/n] <-- ENTER  
新しいパスワード: <-- yourrootsqlpassword  
新しいパスワードを再入力: <-- yourrootsqlpassword  
パスワードが正常に更新されました!  
特権テーブルを再読み込み中..  
 ... 成功!  
  
デフォルトでは、MariaDBのインストールには匿名ユーザーがあり、誰でも  
ユーザーアカウントを作成せずにMariaDBにログインできます。これはテスト用にのみ  
意図されており、インストールを少しスムーズにするためのものです。  
本番環境に移行する前に、これらを削除する必要があります。  
  
匿名ユーザーを削除しますか? [Y/n] <-- ENTER  
 ... 成功!  
  
通常、rootは「localhost」からのみ接続を許可されるべきです。  
これにより、誰かがネットワークからrootパスワードを推測できないようにします。  
  
リモートからのrootログインを禁止しますか? [Y/n] <-- ENTER  
 ... 成功!  
  
デフォルトでは、MariaDBには誰でもアクセスできる「test」という名前のデータベースがあります。  
これもテスト用にのみ意図されており、本番環境に移行する前に削除する必要があります。  
  
testデータベースとそのアクセスを削除しますか? [Y/n] <-- ENTER  
 - testデータベースを削除中...  
 ... 成功!  
 - testデータベースの特権を削除中...  
 ... 成功!  
  
特権テーブルを再読み込みすると、これまでに行ったすべての変更が  
すぐに有効になります。  
  
特権テーブルを今すぐ再読み込みしますか? [Y/n] <-- ENTER  
 ... 成功!  
  
クリーンアップ中...  
  
すべて完了!上記のすべてのステップを完了した場合、MariaDBの  
インストールは今や安全であるはずです。  
  
MariaDBをご利用いただきありがとうございます!  
  
[root@server1 tmp]#

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

nano /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - phpで書かれたWebベースのMySQLブラウザ
#
# デフォルトではlocalhostのみを許可
#
# しかし、phpMyAdminをlocalhost以外の誰にでも許可することは、
# 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
[...]
/* 認証タイプ */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

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

systemctl enable  httpd.service  
systemctl restart  httpd.service

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

14 Amavisd-new、SpamAssassin、ClamAVのインストール

amavisd-new、spamassassin、clamavをインストールするには、以下のコマンドを実行します:

yum -y install amavisd-new spamassassin clamav clamd clamav-update unzip bzip2 unrar perl-DBD-mysql

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

nano /etc/freshclam.conf

「Example」行をコメントアウトします:

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

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

sa-update  
freshclam   
systemctl enable amavisd.service

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

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

次に、/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はCGIのための*実際の* PATH_INFO/PATH_TRANSLATEDサポートを提供します。PHPの
;以前の動作は、PATH_TRANSLATEDをSCRIPT_FILENAMEに設定し、
;PATH_INFOが何であるかを理解しませんでした。PAppp.tldTH_INFOの詳細については、cgi仕様を参照してください。これを1に設定すると、PHP CGIがそのパスを仕様に合わせて修正します。0の設定は、PHPが以前のように動作することを意味します。デフォルトは1です。スクリプトを修正して、PATH_TRANSLATEDではなくSCRIPT_FILENAMEを使用する必要があります。
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1  
[...]  
date.timezone = 'Europe/Berlin'
[...]

次に、suPHPをインストールします(リポジトリにmod_suphpパッケージがありますが、残念ながらISPConfigと互換性がないため、suPHPを自分でビルドする必要があります):

cd /usr/local/src  
wget http://suphp.org/download/suphp-0.7.2.tar.gz  
tar zxvf suphp-0.7.2.tar.gz

CentOS 7はapache-2.4を使用しているため、Apacheに対してコンパイルする前にsuPHPにパッチを適用する必要があります。パッチは次のように適用されます:

wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch  
patch -Np1 -d suphp-0.7.2 < suphp.patch  
cd suphp-0.7.2  
autoreconf -if

[root@server1 suphp-0.7.2]# autoreconf -if

libtoolize: 補助ファイルをAC_CONFIG_AUX_DIRに配置しています、config

libtoolize: ファイルconfig/ltmain.shをコピーしています。

libtoolize: AC_CONFIG_MACRO_DIR([m4])をconfigure.acに追加し、

libtoolizeを再実行して、正しいlibtoolマクロをツリーに保持することを検討してください。

libtoolize: -I m4をMakefile.amのACLOCAL_AMFLAGSに追加することを検討してください。

configure.ac:9: 警告: AM_INIT_AUTOMAKE: 2引数および3引数の形式は非推奨です。詳細については:

configure.ac:9: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation

configure.ac:24: ‘config/config.guess’をインストールしています。

configure.ac:24: ‘config/config.sub’をインストールしています。

configure.ac:9: ‘config/install-sh’をインストールしています。

configure.ac:9: ‘config/missing’をインストールしています。

src/Makefile.am: ‘config/depcomp’をインストールしています。

[root@server1 suphp-0.7.2]#

パッチが適用されます。これで新しいソースを次のようにコンパイルできます:

./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr/bin/apr-1-config --with-apache-user=apache --with-setid-mode=owner --with-logfile=/var/log/httpd/suphp_log  
make  
make install

次に、suPHPモジュールをApacheの設定に追加します…

nano /etc/httpd/conf.d/suphp.conf
LoadModule suphp_module modules/mod_suphp.so

… /etc/suphp.confファイルを次のように作成します:

nano /etc/suphp.conf
[global]
;ログファイルへのパス
logfile=/var/log/httpd/suphp.log
;ログレベル
loglevel=info
;Apacheが実行しているユーザー
webserver_user=apache
;すべてのスクリプトが存在する必要があるパス
docroot=/
;スクリプトを実行する前にchroot()するパス
;chroot=/mychroot
; セキュリティオプション
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;DOCUMENT_ROOT内にスクリプトがあるかどうかをチェック
check_vhost_docroot=true
;ブラウザに小さなエラーメッセージを送信
errors_to_browser=false
;PATH環境変数
env_path=/bin:/usr/bin
;設定するumask、8進数で指定
umask=0077
; 最小UID
min_uid=100
; 最小GID
min_gid=100

[handlers]
;phpスクリプト用のハンドラー
x-httpd-suphp="php:/usr/bin/php-cgi"
;CGIスクリプト用のハンドラー
x-suphp-cgi="execute:!self"

/etc/httpd/conf.d/php.confファイルを編集して、phpmyadmin、roundcube、および/usr/share内の他のシステムパッケージに対してのみPHPパースを有効にし、/var/www内のウェブサイトには有効にしないようにします。ISPConfigは各ウェブサイトに対して個別にPHPを有効にします。

nano /etc/httpd/conf.d/php.conf

行を変更します:

  
SetHandler application/x-httpd-php  

次のように:

  
  
SetHandler application/x-httpd-php  
  

これにより、PHPハンドラーがDirectoryディレクティブで囲まれます。

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

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

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

systemctl restart httpd.service

15.1 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 

16 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を開きます…

vi /etc/pure-ftpd/pure-ftpd.conf

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

[...]
# このオプションは3つの値を受け入れることができます:
# 0 : SSL/TLS暗号化レイヤーを無効にします(デフォルト)。
# 1 : 従来のセッションと暗号化されたセッションの両方を受け入れます。
# 2 : SSL/TLSセキュリティメカニズムを使用しない接続を拒否します。
#     匿名セッションを含む。
# このコメントを盲目的に外さないでください。次のことを確認してください:
# 1) サーバーがSSL/TLSサポートでコンパイルされていること(--with-tls)
# 2) 有効な証明書があること
# 3) 互換性のあるクライアントのみがログインします。

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

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

systemctl restart pure-ftpd.service

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

17 BINDのインストール

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

yum -y install bind bind-utils

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

cp /etc/named.conf /etc/named.conf_bak  
cat /dev/null > /etc/named.conf  
nano /etc/named.conf
// named.conf
//
// Red Hat bindパッケージによって提供され、ISC BIND named(8) DNS
// サーバーをキャッシュ専用のネームサーバー(localhost DNSリゾルバーのみ)として構成します。
//
// 例のnamed設定ファイルについては/usr/share/doc/bind*/sample/を参照してください。
//
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ゾーンを作成すると後でISPConfigによってポピュレートされます):

touch /etc/named.conf.local

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

systemctl enable named.service  
systemctl start named.service

18 WebalizerとAWStatsのインストール

WebalizerとAWStatsは以下のようにインストールできます:

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

19 Jailkitのインストール

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

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

20 fail2banのインストール

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

yum -y install fail2ban

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

systemctl enable fail2ban.service  
systemctl start fail2ban.service

21 rkhunterのインストール

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

yum -y install rkhunter

22 Mailmanのインストール

バージョン3.0.4以降、ISPConfigはMailmanのメーリングリストを管理(作成/変更/削除)することも許可します。この機能を利用したい場合は、以下のようにMailmanをインストールします:

yum -y install mailman

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

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

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
リストを運営する人のメールアドレスを入力してください: <– 管理者のメールアドレス、例: [email protected]
初期のmailmanパスワード: <– mailmanリストの管理者パスワード
メーリングリストを作成するには、次の行を追加して/etc/aliases(または同等の)ファイルを編集し、
newaliasesプログラムを実行する必要があります:

mailmanメーリングリスト

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”

mailmanの所有者に通知するにはEnterを押してください… <– ENTER

[root@server1 tmp]#

その後、/etc/aliasesを開きます…

vi /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の設定は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


# 次の行のコメントを外すと、/mailmanへのクエリを
# listinfoページにリダイレクトします(推奨)。

# RedirectMatch ^/mailman[/]*$ /mailman/listinfo

Apacheを再起動します:

systemctl restart httpd.service

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

systemctl enable mailman.service  
systemctl start mailman.service

ISPConfig 3をインストールした後、次のようにMailmanにアクセスできます:

すべてのApache vhostに対して/cgi-bin/mailmanのエイリアスを使用できます(MailmanにアクセスしたいすべてのvhostでsuExecとCGIを無効にする必要があります!)。つまり、リストのMailman管理インターフェースにはhttp:///cgi-bin/mailman/admin/でアクセスでき、メーリングリストのユーザー用のウェブページはhttp:///cgi-bin/mailman/listinfo/で見つけることができます。

http:///pipermail/でメーリングリストのアーカイブを見つけることができます。

Share: X/Twitter LinkedIn

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

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