2016年12月15日木曜日

最近の IT 系のノウハウ系ブログの冒頭自己紹介ウザい

最近の IT 系のノウハウ系ブログ(企業持ち)は、いちいち冒頭に筆者の名前を書いて
自己アピールしてるのがすごくウザいしイラッとくる。さらにつまらん個人的な話
しを数行最初に書いたりしててかなりいらつく。AWS 系に強い某社のやつとか。
# AWS じゃないけどうちの会社のブログもそうかも知れんが私は関与しない。

誰もあんたのことなんか知らんし知りたくもないて。

ちょっと外れるけどネットはいつまでも「嘘を嘘であると見抜ける人でないと使う
のは難しい。(ひろゆき)」な存在で無責任であって欲しいわ。

2016年12月9日金曜日

AWS Auto Scaling における AZ 異常時等の挙動

AWS の Auto Scaling Group で Multiple な AZ を指定すると、自動でインスタン
スを均等に分散してくれる。例えば、スケールアウトしたときなんかは少ない
AZ の方にインスタンスを作ってくれる。まぁ今更言うことでもないが。

じゃぁ、とある一つの AZ が世の中的に大障害に見舞われた時はどんな動きにな
るのか気になった。ただ、こんな状況は検証しようがないし、ドキュメントに頼
るしかないと思い、いろいろ Web をあさったところ結局 Amazon の公式ドキュ
メントにその記述があった。忘れそうなのでメモ。

      Auto Scaling プロセスの中断と再開 (日本語)
AZRebalanceリージョンのアベイラビリティーゾーンでグループの EC2 インスタンスの数のバランスをとります。Auto Scaling グループからアベイラビリティーゾーンを削除する場合や、その他の理由でアベイラビリティーゾーンが異常ありまたは使用不可になった場合、Auto Scaling は、異常ありまたは使用不可のインスタンスを終了する前に、影響を受けていないアベイラビリティーゾーンで新しいインスタンスを起動します。異常のあるアベイラビリティーゾーンが正常な状態に戻ると、Auto Scaling はグループのアベイラビリティーゾーンにわたって均等にインスタンスを自動的に再分散します。
ということで、異常じゃない AZ で新しいインスタンスを起動してくれるというこ
と。これはまぁ想定どおりだったが、ちゃんと正常に戻った時に AZRebalance と
いうプロセスが元に戻してくれるんだって(この Auto Scaling におけるプロセスっ
て概念は「過程」ということじゃなくておそらく OS のプロセスと同義なんだろ
う。停止とか再開とか出来るらしいし)。

こりゃすごいね。こんな親切なの AWS だけじゃないの? Azure とか GCP とかこ
んなことやってくれるんかね? 知らんけど。

で、なんでこんなこと調べてたかっていうと、私が担当している環境で Reserved 
Instance (RI)を契約してるところがあるんだけど、RI って AZ に紐付いてるよね。
例えば、とある AZ に障害があって Auto Scaling Group のインスタンスが別の AZ
に偏ってしまった状況で、その偏った AZ における実際のインスタンス数が RI の
契約インスタンス数より多くなったら、そりゃ余計な課金の対象になるでしょう。
偏った状態に気づかず、何日も運用が続いたら予期せぬ課金が... という状況が恐ろ
しくて。でも自動で戻るということなので、まぁ予期せぬ課金はおそらくわずかな
もので済みそうで安心。

あともうひとつ、AZ の障害とはあまり関係ないけど心配なことがあった。
Auto Scaling Group (もしくは ELB)のヘルスチェックで異常と判断されたインスタ
ンスって、自動的に削除/作成をしてくれるよね。でも新しく作成されたインスタン
スでも異常な状態が続いちゃってると、おそらく削除/作成はループする。

これが土日とかみんな遊びに行ってるときに起こったら、すごい課金になるんじゃ
ないかと(つーかちゃんと運用体制組めよってのは置いておいて)。
ヘルスチェック猶予期間をデフォルト(300秒)のままにしておいたとして、最短で
5 分に一回インスタンスの削除/作成が行われる。つまり 1 時間で最大 
60分 / 5 分 = 12 回の削除/作成が繰り返されると。一回のインスタンスの作成で
は最低でも 1 時間の料金が取られるから、1 時間で 12 時間分の料金発生。

これが延々続くとヤバイと思ったら、どうやら上記の URL にこれについても記述
があって、おそらく 24 時間以上のループがある場合はプロセスが停止するという
ことらしい。これを「administrative suspension (管理上の停止)」と言うらしい。
24 時間ということは、最大で 24時間 x 12回 ということは 12 日分の料金が取ら
れるということになる。うーん微妙な感じ。まぁ制限があるだけマシか。
Reserved Instance 範囲内でこの現象が起こってれば特に気にすることも無いのか
もしれないけど、心配症なもんで...

