Linux関連のちょっとした覚え書き

戻る
最終更新日 2002/04/14

*注意
2002/01/10

  XFree86 4.1でホイール付マウスを使う
  
  XF86config
  
  Section "InputDevice"
  
      Identifier  "Mouse1"
      Driver      "mouse"
      Option "Protocol"    "MouseManPlusPS/2" <-- Logitech MouseMan+
      Option "Device"      "/dev/mouse"
      Option "Buttons"    "5"                 <-- ボタンの数
      Option "ZAxisMapping" "4 5"             <-- ホイールの設定
   EndSection


2001/09/01

   日本の公開NTPサーバー
   
     ntp1.jst.mfeed.ad.jp
     ntp2.jst.mfeed.ad.jp
     ntp3.jst.mfeed.ad.jp


   FDイメージファイルをFDに書く
  
    # dd if=hoge.img of=/dev/fd0 bs=1440k

   QoS

   http://www.linux.or.jp/JF/JFdocs/traffic-control.txt


   QoS (Quality of Service) はネットワークの帯域をより効果的に利用するた
   めの技術で、Linux kernel では開発版カーネルの 2.1 で実装され、現在の安
   定版カーネル 2.2.x で利用できます。

   Linux kernel の QoS では帯域制御と優先制御の両方が可能です。


    1.  帯域制御

      帯域制御では基本的に次のルールでパケットの送出を行っています。

      o  単位時間あたりの転送量が設定値を下回っている間はパケットの送出を行
         う。

      o  単位時間あたりの転送量が設定値を超えた場合はパケットの送出を停止す
         る。

      たとえば 128Kbps の回線において ftp の帯域を 64Kbps と設定した場合、そ
      の他のパケットについては少なくとも 64Kbps の帯域が残っているため、外部
      ネットワークの pop3 サーバからメールを受信するような場合でもレスポンス
      が大きく低下することはありません。

    2.  優先制御

     優先制御では同時に複数のパケットの送信が発生した場合に優先度の高いパ
     ケットから処理を行います。優先度の高いパケットが存在する間は基本的に優
     先度の低いパケットの送出は行われません。

     たとえば telnet や ssh のようなパケットを ftp や http のパケットよりも
     優先するように設定すれば、遠隔地のホストに接続する場合でも十分なレスポ
     ンスを確保することも不可能ではありません。しかし優先度の設定を逆にする
     と、ftp や http で大量のデータを受信中に telnet や ssh の接続を行って
     も全然接続できないという困った状況になります。

     そのため、優先制御の設定を行う際は十分に注意する必要があります。

    カーネルのセキュリティ関係
    バージョン 2.2 のカーネルのコンパイルオプション


  o  IP: forwarding/gatewaying (CONFIG_IP_FORWARD)

     IP forwarding を有効にすると, Linux マシンは本質的にルータになりま
     す.  このマシンがネットワークに繋がっていると, あるネットワークから
     別のネットワークにデータを転送しているかもしれず, これを起さないた
     めに設置されている防火壁をたぶん壊しています.  通常のダイアルアップ
     ユーザはこれを無効にしたいと思うでしょうし, 他のユーザはこれを行う
     ことのセキュリティ的な意味を良く考えるべきです.  防火壁のマシンはこ
     れを有効にし, 防火壁のソフトウェアと組み合わせて使おうと考えるで
     しょう.

     IP forwarding は以下のコマンドで動的に有効にすることができます:

               root#  echo 1 > /proc/sys/net/ipv4/ip_forward

  また次のコマンドで無効にすることができます:

               root#  echo 0 > /proc/sys/net/ipv4/ip_forward


  o  IP: syn cookies (CONFIG_SYN_COOKIES)

     「SYN 攻撃」はサービス妨害(DoS)攻撃のひとつです.  マシンのリソース
     を全て喰い潰してしまい, リブートするはめに追い込みます.  このオプ
     ションを有効にしておかない理由は普通は考えられません.  2.2.x 系のカ
     ーネルでは, この設定オプションは単に syn cookie を許可するだけで,
     有効にはしません.  これを有効にするには以下のコマンドを実行する必要
     があります:

                  root# echo 1 > /proc/sys/net/ipv4/tcp_syncookies



  IP: Firewall packet netlink device (CONFIG_IP_FIREWALL_NETLINK)

     これは実に便利なオプションで, ユーザ空間プログラムのパケットの先頭
     の 128 バイトを解析し, 正当さに基づいてそのパケットを許すか拒否する
     かを決めるようにできます.

