公開鍵暗号はもちろんRSAだけではない

ツイッターでのやり取りの補足です。セキュリティなんもわからん。

https://twitter.com/angel_p_57/status/1555844942375026689 の回答

むしろ「公開鍵暗号」でどんな技術を想像されているのかが気になるところですが…。

まず私が「公開鍵暗号」をなんだと思っているか書きますと、「秘密鍵共有鍵公開鍵(2022/08/08 訂正)を使って暗号化と復号化を行う、事前鍵共有が不要で対称暗号と対になる概念」ぐらいに思っています。具体的にはRSAやECDHあたりを想定しています。また、ハイブリッド暗号等と呼ばれる方式や署名方式も公開鍵暗号として考えています。この部分には異論の余地があると思っていまして、一般向けにの説明であれば署名を公開鍵暗号の一部に含めるべきではないのかもしれませんね。しかし技術的にはほとんど同一のものだと理解していますので一緒くたに扱っています。
念のため文献なども確認してみましたが、『公開鍵暗号とは、暗号化と復号化で異なる鍵を用いる暗号で、対称暗号と同じくメッセージの機密性を守るために使われます』(結城浩『暗号技術入門 第3版』p390) などと記載されており、私も概ねそのように理解しています。

https://twitter.com/angel_p_57/status/1555779776438484992 に関する意見

基本情報的な「公開鍵暗号」という意味なら、sshでは使いませんし、gpgでも必須ではないです。SSL/TLSでももう使ってません。無くても実は困ってないんですよね。

ええと`基本情報的な「公開鍵暗号」`というテクニカルタームが理解できないのです。
基本情報のテキストは手元にありませんでしたので、似たような内容であることを期待して土田米一『徹底攻略 応用情報技術者教科書』を参照したところ、p274に『暗号化鍵と復号鍵が異なる方式です』との記載がありました。公開鍵暗号という言葉を使うときに前提になるのは、『秘密鍵と共有鍵が異なっていること』程度でそれ以上の制約は与えないのが割りと一般的な言葉遣いなのでは無いでしょうか。私は残念ながら大学でセキュリティの研究室に出入りしていた程度ですので正確な言葉遣いはわかりませんが。

さて、sshの認証はたしかにパスワード認証で動作させることもできますが、通信に公開鍵暗号を使っていると思っています。暗号を用いた通信をする上で公開鍵暗号を用いて共有鍵を共有し、その後共有鍵を用いて適当なブロック暗号モードで通信するものだと思っています。実装読んでませんが。
SSL/TLSも同様です。

ということで、公開鍵暗号は必須であって無いと困るものですし、httpsなどで使われる以上高等学校で教える意義は認められるものだと思っています。

公開鍵暗号 ( 要するにRSA暗号 ) は使ってないです。

要するにRSA暗号と言っておられますが、昨今の状況を踏まえますとECDHにも言及して然るべきでしょう。

https://twitter.com/ut_maito/status/1555784301069074432
にて`基本情報的な「公開鍵暗号」`という言葉の意味を問いましたが回答いただけ無いようで残念です。
特にSSL/TLSでも`もう使ってません`という情報は初めて伺いましたので大変興味深いです。共通鍵暗号方式を用いずに公開鍵暗号(2022/08/07 3:54 修正)を用いずにどうやって鍵配送問題を解決したのか、またその実装はどのように行われているのかお教えいただけると大変うれしく思います。

https://twitter.com/angel_p_57/status/1555830538690531328 に対する意見

世間一般的に言われる用語だと「公開鍵暗号」と「デジタル署名」は別物なので

この2つの概念は確かに分離して扱うこともできて(もちろん、実装は全く分離できませんが)世間一般の用語に署名が含まれないとの前提で、そのように発言をなさっているということは把握できました。しかし、鍵交換は署名を用いているわけではなく、対称暗号のセッション鍵を公開鍵暗号で暗号化し共有しています。sshhttpsも署名も暗号を用いた通信もどちらも関連するアプリケーションではありますが、デジタル署名部分を公開鍵暗号と呼ばないという立場を取ったとしても、ハイブリッド暗号として通信を行う以上、公開鍵暗号と呼ぶべきだと考えます。

