コンピュータやソフトウェアのあれこれ@道民(&元道民)
Server
MyDNSのリニューアルに合わせてDiCEプラグインを修正
1月 30th
自宅サーバーはダイナミックDNSにMyDNS.JPを使い、DiCEをマシンに入れて、IPの変更を通知させています。
昨年9月にMyDNSが刷新されたのですが、そのタイミングでどうもDiCEの通知がうまく行っていないっぽくて。
しばらく手動で更新していたのですが、DiCEプラグインを修正すれば良い事がわかりました。
やろうやろうと後回しにしていたのですが、DiCEのプラグイン修正を行いましたのでメモしておきます。
DiCE用のプラグインファイル – MyDNS.JPのブログを参考に。
プラグインフォルダの場所
実行コマンド diced と同じ位置に plug-in フォルダがあるよ。
私の場合は
/usr/local/bin/DiCE/plug-in
※若干ディレクトリがおかしい気がする
plug-inフォルダの中にたくさんプラグインファイルがありますが、今回はMyDNS.JP.plgを変更する。
変更内容
- [Updater]Encode
EUC -> UTF-8
- [Response]
1=更新をしました 18=パスワードが違います 1=login_status = 1
↓
1=Login and IP address notify OK 18=パスワードが違います
- [Messages]
1=IPアドレスを更新しました 18=ユーザー名(マスターID)またはパスワードが無効です
↓
1=Login and IP address notify OK 18=ユーザー名(マスターID)またはパスワードが無効です
これも1が変更
1が変更になっている
これで問題なく動くようになるはずです。様子を見てみます。
通知がうまく行っていなかったらこの記事に追記します。
でも2008年から開発が止まっているソフトにIP通知を任せては行けない気がする、そもそも。
Apache再入門のセミナーに行ってきました
10月 28th
10/26(水)に開催された、Apache再入門 ~LOCALインフラ部 ナイトセミナー~を受講してきました。
受講理由は講師がすもけさんつまずいたまま止まっている自宅サーバーをなんとかしたかったから。
実際に参加したら「自宅サーバー」ではなく「本番稼働しているサーバー」と日々格闘している人達がたくさんでした。
基本的なことを確認できたので、行ってよかったです。
Apache再入門
「Apacheは基本スキルの1つです」という言葉から始まったセミナー。
特に以下の2つの話が自分の役にたちそうです。
- 最低限やるべき基本設定の確認
- 最低限やるべきセキュリティ設定の確認
基本設定は「確か設定したな・・・」という感じでした。
セキュリティ設定は「危ないと思って確か・・・設定した・・・と思う・・・」という感じです。
項目は全部ノートにメモしたので、早急に自分の設定を確認したいと思います。
確認したら、またブログに書く。
この他にパフォーマンスのお話もしてくれたけれど、自分は何も公開していない状態なので、パフォーマンスについて考えるのは、まだまだ先である。
インフラよろず相談
現場で働く人達からの質問に、現場で働く人達が答えるコーナー。
「どうやってスキルアップしていくか」はフィールドに関わらず、皆思うことなんだなと共感しました。
是非、第2回も開催してほしいです。
私のサーバーが安定稼働する日が近づくように、勉強したい。
Hokkaido.cap #7 に参加してきました
10月 26th
10/21(金)に行われた、パケットの中身を解析して学ぶ Hokkaido.cap #7に参加しました。
CTFの問題を自力で解くことができたことが一番嬉しかった!
ケーススタディ(セキュリティ解析:前編)
OSのフィンガープリント、ポートスキャン、プリンターの氾濫、FTPサーバーへの侵入という外部から攻撃を受けた場合のパケットがどのようになっているかについて勉強しました。
OSのフィンガープリント
フィンガープリントとは、TCP/IPの実装に関する特徴がOS毎に異なることを利用して、標的ホストのOSの種類を推測する手法のこと。
「Filter(ディスプレイフィルタ)」を使うことでパケットを絞込み、通常であればありえないICMPのtypeを表示させることで状況が把握しやすくなりました。
(ICMP type の0-12は普通に使用することがあるが、13以上は通常ありえないそうです)
ポートスキャン
外部に開放されているPortを調べるための手法。ポートスキャンされているときにどのようなパケットになるかを実際に見てみました。
ツールを使うとTCPもUDPもどのポートが空いているかすぐわかってしまうものなんだなあ。
プリンターの氾濫
ネットワークプリンタからおかしな物が印刷されているときに、パケットを解析することで原因を探ることができる、というケース。
明らかに特定のPCから異常な印刷命令が出ていることから、クライアントのPCがウィルスに感染しるのでは?という次の調査の行う手がかりを得ることができる。
FTPサーバーへの侵入
ディスプレイフィルタで「ftp.request.command」を使うと、FTPのコマンド名による絞り込みを行うことができました。
特定のコマンドに着目すると、PASSWARDを辞書攻撃していることがすぐにわかります。
CTFの問題にチャレンジ
はじめて自力で問題をクリアすることが出来ました記念。
次のような順番で考えました。
- まずは、パケットからExportできるオブジェクトが無いか確認する。
今回はzipファイルが2つ存在していたので、保存。 - zipファイルを解凍してみる。
1つは解凍でき、文字列のかかれたテキストファイルが出てきた。
もう一つは、PWが必要なzipファイル、上記テキストを入力しても解凍できない。 - ここで、パケットの解析に戻るとTelnetの通信があることに気がつく。
「Follow TCP Stream」でやり取りを確認する。 - base64のエンコード、デコードしている箇所がある
(あ、これ当たりじゃないかな) - さっきのテキストと同じ文字列をデコードしているよ!!!
(やったのか?) - デコードされた文字列で2つ目のzipファイル解凍成功。お宝写真をゲット
(ガッツポーズ)
LT
SINさんによる「癒し系ネットワーク機器をpingで起こす」。
登場したのは、自作したpingコマンド受信で起きる機械。
工作すごい!!!!!
細部のこだわり(寝るとか、寝起きの反応は少し遅いとか)が可愛らしかったです。
- MACアドレスの変更
プログラムした段階でMACアドレスを決めることができる - オフセット0でのMISCOMPAREエラー
ping で送られた物と違うものを返すようにしている(32byteの中身を書き換える)- プロトコルエラーになるよ
という、自分では絶対に得ることのできない発見を教えてもらいました。
次回は参加できない(旅行)のが残念だけど、ちょっとずつパケットが読めるようになってきたのは嬉しいです。
続けていきたい。
Hokkaido.cap #6 に参加してきました
10月 17th
パケットの中身を解析して学ぶ Hokkaido.cap #6。
今回は“SynAck Caputure Nite 2011” のサテライト勉強会でした。
二つのセッションをサテライトで聞きました。
永続的パケットキャプチャノススメ(ネットエージェント株式会社 杉浦隆幸さん)
普段「ネットワークのトラブル解析」として使用することの多いパケットキャプチャを日常的に利用してみたというお話。
自分がネットワークを介してアクセスした物をすべてあとから再現できるという究極のライフログ。
- 会社内で使ってみた
- 家で使ってみた
- スマートフォンでとってみた
という、様々な利用シーンの事例。
こんな使い方もできるのかー、と驚きました。
目に見えないけれど確実に情報をやり取りしているわけだから当たり前なのだけど
あんなことやこんなことまで全部パケットの世界ではお見通しである!
というのに純粋にびっくりしました。
DEFCON29 CTF 本戦 パケット解析(Ghetto(@ghetto2199)さん)
DEFCONという世界があるのを知ったのは昨年かその前くらい(せきゅぽろで知りました)。
スーパーハッカーの集まるすごいイベントです。
今回は、実際に大会(本戦)に参戦した人の生のお話が聞けました。
本当に、スーパーハッカーは実在するのですね・・・。
現場の空気感が伝わってきた面白いセッションでした。
技術的なところはほとんどついていけなかったのだけど、「エクスプロイトコード」という言葉の意味を覚えました。
そういえば、今回DEFCONが開催された時期に、その話題が朝日新聞に載っていたなあ。
(うろおぼえだけど、セキュリティ犯罪による打撃/被害が大きくなった現代の話や、悪いハッカーとそれに対して戦う正義のハッカーみたいな構図の話だった)
知らない世界を覗けた、良い時間でした。
スタッフのみなさまありがとうございました。
第8回北海道情報セキュリティ勉強会に参加しました
8月 13th
第8回 北海道情報セキュリティ勉強会(せきゅぽろ)に参加しました。
セキュリティ対策の王道(理想)と現実を考える
今回は日本マイクロソフトの小野寺匠さんによる現在のセキュリティ脅威と、
その対策の理想と現実についてのお話を聞きました。
今回も「オフレコ」話が多かったです。
最新のハッキング手口
サーバー管理者の立場からというよりは、「穴になりうる一般ユーザー」の立場から話を聞きました。
このごろのハッキングは「自分を誇示したい」という目的ではなく
確実に「お金になる(する)」ために行われることが多いそうです。
最近は、APTという入念な準備を行い、時間をかけてじっくりと(ネチネチと)攻めるタイプが最近出てきているそうです
(APT: Advanced Persistent Threat ※Annotation Processing Toolじゃない。)
気がつかれないような、かすり傷みたいなところを突破口にして最後には根こそぎ。
自分がかすり傷の原因になることだってあり得る、ということがとても恐ろしい。
便利な管理ツールは、便利である反面・・・というのはなるほど興味深かった。
ほんとにハサミは使いよう。
セキュリティ対策
「最新を維持する」「ID/ネットワークの管理をきちんとする」「構成管理」「資格管理」「モニタリング」
それぞれについて、「理想」と「現実」のお話を聞きました。
「現実」はきっと現場の人には「あるある」話ばかりだったんじゃないかな。
自分も似たような状況を見たり聞いたりしたことがありました。
予算の関係や上層部の意識ですぐには変えられないけれど、ハッキングもまた「目の前の現実」。
侵害、侵入前提で対応や体制を考えることが大事、想定外ではないとおっしゃっていたのが印象的でした。
グループセッション
セッションを受けて、グループでいろんな話をしました。
ディスカッション苦手なのですが、話しやすいメンバーだったので安心しました。
泥棒がピッキングの技術を磨いたようにハッカーがハッキングの技術を磨いている。
道具は変われど、やろうとしていることは同じ。
最初の突破口は人間の心理的なソーシャルな部分であることが多い、というような話をしました。
インターネットの様々なサービスで同じパスワードを使うのはとても危険とわかっているけれど
それがなかなか一般の利用者に広がらないのは
「あんなに大事な銀行の暗証番号が数字4桁」
その感覚が抜けないからなのかもなあ。
(危険度が全然違うけど、当人にとっては同じなのかも)
というようなことを考えました。
会場、懇親会、そしてスイーツ
会場はJRタワーオフィスビルの20階。
素晴らしい眺めでした。
この素晴らしいオフィスでケータリング懇親会。
ビールを飲んで、キネクトやって、LT聞いて。
ゆったりと楽しむことができました。
おやつは梅屋のシュークリームやケーキ。
今回はクリームたっぷりのシュークリームとエクレアをいただきました。
(いつも「女子枠」として残ったケーキをいただいています。ありがとうございます。)
せきゅぽろは札幌で一番スィーツが充実している勉強会だと思います!
毎回、お腹いっぱい笑顔です!
次回は10月。とても楽しみです。
外部から自宅サーバー(web)にアクセスできるようにする手順
2月 22nd
手順を追えば簡単だったのにかれこれ3週間もハマってしまったので、メモ。
設定内容
- サーバー側の設定
- ファイアウォールの設定を変更し、80番ポートを許可する
- apacheの設定を変更しServerNameにドメイン名を割り当てる
CentOSの場合、セットアップ時にファイアウォール設定を有効にでき、iptablesを直接操作せずに開放ポートの管理ができます。(さっき気がつきました)
GUIをいれていれば、設定メニューから操作可能。
※今回は根本のここの設定を忘れていてずっと弾かれていました・・・CentOSの場合
# vi /etc/httpd/conf/httpd.conf
でapache設定を変更できます。250行目付近にある設定
#ServerName www.example.com:80
のコメントを外し、
ServerName [自分のドメイン]:80
とします。今後、サービスを公開するまでには、httpd.confをもうちょっとカスタマイズしないといけない。
- ルーターの設定
- 外部からの80番ポートのアクセスを許可する
- 80番ポートにアクセスされたときの行き先をサーバーのIPアドレスにする
[パケットフィルタの設定]を変更し、「TCP」「ポート80番」「双方向」のパケットの通過を許可します。
自宅にあるマシンは1台ではないので、外から80番ポートにアクセスが来た場合、どのマシンに割り振るかを設定する必要があります。
前提として、自宅サーバーのLAN内IPアドレスは固定にしておきます。(192.168.X.X)
自宅のルーターの場合[静的IPマスカレード設定]で「TCP」の「80番ポート」へのアクセスは「192.168.X.X」の「80ポート」に送るように設定。
確認方法
予め、httpd.confのデフォルト設定のDocumentRoot ["/var/www/html"] に
適当なindex.htmlファイルを作っておいておきます。
- 自宅から
- 出先から
[サーバーのIPアドレス]/index.html
[サーバーのドメイン]/index.html
どちらもアクセス出来ればOKです。

