yuu_nkjm blog


2011-11-03(Thu) [長年日記] 編集

[KVM][openSUSE][サーバまとめ] KVMのホスト機の設定

ブリッジ(ブリッヂ)接続で,KVMクライアントを接続するKVMホスト機の設定をする.

準備

openSUSEをインストールし,セキュリティの設定(sshdとfail2ban)を済ませておく.

ブリッヂ接続を作成する

ブリッジ接続を作成する.openSUSEの場合,yastでKVMハイパーバイザをインストールすると,自動で作ってくれる.作ってくれない場合は,bridge-utilsを使っても,手書きしても良い.水銀室 ブリッジネットワークを設定します

CPUがKVMに対応しているか

Intel系CPUの場合は"grep --color vmx /proc/cpuinfo",AMD系CPUの場合は,"grep --color svm /proc/cpuinfo"とする.

KVMのインストール

  • yast->インストールで,kvm,qemu,virt-manager,bridge-utilを選択する
  • KVMモジュールがインストールされているかをチェックする.
    lsmod | grep kvm
    

    なにも表示されなかったら,

    modprobe kvm
    modprobe kvm_intel
     
    lsmod | grep kvm
    kvm_intel              53490  0
    kvm                   374471  1 kvm_intel
    
  • yast->ハイパーバイザのインストール->KVMを選ぶ.グラフィカルコンポーネントのインストール-> yesとする.
  • ネットワークブリッジ-> yesとするとネットワークが落ちてしまうことがあるので,遠隔で作業するときは注意する.デフォルトゲートウェイでデバイスを"eth0"といったように指定していると,ブリッジした場合に落ちる可能性が高い.デフォルトゲートウェイのデバイスは"―"にしておくのが良さそう.もしくは,ブリッジしたあと,デフォルトゲートウェイのデバイスをブリッジ(br0)に指定する.ネットワークの設定は以下の様になる.
ネットワーク設定
  │名前                                    │IP アドレス   ││
  │NetXtreme II BCM5709 Gigabit Ethernet│0.0.0.0       │eth0 │
  │ネットワークブリッジ                    │1xx.xx.xx.150 │br0│
ルーティング
  │  130.54.21.129 │デバイス - │
または
  │  130.54.21.129 │デバイス br0 │ 
#(eth0)だと死ぬ

KVMの起動

トラブルシューティング

  • "error: unknown OS type hvm "というエラーが出たが,libvirtdを再起動したら直った.

参考ページ


2011-11-04(Fri) [長年日記] 編集

[KVM][openSUSE][サーバまとめ] KVMのクライアント機の新規作成

GUIを使ってインストール

virt-managerコマンドを使って,KVM仮想マシンマネージャを起動する.新規(new)ボタンを押すとKVM仮想マシンの作成がはじまる."error: unknown OS type hvm "というエラーが出たが,libvirtdを再起動したら直った.

コマンドラインからインストール

virtshとかvirt-installを使うとコマンドラインからKVMクライアントイメージをインストールしたり,管理したりできるようだ.

参考ページ


2011-11-05(Sat) [長年日記] 編集

[LinuxDesktop][LinuxLanguage] ユーザのホームディレクトリ以下の自動生成フォルダの名前を英語から日本語にする


2011-11-20(Sun) [長年日記] 編集

[Apache][openSUSE][サーバまとめ] WebDavの設定

openSUSE 11.4でApacheにWebDavモジュールを組み込んで動かした時の設定.

apacheの設定

yastの/etc/syscnfigエディタで,Network/WWW/Apache2を選択し,APACHE_MODULESを編集する.dav dav_lcok dav_fsを追加する.

ロックファイルの設定を設定ファイルに書く.

/etc/apache2/conf.d/dav.conf
 
<IfModule mod_dav_fs.c>
  DavLockDB /var/lock/dav/DavLock
</IfModule>

ロックファイルを作成する.

mkdir /var/lock/dav
chmod 777 /var/lock/dav/

WebDavとして公開するディレクトリの設定

/etc/apache2/conf.d/dav.conf(もしくはホスト毎の設定ファイル)に以下の設定を書き込む.

