Apache を利用していることを隠す(私家版パッケージの作成方法 – Debian)
Apache では、ServerTokens や ServerSignature の設定で、HTTP ヘッダ上に出力される、Apache のバージョン、OS 名を出力しないように制御出来ます。しかし、ServerSignature Off にしても、製品名(Apache)については、どうしても出力されてしまいます。
(確認例)
$ telnet 192.168.0.1 80
Trying 192.168.0.1...
Connected to 192.168.0.1.
Escape character is '^]'.
HEAD / HTTP/1.0HTTP/1.1 200 OK
Date: Sun, 31 Dec 2999 23:59:59 GMT
Server: Apache
Last-Modified: Sun, 31 Dec 2999 23:59:59 GMT
ETag: "2c075-b4a-3cb3397a"
Accept-Ranges: bytes
Content-Length: 2929
Connection: close
Content-Type: text/htmlConnection closed by foreign host.
攻撃者に有用な情報を与えない対策としては、これで十分かもしれませんが、世の中には色々な事情があります。この製品名を変更する場合は、ソースからリビルドするしか方法がありません。
ここでは、Apache の製品名を変更した上で、Debian 用のパッケージをビルドする方法を備忘録までに残しておきます。
※私家版のパッケージを利用する上では、バージョン管理が煩雑になったりするなどのデメリットを、あらかじめ理解して作業してください。
今回は、Debian GNU/Linux 5.0.2 (lenny)をインストールした直後の状態での作業になります。(SSH や sudo などの基本的な設定作業は行った状態です)
最初に、パッケージのリビルドに必要なパッケージをインストールします。
$ sudo aptitude install dpkg-dev build-essential debhelper devscripts dpatch libaprutil1-dev libapr1-dev libpcre3-dev libssl-dev sharutils hardening-wrapper sharutils
次に、作業用のディレクトリを切ります。
$ mkdir -p ~/src/apache2/
$ cd ~/src/apache2/
apt-get でソースを取得してきます。自動的に解凍されます。
$ sudo apt-get source apache2
$ cd apache2-2.2.9/
今回の作業の目的である製品名を修正します。
$ sudo vi include/ap_release.h
(変更前)
#define AP_SERVER_BASEVENDOR "Apache Software Foundation"
#define AP_SERVER_BASEPROJECT "Apache HTTP Server"
#define AP_SERVER_BASEPRODUCT "Apache"
(変更後)
#define AP_SERVER_BASEVENDOR "HOGE Software Foundation"
#define AP_SERVER_BASEPROJECT "HOGE HTTP Server"
#define AP_SERVER_BASEPRODUCT "HOGE"
必要に応じて、debchangeコマンドで、バージョン変更とchangelogの変更を記述し、debuildコマンドで、ビルドとパッケージの再構成を行います。
$ sudo debchange -i
$ sudo debuild -b -us -uc
リビルドには時間がかかります(具体的な時間は環境にもよります)。エラーでとまった場合は、パッケージが足りない場合があります。最近は、何が足りないのか、エラーに出力される良い時代なので、それを参考に、apt-get などして、再度リビルドしてみてください。
Finished running lintian.
あとは、sudo dpkg -i apache2-mpm-worker_2.2.9-10+lenny4_i386.deb とかで、インストールすれば OK。先にも述べましたが、上位バージョンが出た場合、今回インストールしたパッケージに上書きされてしまいます。これを抑止するためには、インストールしたパッケージのバージョンに固定するように設定する必要があります。
方法としては、現在入れたパッケージにPinを設定して、そのバージョンに固定するという方法になります。
$ sudo vi /etc/apt/preferences
(設定例)
Package: apache2-mpm-worker
Pin: version 2.2.9-10+lenny4
Pin-Priority: 989