実用されてる技術は今だとRSA暗号だけなんですよね。

主語が大きく論点が詳細にはわからないものの、実用で大変良く使われている暗号方式としてECDHがありますし、RSA暗号だけだと言い切るのは言い過ぎだと思います。

参考文献

- 結城浩『暗号技術入門 第3版』
- 斎藤考道『マスタリング TCP/IP 情報セキュリティ編』
- 土田米一『徹底攻略 応用情報技術者教科書』

追記(2022/08/08 14)

  • twitterのオタクども、**太郎だとか***マンだとか治安の悪い言い回しをするのはやめておけ、コミュニケーションが不自由程度でそこまで言うこったない
    • イライラするのはわかりますが
    • ブロックするのは自由ですが
  • tokusin氏がいろいろ問い合わせてわかったことによるとどうやら、基本情報的な「公開鍵暗号」=RSAで良いようです
  • どうやらangel_p_57氏はDH鍵交換を公開鍵暗号と呼ばない、という立場を取っている、という印象を受けます、氏の日本語は私の理解を超えるので私にはわかりません。
    • sshではRSAで共有鍵を送る、をやっていないというのは多分確かにそうなんでしょうが(ちゃんと知りませんでした)
    • DH鍵交換は公開鍵暗号と呼べると思うのですが、まあ確かに微妙なラインですね。DH鍵交換を公開鍵暗号と呼ばないのであればSSHにおいて公開鍵暗号を使わないことは`可能である`と言えると思います
      • どちらにしろssh公開鍵暗号を使わない、という宣言は誤解を招くだけで、適切な言い回しとは私は思いませんが
        • 認証部分でも使わない必要があるので、そんな環境で運用したいか、という話もあります
      • 正直、言葉の定義に一般的か怪しいものがしれっと混じっていて手元の文献ともwikipediaとも食い違うので、気をつけて読まないと意味が取れません。煽るために恣意的に意味を狭めていると思われても仕方ないと思います。せっかくsshの中を読もうとしてパケットまで開いているのにもったいない
      • SSL/TLSはServerKeyExchange時にRSAも選べる気がします
  • なんらかの追加の回答もいただけかけたのですが、私に解釈不可能なフォーマットでお送りなさり始めたので、氏の時間を浪費させるのも悪いのでお断りました。氏本人意外に読み方がわかる人が居たらおしえてください