Alias /dav /dav/repos/nkjm
<Location /dav>
    Options Indexes
    DAV on
    AuthType Digest
    AuthName "Private"
    AuthUserFile /hogehoge/.htdigest
    Require valid-user
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
    </LimitExcept>
</Location>

2011-11-21(Mon) [長年日記] 編集

[openSUSE] WHEELグループのユーザしか管理者権限を取得できないようにする

rootになれるユーザを限定したいので,wheelを使う.以下,openSUSE11.4 (64bit)の時の設定.

/etc/pam.d/su
/etc/pam.d/su-l
auth     required       pam_wheel.so use_uid group=wheel
 
/etc/group
wheel:x:10:root,hoge,fuga
(rootはいらないかも)
 
/etc/login.defs
設定を変えない.
(openSUSE10.3の時は入れていた様だ.SU_WHEEL_ONLY yesを入れない)

参考ページ


2011-11-22(Tue) [長年日記] 編集

[Apache][SSL][openSUSE] openSUSE11.4で認証局と証明書の作成

CAを生成するスクリプトがディストリビューションによって違うみたいなので,メモ.

CA【Certificate Authority】(認証局)の作成

cd /usr/share/ssl/misc/
./CA.pl -newca
 
CA certificate filename (or enter to create)
(enter)
Making CA certificate ...
Generating a 1024 bit RSA private key
......................++++++
..++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Kyoto
Locality Name (eg, city) []:Kyoto
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Kyoto
Organizational Unit Name (eg, section) []:Kyoto
Common Name (eg, YOUR name) []:*.nkjm.info
Email Address []:root@nkjm.info
.....
Write out database with 1 new entries
Data Base Updated

Common Nameが大事.ドメイン名と揃える必要がある.このとき*をワイルドカードとして用いることが出来る.

サーバ証明書を作成

openssl req -new -nodes -keyout mailkey.pem -out mailreq.pem -days 36500

証明書への署名

openssl ca -out mail_signed_cert.pem -infiles mailreq.pem
 
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
(snip)
Sign the certificate? [y/n]:y
failed to update database
TXT_DB error number 2

