プラグイン集

無料ブログはココログ
2021年10月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

サンプルJS

  • ユーロバカ一代の締切
    ・・・初期化中・・・

« 第8回マインクラフトサーバーを構築する(マインクラフトサーバー編) | トップページ | 第10回マインクラフトサーバーを構築する(メールサーバー編) »

2014年3月14日 (金)

第9回マインクラフトサーバーを構築する(webサーバー編)

注意事項は第1回へ。
前回は第8回へ。

2本目の柱、webサーバーの構築に入る。

ーーーーーーやること一覧ーーーーーー

  • セキュリティで最低限やること一覧

1.Yumは確実にアップデートする
2.iptablesで確実に不要なポートをふさぐ
3.SSHのパスワード認証を切る→RSA認証
3.1.rootログインさせない
3.2.ポートを変える
3.3.しつこい奴はDenyHost
3.4.そもそも、SSH可能なユーザーを絞る
3.5.同時SSH可能な数を絞る
4.rootになれるユーザーを絞る
5.ウイルス対策ソフト
6.ファイル改ざん検知
7.rootkit検知
8.不要なサービス停止

9.攻撃検知・防御・排除(バッファーオーバーフローとかDOSとか)
10.ログ監視と調査
11.鯖情報の非表示(Apachやphpのレスポンスを返さないように設定)
12.ApachのSSL化
13.ポートスキャンを遮断
14.DDNSサーバーへの変更通知
15.バックアップ

  • サーバーの設定と起動

1.NTPサーバー
2.マインクラフトサーバー
3.(SQLサーバー)
4.webサーバー
5.webサーバーのSSL化
6.SNMP+MRTG
7.(アクセス解析サーバー)
8.メールサーバー(送信)
9.メールサーバー(受信)
10.メーリングリストサーバー

赤字は作業終了を示す。

ーーーーーーここからが作業ーーーーーー

webサーバー構築

webサーバーソフトはapacheを使う。wikiはPHPで動作するPukiwiki無印。
wikiもいろいろ有るから、好きなの使えばいいと思うよ。

apacheインストールして、/etc/httpd/conf/httpd.confを自分好みにカスタム。

ServerTokens Prod にすると、セキュリティの11番、apacheが返すレスポンス量が減って、サーバー情報が隠される。

Listen 80 を書き換えると他のポートで待機させることが出来る。
余計なhttpの攻撃を防げるのはいいが、アドレスの後ろに:xxxx/とか打ってもらわなければならないので、一手間かかる。また、SELinux、iptablesの設定変更も必要。80番ポートでサーバー待機させて、DoS DetectorとかTCP Wrapper の辺りで手を打つ方が簡単。

ServerName ~:80 を自分のDDNS名に書き換える。

DocumentRoot "/var/www/html" .jp/かorg/かは知らないけど、ドメイン名だけ打たれたときに、index.htmlを保存するディレクトリを決める。そのままでいいんじゃないかな?

<Directory />
    Options FollowSymLinks この部分のIndexesとか削る。適当に打たれて、ディレクトリの中身丸見えが防げる。シンボル追跡も止めさせる方がいい。SSDで要領無いから、HDD側をしょうがなく使う場合用に、シンボリックリンクを追跡させる。<Directory "/var/www/html">にも、同等の記述があるので注意。
AllowOverride None
    Order allow,deny
Allow from all アクセス制御、アクセスされたくないない所を弾く時に使う。
Deny from fumino~ 文乃からのアクセス遮断とか
</Directory>

<IfModule mod_userdir.c>
    UserDir disabled
    #UserDir public_html
</IfModule>
ユーザーにwebページを持たせるかどうか、うちは持たせない。有効化して、コメントアウト取って、ユーザー、ニャル子に/home/nyaruko/public_html/ をパーミッション755作成させて、SELinux設定すれば、ドメイン名/~nyaruko/ でアクセスが可能になる。

次の<>にアクセス制御や.htaccess 関連があるんで、ご自由に。

ServerSignature off
サーバーの情報を隠せるけど、落ちてるぞ~とかの善意まで拒否してしまう。意図的に落としてるからうちはOFF。

AddDefaultCharset UTF-8
EUCの人は変更。webページ領域はUTF-8だとかならそのまま。SJISにしたいとか任意で。

余力のある人は、エラーページのコメント外して、Myエラーページ表示させる。
うちは、テキストで良いのでパス。

