プラグイン集

無料ブログはココログ
2021年8月
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

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

Linux

2020年5月22日 (金)

NextCloud+Mattermostに再挑戦

前回は、NextCloud+GitLab+Mattermostに挑んで大敗した。

メモリ不足の温床になった、GitLabを抜いて、Mattermostは公式パッケージでインストールを試みる。

NextCloudをNginxで動かそうとして、1度目は失敗した。
どうしても、NextCloudの認証から先に進めなかった。
でも仮想マシンのいいところは、ファイルを再配置すれば、NextCloudパッケージのインストール前からやり直せること。

2度目はApache httpdでNextCloudを動かした。あっさり行けた。

Mattermostは公式パッケージを取って来ればNginxで頑張らなくても8065番ポートで動作する事。

サブディレクトリでなくポートでアクセス先が変わっても問題ないので、80番ポートでnextcloud、8065番ポートでMattermostが動作するようになった。

1

これで、心置きなくMattermostのボット作成に入れる・・・と思ったら、投稿内容の整形ぐらいスラッシュコマンドで実現できそうだった。
わざわざボットにコマンドを投げて、構文解析して、結果を投稿と言う形にしなくても良さそうだった。

・・・

別件対応のためにAnsibleも入れてみた。

普通にdnfコマンドでインストール出来て、ローカルにHello,worldの表示が出来た。

Photo_20200522220101

これでAnsible分かったかと言うと全然分かっていない。

※仮想マシンにテスト的にこれらのサービスをインストールして感触をつかむためのものなので、暗号化までは行っていない。
オープンにするときには暗号化が必須だ。

2020年5月10日 (日)

nextCloud+gitLab+Mattermost+SSLサーバの構築挑戦

7年前の2コア4スレッドPCにVMを使って、CentOS8をインストールして、
タイトルの3大ソフト+SSL通信のシステム構築を試みた。

結論は、構築できなかった。
VMに割り当てられるCPUは1個、メモリは4GBが限界。
nextCloud+gitLabを入れただけでこんな感じ。

1core

ジョブ数が8/1CPUを超えて、メモリが4GB中3GB使ってて、スワップに突っ込んでいる。
とてもじゃないが、今のVMの設定では耐えられない。

たどり着いたのは、Mattermostの画面が見られたところまで。

Mattermost

nginx のデプロイがメモリ不足で失敗していて、Mattermostにサインインすることすらかなわない。

nextCloudのインストール

nextCloudの配布先が、サーバー内部エラーでダウンロードできなかったこと以外は、割と行けた。
PHP7.4を使うために、Remiレポジトリを入れた。その時にPHPの参照レポジトリをOS BASEからREMIに切り替える事。
そうすれば、一々php74-パッケージ名のプレフィックスで/opt/root/remi/以下にパッケージをインストールす必要がなくなる。
普通に、パッケージ名で入れていい。そうしないとphp-cliが使えずに、面倒な事になる。

それ以外は、最新のnextCloudの管理者マニュアルにCentOS8でのインストール例があるので、だいたいそれに沿ってインストールして、足りない部分をnextCloudの管理者マニュアルのインストールの章を参照すれば、だいたい入る。

gitLabのインストール

gitLabのインストールは、スクリプトを取ってきてインストール。
nextCloudが入っていれば、基本的に依存パッケージは入っているらしい。
ただし、エンタープライズエディション(EE)とコミュニティーエディション(CE)がある。
gitLabは「EEをインストールして、EEの機能を封印して使ってね」という事だが、課金を踏みたくないのでCEを入れた方がいいのでは?
自分は間違って、EEを入れてしまった。ただ、課金を踏む前に動かなくなってしまった(;^ω^;)

Mattermostのインストール

Mattermostは、gitlabの設定ファイル、/etc/gitlab/gitlab.rb にコメントアウトされているMattermotの設定を復活させて、2回reconfigureを行って再起動すれば入るらしい。
ログイン画面の表示までは行ったが、ログインできなかったので詳細不明。

面倒事

httpサーバが2つ居る