ということで最近 AWS をいじりまくってるが、AWS は細かい気配りがすごいね。
この前なんて、Auto Scaling で必須だった EC2 の詳細モニタリング(有料)を、仕組
みを変えて無料にしてくれたもんね(Group Metrics Collection)。

いや、AWS 好きになるつつあるかもw


2016年12月7日水曜日

NGINX とか Apache で ipv6 Link Local アドレスで Listen できないっす

Link Local アドレスはインタフェースが特定できないので、
<ipv6アドレス>%<インタフェース名> で指定すると固有になる
らしいが、この記法が Apache や NGINX で通用しない。
そもそも Link Local で Listen しちゃいかんのかな?

2016年11月24日木曜日

aws elbv2 create-listener のときの --default-actions

AWS の Application Load Balancer (ELB v2) のリスナーを設定するときに
--default-actions ってのを指定する必要があり、これがどの例を見ても
Type=forward,TargetGroupArn=arn-of-a-target-group なんだけど、
他に何かないのか調べたけど無かった。下記 URL に記述あり。
おそらく透過プロキシとかも設定できるようにする予定なんだろう。

http://docs.aws.amazon.com/elasticloadbalancing/latest/application/elb-ag.pdf

Each rule action has a type and a target group. Currently, the only supported type is forward. You can create a rule that forwards requests to the specified target group.

2016年11月22日火曜日

はぁ

世間では不明なことを周りを巻き込んで解決する人のことを
「チームワーク」に長けていると評価されるようですが、
私の会社では、検証もせずまず他人を巻き込むところから始
める人も評価されているようで、それって「チームワーク」
なんですか?っていつも思います。
それを「マネージメント」だって言って自分の仕事だと思っ
ちゃってる人が私は大嫌いです。

2016年11月19日土曜日

X1 carbon 2nd gen の英語キーボード購入検討中

lenovo X1 carbon 2nd gen のキーボードを英語にしようと画策しているのだが、
パームレストごと変えないとダメで、これが ebay とかアリババとかでは結構
な値段。新品だと 10000 円は覚悟せんといかん。

まぁ、使いたいし買うのは決定したのだが、下記のドキュメントから US 配列
キーボードの FRU を調べたら結構な数あった。

https://download.lenovo.com/parts/ThinkPad/x1_carbon_gen2_fru_bom_20150616.pdf

以下にすべてを羅列したが、ここから English International を除外したら 00HM000, 
04X5570, 04X6525 の 3 つまで絞れた。
あとは、Chicony 製 と Liteon 製の違いと、NFC があるかないか(w/ -with か 
w/o -without か)、secondary, primary の違いかなのだが、今持ってるのは NFC
が無いやつなので、04X5570 か 04X6525 だ。

が、この secondary, primary の違いがようわからん...

00HM000  
Keyboard Bezel ASM w/ Keyboard w/NFC US English (Liteon)- secondary

04X5570
Keyboard Bezel ASM w/ Keyboard US English (Chicony)ClickPad w/o NFC-primary

04X6525
Keyboard Bezel ASM w/ Keyboard US English (Liteon)ClickPad w/o NFC-secondary

00HM030
Keyboard Bezel ASM w/ Keyboard w/NFC US English International (Liteon)-secondary

04X6518
Keyboard Bezel ASM w/ Keyboard US English International (Chicony)ClickPad w/o NFC -primary

04X6555
Keyboard Bezel ASM w/ Keyboard US English International (Liteon)ClickPad w/o NFC - secondary

04X6592
Keyboard Bezel ASM w/ Keyboard w/NFC US English International (Chicony) -primary

2016年11月18日金曜日

BIG-A

なぜ BIG-A は何十年もメジャーになれない割には潰れないのか。

2016年11月9日水曜日

2016年11月6日日曜日

Thinkpad X1 Carbon gen 2 の Windows 10 アップデート その後

その後、BIOS (Legacy Mode)から起動した Windows 10 の「回復」メニューから
リカバリ USB を作りシャットダウン。X1 Carbon 起動直後に F1 押下して UEFI Only 
な環境に戻した後、そのリカバリ USB で Windows 10 をクリアインストールした
ら UEFI で起動することに成功。少し安心。起動も早い。

100GBの空きパーティションを作ってこれから Fedora インストール。マルチブート
にする予定。

