ラベル sysadmin の投稿を表示しています。 すべての投稿を表示
ラベル sysadmin の投稿を表示しています。 すべての投稿を表示

2015年6月28日日曜日

HPサーバーのSSACLI(Smart Storage Administrator CLI)

RHELやCentOSにインストールしてやって、RAIDの構成や物理ドライブの情報をコマンドで調査できる(Windowsでもできると思う)

# hpssacli

=> controller all show

Smart Array P222 in Slot 4                (sn: xxxxxxxxxxxxxxxx)

=> controller slot=4 logicaldrive all show

Smart Array P222 in Slot 4

   array A

      logicaldrive 1 (931.5 GB, RAID 1, OK)

=> controller slot=4 physicaldrive all show

Smart Array P222 in Slot 4

   array A

      physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SAS, 1 TB, OK)
      physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SAS, 1 TB, OK)

=> quit

とても便利。めったに使わないのでコマンドをすぐ忘れそう。

2013年11月5日火曜日

FUSEの例(archivemount で tgz をマウントしてみる)

とあるAndroidスマホの中を見ていたら、ディレクトリの一部が「fuse」という謎のファイルシステムを使っていることに気がついた。初耳だったので調べてみると、LUKSをもっと手軽にしたようなものらしい(FUSEとLUKSを比較している記事がいくつかみつかった)。

ネットで紹介されているFUSEの利用例はたいていリモートホストのファイルをセキュアにSSHFSとしてマウントするものなので、ここでは矮小というか卑近というか要するにあまり役に立たない例としてローカルホストにあるアーカイブ(tgz)を読み書きする例にした。