これを表示させるまでに…3週間…
自宅内からもドメイン名でアクセスする方法
自宅マシンも、サーバーも、ルータから見たときはLAN(内部)にあるマシンです。
基本、一旦LANから外に出た後、同じLAN内にパケットを戻すことはできないので
外へアクセスする方法(ドメイン)でLAN内にアクセスする事はできません。
ドメイン名でアクセスするためには、アクセスする側のマシンのhostsを書き換える必要があります。
- Windows XPの場合
- Linuxの場合
C:\WINDOWS\system32\drivers\etc\hosts
/etc/hosts
に設定ファイル(hosts)があるので、以下の設定を追加します。
192.168.X.X [ドメイン名]
これで、自分のマシンが外へアクセスしに行く前にLAN内へ問い合せてくれます。
やっと、第一関門のネットワーク設定が出来上がりました。
いよいよ中身に入れます。
歩みはとろいですが、少しずつ、少しずつ。
ドメインを取りました。
1月 19th
ドメインを取得しました。
いろいろな人にドメイン取得サービスを教えていただき、最終的にはVALUE DOMAINで取りました。
生まれて初めてとったドメインは
[omuc.org]
です。
(ホントはomu.comを狙っていたのだけど取られていました)
まだ、とっただけです。
これからDNS設定とかもろもろやるぞー。
<追記>
「非営利」だけど「団体」じゃないので orgドメインじゃないほうがよいのか。
公開するのは4月なので、DNSのやり方とかを覚えたらもっといいのを考えようかなぁ。
年間980円だし。
VMwareのゲストOSにSSH接続できなかったのを解決したメモ
10月 14th
ServerMan@VPSを借りて、WPなどを導入したものの、個人的にやっているとはいえ、公開しているServerを直でいじくるのは嫌だったので、VMwareでゲストOSに開発環境を整えようとしたときに軽くはまったのでメモしておく。
実は既にVMwareにCentOSはインストールしてあった。ので、記憶の片隅では、ホストからゲストにSSHで接続して遊んでいたというのがあったので、何も考えずにTeraTermで接続してみたところダメだった。
とりあえず、ゲスト側で、ifconfigしたところ、IPアドレスは192.168.1.30、デフォルトGWが192.168.1.0だった。・・・・これたぶんデフォルトGWおかしいやーん!と思ったので、いちお確認したら、やっぱりおかしかった。
つうので、ゲストOSのデフォルトGWを変更
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
-------------------------------------------------------
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=static
#BROADCAST=192.168.1.255 ←コメントアウト
HWADDR=00:0C:29:CB:0A:99
IPADDR=192.168.0.30 ← RT側でLAN側の設定が192.168.0.0/255.255.255.0だったので変更
NETMASK=255.255.255.0
#NETWORK=192.168.1.0 ←コメントアウト
ONBOOT=yes
これでOK。
gemを導入した
8月 25th
Ruby1.9.1は既に導入していたのですが、gemを入れ忘れていたので入れました。そしてそのときの備忘録です。
まずは、gemをソースから持ってきます。
1 2 3 4 | # wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz # tar xvzf rubygems-1.3.6.tgz # cd rubygems-1.3.6 # ruby setup.rb |
特にエラーもなく終わったようで、確認のためにHelpを見てみようとしたところ、
1 2 3 | # gem help install /usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems/package.rb:10:in `require': no such file to load -- zlib (LoadError) --以下省略-- |
どうも、zlibが無いと言われているようなので、yumで入れます。
1 | # yum install zlib-devel |
問題なく入ったので、再度Helpを見てみると、
1 2 3 | # gem help install /usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems/package.rb:10:in `require': no such file to load -- zlib (LoadError) --以下省略-- |
お、おなじや・・・なんでや・・・・
でググってみると、zlibはRubyを入れる前に入れておくと面倒がなくて良いとのこと。後出しで入れた場合は、別途以下のようにすることが必要でした。
1 2 3 4 5 | //yumでzlibを入れた後に # cd /root/ruby-1.9.1-p430/ext/zlib/ # ruby extconf.rb # make # make install |
問題なく処理完了、gem help installも正常に見れました!
ProFTPDを導入した(CentOS5)
7月 27th
WordPressを動かせるようにしたのは先日の話。
既にブログの運用を始めていますが、WordPressでプラグインやら、デザインテーマをインストールするにはFTPを有効にしなくてはならない。
僕がレンタルしている、ServerMan@VPSのシンプルセットでは、初期段階でFTPが導入されていないので、自分でやってみた。
FTPを有効にするにはもちろんFTPを動かすためのアプリケーション?が必要となるわけで、僕はProFTPDを選択しました。
なんでProFTPDにしたかというと、なんとなくです。
そして、
# yum -y install proftpd
・・・・
No package proftpd available.
Nothing to do
出ました、得意のyumでインストール出来ないパターン。
ただ、ちらっとググってみたところ、2行のコマンドを投入することで、yumでのインストールが可能になるとのこと。#
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
# rpm -ivh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386. rpm
# yum -y install proftpd
・・・・
Installed:
proftpd.i386 0:1.3.2-1.el5.rf
Complete!
入った!すごい!
次はproftpd.confの編集です。
# vi /etc/proftpd.conf
ServerType standalone ← コメントアウトする
#ServerType inetd ←コメントアウトをはずす
※FTPは必要なときに立ち上がっていれば良いので、スタンドアローンではなく、xinetd経由で起動/終了をさせます。
DefaultRoot [apacheのドキュメントルートと同一] ←当面、その場所でしかFTPを使う予定はないので。
変更したのは上記の箇所だけ。次にxinetdの編集
# vi /etc/xinetd.d/xproftpd
log_on_success += DURATION USERID
↓
log_on_success += HOST PID ← 変更(ログインに約30秒かかる対処)
log_on_failure += USERID
↓
log_on_failure += HOST ← 変更(ログインに約30秒かかる対処)
disable = yes
↓
disable = no ← proftpdのxinetd経由起動の有効化
再起動。
# /etc/rc.d/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
よし、これで準備が整った!さぁ、FFFTPを使って接続を試みたところ・・・・「接続できません」
なんでやねーーーん!
とりあえず、ログを見てみることに。
# cat /var/log/messages
・・・・
Jul 26 23:45:34 [ホスト名] proftpd[34686]: warning: unable to determine IP address of [ホスト名]'
Jul 26 23:45:34 [ホスト名] proftpd[34686]: error: no valid servers configured
Jul 26 23:45:34 [ホスト名] proftpd[34686]: Fatal: error processing configuration file '/etc/proftpd.conf'
ここっぽい。とりあえずお決まりで、ログメッセージをそのままググると・・・
hostsファイルで自ホストの名前解決してあげないと駄目っぽいので、
# vi /etc/hosts
***.***.***.*** [ホスト名] ← 追加
よし、再接続!
できたーーー!わりと時間食ってしまったorz

