Linux」カテゴリーアーカイブ

SSHの鍵をECDSAにした

長らく(10年以上)、SSHの鍵にRSAを使っていて、ずっと同じ鍵だし、最近SSHのハック話も多いので、そろそろ変えようかと思い立った。そもそも1024bitの鍵だったんので、この先10年は危ないのでそろそろ替えどきかと。。。

今どきは楕円暗号鍵を使うのが強度が強そうなのでそちらで新たに鍵構築。SSHは5.7からECDSAをサポートしているみたいです。鍵長は256,384,521bitから選べるようですが、ちょっと調べたところ256でもRSA2048bitより強いみたい。どうせなら一番強い521bitにしようかと思ったけど、楕円暗号は鍵長の3乗にで計算量が増えるらしいのと(RSAは鍵長の2乗)、521bitはFedora20がサポートしていないとか、他にもサポートしていないものもあるかもしれないので、なんとなく間の384bitにしてみました。

$ ssh-keygen -t ecdsa -b 384
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/n10/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/n10/.ssh/id_ecdsa.
Your public key has been saved in /home/n10/.ssh/id_ecdsa.pub.
The key fingerprint is:
40:11:bc:7e:09:5e:3e:5e:1a:7c:c3:f6:9e:11:90:5a n10@hoge
The key's randomart image is:
+--[ECDSA  384]---+
|     .+o         |
|     ..    .     |
|      ..  E      |
|      o..o .     |
|     o =So  .    |
|      o B *  .   |
|       o B o.    |
|        o   .o   |
|           .o    |
+-----------------+

というわけで、無事鍵が出来ました。

追記(2014-07-07)

OSX (Mavericks)ではデフォルトのSSHがECDSAに未対応のようです。バージョンは6.1なので本来は使えるはずなんですけどね。どういった理由かはわかりませんが、OSのアップデートを待つ以外だと、かなり複雑な手順が必要そうなのでおすすめではないですね。

デバイスにラベルを付ける(e2label)

SCSIデバイスやUSBメモリにラベルを付けるコマンドe2labelのメモ。

