みなさんあのねスマートフォン用の表示で見るみなさんあのねエクセルいじりがお仕事のインフラ系SEのメモこの広告は、90日以上更新していないブログに表示しています。リクエストを53ポートで受けるように指定して、Consulが動作している端末以外への名前解決リクエストは8.8.8.8に任せる。/tmp/consul起動nodeとdomainを指定することでconsul1.node.kintoki.xyzというコモンネームに対する名前解決リクエストを応答することが可能。HashiCorp名前解決テスト(WEB兼DNSサーバ)Consulサーバ上で名前解決テストを実施する。82名前解決テスト(iPhoneからConsulサーバに接続)ConsulサーバとiPhoneを同一NWに所属させ、iPhone側でhttp://consul1.node.kintoki.xyz:8000を指定してCosulサーバ(WEB兼DNSサーバ)に接続することができるか確認する。iPhoneが使用するDNSサーバは忘れずConsulサーバに設定すること。hogefileが表示されたら成功。...まとめConsulはDNSサーバとして使える!iPhoneのhostsファイルを書き換えるという危ない技を使わなくて済んだ。あとは証明書を作ってWEBサーバにインストールするだけだ。趣味で作っているRailsアプリ(ユーザ数1名)をそろそろ独自ドメイン対応させようかなと、情報収集しているとHerokuのSSLアドオンでSSL/TLS対応するには2千円/月の費用が発生することに気付きました。Encryptでも試してみようかな〜なんて思ってたらこんな記事を見つけてしまいました。robots.thoughtbot.comDNS機能やFirewall機能を兼ね備えたCDN「CloudFlare」経由でアクセスしちゃえば無料でSSL/TLS対応することができるよという記事です。試してみるしかないですね。Railsアプリの設定変更config/environments/production.rbで強制SSL化させる。trueコミットしてHerokuにプッシュ。Herokuのドメイン設定お名前.com等で取得した独自ドメインをHerokuに登録。これをしとかないとHostヘッダチェックでリクエストが弾かれる。事前にサインアップしていること。お名前.com等で取得した独自ドメイン名を入力することでドメイン情報がスキャンされる。Flatteningという機能が実装されており、問い合わせごとにCNAME情報を辿ってAレコードを応答してくれるらしい。support.cloudflare.com設定内容のサンプルは以下。お名前.comのネームサーバ設定変更CloudFlareの指示通りのネームサーバを設定する。NSレコードのTTLだけ待たないと反映されないかも。SSLに設定するだけ。https://mydomain.netにエラーなく接続できるようになった。気づいたこと接続経路は?日本からCloudFlareを利用すると香港経由で接続するっぽい。Herokuアプリがスリープしてた時にたまたま表示されたエラー画面を見て気付いた。HerokuはUSリージョンとEUリージョンしか対応してないから香港経由での接続でもいいかな。いうかこのエラー画面はあまり表示してほしくないな。SSLv3.0は無効になってる?以下のサイトで確認したところSSLv2.0と3.0は無効になっていることがわかった。www.ssllabs.comさいごに本当に無料でSSL/TLS化できてしまいました。このまま様子を見つつCloudFlareの他の機能も試してみたいと思います。start)Webサーバが起動してApacheのデフォルトページが表示される。単純なコマンドでWebサーバが起動しちゃったけど、そこに至るまでの処理ってどうなってるんでしょうか。気になって調べてみると、どうやらRPMという仕組みが関係しているようです。22より、デフォルトのパッケージマネージャが変更されるらしい」という話もありますので、ひとつ下のレイヤーの勉強をして、来たる変化に備えておきたいところ。RPMとはRPMとはパッケージ管理の仕組みインストールされたパッケージのデータベースを生成し、そこにそれぞれのバージョン情報が記録される。個別のアプリケーションを管理単位とすることにより、アプリケーションのインストールとアンインストールを簡単に行うことができるRPMパッケージとは圧縮されたアーカイブファイルを指し、相互に関係するファイル、ドキュメント、設定情報の集合を含むアプリケーションではなく、設定ファイルを集約したパッケージも存在する(/root/.bashrcを含むrootfilesパッケージ等)。パッケージ名にnoarchという文字が含まれていれば、バイナリファイルを含まずスクリプトまたはドキュメントからのみ構成されている環境非依存のパッケージであると判断できる。RPMの設計思想*使いやすいこと*パッケージに焦点を合わせる*パッケージをアップグレードできる手動でアプリケーションをインストールした場合、アップグレード時に設定ファイルが上書きされ、カスタマイズしていた設定情報が失われる場合がある。RPMでアップグレードした場合は、カスタマイズ情報は保持される*パッケージの依存関係をトラッキングするパッケージ間の依存関係情報をトラッキングし、インストール時やアンインストールに警告を表示させる*クエリを実行できるインストールされたすべてのパッケージに関するデータベースがシステム上に作成され、各ファイルがどのパッケージに属するファイルか記録される。RPMは簡単にクエリできるようになっており、データベースに問い合わせてシステムにインストールされているアプリケーションを検索し、各ファイルがどのパッケージに属するか調べることができる*検証データベースに記録されたパッケージに関する情報をもとにアプリケーションに属するファイルに問題がないか(すべてのファイルのパーミッションが正しく設定されているか等)チェックし、改ざんされたり壊れたりしているファイルがないか調べることができる*複数のアーキテクチャをサポート*クリーンなソースRPM(バイナリパッケージ版)とソースRPM(ソースパッケージ版)の2種類のパッケージを作成する。RPMデータベースRPMデータベースは/var/lib/rpmに格納されている__db.からはじまる名前のファイルはRPMシステムが利用しているロックファイル。その他のファイルはBerkeleyDBフォーマットのデータベースとなっているRPMデータベースは注意深く扱う必要がある。-iコマンドを実行する。rpmコマンドは以下のステップでパッケージをインストールする。インストールすべきパッケージとその中身をチェックする(依存関係、パッケージ間の競合)インストール前のタスクを実行する圧縮されているファイルを展開して、適切な場所に配置するRPMデータベースを更新するなお、パッケージを一度に複数インストールする場合はrpmのコマンドラインに各ファイルをスペース区切りで列挙すればよい。インストール順序はrpmコマンドが自動判別してくれる。カスタマイズされた設定ファイルの扱いパッケージをインストール後、設定ファイルを編集すると、パッケージのアップグレード時に変更を加えた設定ファイルが維持される。(.rpmsaveという新しい拡張子に名前変更されたうえ、バックアップとして保存されることもある。結果はpfintf形式で表示されるため改行されない。17:12RPMを理解するTweet広告を非表示にするもっと読むコメントを書く2015-03-22spacewalkの仕組みはじめにspacewalkは構成管理サーバ的なもので、パッチ当てをスケジュールしたり設定ファイルの配信が可能です。クラサバ間の通信にはXMPPを使ってるようです。Inventory)もバッチリですよ!)んで、この記事は以下の内部的な仕組みを解説した公式サイトを適当に解釈した結果をまとめてます。spacewalkhttps://fedorahosted.org/spacewalk/wiki/OsadHowToJabberについては以下のサイトが参考になりました。osa-dispatchaerからping応答およびrhn_checkコマンドを実行する。osa-dispatcher(サーバ)Python製のサーバサイドサービス。クライアント上で動作しているosadに向けてpingやrhn_check実行を命令する。Protocol)の実装)を介して通信を行う。サーバ-クライアント間の認証する。使用ポートは5222。動作概要osa-dispatcherはクライアントに対し定期的にpingを実行し、応答に遅延がないかを確認している。ping応答を受け取ったosa-dispatcherは応答を返してきたクライアントを”online"状態としてマークする。ある程度以内に応答がなかった場合は”offline"状態としてマークする。クライアントへの命令がないかを定期的に確認する。命令がある場合はjabber経由でosadにrhn_checkコマンドを実行するよう呼びかける。そこから命令を受けたosadはrhn_checkコマンドを実行することで処理を引き継ぐ。Proxyは上位で動作するjabberサーバに命令をフォワードする。router間のセッションを管理する/usr/bin/router(/etc/jabberd/router.xml)どのコンポーネントにメッセージを連携すべきかを管理する/usr/bin/resolver(/etc/jabberd/resolver.xml)ホスト名を解決する。暗号化c2sとsmを通過した際に通信が暗号化されるよう構成されている。証明書および鍵は以下のファイルに記載されている。/etc/jabberd/server.pemログファイル基本的jabberdコンポーネントは以下のファイルにロギングされる。databaseを使用している。/var/lib/jabberd/トラブルシューティング名前解決クライアントのhostsファイルにサーバのFQDNを予め設定しておくこと(jabberの仕様上必要)ntp設定osadの認証は時間に依存している。クライアントとサーバ間の時間の差が120秒以内である必要でなければ認証に失敗する。これはセキュリティを考慮した結果の仕様である。場合はFWのタイムアウトによって発生する。この仕様をベースに各種設定を少し修正するとよい。以下の設定を行うことで5分以内にスケジュールしたイベントが実行されるようになった。start手動実行する場合。rhnsdをオフにする。restart詳細については以下参照。Databaseが何らかの理由でロックされると、ping応答はするが、スケジュールされたイベントに気付くことができなくなる。/var/lib/jabberd/内の不要なファイルが削除される。14:18spacewalkの仕組みTweet広告を非表示にするもっと読むコメントを書く2014-04-01cuckooとJubatusによるマルウェア解析3月29日(土)、セキュリティ勉強会に参加するため、香川の高松に行ってきました。村上純一さんの「ビッグデータ分析によるマルウェア検知・分析への挑戦」です。真面目な勉強会の参加は初めてだったので緊張しました。セキュリティうどんのご紹介セキュリティうどんの主旨はこーんな感じ。なんかとっても真面目そうなイメージを受けました。ユーザーのボトムアップを目的として勉強会を実施します。「四国情報セキュリティ勉強会連絡会」を通じて、四国地方の技術者育成と、一般ユーザの情報セキュリティに関する意識向上を目指します。今回の勉強会のテーマはこちら。ビッグデータ分析によるマルウェア検知・分析への挑戦おやつタイムって何だ、うどんでも食べるのか?なんて思っていましたが、普通に美味しい洋菓子が振る舞われました。参加費無料でおやつ付き...勉強会っていいもんですね。村上さんによると、cukoo(かっこう)でファイルの挙動を確認した結果を、jubatus(ゆばたす)で機械学習させマルウェア検知を行い、その検知精度を調査したとのこと。cuckooとは?1つのファイルを解析する度に新しくVM(仮想環境)を起動させ、ファイル実行時の挙動をログとして出力することが可能です。サンドボックスや動的解析、ビヘイビアとも呼ばれています。複数のアンチウィルスエンジンでの解析を行うクラウドサービス「VirusTotal」との連携も可能です。Pythonで実装されてるので、Pythonの知識があれば色々楽しめるかもしれません。自分もcukooには1年ほど前に手を出したことがありますが、得られるのはファイルの実行過程の情報のみで、それがマルウェアであるかどうかの条件は自分で考えなければいけないため、上手く活用することができませんでした。その解決策のひとつとして村上さんが考えたのが、jubatusによる機械学習でした。jubatusとは?jubatusを利用すると大規模データ(今回だとcukooの解析結果)をリアルタイムに解析することができる、”大規模分散リアルタイム機械学習基盤”です。こちらは実際に触ったことがないので詳しい解説はできませんが、イメージとしてはHadoop/Mahoutのリアルタイム版ですかね?和製ソフトなので日本語情報を得やすいというのもjubatusの特徴だと思います。機会学習の技術を応用することでアンチスパムメールやECサイトのレコメンド機能、将棋ソフトのAIなどを実現させることができます。身近な例だと、iPhoneアプリのAkinatorをイメージしてもらえばいいかと思います。「性別:男性」「名前:漢字」「年齢:25才以上」「癖:倍返しする」等の情報を学習させ、特定の人物を定義することができます。同じようにマルウェアも定義できそうですよね。機械学習とは?人間がなんとなくできていること(ファジーな物事)を機械にもやらせようという意味。医療業界では昔から使われている技術らしい。様々なテーマ、手法を包含した総称である。機械学習なのか?既存のアンチウィルスソフトじゃダメなの?高価/高学習コストなサンドボックスに投資する必要あるの?という疑問が湧いてくるかと思います。その理由を説明するにはまず、マルウェアのトレンドについて知る必要があります。パターンマッチング*1の限界マルウェアというのはインフルエンザ等の自然発生する(と仮定させていただきますw)ウィルスと違い、マルウェアは人の手によって生み出されています。マルウェアを作成するのは必ずしもセキュリティに関する深い知識を持つ必要はなく、マルウェアを生成するツールによって生み出されています。(しかもその数は爆発的に増加しているとのこと)さらに最近はマルウェア生成ツールに加え、難読化ツールでマルウェアを難読化させたり、不特定多数の標的にするのではなく特定の企業をターゲットにしたカスタムマルウェアを使用することで、検知の目をすり抜けてしまうケースが増えているのです。機械学習による検知テスト様々なアプローチがあるみたいですが今回は以下の感じでテストしたそうです。サンプルの取得まずは学習させるためのデータ(マルウェア/正常なソフトウェア)を一定数準備する必要があります。どの程度のデータを集めるかは以下のようなポイントを考慮するといいらしいです。信頼区間と呼ばれる概念どれくらいの誤差があってもよいか数が多ければ多いほど誤差は減る偏りがないよう、長い期間/様々な場所から少しずつデータを取得する(たぶん重要!)今回のテストでは、データを15000個(学習用5000個/テスト10000個)準備したそうです。cukooによる解析cuckooではAPIコールの傾向についての情報を抽出します。多くのAPIコールは1秒で完了するため、5秒以上経っても完了しないものについてはテストの対象外としたそうです。jubatusによる学習/解析APIコールを3-gramモデルによって解析し、正常/異常のラベル(条件)を登録。(N-gramのNが3なのは、3-gramの精度が一番よかったからとのこと)「VirtualProtectEX(難読化を解除するAPIコール)というAPIコールが3回続いたらマルウェアの動き」というようにラベルを登録して学習モデルを作成して行きます。コマンドライン上から、ラベル情報(正常系/異常系)を元に学習モデルをダンプできるようです。クラスタリングによる分類マルウェアをクラスタリング(グルーピング)し、ユニークデータを抽出(亜種や新種である可能性を見極める)することで、優先して解析すべき検体の選定を行え、解析の効率化が可能となります。学習データ/評価データの傾向が著しく異なる場合、分類精度が著しく低下する。正常系のソフトウェアは類似度の分布が広いため、学習データ/評価データの精度が違う可能性あり。未知のマルウェア/カスタムマルウェアを機械学習によって判別するのは難しい。今回村上さんにお話いただいた特徴とは別のファクターを考える必要あり。学習するためのサンプルデータ集めが死ぬほど大変そう。この手の話はいたちごっこだから低コストでサンドボックスを自作しようなんて甘い考えは捨てて、専門家集団に任せる。自分たちが考えなければいけないのはマルウェア発見時の運用フロー。(とは言うもののマルウェアと判断することがきる人員の育成/確保もできた方がいいかも)個人で遊ぶ分にはjubatus面白そう!勉強会の運営スタッフのみなさま、各セッションで登壇いただいたみなさま、本当にありがとうございました。ドーナツ美味しかったです!おまけ香川と言ったらうどん。高松市のうどん屋ってなかなか探すのに苦労しますよね。セキュリティうどんの公式サイトに掲載されているうどんマップが参考になりました。表示http://sec-udon.jpn.org/doku.php?id=%E3%83%AA%E3%83%B3%E3%82%AF:%E3%81%86%E3%81%A9%E3%82%93%E3%83%9E%E3%83%83%E3%83%97*1:パターンマッチングとは、マルウェア検知用のデータベースにウィルスの情報を登録して、その情報と検査対象のファイルを突き合わせることでマルウェア判定する手法のこと。Pi前回の記事の続きです。完成なので頑張りましょう。Piから寝返り通知を受け取ったらサーボモータが動くようにしましょう。下記サンプルコードを新しいスケッチに貼付けてArduinoに書き込みましょう。(通信内容自体は全く見ていない残念なコードです。)※XBeeシールドを接続したままではスケッチの書き込みに失敗するので注意が必要です。下記サイトを参考に接続してください。ジャンパワイヤが3本必要です。糞の足しにもならないArduino講座:その3スイッチ付きコンセントとサーボモータの接着こんな感じで泥臭く接着しました。AndroidのUSBアダプタを犠牲にして高さを調節しています。Arduino、サーボモータ、扇風機の接続これでArduino側の準備は完了です。起動したらスマホからWEBサーバ(http://192.168.64.42:11337)に接続して、スマホを振って振動を与えてみましょう。サーボモータのプロペラが回転して扇風機が回り始めるはずです。あと、実際にベッドで使用する際の注意なのですが、スマホのディスプレイ電源の自動オフ機能は切っておいてください。started最初の記事でお見せした感じで動きましたか?振り返り2013年度の目標が「電子工作デビュー」だったので、なんとか目標達成のボーダーは超えられたんじゃないかと思います。それにしてもグーグル先生は偉大ですね。Arduinoに関する情報は少ないものの、欲しい情報はほとんど無料で手に入ってしまうなんて。ほんと、すごい時代に生まれてきてしまったなあ、と今更ながら感動しております。失敗談的なもの実はサーボモータを使う前に、ソリッドステート・リレーという技術を使って電源のON/OFF機能を実現しようとしていました。いろんなArduinoがある(8))電源ケーブルのカバーを剥いて、はんだ付けなんかにも初挑戦したのですが、結果的に失敗に終わってしまいました。次に電子工作を挑戦する機械があったらはんだ付けに再チャレンジしてみようと思います。2,100数少ないArduinoの入門書です。内容の半分はリファレンスなのでどんな機能があるのか確認することができます。2,100OSのインストール手順から、Webカメラを使った警備システムの構築方法まで幅広い内容が掲載されてます。解説が丁寧なのがいいですね。3,990Arduinoでスマート家電以外のものは作れるの?と興味を持った方におすすめ。これを機に電子工作をはじめてみてはいかがでしょうか。3,150今回は超簡単な電子回路しか組みませんでしたが、もっと面白いものを作ろうと思ったら電子回路の基礎知識を学ぶ必要があると思います。「電池をなめて電気を味わう」ところからはじめる面白い技術書です。Pi前回の続き記事です。PIでWEBサーバを構築して、ソケット通信を試してみましょう。途中でXBeeの設定なんかも挟んでいますが、気にしないでください。Formatter」をダウンロードする。Formatter」でOSをインストールするSDカードをフォーマットする。OSのインストールツール「NOOBS」をダウンロードする。圧縮ファイルになっているので予め解凍しておく。解凍してできたファイルをすべて選択し、SDカードにコピーする。接続してから、microUSB電源ケーブル(対向には2AのUSBアダプタを接続)を接続する。電源ボタンが存在しないので、電源ケーブルうを接続した瞬間に電源がオンになります。インストールメニュー画面が表示されたら、Raspbianを選択し、インストールを開始する。自分の環境ではデフォルト設定のDHCPを使用しています。一応、設定ファイルの中身を記載しておきます。updatevimのインストールRaspbianには初期でvimがインストールされています。これの実体は最低限の機能のみを持ったvim-tinyであり、今一つ使い勝手が良くありません。普通のvimをインストールしましょう。vim作業用PCからSSHログイン特に不要な作業ですが、慣れ親しんだ環境で作業したい場合や、ログを編集しながら作業をしたい場合にこの手順を実施してください。Term(macならターミナル)などからSSHしましょう。/var/node/negasensocket.ioのインストールNode.js⇔他デバイス間でのソケット通信を可能にするライブラリです。socket.ionode-serialportのインストールNode.jsでシリアルポートを制御できるようにしたライブラリです。サイトにて、準備していた2個のXBeeモジュールがお互いを認識し、通信が行えるように初期設定をする。※WindowsのPCが必要になります。accel);});});WEBアプリの表示部分を「negasen.html」というファイル名で作成ソケット通信関連のコードは下記記事を参考にしています。下記コマンドを実行して、Wi-Fiルータに接続済みのスマホからWEBサーバに接続(http://192.168.64.42:11337)してみましょう。ソケット通信の確認用にPCのブラウザからもWEBサーバにアクセスしておくといいかもしれません。※IPアドレス部分は自分が構築したサーバのものに置き換えてください。startedうまく動けばの↓のような動作をします。miniで試してみたのですが、加速度センサーがついてるデバイスなら何でもOKみたいです。こんな感じで衣装棚の上で動いてます。コンパクトでいいですねえ。次回はいよいよ、Arduinoをいじってサーボモータを動かします。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。