nextCloudは、Apache httpd で動いていて、gitLabはnginxで動いている。nextcloudのインストールマニュアルには、nginxの例も有ったので、nginxに統一できれば、Apache分メモリとポートが浮いた。
じつは、GitLabとMattermostはポートシフトで構築している。今回はSELinux無効だからあまり気にしなくていいが、それでもfirewalldのポート開放が増える。

エントリーポイントをディレクトリ配下にできない

1台のホストで多機能提供するときは、URLをwww.hogefuga.jp/mattermostとかwww.hogefuga.jp/nextcloudで機能を切り替えたいが、GitLab機能のMattermostでは、それは実装されていないようだ。

Gitlab_mattermost 

DNS名が要る

前述のエントリーポイントに絡むが、ディレクトリ配下にできないならどうやって分けるかだが、バーチャルホストで分けることになる。
mattermost.hogefuga.jpやnexcloud.hogefuga.jpと言った感じで分けることになる。
サンデー構築で簡単にやるならIPだけでアクセスしたいが、VMホストのWindowsのetc\hostを修正するかDNS立てるかする必要があるようだ。エンタープライズ向けなので、キッチリしたものが正義なのかもしれないが、実装テストに相当工数が要るのはどうかと思う。

Let's Encryptテスト

システムが組み上がらなかったので、暗号化のテストまでは行けなかった。
無念。


まとめ

去年のOpenStack構築テストと同様に、2連敗をきっした。

100万円のXeonマシンが欲しくなる。
というか、Windowsよりペースは遅いが、Linuxであってもどんどん肥え太っている。
肥え太りに対応できるくらいのコンピュータに乗り換えが出来ないのが何とも言えない。

今年のGWも萎えて終わった。

2014年4月10日 (木)

Z87マザー、グラボ、IntelHDに悩む

再び、CentOSにnvidiaのドライバを入れるわけだが、前の記事のどこかで、LinuxにNvidiaのドライバ入れるときは、Grubのカーネルパラメータに nouveau.modeset=0 を記述してinit 3 で起動かけてインストールすると書いた気がするが、最新のCore iシリーズはGPUを内蔵しているし、マザーボードにグラフィクス出力端子が有る。
※前使ってたマザーには内臓グラフィクスは無かった。

今回もハマった。

nouveauを無効化して、nvidiaのドライバをインストールすることが出来たのだが、起動時の何チャラ [OK]の画面が出ない。終了時も同じく。何回かそのまま使ってて、致命的な問題に出くわした。テキストモードの画面がVGA側から出ない。マザーボード側から出る。

まだnouveauが噛んでるのかと、ブラックリストに登録するも改善されない。lspciしてもビデオカードだけだし、xorg.confもNvidiaドライバを指定している。

lsmodしたところ、i915ドライバーをロードしている。そうか、マザーの設定はPCI-Express優先だが、QSVとか使えたらなとUEFI上で内臓グラフィクスを無効化していない。
そのために、IntelHDのドライバi915ドライバを読み込んでいる。だからマザー側のディスプレイ端子から映像が出力される。CentOS上では、マザー側をプライマリにして、グラフィクスボードをセカンダリにするようだ。

なので、カーネルパラメータに i915.modeset=0 をさらに書き加える。

こうすると、内臓グラフィクス側からの映像出力が止まり、グラボからのみ映像が出力され、グラボ側にコンソール画面を表示することができる。

intel noveau→intel nvidia→- nvidia とドライバーを切り替える羽目になり面倒だったというおはなし。

※noveauは、最初のインストール時に、2番目の選択肢、Video Basicを選択すると、noveauがインストールされないらしい。これからCentOSインストールする方は注意してみては。

参考:ArchLinuxのKernel Mode Setting

XPのサポート終了だがLinuxにするな

今日、2014年4月9日で一般家庭用Windows XP及びOffice2003のサポートが終了した。

危険性の説明はほかのサイトに譲る。
まぁ、簡単に言えば、第2、3の パソコン遠隔操作事件 が起こって、Windows XPを利用し続けている貴方が、犯人の代わりに逮捕されて牢屋にぶち込まれるだけ。
これでお分かりかしら。

愛着のあるXPマシーン、パソコンの機能自体失われているわけでもなく、どちらかと言えばピンピンしている。なので勿体無いと思ってまだ使いたいと言う人は多いでしょう。

