はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2017/02/18
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> セキュリティ強化 >> サーバ情報の非表示
動作確認 [ FC1 / FC2 / FC3 / FC4 / FC5 / FC6 / Fedora7 / Fedora8 / Fedora9 / Fedora10 / Fedora11 / Fedora12 / Fedora13 / Fedora14 / Fedora15 / Fedora16 / Fedora17 / CentOS4 / CentOS5 / CentOS6 ]
  1. サーバ情報を非表示にする目的とは・・・
  2. Webサーバ(apache)の設定
    apache(httpd)情報の隠蔽
    php情報の隠蔽
  3. Mailサーバ(postfix)の設定
  4. DNSサーバ(bind)の設定

■ サーバ情報を非表示にする目的とは・・・

各サーバデーモンは、あるコマンドを与えられたりアクセスした場合にアクセス先にサーバ情報(デーモン名やバージョン等)を返却します。
悪意のある第三者(クラッカー)は、そのサーバ情報を基に脆弱性を狙い攻撃を仕掛けてきます。
(サーバ情報が表示されれば、そのサーバ情報(デーモン名)のありとあらゆるアタックをかけてきます。)

サーバ情報やバージョンを非表示にする事により第三者は一意に狙ったアタックがかけづらい為、少しは軽減できるかもしれません。
ここの設定は一意的な攻撃を少なくする為であり、防御する方法ではありません。

■ Webサーバ(apache)の設定

■ apache(httpd)情報の隠蔽

telnetでWebサーバのポート"80"にアクセス
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
コマンド入力
ECHO
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p>ECHO to / not supported.<br />
</p>
<hr />

サーバ情報が表示されている
<address>Apache/2.2.3 (Fedora) Server at kajuhome.com Port 80</address>
</body></html>
Connection closed by foreign host.

apache設定ファイルの編集
# vi /etc/httpd/conf/httpd.conf
#
# Don't give away too much information about all the subcomponents
# we are running.  Comment out this line if you don't mind remote sites
# finding out what major optional modules you are running
ServerTokens Prod

#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of:  On | Off | EMail
#
ServerSignature Off

Webサーバ(apache)の再起動
【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】
# /etc/rc.d/init.d/httpd restart

【Fedora16以降 の場合】
# systemctl restart httpd.service


telnetでWebサーバのポート"80"にアクセス
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
コマンド入力
ECHO
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p>ECHO to / not supported.<br />
</p>
サーバ情報が非表示になった
</body></html>
Connection closed by foreign host.

■ php情報の隠蔽

確認の為、事前にドキュメントルート「/var/www/html/」に適当な「test.php」を作成します。

telnetでWebサーバのポート"80"にアクセス
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
コマンド入力
HEAD /test.php HTTP/1.0
     <-- もう一度、空エンター押下

HTTP/1.1 200 OK
Date: Mon, 19 Nov 2007 07:39:56 GMT
Server: Apache
phpのバージョン情報が表示されている
X-Powered-By: PHP/5.2.4
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: text/html

Connection closed by foreign host.


php設定ファイルの編集
# vi /etc/php.ini
;
; Misc
;
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
expose_php = Off


Webサーバ(apache)の再起動
【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】
# /etc/rc.d/init.d/httpd restart

【Fedora16以降 の場合】
# systemctl restart httpd.service


telnetでWebサーバのポート"80"にアクセス
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
コマンド入力
HEAD /test.php HTTP/1.0
     <-- もう一度、空エンター押下

HTTP/1.1 200 OK
Date: Mon, 19 Nov 2007 07:40:44 GMT
Server: Apache
サーバ情報が非表示になった
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: text/html

Connection closed by foreign host.

■ Mailサーバ(postfix)の設定

telnetでMailサーバのsmtpポート"25"にアクセス
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
サーバ情報が表示されている
220 kajuhome.com ESMTP Postfix (2.0.18)
ctrl + "]"を押してターミナルを抜ける
^]
telenetの終了
telnet> quit
Connection closed.

postfix設定ファイルの編集
# vi /etc/postfix/main.cf
# SHOW SOFTWARE VERSION OR NOT
#
# The smtpd_banner parameter specifies the text that follows the 220
# code in the SMTP server's greeting banner. Some people like to see
# the mail version advertised. By default, Postfix shows no version.
#
# You MUST specify $myhostname at the start of the text. That is an
# RFC requirement. Postfix itself does not care.
#
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
smtpd_banner = $myhostname ESMTP

Mailサーバ(postfix)の再起動
【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】
# /etc/rc.d/init.d/postfix restart

【Fedora16以降 の場合】
# systemctl restart postfix.service


# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
サーバ情報が非表示になった
220 kajuhome.com ESMTP
ctrl + "]"を押してターミナルを抜ける
^]
telenetの終了
telnet> quit
Connection closed.

■ DNSサーバ(bind)の設定

DNSサーバ情報確認
# dig @localhost chaos txt version.bind

; <<>> DiG 9.2.3 <<>> @localhost chaos txt version.bind
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51352
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind.                  CH      TXT

;; ANSWER SECTION:
サーバ情報が表示されている
version.bind.           0       CH      TXT     "9.2.3"

;; Query time: 34 msec
;; SERVER: 127.0.0.1#53(localhost)
;; WHEN: Thu Oct 28 12:09:48 2004
;; MSG SIZE  rcvd: 48

bind設定ファイルの編集
# vi /etc/named.conf
// generated by named-bootconf.pl

options {
        directory "/var/named";
        以下の行を追加する
        version "unknown";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        // query-source address * port 53;
};

DNSサーバ(bind)の再起動
【FC1 から Fedora14 / CentOS4 / CentOS5 / CentOS6 の場合】
# /etc/rc.d/init.d/named restart

【Fedora15以降 の場合】
# systemctl restart named.service


DNSサーバ情報確認
# dig @localhost chaos txt version.bind

; <<>> DiG 9.2.3 <<>> @localhost chaos txt version.bind
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58074
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind.                  CH      TXT

;; ANSWER SECTION:
サーバ情報が非表示になった
version.bind.           0       CH      TXT     "unknown"

;; Query time: 29 msec
;; SERVER: 127.0.0.1#53(localhost)
;; WHEN: Thu Oct 28 12:17:03 2004
;; MSG SIZE  rcvd: 50

■ コンテンツ関連

■ その他

ページ先頭へ

Copyright(©)2004-2017 First home server construction. All Right Reserved.