UNIXの設定ファイル中の平文パスワードを暗号化してセキュアにする方法
UNIX系の設定ファイルの中にパスワードを書くのは、あまりにインセキュアで躊躇われる。
たとえばCUIメーラーの雄 mutt で Gmail を使う場合、~/.muttrc
に
# ~/.muttrc for Gmail set imap_user = "YOUR.EMAIL@gmail.com" set imap_pass = "パスワード" set smtp_url = "smtp://YOUR.EMAIL@smtp.gmail.com:587/" set smtp_pass = "パスワード"
といった具合にパスワードを書く必要がある。
参考:
brew - mutt + Gmailを使ってCUIでのメール環境を作る - Qiita
いくらなんでもセキュリティ的にアレすぎるので、平文のパスワードを暗号化してセキュアにしよう。
大抵のUNIXの設定ファイルには、外部ファイルを読み込む source
コマンドが実装されている (source
できない設定ファイルはクソすぎる)。従って
- 設定ファイルのパスワード部分を、外部ファイルの
plain.txt
に分離 plain.txt
を暗号化してpass.rsa
にする- アプリケーションの起動時に
pass.rsa
を復号化しつつ、元の設定ファイルにsource
する
という手続きを踏むことになる。
.muttrc
を例に順番に説明しよう。
1. パスワード部分を plain.txt
に分離
set imap_pass = "パスワード" set smtp_pass = "パスワード"
を外部のplain.txt
に保存する。
2. plain.txt
を暗号化して pass.rsa
にする
次に plain.txt
を暗号化する。
こういう場合には openssl
を使うのが便利だ。
その辺の詳しい事情は以前の記事にまとめてある。
暗号化のやり方だけを抜粋すると、コマンドラインで以下のコマンドを叩けばよい。
# plain.txt というテキストファイルを暗号化して pass.rsa に書き込むコマンド $ openssl rsautl -encrypt -inkey ~/.ssh/id_rsa -in plain.txt > pass.rsa
これでpass.rsa
が作成されるはずだ。
もしエラーが出た場合には、ssh-keygen
すれば多分解決する。
詳しい話はシェルスクリプトの平文パスワードをセキュアにする方法 - 余白の書きなぐりを参照。
3 pass.rsa
を復号化しつつ、元の設定ファイルにsource
する
最後に pass.rsa
を復号化して、.muttrc
に読み込む作業が残っている。
これは .muttrc
を以下のように書き換えることで実現できる。
# ~/.muttrc for Gmail set imap_user = "YOUR.EMAIL@gmail.com" set smtp_url = "smtp://YOUR.EMAIL@smtp.gmail.com:587/" source "openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in pass.rsa |"
source
の使用は設定ファイルによってマチマチなので個別に対応せねばならないが、
多くの場合は上記のように source "openssl ... |"
で正しく動くと思う。
さくらVPSのUbuntu14.04LTS にRLogin でX11ログインする方法
ローカルのWindows7にXmingをインストール
フリーのWindows用Xサーバー「Xming」のインストールと基本設定、使い方 や XmingによるX Window利用 に書かれているのと同じようにインストールする。 Putty をインストールする必要はない。
ローカルのWindows7でXmingを起動
C:\Program Files (x86)\Xming\Xming.exe
で起動する。設定は
C:\Program Files (x86)\Xming\XLaunch.exe
で変更可能。
画面サイズは XLaunch.exe の Additional Parameters for Xming
に -screen 0 1366 1024
などと設定する。
さくらVPSのUbuntuにX11をインストール
$ sudo su
# apt-get install xinit
#
さくらVPSのUbuntuでX11を起動
# startx & # exit $
RLogin のX11ポートフォワードの設定
サーバ---プロトコル---ポートフォワード(P) をクリックして、以下のように設定する。
これで接続すると、X11が使用可能。xev
等のコマンドで使用可能か確認できる。
gnuplotに関する蛇足
さくらVPSのubuntu14.04LTS-server の場合、aptでインストールできるgnuplotはnoxバージョンなので、Xmingで使用するためには
$ sudo apt-get install gnuplot-x11
とする。
RLogin のフォント設定まとめ
RLogin はWindows環境における便利な端末エミュレータだ。 ただ残念なことに、デフォルトのフォントがキモいという問題がある。 そのうえフォントサイズの変更方法がわかりにくいので、まとめておこう。
フォントの種類の変更
半角アルファベットと記号のフォントを変更する場合は以下のようにする。
まず ファイル
-サーバーの接続
-新規or編集
をクリックし、
フォント
タブを選択する。
ここで ASCII(ANSI X3.4-19...
をダブルクリックして
Font Parameter
ウィンドウを開けて、
Font
ボタンをクリックする。
Font
ボタンをクリックすれば、好きなフォントを指定できるが、
注意点として、この画面ではフォントサイズが変更できない!!
フォントのサイズの変更は スクリーン
タブで行う。
フォントのサイズの変更
ファイル
-サーバーの接続
-新規or編集
をクリックし、
スクリーン
タブを選択する。
フォントサイズから一行あたりの文字数を決定
を選択し、その隣の数値 (上の画像では 20) を変えれば
フォントサイズが変更される。20以上の値も入力可能。
参考サイト:
RLogin 端末の16色カラーがキモいのを直す方法
Windows で ssh サーバーにログインしたい時には、 Putty や TeraTerm といった 端末エミュレータを用いるのが一般的だが、 僕は RLogin という端末を常用している。 RLogin は Sixel が使えるなど様々な点で先進的で使いやすいのだが、使用者をあまり見かけないのはなぜだろうか。
そんなハッピーな RLogin の抱える問題点として デフォルトの16色カラーがキモい ことが挙げられる。 なんというか視認性が悪い気がする。 他にも初期設定のフォントやフォントサイズが不満であるものの、 とりあえず今回は色設定を見直そう。
色設定を変更するには、
ファイル
-サーバーの接続
-新規or編集
をクリックし、カラー
タブを選択する。
端末を黒背景 + 白文字にするには、
- 文字カラーの文字色を 15
- 文字カラーの背景色を 0
にすればよい。
メジャーな端末の色を再現する
やや趣味的な話題だが、RLoginでメジャーな端末の色を再現してみる。
一例として軽量端末の urxvt の色を真似しよう。
やり方は、まず先ほどのカラータブ上部の四角い色見本(黒、赤、緑、、、)
を順にクリックして 色の作成
を選ぶ。
そして以下のように RGB の数値を指定すればよい。
urxvt 以外にもメジャーな端末はたくさんある。色設定をまとめておく。
urxvt
上の画像中に記載した urxvt のデフォルトの色設定を再掲する。 urxvtは Unix-like な環境の端末の中で最も軽い(と思う)のでおすすめ。
一段目 ---: R G B 0 : 0 0 0 1 : 205 0 0 2 : 0 205 0 3 : 205 205 0 4 : 0 0 205 5 : 205 0 205 6 : 0 205 205 7 : 250 235 215 ニ段目 ---: R G B 8 : 64 64 64 9 : 255 0 0 10 : 0 255 0 11 : 255 255 0 12 : 0 0 255 13 : 255 0 255 14 : 0 255 255 15 : 255 255 255
Gnome Terminal
Linux Mint や Ubuntu の標準的端末。 色は urxvt とほぼ同じ。
一段目 ---: R G B 0 : 0 0 0 1 : 170 0 0 2 : 0 170 0 3 : 170 85 0 4 : 0 0 170 5 : 170 0 170 6 : 0 170 170 7 : 170 170 170 ニ段目 ---: R G B 8 : 85 85 85 9 : 255 85 85 10 : 85 255 85 11 : 255 255 85 12 : 85 85 255 13 : 255 85 255 14 : 85 255 255 15 : 255 255 255
xterm
一段目 ---: R G B 0 : 46 52 54 1 : 204 0 0 2 : 78 154 6 3 : 196 160 0 4 : 52 101 164 5 : 117 80 123 6 : 6 152 154 7 : 211 215 207 ニ段目 ---: R G B 8 : 85 87 83 9 : 239 41 41 10 : 138 226 52 11 : 252 233 79 12 : 114 159 207 13 : 173 127 168 14 : 52 226 226 15 : 238 238 236
KDE Konsole
一段目 ---: R G B 0 : 0 0 0 1 : 178 24 24 2 : 24 178 24 3 : 178 104 24 4 : 24 24 178 5 : 178 24 178 6 : 24 178 178 7 : 178 178 178 ニ段目 ---: R G B 8 : 104 104 104 9 : 255 84 84 10 : 84 255 84 11 : 255 255 84 12 : 84 84 255 13 : 255 84 255 14 : 84 255 255 15 : 255 255 255
Gmailの外部アカウントのPOP3受信の遅延を無くす最強の方法
GmailはPOP3機能で外部アカウントのメールを受信できる。 しかしその更新間隔が長く、しばしば1時間以上の遅延が起きる。
間違った対策
遅延対策としてあちこちのインターネットに書かれているのが メールを今すぐ確認するボタンを手動クリック という、あまりに原始的な方法。
これは根本的な解決になっていない。 外部アカウントがメールを受信すれば即座にGmailに反映されて欲しいわけだが、 この方法で受信間隔を短くするには、人間がPCの前で待機して メールを今すぐ確認するボタンを定期的に押さねばならないからだ。 要するに手動でPOP3してるようじゃ、遅延は解消できない。
最強の方法 → GMail POP3 Checker
GMail POP3 Checker を使えば メールを今すぐ確認するボタンを3分毎に自動クリック してくれる。 このスクリプトを導入したブラウザを常時立ち上げておけば、 外部アカウントがメールを受信したとき、 3分以内に Gmail の受信ボックスにもメールが届くというわけ。 圧倒的に最強なのです。
以下では Firefox と Chrome のそれぞれについて、スクリプトの導入法をまとめておく。 (他のブラウザにも導入可能)
GMail POP3 Checker の導入方法 (Firefox)
まずアドオンの Greasemonkey を導入する。次に GMail POP3 Checker の"Click here to download this fancy script!" をクリックすると、自動的にインストールされる。 おもむろに Gmail を開くと、ページの右上に
このような "POP3 3:00 Donation" が表示されるはずだ。 あ、更新間隔は3分ではないかも。 寄付すれば更新間隔が変更できるが、寄付しなければ7分間隔になる。
GMail POP3 Checker の導入方法 (chrome)
まずアドオンの Tampermonkey を導入する。 次に GMail POP3 Checker の"Click here to download this fancy script!" をクリックしてインストールすれば準備完了。 Gmailにアクセスすれば、右上に "POP3 3:00 Donation" が表示される。
他のブラウザについては GmMail POP3 Checkerの Installation Directions を参照せよ。
はてなブログの LaTeX 数式表示がデフォルトで MathJax 化された
2014/05/10 における数式記入法まとめ
はてなブログに LaTeX で数式を書くには以下のようにします。
[tex:{ \displaystyle b_n = \sum_{m=0}^{N-1} a_m }]
結果↓
数式は png画像ではなく MathJax で出力されるのでコピペ可能ですが、特に 数式をマウスで反転して「show math as」を選べば LaTeX形式でコピペできます。
以前から MathJax を使ってるはてなブロガー達へ
以前 はてなブログにLaTeXで数式を書く (Markdown記法用) という記事タイトルで、はてなブログに MathJax で数式を出力する方法を紹介しました。 そこでは色々書きましたが、今後は
[tex:{ \displaystyle b_n = \sum_{m=0}^{N-1} a_m }]
を使って数式を入れましょう。
さて、あなたには2つの道が用意されています。
1. MathJax スクリプトの設定を残す
前回紹介した、サイドバーの設定
<script type="text/javascript" src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" ></script>
を残し、新規に数式を書く場合は [tex:{
形式を使用する。
2. MathJax スクリプトの設定を消す
今までに書いた \\(...\\)
の数式を全て [tex:{
形式に置換し、前回設定した
<script...
をサイドバーから削除する。
シェルスクリプトの平文パスワードをセキュアにする方法
追記: (2015/8/3) 大量のはてブが付いたので 続き を書きました。
sshを使用している人は文字列を手軽に暗号化・復号化できるという話。 このテクニックを使えば色々セキュアになるのでおすすめ。 今回はシェルスクリプト中の平文パスワードをセキュアに代替する。
平文パスワードはやめよう
シェルスクリプト中でパスワードが必要になったとき、 とりあえず平文で書いてしまいがち。
#!/bin/sh PASSWORD="hoge"
これをセキュアにしたい。 面倒くさいのは嫌なので、なるべく手持ちのツールで暗号化、復号化したい。 ssh用の rsa 秘密鍵と、openssl(大抵の環境に入っている)を使って改善しよう。
秘密鍵の準備
パスワードを暗号化するにあたって、秘密鍵を使用する.
sshを常用している場合は ~/.ssh/id_rsa
という秘密鍵が存在するだろう。
もし秘密鍵が無ければ ssh-keygen
で作成しよう。
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/auewe/.ssh/id_rsa): # ENTER を押す Enter passphrase (empty for no passphrase): # ENTER を押す Enter same passphrase again: # ENTER を押す Your identification has been saved in /home/auewe/.ssh/id_rsa Your public key has been saved in /home/auewe/.ssh/id_rsa.pub The key fingerprint is: 0f:2c:88:3d:40:13:0f:b5:a3:d4:0e:b7:e5:86:28:91 auewe@orenomachine The key's randomart image is: +--[ RSA 2048]----+ | o. | | k = . | | a . a | | o X B . m | |. a B S S | | B o . o | | o | | | | | +-----------------+
これで秘密鍵 ~/.ssh/id_rsa
が作成される。
openssl で文字列を暗号化、復号化
秘密鍵 ~/.ssh/id_rsa
を用いて文字列やファイルを暗号化し、
pass.rsa
というファイルに保存しよう。
openssl rsautl -encrypt
を用いる。
- 暗号化
# hoge という文字列を暗号化して pass.rsa に書き込むコマンド $ echo 'hoge' | openssl rsautl -encrypt -inkey ~/.ssh/id_rsa > pass.rsa # plain.txt というテキストファイルを暗号化して pass.rsa に書き込むコマンド $ openssl rsautl -encrypt -inkey ~/.ssh/id_rsa -in plain.txt > pass.rsa
暗号化後のファイル pass.rsa
を復号化するには
openssl rsautl -decrypt
を用いる。
- 復号化
# 暗号化された pass.rsa を復号化して標準出力に表示するコマンド $ openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in pass.rsa
従って、冒頭のインセキュアなシェルスクリプトは次のように書き換えよう。
#!/bin/sh # 暗号化されたパスワードファイル pass.rsa は、あらかじめ用意しておく PASSWORD=$(openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in pass.rsa)
補足
暗号化も復号化も秘密鍵を使用したが、
暗号化に関して言うと、原理的には公開鍵 ~/.ssh/id_rsa.pub
を用いれば
pass.rsa が得られるはずだ。
今回は秘密鍵ファイル中に含まれる公開鍵の情報を用いて暗号化している。