ちょっと前のTV地デジ化を思い出してほしい、貴方は、テレビを買い替えた人だろうか、それともチューナーを買ってきて自力配線した人だろうか。
前者であれば、地デジ化の時と同様に、古い機械を処分して、新しい機械に買い替えて、データ移行サービス(有料)を付けた方が良い。

問題は、後者だ。チューナーを付けてしのぐ知恵のあった人だ。そのあなたならこの際、Linuxをインストールして延命しようと考えているだろう。

はっきり言おう、チューナーのリモコンが増えるってレベルの優しさじゃないから!

Linuxは、「Windowsだったら出来たのになぁ」と言いながら、別のパソコン・スマホ・タブレット等で情報を探しながら操作しないと、操作できないから。

Windows7にするならまぁ、すごく遅くなるけどOSが動くとは思う。Windows 8系列は、半導体側に求められる要件がかなり上がっているので、だいたい動かない。(私のCore2系もダメだった。旧BIOSのCore iも。もちろんWin7は動作している。)ただ、知っての通り有料。万円単位。7・8共に2万ぐらいか。あえてMacに乗り換えるのは有りだ。Linuxより利用者が多いし本も有る。本の通りにやったのに本の通りの結果にならないなんてことがLinuxより少ない。最悪Mac使いこなせなくても、Windowsを共存インストールできるので、OS代の出費でWindowsに帰ってこれる。これはなかなかの選択肢だと私的に思う。

タダが良いのは人情だが、だからと言ってLinuxはストレスが一気に掛かる。(勿論そのイライラを体験すれば、帰り道にWindowsを買おうと思うだろう。だが、自分でLinux環境を作った場合、失われたデータや時間が何より勿体無い。)


ここまで来て、なおもLinuxを使おうと思うか、よろしい、ならセットアップ画面を見てみよう。

No1どこぞで進められてたCentOSのインストール開始画面。さぁ、英語のマウスの使えない画面が現れた。

No2この画面行けば、ビデオカード使えるけど、うまく使えないと。

No3マウスは使えず、最後までキーボードでのインストールとなる。インストールがうまくいけば、GUIが出て、XPのようこそ画面か、fmfmとなる。

No4失敗すれば、もちろん、キーボードから操作となる。

No5こんな感じで、もちろんこの状態でもテキストブラウザでネットは見られれるが、flushとか使ったサイトは壊滅。ためしに、エロゲメーカのLumpofsugerを開くとこうなる。

No6ちなみに、CentOS付録のfirefoxで開くとこんな感じ。

No7(C)Lumpofsugar

そう、FlushはAdobeの著作物で、オープンソースではないから、別途Adobeから取得してこなければならない。

Ubuntuであれば、ソフトウエアセンターから導入が可能だが、旧式のCentOSではrpmコマンドの理解が必須である。その他に、一般ユーザーとroot、sudoやsu - も分かってないとね。

No8Ubuntuで同ページを表示した。Flushプラグインをすぐに使うことができるため、WindowsでFirefoxを利用している人であれば、すんなり利用できるだろう。
※画面上部のTV画面に動画が再生されていないのはLinux関係ないです。自分の回線速度があまりにも遅いためです。

今、流行りのGoogle ChromeはCentOS上では動かない。Mozc(Google 日本語入力)も。CentOSの中身が古すぎるから。Ubuntuならどちらも動作する。
Google Chromeは簡単に導入できるが、Mozcはコンパイル作業が必要になる。→Ubuntu13.10ならソフトウエアセンターから一発。日本語カスタムなら最初からついてくるらしい。ライブラリ揃えた苦労はどこへorz


上の例は、webページの例だがテキストはより複雑だ。XPとVistaで文字コードが若干違うためだ。SJISとCP932と若干違うためだ。CentOSではパッケージ入れて設定しないと読み込めない。Ubuntu日本語カスタムはその辺が手厚い。ただし読み込み時に文字化けする場合は有る。

更に面倒なのは、プリンタやスキャナ。まずドライバが無い。印刷はCUPSというシステムで管理しているが、もちろんGUIでの設定は一部しかできないので、当然コマンドラインからテキストエディタで設定を書く。ペンタブもちゃんとドライバーを導入できれば、傾き・筆圧を検知できるが、ドライバをインストールできなければ、マウスの代わりしかない。