1. 環境
Fedora release 19 (Schrödinger’s Cat)
ただし、「archivemount」というパッケージを yum でインストールした。
2. rootで、何でもいいからテキストファイルをつくってアーカイブ化(ファイル名:/root/work.tgz)
[root@localhost ~]# cd
[root@localhost ~]# mkdir work; for i in foo bar baz; do echo $i > work/$i.txt; done
[root@localhost ~]# ll work; cat work/*
total 12
-rw-r--r--. 1 root root 4 Nov  5 01:43 bar.txt
-rw-r--r--. 1 root root 4 Nov  5 01:43 baz.txt
-rw-r--r--. 1 root root 4 Nov  5 01:43 foo.txt
bar
baz
foo
[root@localhost ~]# tar cvzf work.tgz work/
work/
work/bar.txt
work/baz.txt
work/foo.txt
3. 共有用として /var/local/ の下に fuse というディレクトリを作り、/etc/fstab にマウントの設定を追加。
[root@localhost ~]# mkdir -p /var/local/fuse
[root@localhost ~]# cp /etc/fstab{,.orig}
[root@localhost ~]# echo '/root/work.tgz /var/local/fuse fuse.archivemount defaults,allow_other' >> /etc/fstab
この fstab のポイントは、ファイルシステムのタイプを「fuse.archivemount」にすることとオプションに「allow_other」を加えることの二点。
4. fstab の設定にしたがって mount してみる('-a'オプション)
[root@localhost ~]# mount -a
5. マウントされた内容を df と ls で確認
[root@localhost ~]# df
Filesystem               1K-blocks    Used  Available Use% Mounted on
/dev/mapper/fedora-root   28244124 9058868   17743876  34% /
devtmpfs                   1015516       0    1015516   0% /dev
tmpfs                      1022324     148    1022176   1% /dev/shm
tmpfs                      1022324     964    1021360   1% /run
tmpfs                      1022324       0    1022324   0% /sys/fs/cgroup
tmpfs                      1022324    2664    1019660   1% /tmp
/dev/sda1                   487652   83857     378195  19% /boot
archivemount            1048576000       0 1048576000   0% /var/local/fuse
[root@localhost ~]# ll /var/local/fuse/work
total 0
-rw-r--r--. 0 root root 4 Nov  5 01:43 bar.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 baz.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 foo.txt
6. 一般ユーザー(ここでは u1 とする)で、マウントしたディレクトリに読み書きしてみる。
[u1@localhost ~]$ id
uid=1001(u1) gid=1001(u1) groups=1001(u1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[u1@localhost ~]$ cd /var/local/fuse/work
[u1@localhost work]$ echo hoge > hoge.txt
[u1@localhost work]$ ll
total 0
-rw-r--r--. 0 root root 4 Nov  5 01:43 bar.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 baz.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 foo.txt
-rw-r--r--. 0 root root 5 Nov  5 01:44 hoge.txt
[u1@localhost work]$ vi bar.txt    # ファイル内の文字列「bar」を「bar2」と書き換えるだけ
[u1@localhost work]$ ll
total 0
-rw-r--r--. 0 root root 5 Nov  5 01:44 bar.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 baz.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 foo.txt
-rw-r--r--. 0 root root 5 Nov  5 01:44 hoge.txt
[u1@localhost work]$ rm baz.txt    # ファイルを削除
[u1@localhost work]$ ll
total 0
-rw-r--r--. 0 root root 5 Nov  5 01:44 bar.txt
-rw-r--r--. 0 root root 4 Nov  5 01:43 foo.txt
-rw-r--r--. 0 root root 5 Nov  5 01:44 hoge.txt
7. アンマウントして、アーカイブの中身が変更されているか確認
[root@localhost ~]# umount /var/local/fuse
umount: /var/local/fuse: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[u1@localhost work]$ cd    # u1 の存在で umount が失敗したので cd する
[root@localhost ~]# umount /var/local/fuse
[root@localhost ~]# mv work{,.orig}    # もともとのアーカイブをリネーム
[root@localhost ~]# tar xf work.tgz    # fuse.archivemount 経由で変更したアーカイブを展開
[root@localhost ~]# diff -uwbr work.orig work    # diff をとってみる
diff -uwbr work.orig/bar.txt work/bar.txt
--- work.orig/bar.txt 2013-11-05 01:43:39.096153269 +0900
+++ work/bar.txt 2013-11-05 01:44:38.000000000 +0900
@@ -1 +1 @@
-bar
+bar2
Only in work.orig: baz.txt
Only in work: hoge.txt
差分は期待どおり。これでOK.

2012年12月2日日曜日

「日経BP ITPro 今日の腕試し!」地味だけど面白い

ブログ停滞した。軽く書く。

大変失礼なこと書きますが、あか抜けない印象の ITPro のページ。「今日の腕試し!

なぜこのページにたどり着いたのかよく覚えてないけど、とにかくプラットフォーム、レイヤーを問わず雑多な問題が提供されていて面白かった。なぜか微笑がこぼれた。週に一回くらい見てもよいんじゃなかろうか。

2012年10月3日水曜日

ファイバチャネルHDDの40ピンコネクタ

拾い読みしてまとめた。

  • FC-HDDの、40ピンのコネクタはSCA-2に分類される。SCA-40と呼ばれることもある
  • 同じSCA-2で、80ピンのものもある。こちらはSCSI-HDDに用いられる
  • SCA(Single Connector Attachment)の目的の一つは、従来複数に分かれていたSCSIケーブルを1本にすること
  • 分かれていた、信号(68ピン)と電源等をまとめた結果 SCSI-HDD は80ピンになった。FC-HDDのほうは40ピンで済んだ
  • ケーブルが1本にまとまった結果、サーバーやSANストレージのディスク交換作業がちょっと楽になった(ちょっとした気遣いが大事ですよねー。USBコネクタの上下非対称問題とか考えると)

2012年9月14日金曜日

CentOS-6 で使われているTCPの輻輳制御アルゴリズム

/procを使って読み書きができた。CentOS-6(kernel 2.6.32-279)では"CUBIC"がデフォルトになっている模様。

# cat /proc/sys/net/ipv4/tcp_congestion_control
cubic

選択肢としては、"reno"もある。

# cat /proc/sys/net/ipv4/tcp_available_congestion_control
cubic reno

2012年9月10日月曜日

CentOS-5 起動スクリプトのスケルトン

'/etc/init.d/' に入れるスクリプトを書こうと思ったとき、そのひな形(スケルトン、テンプレート、等々)を求めてついインターネットを検索してしまう。しかし、無駄にエネルギーを消費する必要はない。システムにあらかじめインストールされているのだった。

そのパスは、'/usr/share/doc/initfiles-x.y.z/sysvinitfiles' のあたり(CentOS の場合)。

2012年9月6日木曜日

Linuxで使用されているNICドライバを調べる方法2つ

いつもの方法
まずdmesgコマンドの出力から'eth0'や'eth1'を探してモジュール名を特定。モジュール名を引数としてmodinfoコマンドを実行し、バージョン等の詳細情報を知る。
今日知った方法
ethtoolコマンドの'-i'オプションを使う(参考URLのコメント欄に書いてあった)。modinfoみたいにたくさんの情報は出力されないが、バージョンとバスは把握できる。

2012年9月3日月曜日

RedHat, CentOS のリリースバージョンを知る方法

すごく簡単なことだけどなかなか覚えられないのでメモっておく。

例)cat /etc/redhat-release 
Red Hat Enterprise Linux Client release 5.2 (Tikanga)

