サーバー設定 · 8 min read · Nov 01, 2025
完璧なサーバー – CentOS 7.1 と Apache2、Postfix、Dovecot、Pure-FTPD、BIND および ISPConfig 3 - ページ 2
9 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 dovecot10 Postfix のインストール
Postfix は以下のようにインストールできます:
yum -y install postfix次に、Sendmail をオフにし、Postfix と Mariadb (MySQL) を起動します:
systemctl enable mariadb.service
systemctl start mariadb.servicesystemctl stop sendmail.service
systemctl disable sendmail.service
systemctl enable postfix.service
systemctl restart postfix.serviceSendmail がサーバーにインストールされている場合に起動しないようにするために、sendmail を無効にします。したがって、エラーメッセージ “Failed to issue method call: Unit sendmail.service not loaded.” は無視できます。
11 Getmail のインストール
Getmail は以下のようにインストールできます:
yum -y install getmail12 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 ユーザーにログインできないようにします。
root パスワードを設定しますか? [Y/n] <-- ENTER
新しいパスワード: <-- yourrootsqlpassword
新しいパスワードを再入力: <-- yourrootsqlpassword
パスワードが正常に更新されました!
特権テーブルを再読み込み中..
... 成功!
デフォルトでは、MariaDB のインストールには匿名ユーザーがあり、誰でも
ユーザーアカウントを作成することなく MariaDB にログインできます。これはテスト用にのみ
意図されており、インストールを少しスムーズにするためのものです。
本番環境に移行する前に、これらを削除する必要があります。
匿名ユーザーを削除しますか? [Y/n] <-- ENTER
... 成功!
通常、root は 'localhost' からのみ接続を許可されるべきです。
これにより、誰かがネットワークから root パスワードを推測できないようにします。
root のリモートログインを禁止しますか? [Y/n] <-- ENTER
... 成功!
デフォルトでは、MariaDB には誰でもアクセスできる 'test' という名前のデータベースがあります。
これもテスト用にのみ意図されており、本番環境に移行する前に削除する必要があります。
テストデータベースとそのアクセスを削除しますか? [Y/n] <-- ENTER
- テストデータベースを削除中...
... 成功!
- テストデータベースの特権を削除中...
... 成功!
特権テーブルを再読み込みすることで、これまでに行ったすべての変更が
即座に反映されることを保証します。
特権テーブルを今すぐ再読み込みしますか? [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 - 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.0.100/phpmyadmin/ に向けて、ユーザー名 root と新しい root MySQL パスワードでログインできます。
13 Amavisd-new、SpamAssassin および ClamAV のインストール
amavisd-new、spamassassin および clamav をインストールするには、次のコマンドを実行します:
yum -y install amavisd-new spamassassin clamav clamav-update unzip bzip2 perl-DBD-mysqlfreshclam 設定ファイル /etc/freshclam.conf を編集します
nano /etc/freshclam.conf“Example” の行をコメントアウトします
[....]
# Example
[....]次に、freshclam、amavisd、および clamd.amavisd を起動します:
sa-update
freshclam
systemctl enable amavisd.service14 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 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'
[...]次に、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.gzCentOS 7.1 は apache-2.4 を使用しているため、コンパイルする前に 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: putting auxiliary files in AC_CONFIG_AUX_DIR, config'. libtoolize: copying fileconfig/ltmain.sh’
libtoolize: Consider adding AC_CONFIG_MACRO_DIR([m4])' to configure.ac and libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree. libtoolize: Consider adding-I m4’ to ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:9: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated. For more info, see:
configure.ac:9: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24: installing ‘config/config.guess’
configure.ac:24: installing ‘config/config.sub’
configure.ac:9: installing ‘config/install-sh’
configure.ac:9: installing ‘config/missing’
src/Makefile.am: installing ‘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.confLoadModule suphp_module modules/mod_suphp.so… そして /etc/suphp.conf ファイルを次のように作成します:
nano /etc/suphp.conf[global]
;Path to logfile
logfile=/var/log/httpd/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=apache
;Path all scripts have to be in
docroot=/
;Path to chroot() to before executing script
;chroot=/mychroot
; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0077
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100
[handlers]
;Handler for php-scripts
x-httpd-suphp="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
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.service15 mod_python のインストール
apache モジュール mod_python は RPM パッケージとしては利用できないため、ソースからコンパイルします。最初のステップは、python 開発ファイルをインストールし、現在の mod_python バージョンを tar.gz ファイルとしてダウンロードすることです。
yum -y install python-develcd /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.service16 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.confFTP および 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.service18 Webalizer と AWStats のインストール
Webalizer と AWStats は以下のようにインストールできます:
yum -y install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder19 Jailkit のインストール
Jailkit は SSH ユーザーと cronjob を 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 iptables-services fail2ban fail2ban-systemd
systemctl mask firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service
systemctl stop firewalld.service
systemctl start iptables.service
systemctl start ip6tables.service次に、/etc/fail2ban/jail.local ファイルを作成し、ssh、email および ftp サービスの監視を有効にします。
nano /etc/fail2ban/jail.localjail.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.service21 rkhunter のインストール
rkhunter は以下のようにインストールできます:
yum -y install rkhunter22 Mailman のインストール
サーバーで Mailman を使用してメーリングリストを管理したい場合は、今すぐ mailman をインストールします。Mailman は ISPConfig によってサポートされているため、後で ISPConfig を通じて新しいメーリングリストを作成できます。
yum -y install mailmanMailman を起動する前に、最初のメーリングリストである 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
メーリングリストを運営する人のメールアドレスを入力してください: <– 管理者のメールアドレス、例: [email protected]
初期の 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/listinfoApache を再起動します:
systemctl restart httpd.serviceMailman のシステム起動リンクを作成し、起動します:
systemctl enable mailman.service
systemctl start mailman.serviceISPConfig 3 をインストールした後、次のようにして Mailman にアクセスできます:
すべての Apache vhosts に対して /cgi-bin/mailman のエイリアスを使用できます(Mailman にアクセスしたいすべての vhosts では suExec と CGI を無効にする必要があります!)。つまり、リストの Mailman 管理インターフェースには http://
http://
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。