ゲーム系は壊滅。Javaで動くMinecraftはLinuxでも遊ぶことができる。※音が出なかったり、KBが効かなかったりするが。Windows用ゲームソフトは壊滅的だ。テクニックが有るならWineを使いエミュレートすることができるが、所詮エミュだ。予期せぬバグが出る。
個人的にユーザー補助機能が厄介だった。何秒かキーを押しっぱなしにするとロックしてくれる機能なんだが、まっすぐ進みっぱなしでいきなり匠先生出来てきて後退押しても、前進と相殺して動けない→シューボン。これ何度もやられた。

オーディオ系が弱い。MP3やDVDのコーデックは実はライセンス品。Windowsはオーディオ等のライセンスを内包しているが、Linuxは無い。もちろん第三者から入手することができるが、DVDのデコードソフトは日本の法律ではかなり黒い。アニオタなら致命的なブルーレイビデオも再生できない。(使いにくくてもよければVLCという手もあるが、正直XineかMplayerの使い勝手覚えたら元に戻れない。)便利なi-Tunesも使えない。

ファイル名が日本語の取り扱い。

No9Windowsパソコンで作成された日本語ファイルをCentOS上で解凍を行うと、文字化けを引き起こす。※Ubuntuでは正常に扱える。

LinuxからWindowsの領域見えるけど・・・。ソフト入れればWindowsの領域を読み書きできる。ただ、Windowsは仕様公開していないので、ちょくちょくファイルが消えたという話を聞きく。自分もWindowsの中核をなすExploer.exeを失ったことが有る。逆にWindowsからソフトを入れてLinuxの領域を読み書きする場合は、リスクが結構低い。オープンソースでどんな構造をしてるか、どう読み書きすればいいか分かるから。

トラブルは自分で何とかするしかない、人に聞いても答えてくれない。(使ってる人も居ない、本にあなたの望むトラブルシューティングは書いてない。)安心サポートサービスもLinuxは未対応だ。
ただ、同じ悩みを抱える同志は居る。英語に堪能で無いと解決方法読めないけどね。
実際、自分も「月額サポート付けてよ、数百円だよ。」を「Linux対応してる?してるなら1000円ぐらい出すよ」の一言で、契約を断ることに成功している。

友人にはよく言うのだが設定ファイルのひとつの例をだすと、

Enable=True
enable=True
Enable=true
enable=true
Enable =True
enable =True
Enable =true
enable =true
Enable= True
enable= True
Enable= true
enable= true
Enable = True
enable = True
Enable = true
enable = true

これ、全部意味違うから、ちなみに正解1個、Enable = Trueな。ただし、=前後の空白は半角空白ではなく、tab空白が正解。こんな複数通り一々試してられますか。

No10Windowsなら同じ作業が、マウスでたったのこれだけ。非常に簡単。

なので、私は安易にWindows XPマシーンをLinuxにする事を勧めない。素直にWindows 7なり8.1を購入すべきだ。ワードにエクセルやゲームなどの豊富な商用ソフト、新発売のスキャナにプリンタなどのデバイス、本の通りにやれば、画面も同じようになるWindowsの購入がお勧めだ。
これだけのリスクを承知でLinuxに行くなら止めはしないが・・・。心折れるよ。


ここまでLinuxコケにしといてあれだけど、自分Linux(大体CentOS使ってます。)
なぜか、答えはサーバー用途。

webサーバーならApache、メールならPostfixにDovecot、データベースならMySQL、驚異的な安定性に踏ん張り、なによりコネクション数の制限が無い。(WindowsXPは確かProなら10コネ、Linuxメモリと回線が続く限りいくらでも)
Windows版Minecraftで3人がWiki(webサービス)見ながら、メーリングリスト使ったら残りは1コネ。サーバー用途ならLinux強いわ。

後はプログラミング、完全無償のC言語やC++コンパイラ、PerlにRuby、Phython、phpと言語の選択が自由自在で、豊富なライブラリ群。付録のgedit(Windowsでいう所のメモ帳)もかなりプログラミングを念頭に置いて強化されている。そして、何よりオープンソースから得られる先輩方の莫大なるサンプル群。これは、本気でプログラミングしたい人には強い味方だ。