2012年8月30日木曜日

yumdownloader:依存関係を満たすRPMをまとめてダウンロード

yumdownloaderというコマンドがあるんですね(特に'--resolve'オプションが便利)。

LinuxをインストールしたけどNICのドライバがあたらない。yum も使えない、といった状況で役に立つかな? つまり、ドライバのビルドに必要なパッケージを別の計算機でダウンロードして、USBメモリで移す、とか。。。

2012年8月17日金曜日

CentOS-6 の OpenLDAP 環境構築

CentOS-6.3 で LDAPサーバーを作ろうとしたところ、次のようなエラーが出てどうもうまくいかなかった:

  • ldap_bind invalid credentials (49) ldapsearch
  • bdb_db_open no such file or directory

ネットを探してみると、CentOS-6 での OpenLDAP について書いているブログが多数あった。つまりつまずくポイントが色々あるということか:

だが、これらの内容を俯瞰してみるとけっこうバラツキがあって、腑に落ちない感じがした。さらにしつこく探してみると、よく整理された英語のページがみつかった:

"Minimal"とうたっているだけあって必要十分な手順が書いてあり、要所でのテスト(設定途中での動作確認)も理解を助けてくれる。うちの CentOS-6.3 でもうまくいった。

2012年6月7日木曜日

Windows Server 2003 の diskpart ってパーティション縮小(shrink)できない。GParted便利

Windows Server 2003 の diskpart

人生で初めて Windows server 2003(x64)を直接触る仕事を経験。Unix系じゃないサーバー機。ぼくも人生の荒波に揉まれてずいぶん大人になりました。

パーティションを切る必要があったけど、インストールやらネットワーク設定やらWindowsアップデートやらを一通りやった後でいいや、と思っていざやろうとするとできなくて焦った。というのは'diskpart'コマンド自体は入っているんだけど、Win server 2008 と違ってなんだかオプションが少ない。'shrink'も無い。


GParted

最初からやり直すのはしんどいのでいろいろと道具を探した結果、'GParted'というソフトがみつかった。ダウンロードしたISOをCDに焼いてブートして、GUIで自由に(たぶん、自由に)パーティションを設定できるというもの。

最初からやり直しになってもまあいいか、と期待せず使ってみるとこれがとても使いやすかった。そしてパーティション変更後も Windows server 2003 が正常にブートした。感謝。


2012年5月27日日曜日

NetHogs - プロセスごとのデータ転送量をtop風に表示

既存のネットワークアプリの転送量を調べるときに使ったソフト。サーバーでこの NetHogs を起動しておいて、クライアント側でアプリのシナリオとかユースケースを1つ実行。サーバーのほうの画面で何バイト送受信したかを見て記録しておく。「なるほどこのシナリオの場合はx[KB]くらい通信するのか」と、だいたいの数字が分かる。

特徴は、転送速度(KB/sec)だけでなく、転送量の累積値が表示されるところ。たぶん初期状態では KB/sec の表示になっているが、実行中に m キーを押せば表示モードが KB/sec, KB, MB, B とサイクリックに切り替わる。

インストールに関しては、libpcap と ncurses に依存している。今回の環境(CentOS-6.0)では、epelリポジトリから yum でインストールできたので特に問題無し。


表示の例

テキトーに sshd と apache にアクセスした場合のキャプチャを貼り付けておく。

まずは Byte単位の表示。

プロセスのIDごとに、USER, PROGRAM, DEV, SENT, RECEIVED が表示される。シンプル。

それから KB/sec 単位の表示。


2012年3月18日日曜日

ルーティングテーブル(FIB)、ルーティングキャッシュ

LinuxではルーティングテーブルのことをFIB(Forwarding Information Base)と呼ぶ。一度参照されたら routing cache にキャッシュされる。

これらを表示するコマンドは何通りかある。