ウェブレン社長 360°ブログ ≫ SSL プライベート認証局の構築によると,「openssl ca ,,,でサーバ証明書の発行、クライアント証明書の発行を行うと、failed to update database TXT_DB error number2 でエラーが発生する場合がある。この場合は、このデータベース($dir/index.txt)を一旦削除し、空のフアイルを作成(#touch $dir/index.txt)し、再実行するとうまくいく」とのこと.

rm demo/index.txt
touch demo/index.txt 
openssl ca -out mail_signed_cert.pem -infiles mailreq.pem
 
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
(snip)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

2011-11-23(Wed) [長年日記] 編集

[sudo][rsync][ssh][backup] rsync + sudo + ssh

お題

  • リモートサーバのroot権限がないとアクセス出来ないファイルも含めて,バックアップが取りたい.
  • rootでは,リモートサーバにログインできない.一般ユーザでは鍵を使えばログインできる.

…というような状況なので,rsync + sudo + sshをすることを考える.

sudoを使ってリモートのバックアップ対象サーバにおいてrootでrsyncできる様にする

visodo
# /etc/sudoersの編集と同義.
 
#Defaults    requiretty
#ALL  ALL=(ALL) ALL 
#上記,二つをコメントアウト
# 追加
bakupuser ALL= NOPASSWD:/usr/bin/rsync

セキュリティを考えるとrsyncを許可するより,コピー先やオプションを書いたrsyncのシェルスクリプトを用意して,それの実行を許可した方が良いかな.

rsyncの実行

su 
rsync --rsync-path="sudo rsync" -qac hoge@hoge.nkjm.info:/ /mnt/backup/hoge.nkjm.info/

--rsync-pathはリモートで実行するrsyncを具体的に指定するオプション.これによりsudoしてrsyncをすることができる.

aはアーカイブのオプションで,つけとけば間違いない.qは出力を静かにさせる.詳細に振る舞いを確認したいときはvやvvとする.cはチェックサムの確認をする.オプション.

このケースでは,ssh-agentによる認証の転送をしてリモートサーバにログインをした.rsyncで明示的にssh+鍵認証をするなら,-eオプションを使う.

psしてみると,リモート側でrsyncが動いていることが分かる.


2011-11-24(Thu) [長年日記] 編集

[KVM][LVM][openSUSE] LVMで管理された論理ボリュームをオンラインで拡張する

KVMの上で動かしているopenSUSEで,LVMで管理されているパーティション(論理ボリューム)をアンマウントすることなく拡張する.

仮想HDDの作成

virt-managerから,開く->詳細->ハードウェアの追加を選択する.Storage -> デバイスの種類:Virtio Diskを選択する.

LVMの操作

新しいHDDに物理ボリュームを作る

yastからパーティション設定を選ぶ.ハードディスク->/dev/vdb1 -> プライマリパーティション -> 最大サイズ -> パーティションをフォーマットしない(Linux LVM)と選ぶ.物理ボリューム/dev/vdb1が生成されている.

ボリュームグループへの物理ボリュームの追加

ボリュームグループへの物理ボリュームの追加がないやん…と思ったら,サイズ変更からできた.ボリューム管理-> サイズ変更から/dev/vdb1を選択して,追加する.

論理ボリュームのサイズ変更

/dev/system/root->サイズ変更を選んで,好きなサイズを選ぶ.サイズを増やすだけの場合のみ,アンマウントしなくても大丈夫なようだ.

以下の様な状態を想定する.

File System: /dev/mapper/system-root
mounted on: /
  • /dev/mapper/system-rootを/にマウントしたまま,/の容量を増やすことは出来る.
  • /dev/mapper/system-rootを/にマウントしたまま,/の容量を減らすことはできない.

関連ページ


2011-11-25(Fri) [長年日記] 編集

[ssh][Stone] StoneによるSSH over HTTP(HTTPS)

HTTP Proxyを介してしか,インターネットに出られない.しかし,インターネット上にあるサーバの管理をする必要があるんだよ!ってときに頑張ってトンネルする方法.

ダウンロード

[nkjm@info ~/src]$ wget http://www.gcd.org/sengoku/stone/stone-2.3e.tar.gz
[nkjm@info ~/src]$ tar zxf stone-2.3e.tar.gz
[nkjm@info ~/src]$ cd stone-2.3d-2.3.2.7/

コンパイル

[nkjm@info ~/src/stone-2.3d-2.3.2.7]$ vi Makefile
# 以下のように編集.
linux:
        $(MAKE) FLAGS="-O -Wall -DCPP='\"/usr/bin/cpp -traditional\"' -DPTHREAD -DUNIX_DAEMON -DPRCTL -DSO_ORIGINAL_DST=80 -DUSE_EPOLL -D_GNU_SOURCE $(FLAGS)" LIBS="-lpthread $(LIBS)" stone
 
[nkjm@info ~/src/stone-2.3d-2.3.2.7]$ make linux-ssl

stoneをLinuxでコンパイルする ≪ 突然消失するかもしれないブログによると,Makefileで-D_GNU_SOURCEというオプションを指定すれば,64bit OS上でコンパイルできるようになるらしい.makefileからlinuxの項を見つけ出し,オプションを追加してからmake.

また,コンパイル時に,openssl/crypto.hがないよというエラーが出た場合は,yastでlibopenssl-develを入れる.

SSLの設定

[nkjm@info ~/src/stone-2.3d-2.3.2.7]$ openssl req -new -outform pem -out stone.cert -newkey rsa:1024 -keyout stone.key -nodes -rand ./rand.pat -x509 -batch -days 35600
cat stone.cert stone.key > stone.pem
cp -a stone.pem /etc/ssl/certs/

サーバ側の実行

stone -p localhost:22 443/ssl

クライアント側の実行

クライアントがWindowsであれば,Windows用のバイナリを拾って来て使う.

stone -p localhost:10443/ssl 10022 -- proxy:8080/http 10443 "CONNECT server:443 HTTP/1.0"
とか
stone -p localhost:10443/ssl 10022 -- server:443 10443

2011-11-26(Sat) [長年日記] 編集

[grep][command][Linux][サーバまとめ] サーバ管理のワンライナー

サーバを利用している人が知りたい.

grep "session opened for user" /var/og/secure*|sed 's/\(^.*user \)\(.*\)\( by.*\)/\2/g'|sort|uniq -c

HDDの使用状況を直下のディレクトリ毎に知りたい

du -s ./*/|sort -n

2011-11-27(Sun) [長年日記] 編集

[TFTP][Cisco][openSUSE] TFTPサーバの設定

Ciscoルータに保存されたログをTFTPで取得しようとして,TFTPサーバをセットアップした.しかし,使っているルータにその機能がなかった….

  • tftpとyast2-tftp-serverをyastで入れる.
  • ネットワークサービス->TFTPサーバを選び,有効化にチェックする.yastのネットワークサービス(xinetd)から確認すると,xinetdが有効になり,tftpがオンになる様だ.

2011-11-28(Mon) [長年日記] 編集

[ssh][PuTTY] PuTTYでリモートのトンネリング

PuTTY側の設定で,SSH→トンネルで「ローカルポートは他のホストからの接続を受け入れる」「リモートポートも同様」にチェックを入れる.

接続したサーバで,"netstat -an"を実行する."源ポート"で指定したポート(例えば10000)が開いている.

  • 他ホストに公開していない場合 : TCP 127.0.0.1:10000 0.0.0.0:0 LISTENING
  • 他ホストに公開している場合 : TCP 0.0.0.0:10000 0.0.0.0:0 LISTENING

と表示される.

関連ページ


2011-11-29(Tue) [長年日記] 編集

[ssh][PuTTY] sshの多段の認証転送

状況

秘密鍵の置き場所に迷ったときは認証の転送が便利というお話し.

クライアントPC => ゲートウェイサーバ(鍵認証のみ) => アクセス対象サーバ(鍵認証のみ)

といった経路でしか管理したいサーバにアクセスできない(下図)とき,ゲートウェイサーバに秘密鍵を置くしかないの?となることがある.そんなときは,認証の転送が便利.下図のプライベートサーバ,公開サーバ2において,また認証の転送を行いたいときは「もう一段階先への転送」で書いた内容を実行する必要がある.

画像の説明

認証鍵の転送

SSHクライアントにPuTTYを使っている場合,SSH->SSH認証の設定->認証パラメータの「エージェントフォワーディングを認める」にチェックを入れる.以下のページに詳細がよくまとまっている.

Pageantssh-agent と同じく、認証鍵の転送機能を持っています。これを利用すれば、たとえログイン先のサーバーに認証鍵がなくても、ローカルにある認証鍵を使用してログイン先からさらに別のサーバーに SSH 接続を確立できます。サーバーに秘密鍵を保存する必要が無いため、秘密鍵の流出の危険を大幅に削減できます。

Pageant による認証鍵の転送は以下の手順で利用できます。

  1. Pageant を起動し、必要な認証鍵を登録する。
  2. PuTTY を起動する。
  3. 普通に SSH ログインするのですが、その際に [接続]-[SSH]-[認証] の「エージェントフォワーディングを認める」にチェックを入れておきます。もしくは、起動時に "-A" オプションを指定する方法もあります。
  4. ログイン先で、さらに "ssh <ユーザー名>@<ホスト名>" などとしてさらに別のホストにログインします。
  5. Pageant に必要な認証鍵が登録されていれば、正常にログインできるはずです。

なお、Pageant で認証鍵の転送機能を利用するためには、ログイン先の SSH サーバーが OpenSSH でなければなりません。本家 SSHOpenSSH とは別のプロトコルを使用しており、そちらは Pageant ではサポートされていません。

画像の説明

もう一段階先への転送

SSHサーバを渡り歩くには,~/.ssh/configに"ForwardAgent yes"を追加する必要がある.

cat ~/.ssh/config
# "ForwardAgent yes"がなかったら,以下を実行.
echo "ForwardAgent yes">>~/.ssh/config

ssh の agent forwarding | 自作自演がすごく分かりやすかった.


2011-11-30(Wed) [長年日記] 編集

[openSUSE][Apache][WebDav][SVN] svn over httpの設定

svn co svn+ssh://hoge.nkjm.info/svn/nkjm workspace

ではなく,

svn co http://hoge.nkjm.info/svn/nkjm workspace

をやりたい.

サーバの設定

digest認証

yastの/etc/sysconfig エディタで,Network/WWW/Apache2を選択しAPACHE_MODULESを編集する.auth_digestを追加する.

SVNの準備

yastでsubversion,subversion-serverを入れる.

WebDavの準備
SVN on DAVの設定

yastの/etc/sysconfigエディタで,Network/WWW/Apache2でAPACHE_MODULESを編集する.dav_svn authz_svnを追加する.

/etc/apache2/conf.d/subversion.conf(もしくはホスト毎の設定ファイル)に以下の設定を書き込む.

閲覧するだけでもパスワードが必要
<Location /svn>
    DAV svn
    SVNPath /svn/repos/nkjm
    AuthType Digest
    AuthName "Private"
    AuthUserFile /hogehoge/.htdigest
    Require valid-user
    Options Indexes
    Order allow,deny
    Allow from all
</Location>
閲覧するだけならパスワードなし,書き込み時には必要(うまくいかなかった)

以下の設定でうまくいくと思ったんだけど,意図通りは動作しなかった.

<Location /svn>
    DAV svn
    SVNPath /svn/repos/nkjm
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        AuthType Digest
        AuthName "Private"
        AuthUserFile /hogehoge/.htdigest
        Require valid-user
    </LimitExcept>
    Options Indexes
    Order allow,deny
    Allow from all
</Location>

SVNレポジトリの作成

svn create /svn/repos/nkjm
chmod -R wwwrun:www  /svn/repos/nkjm

WebDAVのテスト

SVNクライアントによるアクセス

http経由でチェックアウト出来るか,コミットできるかを確認する.

svn co http://hoge.nkjm.info/svn/nkjm workspace
cd workspace
svn add README
svn add ADD_FILE_TEST
svn commit -m "Add files."
ブラウザによるアクセス

"http://hoge.nkjm.info/svn/nkjm"にブラウザからアクセスする.

画像の説明
cadaver

cadaverというdavクライアントがあるらしい.yastでcadaverを入れる.

cadaver http://hoge.nkjm.info/svn/nkjm

備考・注意事項

  • ユーザ毎に,閲覧権限,書き込み権限を与える様な設定はできていない.やりたい場合は,以下の記事を参照.

    リポジトリの中も細かく制御したいorユーザごとの制御もしたい場合

    <Location "/svn/repos">
      DAV svn
      SVNParentPath /absolute/path/to/repository/parent
      AuthzSVNAccessFile /my/svn/authz/file
     
      AuthType Basic
      AuthName "Subversion repository"
      AuthUserFile /my/svn/user/passwd/file
      Require valid-user
    </Location>
    • /my/svn/authz/file
      # グループ定義
      [groups]
      grp1 = user1, user2
      grp2 = user1, user3
       
      # 全ユーザに全リポジトリ以下の読み込み権限を与え、
      # user0に全リポジトリ以下の読み書き権限を与える。
      [/]
      * = r
      user0 = rw
       
      # grp1に属するユーザにproject1リポジトリ以下の読み書き権限を与える
      [project1:/]
      @grp1 = rw
       
      # grp2に属するユーザにproject2リポジトリのtrunk以下の読み書き権限を与える
      [project2:/trunk]
      @grp2 = rw
  • レポジトリの持ち主がwwwrun:wwwになっているので,ssh+svnでコミットしようとするときに注意する必要がある.
  • HTTPプロキシ経由でしか外部に出られないようなケースもあるので,HTTPでSVNが扱えると便利

  • DavとSVNを使おうとするディレクトリに対して,"Options Indexes"が必要なようだ.DAV svnがあれば,よろしくやってくれるのかと思っていたけれど.

参考ページ


トップ «前月 最新 翌月» 追記 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|