やっぱり、いわゆる大衆パソコンとして安全なインターネットを軸に文章書いたり、手紙作ったり、ゲームしたりするなら、お金を払ってでも新しいWindowsへ、移行すべき。
全ての操作を覚えなおすならMacに行くというのも、Windows買ってくれば共存可能なので有りだ。
パソコンをプロのツールとして、サーバーやプログラミング道具として生まれ変わらせるなら、Linuxにするのは有り・・・かなぁ・・・、お勧めできない茨の道だが・・・。

2014年4月 8日 (火)

postfix関係のアレ(メモ書き)

メールサーバーテストしてて、キューに大量のテストメールが詰まって、大変。

そんなときは、ここ

キューの中身を見る: mailq

キューの中身をすべて抹殺: postsuper -d ALL

リレイ先のサーバーが生きてるか調べる: telnet 相手のアドレス 587
※25番ポートはOP25Bで大体殺されているので、サブミッションポートの587番を指定する。

テスト用サーバーだからこれだけ有ればいいはず。

第0回マインクラフトサーバーを構築する (立てるサーバー)

身内専用のマインクラフトのサーバー立てるのだけど、マインクラフトだけじゃ済まなくなった。(現在形で書いてるけど、過去の遺産です。)

  • 運営協議どうする?
  • 協議結果のユーザーへの通知はどうする?

運営に関しては、参加者全員にWiki編集スキルがあるので、Wikiを使うことになった。
SNSやクラブサイト・グループウエアとかさまざまなサービスがネット上にはあるけど、
使い方覚えなおすなら、全員がすでにスキルを持っている、Wikiが良いのではとまとまった。

協議の結果通知は、wiki見てもらえば分る事なんだけど、アクセスしてもらう手間と速報性に欠ける。
システムからの通知でよく使われているのがメール。最近だとその人のTwitterに通知もありかもしれない。その人がよく見ているものなら何でもいいんじゃないかな?
ただ、ユーザーのTwitter利用者は私だけ・・・。地震の時に最も繋がったメディアだから登録はしているが、IDもパスも最早脳みそに1bitも残ってないとのこと。
スタンダードにメールが良いんじゃねという結論。(受け取った方が、見る見ない・スパム登録するしないは、その人しだいで。)

メールとかするならやっぱりサーバーOS必要になる。Windowsサーバー買う金下さい。
参加者全員「お・こ・と・わ・り!鯖缶が出せよ⑨」
無償OSのLinuxしか手がない。前に某所で鯖缶して使い慣れたCentOSに独断と偏見で決定。Ubuntuは画面きれいなんだけど、端末開くまでに30分さまよった。Linuxは端末命だから不採用。
fedoraは、新しいのは良いけど・・・、クラッシュ激し過ぎ。
Scientific Linux は、実行ファイルと設定ファイルの配置がUbuntu臭い。REPL系で悪くはないが、積極的に採用する決定打も無い。
まぁ、CentOSに独断と偏見で決めてたんで、議論の余地なしだけどね。


その結果

  • マインクラフト
  • webサーバー(wiki)
  • メーリングリスト

以上3つのサーバーが立つことになった。

簡単に3つのサーバーとか決められたけど、簡単じゃないからな?

1.マインクラフト
バックエンドはJAVAだけ これは簡単。

2.Webサーバー(wiki)
-Apache、PHPエンジン、SSLモジュール群

3.メーリングリスト
-mailman
--postfix、dovecot
---ClamAV、SpamAssassin、ProcMail

メール周り依存多い。ただこれだけで終わらない。

出かけた先でも管理が必要:SSH
外部からの攻撃を防御したい:iptables、DenyHost、TCP wrapper
システムに正確な時刻:NTP
自動バックアップ:cron、rsync

図にすると下の感じ

Maindomappu全部示したわけじゃないけど、大まかな感じは、こうなるはず。

 