route コマンド
# route -F
Kernel IP routing table
Destination     Gateway         Genmask          Flags Metric Ref      Use Iface
172.16.78.0     *               255.255.255.0    U     0      0          0 eth0
(略)
# route -C
Kernel IP routing cache
Source          Destination     Gateway         Flags Metric Ref   Use Iface
192.168.105.1   192.168.105.130 192.168.105.130 il    0      0      29 lo
(略)
netstat コマンド
# netstat -r
Kernel IP routing table
(略)
# netstat -rC
Kernel IP routing cache
(略)
ip コマンド
# ip route show
172.168.78.0/24 dev eth0  proto kernel   scope link  src 172.16.78.130
(略)
# ip route show cached
192.168.105.128 from 192.168.105.130 dev eth2
    cache  mtu 1500 advmss 1460 hoplimit 64
(略)

Netfilter Architecture

古いけどわかりやすいドキュメントが netfilter.org の HOWTO の中にあった。

NICとプロセス、ルーティングコードのあいだにフックが5個仕掛けてあって、通過するパケットに関数が作用する。

Linux netfilter Hacking HOWTO: Netfilter Architecture

次のドキュメントも参考になる。

Linux network stack walkthrough

2012年3月4日日曜日

GPG で表示される "2048R" や "usage: SC", "usage: E" の意味

GnuPGで '--edit-key' オプションを使うと鍵の管理作業のためのメニューが出てくる。

$ gpg --edit-key 549B5813
gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There in NO WARRANTY, to the extent permitted by law.

Secret key is available.

pub 2048R/549B5813  created: 2012-01-22  expires: never     usage: SC
                    trust: ultimate      validity: ultimate
sub 2048R/6878DE41  created: 2012-01-22  expires: never     usage: E
sub 2048g/60ACA1A9  created: 2012-01-22  expires: never     usage: E
sub 2048D/29641C08  created: 2012-01-22  expires: never     usage: S
(略)

ここで表示される "2048R" とか "usage: SC" の意味を理解しないでいるとまずそうだから調べてみた、という話。


2048R

これは "The GNU Privacy Handbook" に書いてあった。

The public key is displayed along with an indication of whether or not the private key is available. Information about each component of the public key is then listed. The first column indicates the type of the key. The keyword pub identifies the public master signing key, and the keyword sub identifies a public subordinate key. The second column indicates the key's bit length, type, and ID. The type is D for a DSA key, g for an encryption-only ElGamal key, and G for an ElGamal key that may be used for both encryption and signing. The creation date and expiration date are given in columns three and four. The user IDs are listed following the keys.

要するに数字の部分が鍵のビット長、残りのアルファベット1文字が鍵の種類を表す。R なら RSA、D なら DSA、g なら 暗号化専用の ElGamal、G なら 暗号化と署名両方に使える ElGamal(このハンドブックは1999年の古いものなのでRSAについて言及していないが)。

"2048g"


usage: SC とか

なんとなく "S" は Sign で "E" は Encrypt だろうと予想が付いているものの、調べてみると同じ疑問をもった人がいた。

How are the GPG usage flags defined in the key details listing? - Unix and Linux - Stack Exchange

回答によれば "S" が "for signing", "E" が "for encrypting", "C" が "Creating a certificate"(たとえば Revocation certificate: 失効証明書とか?), "A" が "authentication"とのこと(SSHやTLSにおける認証で使えるらしい)。


2012年3月1日木曜日

dd コマンドでファイルを読み書き

ddコマンドはディスクのバックアップやダンプに使われることが多いので、コピー専用のコマンドだと思っていたことがある。

実際はそうではなくて、もっと軽い用途、たとえば標準入力から読み込んだ内容をファイルに書き込んだり、ファイルを読み込んで標準出力に出力したりすることもできる。


入力した内容をファイルに出力
'of'オプションで出力先を指定しつつ ddを実行すると入力待ちになる。そこで任意の文字とEOF(Ctrl-D)を入力すれば、ファイルができる。
$ dd of=hello.txt
hello, world
0+1 records in
0+1 records out
13 bytes transferred in 2.835518 secs (5 bytes/sec)
$ cat hello.txt
hello, world
$
ファイルの内容を表示
'if'でファイルを指定するだけ。
$ dd if=hello.txt 
hello, world
0+1 records in
0+1 records out
13 bytes transferred in 0.000138 secs (94173 bytes/sec)
$
ディスクなどのブロックデバイスファイルの場合も同様に表示できる。ただしサイズが大きいので 'bs' や 'count' オプションで調節する。
$ sudo dd if=/dev/disk0 bs=5 count=1  # MacOS requires root privilege to read /dev/disk0
?1???1+0 records in
1+0 records out
5 bytes transferred in 0.000334 secs (14969 bytes/sec)
$

2012年2月27日月曜日

iノード番号で find