2002/04/13 更新
2000/11/01

  ネットワークセキュリティー
  
  opensshの導入
  
    rpmパッケージでの導入が簡単である。(できる限り最新版を使用する)
    
    ソースからビルドする場合、configureのオプションに '--with-tcp-wrappers'
    を付ける時は注意が必要である。 ('--with-tcp-wrappers'は TCPWrapper のサ
    ポートを可能にするオプションである)
      この場合、sshd は /etc/hosts.allow, /etc/hosts.deny を参照し接続元ホ
    ストの許可、不許可の判断を行う。
      その為、/etc/hosts.allow に接続を許可するホストをがなければ、接続は拒
    否される。
      
          $ ssh_exchange_identification: Connection closed by remote host
      
       /etc/hosts.allow
         
          sshd: 許可するホスト
       
          exp.)  sshd: 192.168.0.    // 192.168.0.x のIPアドレスからは許可する。
       

    RSA認証用鍵の作成 
    
      ユーザー認証用のKEYを作成する。
      
         % ssh-keygen
         Generating RSA keys:  ......ooooooO......ooooooO
         Key generation complete.
         Enter file in which to save the key (/home/test/.ssh/identity):  <-- keyを置く場所(そのままでよ
         Created directory '/home/test/.ssh'.                                 ければenter keyを押す)
         Enter passphrase (empty for no passphrase):  <-- パスフレーズを入力 
         Enter same passphrase again:                 <-- もう一度パスフレーズを入力
         Your identification has been saved in /home/test/.ssh/identity.
         Your public key has been saved in /home/test/.ssh/identity.pub.
         The key fingerprint is:
         1024 56:66:15:8e:94:2c:d0:78:8c:80:29:37:ec:9f:4c:ae test@test.hoge.com
         %

         これで、$HOME/.ssh に以下のファイルが作成される。
         パスフレーズは作成された"個人の秘密鍵"に対するパスワードの様なものです。
      
           identity     個人の秘密鍵。IDEAで暗号化されている。
           identity.pub 個人の公開鍵 
      
           これらのファイルはユーザーのみがアクセスできるようにパーミッションを変更しておく。
           
             % chmod 600 identity
             % chmod 600 identity.pub
           

      認証に関して

      ユーザベースのRSA認証
             
        認証についてはクライアント側が特定されている場合はユーザベースのRSA認証がよろしいかと思う。
        この場合、クライアント側でもRSA認証用鍵を作成できなければ利用できない。
        
        やりかた
        
          クライアント側で RSA認証用鍵 を作成する。
          
           % ssh-keygen
             ....
          
          生成された identity.pub をホストの$HOME/.ssh/authorized_keys に登録する。
          (ftpするなり、FDで持っていくなりとにかく登録する)
          
          authorized_keys はユーザーのみがアクセスできる様にしておく。
          これをしないとホストベースのRSA認証となってしまう。
          
           % chmod 600 authorized_keys         


        ここまでやったらおもむろにホストへ slogin する。
        たとえばクライアント"boko"のユーザー"ika"さんが、ホスト"hoge"のユーザー"tako"に
        ログインするには
        
           % slogin -l tako hoge
           Enter passphrase for RSA key 'ika@boko':  <-- クライアント"boko"のユーザー"ika"さんの
                                                         パスフレーズ(パスワードではありません) 

        となる。
        このようにログイン時の入力はクライアント側のパスフレーズとなるので、複数ホストを
        扱う場合、それぞれのホストのパスワードが必要ないので楽である。
        

        パスフレーズ入力無しの接続

          クライアント側で認証用のKEYを作成する場合にパスフレーズを未入力にすると
          sshでパスフレーズ入力無しでログイン出来ます。
          ただし、この方法だと 秘密鍵に対するセキュリティーが低下すので注意が必要です。
          
          以下の rsync/scp を自動実行する場合にはパスフレーズ無しでの接続が必要となります。

 
      ホストベースのRSA認証
      
        不特定のクライアントからの場合はホストベースのRSA認証がいいかも。
        クライアント側のRSA認証用公開鍵をホストに登録できない場合はこれでやる。
        通常は shh-agent を利用してセキュリティーを確保する。
        たとえばクライアント"boko"のユーザー"ika"さんが、ホスト"hoge"のユーザー"tako"に
        ログインするには
        
           % slogin -l tako hoge
           tako@hoge's password:  <-- ホスト"hoge"のユーザー"tako"のパスワード


  rsyncの利用

    リモートホストとローカルホストでファイルの同期をとる場合、rsync で ssh を利用
    すると安全にファイルの同期が行えます。
    単なるファイルのコピーを行う場合でも rsync を利用すると更新されたファイルのみ
    をコピーするのでファイルマスク付きでファイルをコピーする時に便利です。
    認証の方法によりそれぞれパスフレーズ/パスワードが必要となります。

      リモートからのコピー
      % rsync -auvvzb -e ssh リモートホスト:ソースファイル 受け取りファイル

      ローカルからのコピー
      % rsync -auvvzb -e ssh ソースファイル リモートホスト:受け取りファイル


      exp.)  % rsync -auvvzb -e ssh www.hoge.gogehoge.com:~/public_html/* .

              www.hoge.gogehoge.com でローカルホストと同一ユーザーの public_html配下
              のファイルをローカルのカレントディレクトリーにコピーする。


     ローカルからのコピー
     % rsync -auvvzb -e ssh *.html www.hoge.gogehoge.com:~/public_html

             カレントの*.htmlファイルを www.hoge.gogehoge.com のpublic_htmlにコピー
             する。

     ローカルとリモートのユーザーIDが違う場合
     % rsync -auvvzb -e ssh -l taro *.html www.hoge.gogehoge.com:~/public_html

             カレントの*.htmlファイルを www.hoge.gogehoge.com のユーザー "taro" の
             public_htmlにコピーする。


  scpの利用

    リモートホストとローカルホストで単純にファイルのコピーをする場合は scp を利用
    すると安全にファイルのコピーが行えます。
    リモート側で ssh のポートを標準以外にしている場合のファイルコピーはこの方法で
    行う。
    (ローカル側の sshの設定を変更すれば標準ポート以外での rsync も可能だがポートが
     固定される為、複数のリモートホストが異なるポートを使用している場合は現実的でな
     い。
     もしかしたらやり方があるかもしれないけど、現状は情報不足の為、分からない)
    認証の方法によりそれぞれパスフレーズ/パスワードが必要となります。

   リモートからのコピー
   % scp -P リモートポート リモートホスト:ソースファイル 受け取りファイル

   ローカルからのコピー
   % scp -P リモートポート ソースファイル リモートホスト:受け取りファイル

   ディレクトリーをコピーするには
   % scp -r -P リモートポート リモートホスト:ソースDIR 受け取りDIR


  TurboLinux7 の ssh2

   TurboLinux7 で リモート/ローカルで ssh2を利用する場合は以下の作業を
   行う。
   (これは基本的にリモート/ローカルとも TurboLinux7 の場合)

   ssh1とssh2でのファイル名はそれぞれ次の様になる

   ssh1
     authorized_keys
     identity
     identity.pub
     known_hosts

   ssh2
     authorized_keys2
     id_dsa
     id_dsa.pub
     known_hosts2


   ユーザベースのRSA認証

     クライアント側で ssh2 用の RSA認証用鍵 を作成する。
          
     % ssh-keygen -d   ## "-d" をつける
             ....

       このコマンドにより 

         id_dsa      秘密鍵
         id_dsa.pub  公開用鍵

       の二つが作成される。
       作成された二つのファイルは 600 でパーミッションを設定しておく

     生成された id_dsa.pub をホストの$HOME/.ssh/authorized_keys2 に登録する。
     (ssh2 の場合は "authorized_keys2"になるので注意)
     (ftpするなり、FDで持っていくなりとにかく登録する)

       authorized_keys2 はユーザーのみがアクセスできる様にしておく。
       これをしないとホストベースのRSA認証となってしまう。
       
        % chmod 600 authorized_keys2


     ここまでやったらおもむろにリモートホストへ slogin する。
     たとえばクライアント"boko"のユーザー"ika"さんが、ホスト"hoge"のユーザー"tako"に
     ログインするには
     
        % slogin -l tako hoge
        Enter passphrase for key '/home/ika/.ssh/id_dsa': <-- ローカル"boko"のユーザー"ika"さんの
                                                              パスフレーズ(パスワードではありません) 

     となる。

LinuxでCD-ROMのイメージファイルを作成する

書き込み用に準備したディレクトリ階層から、 CD-Rに直接書き込めるイメージファイルを作成します。 

ISO9660形式の書き込みイメージの作成には mkisofsコマンドを使います。 mkisofsの基本的な使い方
は以下のとおりです。

     mkisofs [-R] [-T] [-v] -o image-file source-directory 
     
     exp.)  mkisofs -R -T -v -o image.iso /hoge/poge/soge
     
        注)ディレクトリー "soge" は含まれません。

source-directoryに含まれているディレクトリ階層をもとに ISO9660形式のイメージファイルimage-file
が作成されます。 
image-fileは、作成するCD-Rとほぼ同じサイズを持つ 巨大なファイルになります。 
mkisofsを実行する前に、 image-file を書き込むパーティションに十分な空き容量があることを 確認し
てください。

    -R  Rock Ridge Extension を指定するオプションです。

    -T  CD-R内の各ディレクトリに "TRANS.TBL" というファイルが作成されます。 
        TRANS.TBLには短いファイル名と長いファイル名の対応が書き込まれています。
        環境によっては、このファイルを利用して長い名前を取り扱うものもあります。

    -v  作成過程を逐一報告させることができます。 



イメージファイルの検査

イメージファイルを作成したら、 ファイルの内容が正しいかどうかをチェックします。
もっとも、HDD上にファイルを作成する作業は CD-ROMからの読み込みやCD-Rへの書き出しほど不安定なもの
ではないので、 この作業は必ずしも必要ではありません。 
面倒な場合は、この作業を飛ばして 次の データトラックの書き込みに 進んでしまっても構わないでしょう。

まず、イメージファイル内のファイルシステムをマウントします (イメージファイルをマウントする方法に
ついては、 イメージファイルのマウント を参照してください)。 
以下の例では、イメージファイル /mnt/cdimage を /mountdir にマウントしています。

     # mount -t iso9660 -o ro,loop image.iso /mnt/image

これによって、 イメージファイルに含まれているディレクトリ階層に 直接アクセスできるようになります。

LinuxでCD-ROMをイメージファイルとしてバックアップする
"cat"コマンドを利用すると "ISO9660"以外のCD-ROM(Mac用やハイブリッド)もバックアップできます。

  # cat /dev/scd0 > cdrom.img