中核機能
マインクラフトで、建築や探索などを行い、wikiで情報交換や作品の展示。
巨大建築やネザーでの豚狩り、サーバー緊急シャットダウンの連絡から、飲みに行こうぜの連絡まで広く活用できるメーリングリスト。
バックエンド機能
wikiは、見られる分には問題ない。メンバー以外書き込みが問題だ。
パスワードを暗号化せずに送るのは危険すぎるSSLで暗号化が必要。
メールはweb以上に深刻。スパムやウイルスは、サーバーで撃退。
味噌ボールメールの中継はさせない。次のサーバーまでのSMTPもやはり暗号化が必要。
通信の監視は必須。余計なパケットやポートは潰す。しつこく送ってくるようなホストは、着拒。
要約
メールを送信する能力があれば、簡単に大人数が必要なクラフトが可能になる。
wikiを編集する能力があれば、製作した物を簡単に多くの人に公開が出来る。
その際に、利用者はセキュリティ等に注力する必要が無く、作品作りに集中できる。
一方で、鯖缶は、セキュリティ周りやLinux運営などのきめ細かな設定と運営が必要となる。マインクラフトの処理は、かなり重い部類になる。重い処理をこなしつつ、webに応答し、必要なメールの送受信を行わなければならない。webやメールのコネクションを維持しつつ、マインクラフトのコネクションを落とさないようにする必要がある。

相手の要求もわかったし使うソフトウエア群も決まった。
用件定義や、設計の段階までいけた事になるのかな?

これ以外に、別件でブログのホスティングを頼まれた。
wikiが外部へ公開のwebページとも言えるので、別ディレクトリにWordPress展開すればたしかに、ブログサービスの提供が可能だ。
「可能だ」と結論を出したことで、「じゃぁよろしく」と。えぇ~、これで契約成立なんですか?
面倒が増えるのが嫌なので、そこのディレクトリ以下は、全て向こうの責任にしてもらった。

次、注意書き編

2014年3月19日 (水)

第11回マインクラフトサーバーを構築する(メーリングリスト編)

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

今回は、メーリングリストサーバーの構築。

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

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

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.メーリングリストサーバー

赤字は作業終了を示す。
※※DOSは、現在の状況だと、HTTPのアクセスしか検出できない。iptablesにも実装しないと全体としての安全性を上げられない。iptablesを取り上げた、第7回は無かったことになってるので、色を変えない。

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

メーリングリストソフトとして、mailmanを使う。ただ、5分ごとにcronでメール送ろうとするので、設定が終わったら、即座にmailmanのcronを止める必要がある。

yum install -y mailman でインストール。

/usr/local/を/etc/に置き換えて、centosサーバー構築ガイドにしたがう。

メーリングリストのページが出来たら、メンバーを登録しまくる。

ただ、勝手に登録されるのは気持ち悪いだろうから、招待メールを送りまくる。

登録があったら、承認して正会員に昇格。自分が旅行とかで管理できそうに無い場合に備えて、信頼出来る人をオーナー(管理者)に昇格する。

積極的に協力してくれて、ルール(規律)・マナー(礼儀)・モラル(倫理)のしっかりしている人を、モデレーター(司会者)に任命する。

これで、メーリングリスト宛にメールすれば、緊急シャットダウンやバージョンアップのお知らせ、飲みに行こうぜ、72時間耐久OFF会しようぜなどなどの連絡をメンバーで持つことが出来る。

wikiのメール送信機能を改造し、宛先をこのメーリングリストにすれば、wikiが変更される度に会員にメールが飛ぶ。

しかしながら、議論をいちいちメールするのは野暮ってもんだし、受けとるけどSPAM扱いするとか、JUNK箱に送ってしまい、結局みられない可能性が高い。

なので、あえて大事な議論「~」が有るから、皆様のご意見をwikiに寄せてください。と別作業にした方が回答を得やすいと考える。


あれだけ脅したのに、最後までサーバー立ててしまったのかよ。驚きだねぇ。

まぁ、目標としていた

  • マインクラフトサーバー
  • 運営協議用wiki
  • メーリングリスト
  • 最低限の最低限セキュリティ

が揃ったよ。

サーバーの管理運営は始まったばかり、これからが本番。技術よりも、人間関係の調節の方がずっと面倒だよ。

君のサーバーが末永く続く事を祈って。

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

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

今回は、メールサーバーの構築。

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

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

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.メーリングリストサーバー