findコマンドには、inode 番号を指定するオプション '-inum' がある。


find /root/ -inum 261232
/root/.bash_history

このオプションは、今日「SELINUXシステム管理」という本を読んで知った(アクセス拒否の際 audit.log に対象のファイルのinode番号が出力されるので、inode番号からファイルを検索できると便利だよ、との文脈で)。


2012年2月20日月曜日

SEAndroid - security-enhanced version of Android

先月(2012年1月)、"SEAndroid"というのがリリースされたらしい。SELinuxの機能をAndroidでも使えるようにしようという話なので、開発はNSA関係の人が中心に行っている模様。WikiサイトからダウンロードできるPDFに、いろいろと例が載っていた。


このニュースで初めて知ったけれど、Kernel の LSM(Linux Security Module)でAndroidをセキュアOS化する試みはすでにスマートフォンメーカーによって行われているらしい。たとえばSHAPR製のIS01に導入された "Deckard LSM" が一つの例(IS01は、root化に対して確かにセキュアだけど、LSM自体を無効にする方法が発見されてしまったらしい。。。)


今後SEAndroidが普及したら、SELinuxとおなじ効果が享受できるだろうか。ポリシーがきちんと書けていれば侵入攻撃を防御できるので、IDS的な機能を入れなくて済む、セキュリティホールにパッチやアップデートを急いで適用しなくて済む、など(ただしLSM無効化は無しの前提で)。


2012年2月19日日曜日

ethtoolコマンドでNICの調査と設定

システムの性能が思ったより出ないときなどに、原因の切り分けに使えるツール。


NICの状態を調べるコマンド
# ethtool eth0
Settings for eth0:
       Supported ports: [ TP ]
       Supported link modes:   10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
                               1000baseT/Full
       Supports auto-negotiation: Yes
       Advertised link modes:  10baseT/Half 10baseT/Full
                               100baseT/Half 100baseT/Full
                               1000baseT/Full
       Advertised pause frame use: No
       Advertised auto-negotiation: Yes
       Speed: 1000Mb/s
(略)
設定を変更するコマンド
# ethtool -s eth1 speed 100 duplex full autoneg off

ethtoolで調べてみると、LinuxホストのNICが 1Gbps まで対応しているのに、古いスイッチングハプを使っているせいで Speed: 100Mbps で通信している、なんてことがごくまれだけどある。

ちなみにWindowsの場合はコマンドプロンプト(cmd)で調べたり設定したりするのはかえって手間がかかるみたい。素直にNICを右クリックしてプロパティを開いてください、と。


2012年2月13日月曜日

sesearchコマンドの例(SELinux)

"sesearch" は、SELinuxが動いている環境でポリシー設定を調査するときに使うコマンド。CentOS-6.0の場合は "setools-console" というパッケージに入っている。

コマンドの使用例が "man sesearch" しても出てこないので、ちょっと探してみた。


Redhat Enterprise Linux 6 の User Guide から

ポリシーファイルを指定して、"role allow rule"を検索
# sesearch --role_allow -t httpd_sys_content_t /etc/selinux/targeted/policy/policy.24
※"role allow rule"についてはNSAのドキュメント Policy Language and the Example Policy Configuration に書いてある。
※"-t httpd_sys_content_t"の部分がちょっと謎。"--role_allow"と一緒に指定する意味がわからない。現実的には、ソースやターゲットのロールを指定することが多いと思われる('--role_source', '--role_target')。
# sesearch --role_allow --role_source unconfined_r
Found 1 role allow rules:
  allow unconfined_r system_r;
# sesearch --role_allow --role_target sysadm_r
Found 2 role allow rules:
  allow system_r sysadm_r;
  allow staff_r sysadm_r;
"allow"ルールの総数を調べる
# sesearch --allow | wc -l
"dontaudit" ルールの総数を調べる
# sesearch --dontaudit | wc -l

Gentoo Linux の マニュアル から

shadow_t タイプのファイルへの書き込みが許可されているドメインを調べる
# sesearch -t shadow_t -c file -p write -A
file_type 属性への書き込みが許可されているドメインを調べる('-d' で direct search)
# sesearch -t file_type -c file -p write -A -d
"global_ssp"というSELinux boolean に関連するポリシーを調べる
# sesearch -b global_ssp -A -C -d

日本セキュアOSユーザ会のかたの資料から

httpd_t の httpd_sys_content_t に対する定義を確認する
# sesearch -A -C -s httpd_t -t httpd_sys_content_t