Thinkpad X1 Carbon gen 2 の Windows 10 アップデート

ある方から Thinkpad X1 Carbon の 第二世代をもらった。
我が家の現在のリビングパソコン(家族用 Windows)がヘタってきたので、こ
のいただいたマシンに変えようかと思い、Windows をそのまま利用すること
にした。Windows 10 への無償アップデートはもう終わった。しかし巷の噂
によると、裏ワザで Windows 10 にできるということなのでやることにした。

Windows 8.1  の画面から Windows 10 のインストーラを起動し、とりあえず
順調に見えたが、再起動後、真っ黒画面でフリーズ。

何度やってもダメ。とりあえず BIOS を最新にしたがダメ。lenovo のサイト
にあるようにいろいろアプリ削除したり、提供されているドライバをアップ
デートしたが全然ダメ。

ググると Secure Boot を無効にすると行けるらしいということなのでやって
みたがこれもダメ。

いろいろやってみたところ、レガシーブートで立ち上がることに気づいた。
Windows 10 が何か勘違いして MBR にブートローダをぶち込んでしまうんだ
ろうか。

仕方なく、とりあえず下記設定で回避。

マシン電源ボタン押下直後 F1 で BIOS セットアップ画面
「Startup」→「UEFI/Legacy Boot」→「CSM Support」を「Yes」に設定

納得できないが仕方ない。やっぱり Fedora 入れて自分のマシンにしてしま
おうかと思い始めた。

糞 Windows この世から早く無くなれ。



2016年11月1日火曜日

except と expect

もともと自分は滑舌が悪く、expect と言いたいのに except になったり、
「expecting mother」が「excepting mother」という発音になったりして
個人的に噛み噛みですごくつらい。

expect の x は「ks」(クス) の発音で、except の x は「kse」(クセ) で意識
して発音するようにしたら噛まなくなったので、備忘として書いときます。

2016年10月28日金曜日

2016年10月25日火曜日

なんでも MS PowerPoint という風潮

企画書だろうが提案書だろうが要件定義書だろうが、はたまた設計書まで
何でもかんでも MS PowerPoint で作るのはどうなの?

PowerPoint ってプレゼンテーション資料作成ツール故、どうしても伝え
たいことが箇条書きになるんだよね。それじゃ読んだ方は情報がブツ切れ
で細かいことが伝わらないんじゃないのって思うのは私だけ?

学生の頃、私は板書をノートに書き写すのが大嫌いでやらなかった。中学
の頃はそれで怒られたりもしたんだけど、後でノート読んでも箇条書きし
か書いてないから、内容を理解する助けにならない。参考書の方が文章に
なっていて、細かい説明があって読めば理解できる。板書は、先生の説明
と同時に見ることで初めて意味がわかるものだと思ってる。

PowerPoint も板書と同じで、口頭の説明が無いとなんのことやらわから
ない。それを企画書とか提案書にしたんじゃ意図が伝わらんだろって。
PowerPoint で作るのは口頭で説明する際の補助的なもので、それとは別
にちゃんとした文章の資料を作るべきでしょ。今の風潮がようわからんわ。

まぁ私はプレゼンテーション資料を作るときは PowerPoint でなく TeXPower 
使ってますけどw

2016年10月17日月曜日

カラーマネジメントされたデバイスを作成するには認証が必要

Xspice に無理くり gdm を表示させてるんだけど、virt-viewer から接続すると
gdm の画面に以下のメッセージが表示されて root のパスワードを求められる。

カラーマネジメントされたデバイスを作成するには認証が必要

英語だと「Authentication is required to create a color managed device」だが、
この color managed device の意味がようわからん。とりあえず結論的にこれを
出なくさせるには、下記の設定で良いみたい。