赤字は作業終了を示す。
※※DOSは、現在の状況だと、HTTPのアクセスしか検出できない。iptablesにも実装しないと全体としての安全性を上げられない。iptablesを取り上げた、第7回は無かったことになってるので、色を変えない。

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

3本柱の最後メールサーバーを構築し、メーリングリストを作る。
緊急事態から、飲みに行こうぜまで使える同報リストを作り上げる。

メールサーバーはpostfixを使う。受信はDovecotを利用。
OP25B対策も頑張る。

これも、参考サイトCentOSでサーバー構築みれば大体出来る。
私が使ってるプロバイダは、smtp_sasl_auth_enable = yesに加えて、smtpd_sasl_auth_enable = yesも書かないとダメだったけど。

メールサーバー(送受信両方)が出来たら、暗号化

メールサーバー(送受信両方)の暗号化が終わったら、スパム&ウイルスメール対策

SpamAssassin使うとroot宛のメール通知がなくなるし、NOBODYの処理で文句言ってくる。NOBODYの処理は、nobody専用ディレクトリ作って、そこで処理させれば解決する。
ROOT宛のメッセージは、結局root以外の誰かに飛ばさないと通知されない。
また、ROOTのメッセージボックスには送信してくれずに、飛ばす人がいないとNOBODYに残ったままである。頻繁にNOBODYのメールボックスをチェックする必要がある。

コンソールに、メッセージ来ましたの表示、便利だったのになぁ。

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回マインクラフトサーバーを構築する(マインクラフトサーバー編)

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

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

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

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.メーリングリストサーバー

赤字は作業終了を示す。

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

3本柱のうちの一本、主幹となるマインクラフトサーバー立てちゃいましょう。
とりあえず、which java を実行して、javaのパスが通っていれば、JAVAが使える。
インストールしたのに、javaのパスが表示されないなら、探して、環境変数に加える。
updatedb;locate;でも、findでも好きなコマンド使ってくれ。

無かったら、Oracleにアクセスして、 Java Runtime Environment (JRE) を落としてきて、インストール。makeでもrpmでもご自由に。MOD製作を考えている人は、JAVA SEでもOK。
まぁ、普通の人はJREでいい。SEは開発者向けだ。(実行環境に差は無いけど、コンパイラとかがついてくる分、SEの方が容量有る。)

which javaでjavaが表示され、javaの実行環境が揃ったら、マインクラフトのサイト行って、サーバーのjarファイルをダウンロードする。
あらかじめ、SELinux設定済みの専用ディレクトリにダウンロードする。ユーザーのhome以下の専用ディレクトリならまだしも、home直下とかrootとかに作る奴は間違えなく管理者失格。自分のデータがネットでさらされてm9(^Д^)プギャーされるだけです。/rootとか入れたら、俺rootかよ、超(^Д^)メシウマってマシンがスナイポの手下のゾンビにされます。

公式に、java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui で動かせって書いてあるから、その通りに、シェルスクリプト作成。毎回入力するぜって人は、作らなくても問題ない。

noguiオプションを外すと、ウインドウが表示される。X Window 立てっぱなしなら、外しても問題ない。
個人的には、スレッドの負荷のバーとか、メモリの状況が見られておもしろいが。リソース節約するなら、やはり、noguiで起動。

(Windows Serverだったら、exeダウンロードして、ダブルクリックで終了。実に簡単っすなぁ。)

シェルスクリプトに実行権限与えて、実行。終わったらSTOPで停止する。
初回は、ファイルが作られる。
2回目は、ワールドが作られる。
3回目で、データが出揃って、遊べるようになる。

@wikiに作られてるMinecraft Japan wikiのマルチプレイ項目、サーバーの設定を参考に自分の思い通りに設定する。
この辺の設定は、Windowsと共通だから、ググれば多量にでてくる。
screenコマンドでデタッチして、再接続方法が主流だけど、多大なるセキュリティリスクを背負って、rconを使用する。

enable-rcon=true
rcon.password=(」・ω・)」うー!(/・ω・)/にゃーLet's\(・ω・)/にゃー!
rcon.port=25575

