*Apache [#bef8e70f]
[[Apache:+http://httpd.apache.org/]]
Linux用WWWサーバの代名詞。
apache2.4からは設定方法が色々と変更されているので注意。
*Radius [#w590415c]
[[FreeRADIUS:+http://freeradius.org/]]
OSSのRadiusServerとしては、多分一番シェアが高い物。
~
*インストール [#t1ce34da]
&size(16){&font(b){1. 前準備};};
ソースから入れる前にpkgconifgを統一しておく。
他の場合でもやった方がよさそうだが、書くのが面倒くさいので省略。
(Linux入れたら、とりあえずLAMP構築するだろうからここだけで大丈夫だべ)
 # cd /usr/local/lib64
 # ln -s /usr/lib64/pkgconfig .
 # cd /usr/local/lib
 # mkdir /usr/lib/pkgconfig
 # ln -s /usr/lib/pkgconfig .
後は、https通信用に[[OpenSSL>Linux/Source/OpenSSL]]も入れておく。
~
&size(16){&font(b){2. APRのビルド・インストール};};
apacheのソースと一緒にビルドする方法もあるらしいが、
自分の環境では上手くいかなかったので別々にビルドする。
 # tar zxvf apr-1.4.6.tar.gz
 # cd apr-1.4.6
 # ./configure --prefix=/usr/local/apr
 # make
 # make test
 # make install
~
&size(16){&font(b){3. APR-Utilのビルド・インストール};};
 # tar zxvf apr-util-1.5.1.tar.gz
 # cd apr-util-1.5.1
 # ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-util
 # make
 # make test
 # make install
~
&size(16){&font(b){4. Apacheのビルド・インストール};};
initの名前を“httpd”にするとyumとかで入れた物と被ってエラーになる場合がある。
よって、今回は“apache”という名前にしてインストールする。
[[PCRE>Linux/PCRE]]がまだ入ってない場合は、apacheのソースをビルドする前に入れておく事。
 # tar zxvf httpd-2.4.3.tar.gz
 # cd httpd-2.4.3
 # vi config
 
&font(b){※全部一行で書く};
 --prefix=/usr/local/apache
 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl=/usr/local/openssl --with-pcre=/usr/local/pcre
 --enable-ssl --enable-suexec --enable-rewrite --enable-auth-digest --enable-dav --enable-so
*インストール [#of8b6c87]
&size(16){&font(b){1. 前書き};};
ソースから入れるなら、3.0.xを入れるべきなのだろうが、
CentOS6.5+FreeRADIUS3.0.3で構築を試みた結果、
libtallocとの連結やOpenSSLの組み込みとかで転けてやる気がなくなったので、楽な2.2.xで構築。

 # ./configure `cat ./config`
 # make
 # make install
という事で、今回は以下の構成を前提にメモ。
 OS : CentOS 6.5 x86_64
 FreeRADIUS : 2.2.5
~
*設定 [#k548a427]
&size(16){&font(b){I. apacheスクリプトのコピー};};
 # cp /usr/local/apache/bin/apachectl /etc/init.d/apache
 # chmod 755 /etc/init.d/apache
 # ln -s /etc/init.d/apache /etc/init.d/httpd
 # ln -s ../init.d/apache /etc/rc3.d/S96apache
&size(16){&font(b){2. FreeRADIUSのコンパイル};};
[[OpenSSL:http://www.ns-lab.org/wiki/?cmd=read&page=Linux%2FSource%2FOpenSSL]]もmakeでインストールしている事を前提。
yumなりapt-getなりでOpenSSLを入れた場合は、./configureのオプションを削ればOK
 # mkdir /usr/local/src/radius
 # cd /usr/local/src/radius
 # wget "ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.2.5.tar.gz"
 # tar zxvf freeradius-server-2.2.5.tar.gz
 # cd freeradius-server-2.2.5
 # ./configure --prefix=/usr/local/radius-2.2.5 \
         --with-openssl-lib-dir=/usr/local/openssl/lib \
         --with-openssl-include-dir=/usr/local/openssl/include
 # make && make install
後は事後処理として、FreeRADIUSへPATHを通したり、ldconfigを打ったりする。
~
&size(16){&font(b){II. ユーザーの準備};};
 # adduser www -d /var/apache -s /sbin/nologin
 # rm -rf /var/apache
 # mkdir -p /var/apache/html
 # chown -R root.www /var/apache
&size(16){&font(b){3. インストール後処理};};
ログディレクトリを作成したり、FreeRADIUS用にユーザ・グループの作成。
 # mkdir /var/run/radiusd
 # mkdir -p /var/log/radius/radacct
 # groupadd radiusd
 # useradd -g radiusd -d /var/log/radius -s /sbin/nologin radiusd
 # cd /usr/local
 # ln -s /usr/local/radius-2.2.5 ./radius
 # ln -s /uar/local/radius /etc/radius
 # chgrp -R radius /etc/radius/raddb/*
~
&size(16){&font(b){III. apacheの設定};};
 # cd /usr/local/apache/conf
 
&font(b){※以下のファイルを設定していく。他は必要の応じて};
 # vi httpd.conf
 # vi extra/httpd-default.conf
 # vi extra/httpd-languages.conf
&size(16){&font(b){4. コンフィグ};};
大規模システムならradiusのデータをMySQLへ流すのだろうが、
今回は小規模かつ平常時のメンテナンス性を重視する為、プレーンテキストで情報を保存する。
下記では、変更した部分のみ記載する。
~
*アクセス制限 [#o656c603]
apache2.2系統とapache2.4系統ではアクセス制限のやり方が変わっているので注意
&size(16){&font(b){A. apache2.2};};
全てのアクセス許可する
 Order allow,deny
 Allow from all

全てのアクセスを拒否する
 Order deny,allow
 Deny from all
radiusd.conf
 prefix = /usr/local/radius   #インストールディレクトリ
 localstatedir = /var   #PIDやログの保存ディレクトリの親
 
 user = radiusd   #FreeRADIUSの実行ユーザ
 group = radiusd   #FreeRADIUSの実行グループ
 
 port = 1812   #radius認証を受ける待ちポート番号
 auth = yes   #認証時のログを保存する
 
 security {
     allow_valnerable_openssl = yes   #OpenSSLのHeartBeatチェックを行わない
     #上記オプションを入れないと、yumで入れた修正済みOpenSSL"1.0.1e+hoge"に対しても反応してしまう。
 }
~
&size(16){&font(b){B. apache2.4};};
全てのアクセスを許可する
 Require all granted
clients.conf
 client localhost {
     secret = "RadiusServerの認証パスワード"
 }
 
 client 192.168.1.0/24 {   #認証を許可するIPアドレスorネットワーク
     secret = RadiusServerPassword   #クライアントに適用させるRadiusServer認証パスワード
     shortname = RadiusServerName   #クライアントに適用させるRadiusServer識別名
 }

全てのアクセスを拒否する
 Require all denied