httpdの設定は人によるの一言なんで、ググるなり本買うなりして勉強する。
設定完了したら、service httpd start で起動。
エラー吐いたら、設定見直し。分かんないなら、直ちに構築作業を中止。
「自分のページ書き換えられたー」ならいいが、「お前のサイトからウイルス貰ったどうしてくれる!」ってゾンビ生成装置になるから。

ブラウザからhttp://localhost(:xxxx)/ でapacheのサンプルページが見られればサーバーは動いてる。※()の中はListenでポート変えた時に、ポート番号を指定する。

/var/www/html/ にindex.html を作成すると、サンプルページではなく、自分が作ったページがトップ画面になる。エディタで作るもよし、ホームページビルダーで作るもよし、何らかの手段で作る。


wikiのインストール

トップページが出来たら、PHPインストール。 <?php phpinfo() ?> だけを記した、phpinfo.html を /var/www/html/ に作成。
httpd を再起動し、localhost/phpinfo.html にアクセスし、PHPの情報がずらずら出れば問題無し。出なかったらPHPのインストールに失敗してる。
確認できたら、消すか、公開ディレクトリ以外に移動。システムの情報をわざわざ公開ディレクトリに置いて、データ垂れ流しにする必要は無いでしょう。

/etc/php.ini のexpose_php = Off に設定することで、余計なPHPの情報を出力しなくなる。

pukiwiki のUTF-8を落としてきて、解凍。/var/www/html/wiki/ あたりに全データ突っ込む。
chownでwikiの所有者とグループをapacheに変更。

pukiwiki.ini.phpを開いて設定。
ページタイトルとか、管理者名とかを編集。そして、$adminpassを変更。

勝手に書き換えられては困るので、$auth_users を設定。パスワードが漏れる恐れがあるので、SSL暗号化を行う。

$edit_auth = 1; を指定して、編集時に認証を要求する。(見るのにパスワード打つのは面倒くさいと要望があった。)

あとは、使うプラグイン入れて、スキン入れ替えたり・・・。regionとかnetvideosあたりは便利。
これもググるなり、本買って自分の欲しい機能を実現する。

終わったら、httpd を再起動してlocalhost/wiki/ にアクセスして、見られるかどうか確認する。


SSL化

第1回の参考サイトにお譲りする。それそのまんまやっただけだし。
wikiだけ暗号化出来ればいいので、SSLのバーチャルホストの設定を
DocumentRoot "/var/www/html/wiki/"
とした。これで、https://~/ でアクセスしてもらえば、直接wikiにつなげられる。

証明書エラーが嫌なら、証明書を発行して貰う。それなりにお高い。


DOS攻撃対策

mod_dosdetector というapacheのモジュールを使って防ぎます。
mod_dosdetectorでDoS対策を参考に、tar玉持ってきてmake;make install; 。
httpd.confにモジュールを読み込むように指示。
soは、modules に配置、設定は、conf.dに配置。

リミットのさじ加減と、何に書き換えさせるかはお好みで。

追記:
後に、mod_securityと言うXSSやインジェクション系も対処できるモジュールを追加している。


アクセス解析

webサーバー立てるからには、どのページが人気あるか知りたいですよね。
英語ですが、yumでwebalizer が簡単です。

/etc/webalizer.conf を設定する。
OutputDir 出力先
ReportTitle タイトル
HostName ホスト名
除外するURLやユーザー指定、グループ化、サーチエンジンの設定あたりを、webなり参考書見ながらコメントアウトを削ったり、増やしたりする作業をする。

終わったら、httpdのconf.dにあるwebalizer.confを編集。
自分しか見えないように設定する。deny→allowなんで、allow from 自分のネットワーク を記述すれば良い。

webalizer コマンドを実行して、httpdを再起動。
その後、http://localhost/usage/ にアクセス。
出来たばかりだと情報が無いが、運営していくうちにたまる。


php アクセラレータ

APCというphpの加速装置をインストールする。(キャッシュして結果返してるだけだから、メモリを食います。)

yum でapc入れて、/etc/php.d/apc.ini を編集。
APCのドキュメント を見ながら、shm_sizeを調整すればいいんじゃないか?
もうちょい、効果出させるならapc.optimization=1とか入れておく?
optimizationは実験項目だから、クラッシュしても知らんが。


ブログ

完全におまけ項目。スクショをブログに積み重ねていけば、ワールドの進歩が分かるね。
(緑のアレによる、リフォーム日記になるかもしれないが。)