こんな感じに設定して、マインクラフト海外フォーラムからrconユーティリティを落としてきて、接続すればよし。SSHでログインしなくても、マインクラフトサーバーにコマンドが送れる。
screenのデタッチに失敗するの私だけか?結構高頻度でデタッチ失敗して、kill -KILLせざる得なくなる。長時間タスクやらせてログアウトする時は、nohup コマンド < /dev/null で実行してた。screenのデタッチ失敗するから。

あとは、入らせたくないユーザーやIPは、banned~.txtに、管理者はops.txtに、許可者リストを使うなら、white-list.txtに必要事項を記述。

設定終わって、3度の起動が終わったら、遊べ流状態になる。
「さぁ、設定終わった。さっそく友達呼ぶぞ!」と思った人は、今すぐ全データ消してサーバー構築止めるべき。致命的に知識が足りてない。あれ?と思った人は、まだ資格有り、続行しよう。ファイアウォールとルーターのNAPTの設定がまだですね。

前回設定したiptables の設定を変える。/etc/sysconfig/iptables に直書きなら、
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25565 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25575 -j ACCEPT
の要領でファイアウォールに穴開ける。そして、iptables を再起動。
スクリプトなら、
/sbin/iptables -A INPUT -p tcp -m state --state NEW --dport 25565 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m state --state NEW --dport 25575 -m hashlimit --hashlimit-name t_mc --hashlimit 3/m --hashlimit-burst 15 --hashlimit-mode srcip --hashlimit-htable-expire 300000 -j ACCEPT
と言った感じでで記述して、スクリプト実行。

CentOSのファイアウォールを通過できるようになった。最後の砦、ルーターの設定を変更する。ルーターの設定変更を明確に打ち出すのは、マインクラフトサーバーシリーズで多分初の言及だと思う。
ルーターのNAPTの設定を行えば、外部→ルーター→サーバーが一直線に繋がる。
DDNSの反映が済んでいれば、マインクラフトのクライアントから、アドレス入力で、サーバーに繋がる。
「やったー」と思った人、明日は君が裁判所から出頭要請が出る。すぐに、構築作業を止め、マシーンの電源を切り、通信回線を引っこ抜こう。
スナイポからすれば、ルーターの先、プライベートエリアまで案内してもらえる事になる。
NAPTにより防げていた不正パケットの通過を許してしまう。怖いとは思わないか?

ん~、例えるなら山奥の静かな山村に立派なトンネルが出来た(NAPT越えで外部からマインクラフトサーバーに入れるようになった。)。
観光客(クラフター)が来るのは歓迎。だが、ゴミの不法投棄の輩が来たり(DOS攻撃など)、村の中で良しなにしてきた土地が、いつの間にか第3者に取得され元居た人が追い出されたり(クラッキング)、山の作物を根こそぎ持っていかれたり(データ流出)などなど・・・。
トンネルさえ無ければ、峠越えをする者もほとんどいない平和な状況だったのにと嘆いても遅い。

それでも、マインクラフトのサーバーは立ったんだ、おめでとうと言っておくか。
webによる情報共有や、メールによる同報装置がいらなければ、これで、サーバー構築は終わり。
ここまででやった対策は最低限も最低限だ、ブランチマイニングしてる暇が有ったら、セキュリティの勉強して秒進分歩(日進月歩では遅すぎる)のペースで、セキュリティを見直し、絶えずアップデートすることをお勧めするけどねぇ。立てて終わりじゃない、これから運用という長い長いプロセスが始まる。


まとめ
マインクラフトのサーバーを立てた。
ルーターのNAPTの設定を変更し、外部からのアクセスが可能になるようにした。
DDNSで名前解決が出来るようになってるので、IPアドレスでなく、文字列のアドレスでアクセスが可能になったので、みんなでマインクラフト出来る環境が揃った。
長い管理者生活が始まった。サーバーの状態をしっかり把握し、スナイポされないように、防衛する日々が続く。
クラフトよりも、セキュリティを勉強する時間の方が長くなっていく。

私は、サーバーなら某所の経験でごく僅かな事ならわかる。
しかしながら、マインクラフト参加者のコミュニティ運営については分からない。
なので、コミュニティ運営技術は、別途自分の頭にインストールしてください!!
(お絵描きソフトの絵心は別売となっております見たいなものだねw)

より以前の記事一覧