Firejailのメモ

  • 日本語情報はgihyoの記事とarchwikiとkudohさんのスライドだけ。公式のドキュメントを読めないなら撤退するべき。
  • 公式のドキュメントを読んだ上でmanを読むべき。manを読むほうがツライという珍しいソフトだけど。manのほうが情報量多いよねコレ...。
  • firejail softwarename
  • profileは環境に強く依存。githubにあがってるものには俺環でしか動いてたまるか的なものもある。具体的にはwhitelist=/dev/sdc3。見落とすとヤバイ。->セキュリティソリューションとして使うならプロファイルは自分で確認しよう。
  • firefoxとDiscordはfirejail外で起動してあるとそっち呼んじゃう。(ドキュメントの記述は効果なし?)->なんか対処法無いのかこれ。daemonっぽいプロセスが走り出すとそれ呼んで終わる系。もちろんfirejailの効果なんて微塵もない。
  • gentooでは日本語入力が普通にできたのに、ubuntuでは変換確定前の文字列の表示がおかしく。もちろん俺環のみ(Gentooに関しては当たり前だがUbuntuに関してもあっちこっち手が入ってる)。ほかは知らんしわざわざ細かくインプットメソッドとか環境変数とか調べるのも怠いんでパス。要はうちのメイン環境ではきっちり動いてサブ環境では60点ぐらいの動作してるってだけ。過去に一件だけその手の関係のバグ報告あるから何かあればちゃんと扱ってもらえるよきっと。とりあえず、ちゃんと動くやつとビミョーなやつがあるってことが重要かと。XDM周りの環境変数
  • ネットワーク関連の機能が色々あるからそれ目当てで使うのもありっぽい。dnsとかipとか。
  • ログ吐くには--tracelogが必要。これが最近のバージョンの挙動。
  • profileは~/.confog/firejail/に配置
  • Discordのプロセスから開けてるなフォルダ辿ってwhitelist指定入れてもうまく行かなかったが、~/で指定したら動いた。インストール時(つってもtargz開けただけ)から--private=すれば変わるかしら。
  • keepassの鍵の場所はさっと変更できないからwhitelistにぶち込んだほうが楽。firejailの動き方的には/sbinあたりに混ぜれば触らなくなるがしかし(やめろ
  • nonetworkのオプションは名前からしてとても安心感がある。とても。
  • webのドキュメントは古い。manを読め。infoでも良いが。
  • daemonに対しては使ったことない。まあそのうち気が向いたら。

新しいConoHaにGentooを入れてみる

この記事はConoHa Advent Calendar 2016 - Qiitaの9日目の記事です。
中盤辺りなのでネタ記事をどうぞ(最初と最後にはできないこと)

ConoHaのAPIを使うことでisoを挿入し、isoからOSをインストールすることができます。
この機能を使ってGentoo LinuxというOSを入れてみようと思います。ちなみにGentooの記事ではないので、Gentooがらみの細かいとこは割愛します。

OSを入れ替えるための汎用的な作業

VPSの用意

VPSを用意します。既にあるVPSを使っても良いですが、SSDに載ってるデータが全て消えます。今回は512MBプランを使ってみます。OSは入れ替えるのでどれでも良いです。と、思ってましたがどうやらGPTだったりMBRだったりするので、選択肢によっては最後のほうでコケます。ubuntuを選んでおけば問題ないはずです。

isoの挿入

CLIツールで簡単にISOイメージをマウントする|VPSならConoHa に書いてあるconoha-isoをうことで、すぐにisoを挿入することができました。
isoの挿入対象のVPSがactiveだとエラーになるようなので気をつけてください。
今回使ったisoはhttp://distfiles.gentoo.org/releases/amd64/autobuilds/20161124/install-amd64-minimal-20161124.isoです。

起動とインストール

ConoHaのWeb UIからisoを挿入したVPSを起動し、15秒以内にコンソールを開いて何かキーを押します。起動後15秒以内に何か操作しないとSSDから起動してしまいます。他のOSでもisoを挿入してるはずなのにSSDから起動している時には、同じような機能が働いていることをうたがってみてください。

そしておもむろに以下の塊をコピペして実行していくとgentooがインストールされます。
parted -s -a optimal /dev/vda -- mklabel msdos mkpart primary ext4 1 -1 &&
yes|mkfs.ext4 /dev/vda1 &&
mount /dev/vda1 /mnt/gentoo &&
cd /mnt/gentoo &&
wget http://ftp.jaist.ac.jp/pub/Linux/Gentoo/releases/amd64/autobuilds/20161201/stage3-amd64-20161201.tar.bz2 &&
tar xvjpf stage3-amd64-20161201.tar.bz2 --xattrs &&
cp -L /etc/resolv.conf /mnt/gentoo/etc/ &&
mount -t proc proc /mnt/gentoo/proc &&
mount --rbind /sys /mnt/gentoo/sys &&
mount --make-rslave /mnt/gentoo/sys && 
mount --rbind /dev /mnt/gentoo/dev &&
mount --make-rslave /mnt/gentoo/dev &&
chroot /mnt/gentoo /bin/bash 

source /etc/profile &&
emerge --sync &&
echo "Asia/Tokyo" > /etc/timezone &&
emerge --config sys-libs/timezone-data &&
sed -i -e 's/#ja_JP.UTF-8/ja_JP.UTF-8/g' -e 's/#en_US.UTF-8/en_US.UTF-8/g' /etc/locale.gen &&
locale-gen &&
eselect locale set en_US.utf8 &&
env-update && source /etc/profile && export PS1="(chroot) $PS1" &&
emerge sys-kernel/gentoo-sources

で、多分ここでコケます。
なぜか以下の操作なら通るのでとりあえず、続きとして以下の塊をどうぞ。

rm /usr/src/linux* -r ;\
rm /var/tmp/portage/sys-kernel/* -r ;\
cd /usr/portage/sys-kernel/gentoo-sources/ &&
ebuild gentoo-sources-4.4.26.ebuild clean && 
ebuild gentoo-sources-4.4.26.ebuild fetch &&
ebuild gentoo-sources-4.4.26.ebuild unpack &&
ebuild gentoo-sources-4.4.26.ebuild compile &&
ebuild gentoo-sources-4.4.26.ebuild install &&
ebuild gentoo-sources-4.4.26.ebuild qmerge


cd /usr/src/linux-4.4.26-gentoo &&
make localyesconfig

ここでいろいろ聞かれますが、全部Enterで良いです。

make -j2&&
make install &&
make modules_install &&
sed -i -e 's\/dev/BOOT\#/dev/BOOT\g' -e 's\/dev/ROOT\/dev/vda1\g' -e 's\/dev/SWAP\#/dev/SWAP\g' -e 's\/dev/fd0\#/dev/fd0\g' -e 's/ext3/ext4/g' /etc/fstab &&
sed -i -e 's/localhost/nannka/g' /etc/conf.d/hostname &&
echo 'config_eth0="dhcp"' > /etc/conf.d/net &&
cd /etc/init.d &&
ln -s net.lo net.eth0 &&
rc-update add net.eth0 default &&
rc-update add sshd default &&
emerge sys-boot/grub &&
grub-install /dev/vda &&
grub-mkconfig -o /boot/grub/grub.cfg &&
passwd

最後にrootのpasswordを聞いてくるので何か設定しましょう。
そして再起動して15秒以上放置すればGentooが起動します。rootユーザーでログインしてbashが使えるはずです。
sshサーバーは走っていますが公開鍵認証のみなのでコンソールから公開鍵をコピペするなりギフハフから引っ張ってくると良いかと思います。

感想とか

  • 昔のConoHaにはGentooを入れたことがあったのですが、新しいConoHaに入れたのは初めて、というよりこの記事のために新しいConoHaのアカウントを作りました。メモリ500MBの環境なのでもっと苦労するかと思ったのですがたいしたことはなかったです。kernelのソースの展開周りでコケたのはメモリのせいかと睨んではいますが、逆にいうと怪しいのは一箇所です。
  • 昔のConoHaではisoのアップロードが結構めんどくさかったのですが、コマンドで直接isoを習得させて挿入することができるようになったのはとてもうれしいです。昔のConoHaではwebから秘密鍵ダウンロードしてsftp経由で手元のisoを上げる必要がありました。
  • 上記のスクリプト(?)が1時間程度で終わるので、1coreにしては早いのかなぁ、とおもいました。
  • 公開がぎりぎりの時間になってしまってゴメンナサイ(emerge sys-kernel/gentoo-sourcesでコケたことの解決のために4回ほどインストールし直していたら時間かかっちゃいました)
  • 実は上のスクリプトはテストされてませんので誤字があるかもしれません(泣)。この記事を公開したら新しいVPS建てて投げ込みます。テストしたらやっぱりバグってたので書き換えました

履歴

2016/12/10 00:13に追加 スクリプトの最初の二行を追加。
2016/12/10 00:21に訂正 yesをパイプする必要があるものに追加
2016/12/10 00:22に追加 三行目
2016/12/10 00:41に追加 "パーティションの削除と作成" fdisk使わずに設定ファイルを出力させて編集してって手順でやる方法が合った気もするけどとりあえずfdisk
2016/12/10 00:47に修正 wgetするstage3のアドレスが間違っていた
2016/12/10 02:52 スクリプトの全体的な訂正。赤字の追加、"パーティションの削除と作成"の削除(多分動く)

ufwの設定ファイルの説明

原文はUncomplicatedFirewall - Ubuntu Wikiで。man ufw-frameworkでも出る


/etc/default/ufw: high level configuration, such as default policies, IPv6 support and kernel modules to use
high level設定、defaultのポリシーやIPv6サポートと使うカーネルモジュール

/etc/ufw/before[6].rules: rules in these files are evaluated before any rules added via the ufw command
これらのファイル内のルールはufwコマンドによってルールが追加される前に評価される

/etc/ufw/after[6].rules: rules in these files are evaluated after any rules added via the ufw command
これらのファイル内のルールはufwコマンドによってルールが追加された後にに評価される

/etc/ufw/sysctl.conf: kernel network tunables
カーネルネットワーク設定

/var/lib/ufw/user[6].rules or /lib/ufw/user[6].rules (0.28 and later): rules added via the ufw command (should not normally be edited by hand)
ufwコマンド経由で追加されたルールの(通常は手動で編集するな)

/etc/ufw/ufw.conf: sets whether or not ufw is enabled on boot, and in 9.04 (ufw 0.27) and later, sets the LOGLEVEL
ufwを起動時に有功にするかどうか、またubuntu 9.04(ufw 0.27)以降ではログレベルも

/etc/ufw/after.init: initialization customization script run after ufw is initialized (ufw 0.34 and later)
ufwの初期化後に実行されるinitialization costomizationスクリプト(ufw 0.34より新しい)

/etc/ufw/before.init: initialization customization script run before ufw is initialized (ufw 0.34 and later)
ufwの初期化前に実行されるinitialization costomizationスクリプト(ufw 0.34より新しい)

pptpdを使うためには/default/ufwの最後のほうと/etc/ufw/before.rulesを書き換える必要があるみたい。

情報元としてのインターネット

ただのリンク集



コンピュータ関連

速度早そう
秋葉原(主にショップ)
https://twitter.com/_hito_/lists/%E7%A7%8B%E8%91%89%E5%8E%9F
PC Watch
http://pc.watch.impress.co.jp/
http://akiba-pc.watch.impress.co.jp/
マイナビ
http://news.mynavi.jp/pc/
IT media
http://www.itmedia.co.jp/
@IT
http://www.atmarkit.co.jp/
IT pro
http://itpro.nikkeibp.co.jp
技術評論社
http://gihyo.jp/

蹴茶
http://kettya.com/
北森瓦版
http://northwood.blog60.fc2.com/
いくやの斬鉄日記
http://blog.goo.ne.jp/ikunya
2015年 後藤弘茂のWeekly海外ニュース
http://pc.watch.impress.co.jp/docs/column/kaigai/
Distri Watch
http://distrowatch.com/

Security
Security Focus
http://www.securityfocus.com/
JPCERT コーディネーションセンター
http://www.jpcert.or.jp/
セキュリティホール memo
http://www.st.ryukoku.ac.jp/~kjm/security/memo/
piyolog
http://d.hatena.ne.jp/Kango/
IPA
http://www.ipa.go.jp/security/
@police
http://www.npa.go.jp/cyberpolice/
Scan Net Security
http://scan.netsecurity.ne.jp/

Ubuntu
Ubuntu Weekly Newsletter
https://wiki.ubuntu.com/UbuntuWeeklyNewsletter/
Recipe
http://gihyo.jp/admin/serial/01/ubuntu-recipe/
Topics
http://gihyo.jp/admin/clip/01/ubuntu-topics/
twitter(大体二人で十分)
@_hito_ @ikunya



科学

WIRED.jp
http://wired.jp/?utm_source=wiredvision&utm_medium=news
Science Portal(科学技術振興機構)
http://scienceportal.jst.go.jp/
google news(科学+||+サイエンス+||+science 朝日以外入ってる?未確認)
http://news.google.co.jp/news/section?pz=1&cf=all&q=%E7%A7%91%E5%AD%A6+||+%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9+||+science&ict=ln
朝日(信用しないし使わない)
http://www.asahi.com/tech_science/
参考(幻影随想)http://blackshadow.seesaa.net/article/40395181.html

雑誌(読んだことあるやつ)
日系サイエンス
http://www.nikkei-science.com/
ナショナル塩グラフィック
http://natgeo.nikkeibp.co.jp/
Newton
http://www.newtonpress.co.jp/
nature ダイジェスト
http://www.natureasia.com/ja-jp/ndigest/


paper
Physical Review Letters
http://journals.aps.org/prl/
Scientific American
http://www.scientificamerican.com/




ソース(俺のせいじゃ無いと言い張れる系)

あーかいぶ
arXiv.org
虚構新聞
http://kyoko-np.net/


気象庁
http://www.jma.go.jp/jma/index.html
天分台
http://www.nao.ac.jp/index.html
XバンドMPレーダ
http://www.river.go.jp/xbandradar/
JAXA(何でお前go.jpじゃないんだ独立行政法人っつっても行政だろ...)
http://www.jaxa.jp/

ソースにするな慈悲は無い
ロシアの声
http://(ry

?
http://adsabs.harvard.edu/

読み物
発声練習
http://d.hatena.ne.jp/next49/
okkyの銀河制圧奇譚
https://gist.github.com/fumihito/e47b90c4f4b102d8de18
(http://www.dd.iij4u.or.jp/~okuyamak/Documents/)
セキュリティ講座
http://www.npa.go.jp/cyberpolice/server/elearning/index.html
White Hacker
http://www.whitehackerz.jp/blog/



https://www.reddit.com/

このべん第4回に行ってきました。

ソースの下に追記しました。(12/16,08:00)

このべん第4回「ConoHa VPSとHAProxyでロードバランサーを構築してみよう!」 - ConoHa | Doorkeeper

に行ってきました。当日の資料は以下になります。


このべん第4回 ハンズオン手順 - ConoHa

Wi-Fiにつながりにくかったり、反応が遅いVPSがあったりと多少のトラブルはありましたが、ちゃんとWebサーバーとロードバランサーが構築出来ました。

この勉強会の内容を思いつきでFabricに起こしました。解説とかこのべんのレポートとかも書こうかと思いましたが、思ったよりFabricを書くのに時間がかかってしまったため、ひとまずソースをはるだけにしておきます。 WEBサーバーはうまく行きますが、ロードバランサーがうまく構築できてません。後日修正します。とりあえず寝まする。

from fabric.api import run, cd, env
def webserver_1():
    env.user = "root"
    env.hosts = ['hoge.hoge.hoge.226']
    env.key = ["~/.ssh/fuga.key"]
def webserver_2():
    env.user = "root"
    env.hosts = ['hoge.hoge.hoge.227']
    env.key = ["~/.ssh/fuga.key"]
def roodbarance():
    env.user = "root"
    env.hosts = ['hoge.hoge.hoge.225']
    env.key = ["~/.ssh/fuga.key"]
def yum_update():
    run("yum update")
    
#2-3
def test_eth1_1():
    run("ip link")
#2-4
def set_eth1(server_type):
    with cd("/etc/sysconfig/network-scripts"):
        run("echo 'DEVICE=\"eth1\"' >> ifcfg-eth1")
        run("echo 'BOOTPROTO=\"none\"' >> ifcfg-eth1")
        run("echo 'ONBOOT=\"yes\"' >> ifcfg-eth1")
        run("echo 'TYPE=\"Ethernet\"' >> ifcfg-eth1")
        if server_type=="LB":
            local_ip = "192.168.0.11"
        elif server_type=="WEB1":
            local_ip = "192.168.0.12"
        elif server_type=="WEB2":
            local_ip = "192.168.0.13"
        run("echo 'IPADDR=%s' >> ifcfg-eth1" %local_ip)
        run("echo 'NETMASK=\"255.255.255.0\"' >> ifcfg-eth1")
def restart_network():
    run("service network restart")
def test_eth1_2():
    run("ip addr")
#3-1
def set_httpd():
    run("yum -y install httpd")
def start_httpd():
    run("service httpd start")
#3-2
def set_iptables():
    with cd("/etc/sysconfig/"):
        run("sed -e \"9a -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT\" iptables > iptables2")
        run("mv iptables2 iptables")
def restart_iptables():
    run("service iptables restart")
#3-3
def make_webpage():
    with cd("/var/www/html"):
        run("wget https://gist.githubusercontent.com/ConoHa/fb7c783153a37c7a4882/raw/87ea58fb87f1fc7bb0c096b95fff212d9344a73f/index.php")
        run("rm -f index.html")
#5-1
def install_haproxy():
    run("yum -y install haproxy")
#4-2
def set_haproxy():
    run("yum install haproxy")
    with cd("/etc/haproxy"):
        run("rm -f haproxy.cfg")
        run("wget https://gist.githubusercontent.com/ConoHa/859f26b94cd2204adb0a/raw/6847c7724fd4dc3716b607a86406df8c05664dad/haproxy.cfg")
#4-3
def set_iptables_haproxy():
    with cd("/etc/sysconfig/"):
        run("sed -e \"10a -A INPUT -m state --state NEW -m tcp -p tcp --dport 10080 -j ACCEPT\" iptables > iptables2")
        run("mv iptables2 iptables")
        
#4-4
def start_haproxy():
    run("service haproxy start")
def check_haproxy():
    run("tail -f /var/log/httpd/access_log")
#4-5
def set_haproxy_log():
    with cd("/etc"):
        run("sed -e \'2c\\ModLoad imudp\' rsyslog.conf")
        run("sed -e \'3c\\UDPServerRun 514\' rsyslog.conf")
        run("echo 'local2.* /var/log/haproxy.log' >> rsyslog.conf")
def restart_haproxy():
    run("service rsyslog restart")


def dep_WEB_1():
    webserver_1()
    #test_eth1_1()
    set_eth1("WEB1")
    restart_network()
    test_eth1_2()
    set_httpd()
    start_httpd()
    set_iptables()
    restart_iptables()
    make_webpage()
def dep_WEB_2():
    webserver_2()
    #test_eth1_1()
    set_eth1("WEB2")
    restart_network()
    test_eth1_2()
    set_httpd()
    start_httpd()
    set_iptables()
    restart_iptables()
    make_webpage()
def dep_LB():
    #test_eth1_1()
    roodbarance()
    set_eth1("LB")
    restart_network()
    test_eth1_2()
    install_haproxy()
    set_haproxy()
    set_iptables()
    set_iptables_haproxy()
    start_haproxy()
    check_haproxy()
    set_haproxy_log()
    restart_haproxy()


追記 : 昨日は寝落ち寸前だったので(12/16,08:00)

カレンダーもらえました。(おそらく)新規イラストだー、わーい。
クーポンもらったよーそろそろ5桁だー(白目)。渋谷に足を向けて寝れない。ありがとうございました。

Fabricとは:

デプロイツールシェルスクリプトPythonで管理するようなもの。Pythonが書ければ学習コストはほとんど無い。 冪等性を考えるならcuisineも使う必要があるようだ。Fabricについて詳しく知りたい人はGoogleへ。

Fabricのソース:

ネットに上がっていた資料をそのまま関数にしてる。設定ファイル絡みの挙動が怪しい。構築済みのシステムで走らせるとシステムを破壊できる。新規構築用だし、そもそもFabricの練習として書いた。デプロイツールを使う意味がわからない人はConoHaでこれを走らせてみると分かるのかもしれない。1時間かかったことをするのに1~2分しかかからない。その分書き慣れていないと書くのに倍以上時間がかかるわけだが。
使い方 :
Fabricのインストールはpipやeasy_installから行えるようだがあまり詳しくない。そもそもOSごとに違う。Googleへ。
ソースをコピペしてfabfile.pyとして保存し、冒頭のenv.key =
を適宜書き換え(公開鍵SSH認証の知識が必要かと)、fabfile.pyのあるディレクトリで以下を実行

fab dep_WEB1
fab dep_WEB2
fab dep_LB

fab dep_LBは悲しいかなまだちゃんと動かない。dep_WEBも動かなかったりしたら教えて下さい。
お仕事でこーゆーの書いてる人はサーバの設定ファイルどうやって作ってるんだろう。用意しといてgit cloneなりwgetなりするのだろうか。それともシェル芸するのだろうか。

何故か動作の悪かったサーバについて考えてみる:

何故かSSH鍵が2つ目
SSHの処理に時間がかかる
Pingの返答が10msほどほかより遅い
一旦SSHに入れればある程度ちゃんと動く
メモリ使用料が妙に多い。
serviceのstart,restartが遅い
起動してからSSHサーバーがまともに動いて、ログインが完了するまでに3分もかかる(バルス)
Fabric走らせると5分はかかる
OSを入れ直しても(テンプレのCentOS)状況変わらず
真夜中でも状況変わらず

Ubuntuオフラインミーティングで、ちゃんと設計されたOpenStackはこの世に存在するのか、と疑問が投げかけられていた。

結論:よくわからない。基幹が壊れてるのか、Dosが発生してるのか。
とりあえず今後警戒する。
もう少し調べてConoHa送りつけとく。