/etc/polkit-1/localauthority/50-local.d/allow-colord.pkla
[Allow colord for all users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=yes
ResualtInactive=auth_admin
ResultActive=yes
意味はわかってないw とりあえずググってみたらあったのでメモ。

あと、Xspice に gdm を表示させるには、XDMCP を有効にする必要があるみたい。
custome.conf に以下の設定を追加

[xdmcp]
Enable=1
Xspice の起動時は下記のように -query を追加。これもイマイチ意味がわかってない。
Xspice -query localhost  <他のオプション>

とりあえずのメモ。

2016年10月13日木曜日

out there

out there には、「世の中には」とか「世間一般」という意味があるらしい。

2016年10月5日水曜日

yum の変数を見る

ググッて忘れそうなのでメモ

python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'

2016年9月23日金曜日

Xspice + virt-viewer でインターネット分離?

巷では「インターネット分離」ってのが流行しているようで。

単に VDI で Windows すれば良いというのだと思うんだけど、思いの外 VDI はコス
ト高のようで、なんとか安く出来ないかっていう悩みもちらほら聞いたりする。

すると、次に考えるのが無償 OS 使えってんで矢面に立つのが最近は Ubuntu だそ
うで。どうも私は Ubuntu が嫌いであんな激重な Linux を良く使える気になるなと。

それは置いておいて、じゃぁその無償 OS 上で動かした Web ブラウザの画面をユー
ザの手元の Windows クライアントに表示しようと考えた時、ロートルの私としては
たいてい Windows に Cygwin なりで X Server をインストールして、X の画面だけ
飛ばすって方法。

しかし昨日のブログにも書いたが、これがどうも firefox や chrome だと激重なん
だよね。xcalc とか xclock だったらサクサク動くんだけどね(当たり前だけど)。
ssh の X11Forwarding で、-C で圧縮して -c でアルゴリズムを圧縮率の高いものに
指定すると多少速くなるんだが、エンタープライズ的な運用に乗るレベルじゃない
んだよね。

じゃぁ、VNC なり SPICE なりでターミナルごと画面飛ばしした方が速いんじゃな
いか、などと考えて行き着いたのが Xspice。

Xspice なら、OS が上がった状態でユーザ別に独立して Xspice のプロセスを動か
すことが出来るので(ユーザ毎別ポートで)、1 台のマシンに remote-viewer から
複数人接続できる。

起動はこんな感じ。

Xspice --port 5901 :1.0 --disable-ticketing 

これで remote-viewer spice://x.x.x.x:5901 につなぐと真っ黒画面が出るので、
Xspiceを起動している側でさらに DISPLAY=:1.0 firefox などとすると、
remote-viewer 側にfirefox 出現。これが X で画面飛ばすよりも速い。

Xspice のオプションに --xsession /usr/bin/gnome-sesson などとすると、
gnome が上がるらしいが、手元の環境だと立ち上がらない。

ということで上記コマンドを忘れそうなのでメモりたいがためにこのブログ
を書きました。まぁ、これをエンタープライズ用途で使えるようにするにはま
だハードルはいっぱいありそうです...







2016年9月22日木曜日

startx の Xorg で 6000 を Listen させる

何年ぶりかで手元の Fedora で startx で起動した X サーバにリモートの画面を表示させ
ないといけない状況になった。
ssh  の -X とか -Y じゃなくて、生の X プロトコルで。
かなりレガシィなお題なので余裕かましてたらハマったのでメモ。

とりあえず xhost + して、リモート側に DISPLAY 変数設定してリモートで
firefox 起動。普通に firefox の画面が出るかと思ったら、あれ?出ない。

昔だったら普通にできたよねぇ、、、と思いつつ ss -tan したら 6000 LISTEN が無い。 
しかも ps すると Xorg に -nolisten tcp がついてる。

あぁ、そういや startx になんかオプション必要だったっけ。と、/usr/bin/startx を読み解
くと「--」のあとに -listen をつければ良いらしいと。

startx -- -listen

これで -nolisten 消えたろうと ps したらまだついてる。まさか...
 $ which startx
alias startx='/usr/bin/startx -- -nolisten tcp'
    /usr/bin/startx
なんだよそれ。とりあえず \startx -- -listen で起動したら -nolisten 消えたぞと。
これで良いだろうと思いまたリモートから firefox 起動したけど X に接続できないエラー。
また ss -tan したら 6000 LISTEN してないじゃん。えーー?
「Xorg -listen tcp」で確認したら 6000 は LISTEN できてる。
んーーー、こりゃ startx の問題だなぁと。

なんやら、/usr/bin/startx の中を見ると、~/.xserverrc がそのまま X のサーバとして
実行されてるので、ここにいろいろ書いてみた。
 #!/bin/sh
 /usr/bin/Xorg -listen tcp
しかし parse_vt_settings: Cannot open /dev/tty0 (No such file or directory)
などというエラー。もう面倒なのでこれを手がかりにググる。

 https://bbs.archlinux.org/viewtopic.php?id=205959

上記発見。~/.xserverrc を以下の内容にしてやっとのことで 
 #!/bin/sh
exec /usr/bin/X -listen tcp vt${XDG_VTNR} "${@}"
いやいや、なんだか基本的なことなのにトラップが多かったなぁ。
しかし X で飛ばした firefox の遅いこと。これはまた後で調べよう...




2016年9月10日土曜日

うちのドアの調整


子供が怪力でドアをガタガタやってしまい、閉めるときにドアが枠に当たるようになってしまった。その直し方を忘れそうなのでメモ。

うちのドアの場合、蝶番が上の写真のようになっていて、これを簡単に調節できるらしい。

まず 1 の「固定ネジ」を六角で緩める。その後 2 のネジを回すことにより蝶番側に倒すか、ラッチ側に倒すかを設定できる。ラッチってのは、ドアノブの横のガチャガチャ出
たり入ったりするところのこと。

今回、ドアノブ側の枠に当たるようになってしまったので、2 のネジを丁番側(写真右方向)に回して調整。

その後 1 を閉めて終わり。


2016年9月3日土曜日

サーバ引越し

本日、自分ちのサーバを webkeepers から vultr に乗り換えました。

2016年9月2日金曜日

pam_unix.so が NSS 見てる

以下、完全に自分のためのメモ。

恥ずかしながら、PAM と NSS は独立しているのだとばかり思いこんでいた。
例えば、PAM で認証して OK だったら NSS から passwd 情報等持ってくる的な..

が、ふと、
独立してるなら pam_mkhomedir なんかはどうやってホームディレクトリ取得してるん?NSS 経由していないん?
とか、
agetty でログインしたとき、パスワード入れる前に知らんユーザだと蹴られるよね、
あれって NSS を最初に持ってきてるんじゃないん?

とか、思い始め、あ、これもしかして間違って覚えてる?となった。

簡単な実験をしてみた。sss で LDAP 認証可能な Linux マシンにおいて、sssd.conf で
sssd_nss を起動しないよう(sssd_pam だけ起動する)に設定。で LDAP にいるユーザ
で ssh から認証をかけてみる。
自分の予想的には、パスワード認証は通るけど uid や loginShell が取れなくて蹴られる
的な動きをするんだろうと /var/log/secure を見てたら、違う。

  Failed password for invalid user user1

などと、ユーザがいない時と同じエラー。じゃぁ、/etc/pam.d/password-auth で
pam_unix.so や pam_env や pam_localuser (今回は関係ないけど)を auth からコメント
アウトしてみたが、何も変わらず。これはおそらく ssh が独自に PAM の前に NSS を見
てるんじゃ無かろうかと(推測)。

じゃぁ、getty で試してみるということで。とりあえず sssd.conf は pam と nss の
サービスを起動するように設定。/etc/nsswitch.confで、passwd, group, shadow から
sss を取り去り nss だけ LDAP 通信しないようにしてみる。もちろん /etc/pam.d/system-auth
は、auth pam_sss と account pam_sss の設定は残してあって、他は細工してない。

すると、agetty のログインプロンプトで ID 入力して Enter しただけで
「Login incorrect 」 のエラーが。パスワードすら入れさせてもらえない。
/var/log/secure には以下のエラーが。

 login: FAILED LOGIN 1 FROM tty1 FOR (unknown), User not known to the underlying authentication module


じゃぁ、この状態で /etc/pam.d/system-auth をいじってみようと。まず、auth の
pam_unix.so の行をコメントアウトしてみる。んで agetty からログイン。
するとですね、ログインは失敗するものの、/var/log/secure の中には auth の pam_sss
がちゃんと認証してくれたメッセージが。


 Sep  2 03:05:34 client login: pam_sss(login:auth): authentication success; logname=LOGIN uid=0 euid=0 tty=tty1 ruser= rhost= user=user1
 Sep  2 03:05:34 client login: pam_sss(login:auth): authentication success; logname=LOGIN uid=0 euid=0 tty=tty1 ruser= rhost= user=user1
Sep  2 03:05:34 client login: pam_unix(login:account): could not identify user (from getpwnam(user1))
Sep  2 03:05:34 client login: User not known to the underlying authentication module

system-auth から auth の pam_unix.so 行をコメントして上記メッセージが出るよう
になったということは、やっぱり pam_unix.so が NSS を見てるんだなと 90% くらい
確信。んで、/etc/nsswitch.conf の passwd, group, shadow に sss を戻してみる。
するとやっぱり問題なく認証された。

ちなみに、system-auth の auth と account の pam_unix.so をコメントアウトして
また nsswitch.conf から sss を排除してやってみると以下のようなエラー。

Session setup problem, abort.

/var/log/secure には以下のようなエラーが。

Sep  2 03:13:05 lient login: pam_sss(login:auth): authentication success; logname=LOGIN uid=0 euid=0 tty=tty1 ruser= rhost= user=user1
Sep  2 03:13:05 client login: Invalid user name "user1" in main:1229. Abort.

これこれ。最初に推測してた動き。pam_unix.so によるユーザ存在チェックが無ければ、
ちゃんと認証してから session で蹴られてる。

というわけで、おそらく pam_unix.so は NSS を介してユーザ存在チェックをしている
ということで(独自実装ではないということで)。












2016年8月17日水曜日

EAP-TLS で wpa_supplicant 失敗する。md5 の署名が原因だった。

Fedora 20 から Fedora 24 にジャンプアップしたら(アップデートサボりすぎ)
wpa_supplicant が CONNECTED にならん。

wlp3s0: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 13 (TLS) selected
wlp3s0: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=JP/ST=Tokyo/...' hash=...
TLS: Certificate verification failed, error 7 (certificate signature failure) depth 0 for '/C=JP/ST=Tokyo/...'
wlp3s0: CTRL-EVENT-EAP-TLS-CERT-ERROR reason=0 depth=0 subject='/C=JP/ST=Tokyo/...err='certificate signature failure'
SSL: SSL3 alert: write (local SSL3 detected an error):fatal:decrypt error
OpenSSL: openssl_handshake - SSL_connect error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm
OpenSSL: pending error: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
wlp3s0: CTRL-EVENT-EAP-FAILURE EAP authentication failed

SSLv3 のせいかと思ったが、いろいろググると手元のクライアント証明書が MD5
で署名されているのが原因のようだ。手元の証明書を開けてみたら以下だった。

    Signature Algorithm: md5WithRSAEncryption

下記環境変数を設定して wpa_supplicantを実行すればイケた。

OPENSSL_ENABLE_MD5_VERIFY=1
NSS_HASH_ALG_SUPPORT=+MD5





2016年6月13日月曜日

password-crypt-salt-format の備忘

password-crypt-salt-format についてわかりやすく書いてくれている方が
いらっしゃったのでメモ。助かります...

http://ossexpo.blogspot.jp/2014/09/openldap_25.html

  • $5$はSHA256形式のハッシュ化を意味し、"%.8s"の部分が8文字のランダムなソルトを付与することを意味します。SHA512を利用したい場合は、$5$の代わりに$6$を指定します。
  • {CRYPT}形式で指定したパスワードは、glibcのcrypt(3)によってSHA256/SHA512のハッシュ化が行われますが、この 際、5000回のラウンド処理が行われます。ラウンド回数は salt-formatにroundsパラメーターで指定することが可能で、1000回以上を指定可能です。(1000回以下を指定すると、1000に設 定されます)
  • 8000回のラウンドを指定する場合は、password-crypt-salt-formatに"rounds=8000$"をソルト文字列の前に付与します。
  • password-crypt-salt-format "$5$rounds=8000$%.8s"
  • 2016年5月16日月曜日

    RHEL7 系の slapd では SLAPD_ULIMIT_SETTINGS は使えない

    RHEL6 系(CentOS 6, Scientific Linux 6 等)で、 /etc/sysconfig/slapd に
    SLAPD_ULIMIT_SETTINGS="-n 4096" とか指定して too many open files の対策
    をしていた人もいると思うが、RHEL7 だとこれは使えない。疑う人は
    /proc/<pid>/limits で確認してみる。

    この SLAPD_ULIMIT_SETTINGS は slapd が見る環境変数じゃなくて、RHEL6 系
    の init.d 下のスクリプトが見てちょこちょこやってただけということで。

    なので、systemd 的には ulimit -n な設定は /etc/systemd/system/slapd.service
    に LimitNOFILE で定義する。ファイル編集後は systemd daemon-reload を忘れずに。

    # /usr/lib/systemd/system/slapd.service を直してしまうと、おそらく update 時
    # に上書きされる。これは openldap-servers の config ファイル扱いになってない。

    # cp /usr/lib/systemd/system/slapd.service /etc/systemd/system/
    # vi /etc/systemd/system/
      : (snip) 
    [Service]
    Type=forking
      : (snip)
    ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS
    LimitNOFILE=4096 
      : (snip)  

    2016年5月12日木曜日

    RHEL7 で xinetd から起動してるプロセスからのコア吐き

    そもそも RHEL7 で xinetd 使うなってことは置いておいて、xinetd から起動している
    自作のプログラムからコアが吐けない。

    http://blog.urban-theory.net/2014/08/27/why_the_coredump_fails_or_removed_too_quickly

    /etc/abrt/abrt-action-save-package-data.conf

    いろいろ試して上記の情報で吐けるようにはなったのだが、試した中でどれがいらない
    要素かわかないのでとりあえず他にやった設定全部メモ。


    • /usr/lib/systemd/system/xinetd.service に LIMITCore=infinity を追加。
    • ソース自体に下記を追加

    struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY };
    setrlimit(RLIMIT_CORE, &rl);


    2016年5月6日金曜日

    pwdMinLength 挙動メモ

    OpenLDAP の ppolicy で pwdMinLength が効かないので調べた単なるメモ。
    結論として、これを効かせるには pwdCheckQuality を 1 か 2 にしなきゃならん。
    どこぞに userPassword がハッシュだと効かないとか書いてあったが、どうもそれは違うみたい。

    とにかく pwdMinLength を有効にしたいなら pwdCheckQulity:1 (または2)にする必要あり。

    2016年4月19日火曜日

    Open vSwitch の内部ポートを tcpdump

    Open vSwitch の内部ポートを tcpdump したいんだが、普通に -i にそのポートを指定する
    と No such device exists で蹴られる。

    ググったらすぐ見つかったが、コマンドの意味が全然わからないのでおまじないだと思って
    ここにコピペメモ。

    http://docs.openstack.org/ja/openstack-ops/content/network_troubleshooting.html

    1. ダミーインターフェース snooper0 を作成して起動します。
      # ip link add name snooper0 type dummy
      # ip link set dev snooper0 up
      
    2. snooper0 デバイスを br-int ブリッジに追加します。
      # ovs-vsctl add-port br-int snooper0
      
    3. patch-tun のミラーを snooper0 に作成します (ミラーポートの UUID を返します)。
      # ovs-vsctl -- set Bridge br-int mirrors=@m  -- --id=@snooper0 \
      get Port snooper0  -- --id=@patch-tun get Port patch-tun \
      -- --id=@m create Mirror name=mymirror select-dst-port=@patch-tun \
      select-src-port=@patch-tun output-port=@snooper0 select_all=1
    4. これでうまくいきます。tcpdump -i snooper0 を実行して、patch-tun の通信を参照できます。
    5. br-int にあるすべてのミラーを解除して、ダミーインターフェースを削除することにより、クリーンアップします。
      # ovs-vsctl clear Bridge br-int mirrors
      
      # ovs-vsctl del-port br-int snooper0
      
      # ip link delete dev snooper0
      

    2016年4月3日日曜日

    resolv.conf's filetype

    なんか /etc/resolv.conf の selinux context が下のようになってた。

    system_u:object_r:svirt_sandbox_file_t:s0:c243,c503

    docker のファイルタイプになっちゃっててさらに MCS が c254,c503
    っつーのがついちゃって、全然覚えがないんだけど...

    docker いじってたときに間違ったか?

    Current mode:   enforcing だから dhclient 起動したときに DNS サーバ
    の修正が Permission denied になってる。

    仕方なく restorecon -F /etc/resolv.conf なんだけどなにか負けた気がする...
    -rw-r--r--. root root system_u:object_r:net_conf_t:s0  /etc/resolv.conf


    2016年2月18日木曜日

    NGINX はクライアント証明書の失効を OCSP でできない?

    NGINX はサーバ証明書の OCSP stapling は可能だが、クライアント証明書
    の失効検証は CRL だけで OCSP は出来ないらしい。↓2014 年のやりとりだ
    けど、おそらく今も無いでしょう。no plan ということだそうで。

    OCSP stapling for client certificates

    まぁ Apache も無いんじゃねーのか?よく調べてないけど。

    2016年2月17日水曜日

    ELB の Connection Settings Idle Timeout

    ELB の Connection Settings にある Idle Timeout のデフォルトが 30 秒で結構短い。

    このまま NGINX の proxy_read_timeout を 30 秒以上にしちゃうと、upstream の
    サーバ応答が長時間なかった場合に、502 エラーを吐く前に TCP セッションが切ら
    れてしまうという...

    原因解明に 1 時間を要してしまった...

    SSL証明書 AIA 拡張の単なる URL メモ

    SSL 証明書には AIA 拡張ってのがあって OCSP レスポンダの URI や中間 CA の
    証明書 の URI を含められるらしい。初めて知りましたのでのメモ。


    http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.1.0/com.ibm.mq.doc/mi20882_.htm?lang=ja

    2016年2月1日月曜日

    AWS Oracle RDS で sqlplus から ORA-21561: OID generation failed

    VPC 上の EC2 に Oracle Instant Client を入れて RDS 上の Oracle に
    sqlplus しようとしたら以下のエラー。

    ERROR:
    ORA-21561: OID generation failed
    逆引きできないのが原因らしい。VPC の場合は「DNS hostname」が
    無効になっている可能性が高い。

    AWS コンソールから VPC を選択し、[Action] → [Edit DNS Hostnames]
    にてこれを有効にする。

    2016年1月29日金曜日

    Avast Mobile Security on Android 6.0 の chrome サポート(未解決)

    Nexus 6P の Android 6.0 で Avast Mobile Security を使っているが、
    最近警告が出るようになり現在調べ中。

    警告の内容はというと、「Chrome サポートが無効です。危険な Web
    サイトから保護されていません。」というもの。これは「ツール」→
    「設定」→「プロテクション」→「Chrome サポート」で設定できる
    ものらしい。

    で、この Chrome サポートを有効にしようとすると以下のメッセージ
    が表示される。

    「ユーザ補助設定でアプリを有効にしてください」

    で、Android の設定で「ユーザ補助」→「Avast Mobile Security」を
    ON にしようとすると、今度は下記のメッセージが出てかなりやる気を
    無くす。

    「Avast Mobile Security を ON にすると、端末データの暗号化の強化
    に画面ロックは使用されなくなります」

    日本語でググっても何もヒットせず、Android を英語モードにして以下
    メッセージを取得してググる。

    your device won't use your screen lock to enhance data encryption

    ググると LastPass というパスワードマネージャのアプリがヒットした
    りするが、どうも上記した「... 強化に画面ロックは使用されなくなりま
    す」のメッセージのところで ON にしてしまうと、Android 起動時のパ
    スフレーズロックが外れてしまうらしい。
    なのであまりやりたくないのだが... 現在やるかどうか悩み中。

    で、関係しているかどうかわからんが、Avast のフォーラムで下記ページ
    を発見した。

    https://forum.avast.com/index.php?topic=178226.msg1262263#msg1262263

    どうも、Android 6.0 では Chrome の API が無くなってしまい、代替
    手段でいろいろいじくってるらしい。これが関係してるのか?

    うーん、Chrome サポートの設定どうしよう。

    2016年1月27日水曜日

    Proxy Protocol

    Proxy Protocol ってのを初めて知った。

    http://blog.haproxy.com/haproxy/proxy-protocol/

    多段で Proxy になってる場合に、発端のクライアントの IP アドレスを
    途中ノードでリレーして末端のノードで取得できる。

    ELB → nginx なんて構成で、最初の ELB は 443 素通しにして
    (SSL ターミネーションしないで) nginx に渡した場合、ELB の中では
    HTTP を復号できないので X-Forwarded-for に乗せられない。

    こんな場合でも nginx で発端のクライント IP アドレスをログに残したい
    なんて場合に有効。

    ELB での Proxy Protocol の有効化は以下。

    http://docs.aws.amazon.com/ja_jp/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html

    nginx では以下のような設定。

    listen 443 ssl proxy_protocol;
    real_ip_header proxy_protocol;



    2016年1月6日水曜日

    brctl addif で wireless lan を追加する

    無線の NIC を brctl で追加しようとしても以下エラーで追加できない。
    # brctl addif directbr1 wlp0s26u1u2
    can't add wlp0s26u1u2 to bridge directbr1: Operation not supported

    4addr モードというのにすると出来るらしい。

    # iw dev wlp0s26u1u2 set 4addr on
    # brctl addif directbr1 wlp0s26u1u
    # brctl show
    bridge name bridge id STP enabled interfaces
    directbr1     8000.34xxxxxxxx    yes     directbr1-nic
                                                     wlp0s26u1u2

    が、4addr にするとネットワークが繋がらん。

    下記が詳しかった。

    http://masm11.ddo.jp/~masm/tdiary/?date=20140429

    kernel だとここにあるらしい。

    --- net/bridge/br_if.c.bak 2014-04-29 21:04:52.104171660 +0900
    +++ net/bridge/br_if.c 2014-04-29 21:05:15.654027708 +0900
    @@ -343,9 +343,11 @@
    if (br_port_exists(dev))
    return -EBUSY;
    +#if 0 // masm
    /* No bridging devices that dislike that (e.g. wireless) */
    if (dev->priv_flags & IFF_DONT_BRIDGE)
    return -EOPNOTSUPP;
    +#endif
    p = new_nbp(br, dev);
    if (IS_ERR(p))

    2016年1月4日月曜日

    dnf で言語グループリスト

    yum つーか dnf で言語サポートのグループを一覧表示したいのに、
    何で group list で出ないのか不思議だった。
    今更だがやっとわかった。世間では FAQ なんだろうけど一応メモ。

    dnf group list hidden

    hidden すか...