e2label /dev/sda1 “hogehoge”
e2label /dev/sda1 “”
とか使うみたい。
OBSでは,CFに「DEBIAN」とラベルをつけると,起動時にCFを自動的にunionfsでマウントしてくれる。
USBデバイスに「DEB_CONFIG」とつけるとバックアップデバイスと認識して,起動時にアーカイブの展開とかしてくれる。詳しくはOBSのページ(http://openblocks.plathome.co.jp/support/obs600d/applied.html)で。

OBS 600D のOSアップデート

 OBS 600D のOSが debianのlenny(5.0)だったのが,2012年の2月でサポート終了なので, squeeze(6.0)にアップデートしなければならなかったので,その時のメモを残す。

大半はこのページ(http://openblocks.plathome.co.jp/support/obs600d/verup_to_6.html)のとおりなのだが,CF運用を行なっていたので,微妙に注意が必要。
「ネットワークの設定」と「保存したパッケージ一覧から、パッケージのインストール内容を復元」の間に,一度再起動を入れて,CFをuniohnfsとしてマウントしておく必要があった。マニュアル通りにやると,これまでにインストールしたパッケージが多数あるので,CFマウント前にアップデートを行うと,本体RAMの容量不足でエラーになる。
あとはマニュアル通りにUSBメモリに保存したuserland.tgzから,ちまちまと必要ファイルを戻すことになる。最初何も考えずに,このuserland.tgzをCFに全部展開したら見事動かなかった。めんどうだけど,必要なものだけ移すのがよさそうです。

digがない

OBS600にはBINDをインストールしていない。

OSはdebian(lenny)なのだが、たいてい主要なパッケージをインストールするディストリビューションではdigがどこにはいっているとか、考えてなかった。
OBSには最小限のものしか入れないようにしているので、digすら入っていなかった。
結果的に、digはdnsutilsというパッケージに入っていました。
これをインストールするとnslookupとnsupdateも一緒にインストールされました。
めでたしめでたし。

Xenの仮想マシンの物理サーバ間移動

VMwareにはOSを稼働させたままに物理サーバ間を移動できるVMotionという機能がある。Xenでもまもなくリリースするバージョンで同じ事ができるようになるのだが,すぐ名前を忘れてしまうので,メモをする。

Live Migration

前提はSANなどの共有ディスクによるOSイメージの共有と,サーバ間の速いネットワーク。

とあるところでVMotinoのデモを見たが,サーバの移動にかかる時間は1分強だった。もちろんサーバは無停止。

メモリの搭載量を確認するのを忘れたが,1年ほど前の話なので,1GByte程度だろうか。イーサネットが1Gbpsだったのでオーバヘッドとか処理の時間と考えると妥当なのか?

メモリが増えると当然時間もかかるようになる。そろそろ10Gbpsがサーバファームで必要になりそうな時期が来たようだ。

OpenBlocks266にSSDLinuxをインストールする。

本来オンメモリーで動作するが,Compact Flash や ハードディスクにもインストールすることができる。今回は,ハードディスクへのインストール。

今まで動いていたハードディスクを新しい物へ取り替えする

firmwareの更新

ついでに最新にアップデートしておく。

http://www.plathome.co.jp/support/labo/obs266/index.html#1

から最新のファームをダウンロード

ftp://ftp.plathome.co.jp/pub/OpenBlockS266/RELEASE-20050119/installation/zImage.initrd.treeboot-product

2005-01-19のバージョンをダウンロード

INITボタンを押しながら電源を入れる

ROMで立ち上げて,rootでログイン

ifconfig eth0 192.168.0.64/24

/etc/ftpuser を編集

リモートのftpでzImageを転送

/usr/sbin/flashcfg -f zImage.initrd.treeboot-product

しばらく待つ

doneとでたらおわり

新しいハードディスクへの換装

flashcfg -c initrd

起動デバイスの変更

rootでログインしてパーティションの作成

fdisk /dev/hda

/ で 2048M~

swap で 256M~

/home で残り

Command (m for help): p
Disk /dev/hda: 20.0 GB, 20003880960 bytes
255 heads, 63 sectors/track, 2432 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1         250     2008093+  83  Linux
/dev/hda2             251         282      257040   82  Linux swap / Solaris
/dev/hda3             283        2432    17269875   83  Linux

とりあえず,/と/home用

mke2fs /dev/hda1
tune2fs -j /dev/hda1

ROMにはmke2fsしかないので,フォーマット後にext3に変換(ジャーナルを作る)

# mke2fs /dev/hda3
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2162688 inodes, 4317468 blocks
215873 blocks (5.00%) reserved for the super user
First data block=0
132 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
# tune2fs -j /dev/hda3
tune2fs 1.35 (28-Feb-2004)
Creating journal inode: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

以上でできあがり。

# mkswap /dev/hda2
Setting up swapspace version 1, size = 263204 kB
no label, UUID=acba8122-f69a-491e-8b29-6a167636307d
# swapon -a

swapも上記のように作っておく

ssdlinuxのインストール

ダウンロード

http://www.plathome.co.jp/support/labo/ssdlinux/

からssdlinuxをダウンロード

0.2系と0.3系がある。

0.2系はglibcが2.3.1なのでsamba3.0を入れる際にiconvのバージョンが低くて不都合が出る。glibcが2.3.2以降なら問題ない。0.3系のssdlinuxはglibcが2.3.3

0.2はstableで最終リリースは0.2-STABLE-20050723ということで2005-07-23

0.3は開発用で,0.3-20050826が最新。毎週末リリースされる

今回はsamba3.0も使ってみたいので0.2系を選択する

ftp://ftp.plathome.co.jp/pub/ssdlinux/0.3-LATEST/powerpc-obs266/binary/

に入りsrc.tgz以外を入手

MD5のファイルがあるので,ダウンロード後に念のためチェック

ハードディスクのマウント
mount -t ext3 /dev/hda1 /mnt
ファイルの展開

ftpでバイナリを転送

/mnt内で展開

tar zxvf base.tgz
tar zxvf etc.tgz
tar zxvf comp.tgz
tar zxvf man.tgz

残りの contrib.tgz と kern.tgz はとりあえず保留

デバイスファイルの作成
cd /mnt/dev
./MAKEDEV generic
各種設定

/etc/defaults/rc.confで

sshdとnamedとntpdをYESにしておく

gloria modprobe: modprobe: Can't open dependencies file
/lib/modules/2.4.20/modules.dep (No such file or directory)

というエラーが出る。

/lib/modules/に 2.4.20が無いので,2.4.20を作っておく

SSD/Linux

家でサーバを動かしていますが,PlathomeのOpenBlocks266という手のひらサーバ。通称OBS266です。こいつのOSがLinuxなんですが,独自ディストリビューションのSSDLinuxというものです。このディストロがかなり変態的で,アップデートにいつも苦労します。RedHatのようなパッケージ管理システムなど存在せず,昔懐かしなUNIXといった感じです。さらにコンフィグやディレクトリ構造がBSDライクだったりと苦労させられます。でも面白い。BSDなんて触ったのは大学の頃以来なので余り覚えていません。

rc.local

SuSE Linux 10.0 を使っていて,/etc/rc.local にコマンドを追加しようとして驚いた。

/etc/rc.local がありません。どうやら,/etc/init.d/{before,after}.local がそれに相当する。

SE Linux にはまる

私が最近使っているLinuxのディストリビューションにCentOSやOpenSuSEがありますが,これらのLinuxはセキュリティの強化されているSE Linuxが採用されています。いままでのUNIX系OSで使われているファイルのパーミッション以外に,プロセスごとにアクセスできるファイルが厳密に定義されているようです。

で,今日,はまったのが,ApacheのDocumentRootの設定。最近のディストリビューションは/var/www/htmlなどにDocumentRootが設定してあることが多く,/varは別パーティションにしていてあまり大きな容量を割り当ててありません。で,よくやるのがシンボリックリンクなんですが,SE Linux で厳密にファイルアクセスが設定してあるので,シンボリックリンクしても403エラーでみれません。

SE Linuxを正確に理解すればいいのでしょうけど,かなり難しいので今のところできそうにありません。SE Linuxの機能を殺すのが一番いいようです(^^;(いいのか?)