mySQLをインストールして、ユーザー名wordpress 、パスワード wordpress で接続する、wordpress と言うデータベースを作る。

php-mysql パッケージをインストールして、wordpressを/var/www/html/wordpress に展開する。tar玉は、公式から適当に拾ってきてくれ。
展開したwordpressの所有者とグループをapacheに変更しておくこと。

/var/www/html/wordpress/wp-config.php を開いて

// ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'wordpress');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'wordpress');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'wordpress');
/** MySQL のホスト名 */
define('DB_HOST', 'localhost');
/** データベースのテーブルを作成する際のデータベースのキャラクターセット */
define('DB_CHARSET', 'utf8');

この辺りを自分の環境に合わせて調整。

SQLはサッパリわからんので、省略。参考書のままやっただけだし。
root設定→文字コード変更→wordpressって名前でユーザー作って、wordpressっていうパスワードを設定→wordpressに操作権限を与える
これぐらいの作業しかしてない。

セキュリティホールを作っても良ければ、 phpmyadmin をインストールすることで、データベースをGUI操作することが可能。


SNMP+MRTG

MRTG かどうかは分からないけど、素晴らしい例がある。
JPIXさんのトラフィック状況
こんな感じの、グラフが出来上がる。通信トラフィックのみならず、CPU使用率、ディスク使用率、メモリ使用率が分かる。

情報の取得に使われる技術がSNMPで、グラフを生成するのがMRTG。
なので、SNMPが動いてないと、グラフが作れない。

SNMP
snmpのパッケージと依存をすべてインストールして、/etc/snmp/snmpd.conf を編集。

com2sec local  localhost       private
com2sec mynetwork  192.168.0.0/24       public
group   MyROGroup v1           mynetwork
group   MyROGroup v2c           mynetwork
view     all           included   .1 80
access  MyROGroup  ""      any       noauth    exact  all none none
disk / 10000

この辺を設定したら動いた。(結構へそ曲がりでstatusはrunningなのに応答してくれない。)
もちろん、service snmpd start かけておくこと。
snmpwalk -v 2c -c public 192.168.0.2 .
辺りのコマンドで確認。

おぉ、今までの設定で、再起したらサーバー起動しないって場合は、chkconfig サービス名 on をやり忘れてる。これしないと、windows で言う所のサービスとかスタートアップに登録されない。

MRTG
yum でインストール。
cfgmakerで、あらかたの設定を作る。
/etc/mrtg/mrtg.cfg を編集して、自分の環境に整える。日本語を使わない方が無難。

手打ちするのは面倒なのと、一ヶ所でも間違えると通らない。
なので、参考サイトの記述を転用させてもらう方が間違えは無い。

LANG=C で端末を英語表示のみに切り替えて、mrtg /etc/mrtg/mrtg.cfg 3~5連打。
それでもエラーが出るなら記述が間違ってる。
LANG=Cからの復帰は、LANG=ja_JP.UTF-8
※文字コードがEUCならLANG必要無し。UTF-8の場合のみ。

/etc/httpd/conf.d/mrtg.conf を開いて、公開範囲を決める。出かけていてもSSHフォワーディングで見られるので、自分のローカルエリア内までにした。

httpd を再起動して、http://localhost/mrtg/eth0.htmlとかhttp://localhost/mrtg/cpu.html とか無事に開けたら、indexmaker コマンドで、インデックスページを作る。

インデックスページができると、http://localhost/mrtg/ でアクセスすると、監視している項目の一覧が出来る。

イーサーネット2枚刺しなら、eth1を追加したり、ディスク2基刺しなら、hdd2を作るとかお好みで設定を変える。

これも、webalizer同様に、時間経過で賑わってくる。


まとめ

webサーバーが立った。
協議とか情報交換に使えるwikiが出来た。
アクセス解析が出来るようになり、どのページが人気か分かる様になった。
おまけで、ブログサイトが出来た。
セキュリティを僅かに向上させた。
SNMP+MRTG環境を作り、webからサーバーの状態を把握できるようにした。

« 第8回マインクラフトサーバーを構築する(マインクラフトサーバー編) | トップページ | 第10回マインクラフトサーバーを構築する(メールサーバー編) »

Linux」カテゴリの記事

マインクラフト」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 第9回マインクラフトサーバーを構築する(webサーバー編):

« 第8回マインクラフトサーバーを構築する(マインクラフトサーバー編) | トップページ | 第10回マインクラフトサーバーを構築する(メールサーバー編) »