<!--DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.2//EN"-->
<chapter id="lan">
	<title>LAN(Local Area Network)</title>

<!--chapterinfo>
  <authorgroup>
    <author>
      <firstname></firstname>
      <surname>Masaki</surname>
    </author>
    <author>
      <firstname>Shoji</firstname>
      <surname>Matsumoto</surname>
    </author>
    <editor>
      <firstname>Takuya</firstname>
      <surname>Kobayashi</surname>
    </editor>
  </authorgroup>
  <pubdate>2006/12/7</pubdate>
</chapterinfo-->

  <sect1 id="server-1-3">
    <title>ネットワークの状態を知る</title>
    <variablelist>
      <varlistentry>
        <term>ifconfigコマンド</term>
        <listitem>
          <para>
ネットワークに接続されている場合、しばしば不通になることがあります。そのときにはネットワークの状態を調べる必要があります。<command>ifconfig</command>コマンドはIPアドレスやネットマスクの表示や設定を行えます。
          </para>
          <screen>
# /sbin/ifconfig -a
eth0      リンク方法:イーサーネット  ハードウェアアドレス 00:02:2D:49:64:4A 
          inetアドレス:192.168.0.1 ブロードキャスト:192.168.0.255 マスク:255.255.255.0
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:711620 errors:0 dropped:0 overruns:0 frame:0
          TX packets:317441 errors:0 dropped:0 overruns:0 carrier:0
          衝突(Collisions):0 TXキュー長:100 
          RX bytes:376843112 (359.3 Mb)  TX bytes:116872928 (111.4 Mb)
          割り込み:3 ベースアドレス:0x100 

lo        リンク方法:ローカルループバック  
          inetアドレス:127.0.0.1マスク:255.0.0.0
          UP LOOPBACK RUNNING  MTU:3924  Metric:1
          RX packets:336146 errors:0 dropped:0 overruns:0 frame:0
          TX packets:336146 errors:0 dropped:0 overruns:0 carrier:0
          衝突(Collisions):0 TXキュー長:0 
          RX bytes:128810518 (122.8 Mb)  TX bytes:128810518 (122.8 Mb)
          </screen>
          <para>
eht0がetherのデバイスを示します。また、「inetアドレス」がIPアドレスを示します。
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>netstatコマンド</term>
        <listitem>
          <para>
設定に問題が無い場合は通信経路を調べる必要があります。<command>netstat</command>コマンドではルーティング(経路)を知ることができます。
	  </para>
          <screen>
$ netstat -nr
カーネルIP経路テーブル
送信先サイト    ゲートウェイ    ネットマスク   フラグ   MSS Window  irtt インターフェース
192.168.0.0     *               255.255.255.0   U         0 0          0 eth0
127.0.0.0       *               255.0.0.0       U         0 0          0 lo
default         192.168.0.1     0.0.0.0         UG        0 0          0 eth0
          </screen>
	</listitem>
      </varlistentry>
      <varlistentry>
        <term>pingコマンドとtracerouteコマンド</term>
        <listitem>
          <para>
<command>ping</command>コマンドは相手のホストまで、きちんと通信が行えるか調べることができます。応答時間が帰ってくれば繋がっています。止めるには <keycombo><keycap>Ctrl</keycap><keycap>c</keycap></keycombo>を押します。
	  </para>
          <screen>
$ ping vinelinux.org
PING vinelinux.org (210.81.181.125) 送信元 192.168.0.1 : 56(84) bytes of data.
64 バイト応答 送信元 rh.vinelinux.org (210.81.181.125): icmp_seq=0 ttl=245 時間=13.343ミリ秒
64 バイト応答 送信元 rh.vinelinux.org (210.81.181.125): icmp_seq=1 ttl=245 時間=15.611ミリ秒

--- vinelinux.org ping 統計 ---
送信パケット数 2, 受信パケット数 2, パケット損失 0%
Round-Trip 最小/平均/最大/mdev = 13.343/14.477/15.611/1.134ミリ秒
          </screen>
	  <para>
<command>traceroute</command>コマンドを用いると途中の経路まで分かります。
          </para>
          <screen>
# traceroute vinelinux.org
traceroute to vinelinux.org (210.81.181.125), 30 hops max, 38 byte packets
 1  ....
 :
12  rh.vinelinux.org (210.81.181.125)  15.281 ms  49.446 ms  20.517 ms
          </screen>
          <para>
<command>ping</command>や<command>traceroute</command>を実行したときに、時間がかかる場合は、ネームサーバの設定がおかしい可能性があります。<filename class="directory">/etc/resolv.conf</filename>の nameserver にネームサーバのIPアドレスが設定されているか確認してください。
          </para>
	</listitem>
      </varlistentry>
    </variablelist>
  </sect1>

<sect1 id="server-2">
  <title>LANとセキュリティ</title>
  <para>
LANを構成してインターネットに接続している場合や、多くのユーザがいる場合には、LANの構成やセキュリティについて考慮しなければなりません。
  </para>
  <sect2 id="server-2-1">
    <title>LANの構成</title>
    <para>
多数のホストを接続してLANを構成する場合のヒントをいくつか示します。LAN一般に関しては、<ulink url="file:///usr/share/doc/JF/LAN-mini-HOWTO.txt.gz">/usr/share/doc/JF/LAN-mini-HOWTO.txt.gz</ulink>を参照してください。 
    </para>
    <variablelist>
      <varlistentry>
        <term>ネットワークユーザの集中管理</term>
        <listitem>
          <para>
単一のホストしかない場合は、<command>useradd</command>コマンドなどによって<filename>/etc/passwd</filename>にユーザを登録すれば良いですが、多数のホストがある場合には、全てのホストのファイルを書き換えることは大変です。LANを構成した場合、NIS(YP)によってユーザを管理する方法があります。<ulink url="file:///usr/share/doc/JF/NIS-HOWTO.txt.gz">/usr/share/doc/JF/NIS-HOWTO.txt.gz</ulink> に設定方法が書かれていますので参照してください。 
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>ファイルシステムの共有</term>
        <listitem>
          <para>
多数のホストのどれにログインしても同じ環境を得るようにするには、ホームディレクトリ(/home)を全てのホストで共有する必要があります。同様に、/usr/localなどを共有させることもできます。この共有には NFSマウントを用います。ホームディレクトリを管理するファイルサーバを設定します。各ホストはファイルサーバのファイルシステム(ディスク)をマウントすることで、ローカルに持っているファイルシステムと同様に利用することができます。設定については <ulink url="file:///usr/share/doc/JF/NFS-HOWTO.txt.gz">/usr/share/doc/JF/NFS-HOWTO.txt.gz</ulink> を参照して下さい。
          </para>
	</listitem>
      </varlistentry>
      <varlistentry>
        <term>ホスト名とIPアドレス</term>
        <listitem>
          <para>
ホスト名とIPアドレスを対応付けるにはいくつかの方法があります。単一ホストの場合、必要なホストを /etc/hostsに記述すれば良いですが、多数のホストを管理する場合、全てのホストのファイルを書き換えるのは大変です。そこで、前述の「ユーザ管理」と同様に NISを用いて解決することができます。
          </para>
	  <para>
次に、LANにある各ホストをLAN外からアクセスできるようにするには、ネームサーバにホスト名とIPアドレスを登録する必要があります。上流のドメインにネームサーバがある場合は、そこに登録してもらえばアクセスできます。もし独自のネームサーバを設定する場合は、上流のドメインの管理者に相談してから設定してください。設定方法は <ulink url="file:///usr/share/doc/JF/DNS-HOWTO.txt.gz">/usr/share/doc/JF/DNS-HOWTO.txt.gz</ulink> に書かれています。 
          </para>
	</listitem>
      </varlistentry>
      <varlistentry>
        <term>IPマスカレード</term>
        <listitem>
          <para>
LAN内にあるホストにプライベートネットワークのIPアドレスを付けた場合、そのままではLAN外にアクセスすることはできません。IP マスカレードを利用すると、IPアドレスが登録されていないホストでもルータとして設定されているホストを経由してアクセスすることができます。設定方法は<ulink url="file:///usr/share/doc/JF/IP-Masquerade-HOWTO.txt.gz">/usr/share/doc/JF/IP-Masquerade-HOWTO.txt.gz</ulink> を参照してください。 
          </para>
          <para>
プライベートネットワークには以下のアドレスが予約されています。
	  </para>
          <screen>
	10.0.0.0        -   10.255.255.255
	172.16.0.0      -   172.31.255.255
	192.168.0.0     -   192.168.255.255
          </screen>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>ルーティング(経路制御)</term>
        <listitem>
          <para>
LAN内のホストが外部にアクセスするには、通信ができるように経路(ルート)を決める必要があります。設定方法は <ulink url="file:///usr/share/doc/JF/NET3-4-HOWTO.txt.gz">/usr/share/doc/JF/NET3-4-HOWTO.txt.gz</ulink> を参照してください。 
          </para>
	</listitem>
      </varlistentry>
    </variablelist>
  </sect2>

  <sect2 id="server-2-2">
    <title>セキュリティ</title>
    <para>
LANがインターネットに接続している場合、外部からの不法な侵入に備えておく必要があります。また、LAN内においても、システム管理者以外のユーザがroot権限を取得できることは好ましくありません。ここではセキュリティについてのヒントを示します。セキュリティ一般については<ulink url="file:///usr/share/doc/JF/Security-HOWTO.txt.gz">/usr/share/doc/JF/Security-HOWTO.txt.gz</ulink> を参照してください。 
    </para>
    <variablelist>
      <varlistentry>
        <term>shadow パスワード</term>
        <listitem>
          <para>
特に、どんな形態であれインターネットに接続する場合、自分の環境を守るだけでなく外のネットワークへ迷惑をかけないためにも、セキュリティーには十分に気をつけておく必要があります。 Vine Linux では、インストール時にMD5パスワードとシャドーパスワードの使用を選択できるようになっています。システムのパスワードシステムを shadow パスワードにするには、root ユーザで次のようにします。詳しくは <command>man 5 shadow</command>、<command>man pwconv</command>, <ulink url="file:///usr/share/doc/JF/Shadow-Password-HOWTO.txt.gz">/usr/share/doc/JF/Shadow-Password-HOWTO.txt.gz</ulink> などを参照してください。 
          </para>
          <screen>
# /usr/sbin/pwconv
          </screen>
          <para>
<command>pwconv</command>を実行すると、<filename>/etc/passwd</filename>のパスワードフィールドが x になり、暗号化されたパスワードが保護されます。また、暗号化されたパスワードは<filename>/etc/shadow</filename>に書き込まれますが、一般ユーザからは読めないようになっているので比較的安全です。
          </para>
          <screen>
# cd /etc
# ls -l *passwd* *shadow*
-rw-r--r--   1 root     root          777 Jan 30 13:05 /etc/passwd
# /usr/sbin/pwconv
# ls -l *passwd* *shadow*
-rw-r--r--   1 root     root          738 Jan 30 13:05 /etc/passwd
-r--------   1 root     root          587 Jan 30 13:05 /etc/shadow
          </screen>
          <para>
shadow パスワードを使うと認証が必要な一部のアプリケーションがうまく動作しない場合があるようです。しかし、標準でインストールされるアプリケーションの多く(telnet, ftpなど)は shadow パスワードに対応しています。shadow化をやめるには <command>/usr/sbin/pwunconv</command>を実行します。 
          </para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>PAMを使ったセキュリティ</term>
        <listitem>
          <para>
Vine LinuxではPAM(Pluggable Authentication Modules)を使ってsuなどの特定のコマンドに対してセキュリティを強化することができます。ここでは、良く使われる方法をいくつか紹介します。PAMの詳細については <filename class="directory">/usr/share/doc/pam-*/</filename> 以下の文書(英語)を参照して下さい。
          </para>
	  <variablelist>
	    <varlistentry>
              <term>○ suの制限</term>
	      <listitem>
                <para>
システム管理を行うには、suコマンドを用います。一般ユーザに suコマンドを利用させないようにするには、まず、システム管理者を <filename>/etc/group</filename>の wheelに追加します。次に、<filename>/etc/pam.d/su</filename> に以下を追加します。
                </para>
                <screen>
auth       required     /lib/security/pam_wheel.so debug group=wheel
                </screen>
                <para>
こうすると、/etc/groupの wheelに登録されたユーザしか <command>su</command>コマンドを実行することができなくなります。
                </para>
                <para>
リモートからアクセスしているユーザにsuコマンドを利用させないようにするには、以下を追加します。
                </para>
                <screen>
auth       required     /lib/security/pam_securetty.so
                </screen>
              </listitem>
            </varlistentry>
	    <varlistentry>
              <term>shutdownの制限</term>
	      <listitem>
                <para>
サーバなどは shutdownコマンドを一般ユーザに実行されては困ります。そこで、shutdownコマンドを行えるユーザを制限することができます。<filename>/etc/shutdown.allow</filename> というファイルを作ると、そこに記述されたユーザがログインしているときだけ、shutdownコマンドを実行することができます。
                </para>
                <screen>
	$ cat /etc/shutdown.allow 
	user1
	user2
	user3
                </screen>
              </listitem>
            </varlistentry>
	  </variablelist>
	</listitem>
      </varlistentry>
      <varlistentry>
        <term>iptablesによるパケットフィルタリング</term>
	<listitem>
          <para>
インターネットをはじめネットワークを流れるパケットは、決して安全なものばかりではありません。そうした悪意のあるパケットから、あなたのコンピュータを守る一つの手段としてiptablesによるパケットフィルタリングを行う事ができます。設定方法については、<ulink url="file:///usr/share/doc/JF/packet-filtering-HOWTO.txt.gz">Linux 2.4 Packet Filtering HOWTO(/usr/share/doc/JF/packet-filtering-HOWTO.txt.gz)</ulink>を参考にしてください。また、<ulink url="file:///usr/share/doc/JF/netfilter-faq.txt.gz">netfilter/iptables FAQ(/usr/share/doc/JF/netfilter-faq.txt.gz)</ulink>によくある質問がまとめられています。
          </para>
          <para>
Vine Linux 4.x では、標準でインストール時あるいはGUIにより iptables を利用した簡易なファイアウォールの設定が出来るようになっています。デフォルトではインストールの時点でこのファイアウォールが有効になるように設定されており、原則として外部からのパケットを遮断するようになっています。この設定は「セキュリティレベルの設定」ツールによって簡単に変更することができます。
          </para>
            <figure id="system-config-securitylevel">
              <title>セキュリティレベルの設定</title>
              <graphic fileref="images/system-config-securitylevel.png" />
            </figure>
	</listitem>
      </varlistentry>
      <varlistentry>
        <term>tcp_wrapperによるアクセス制限</term>
        <listitem>
          <para>
簡単なアクセス制限の方法として、tcp_wrapper(tcpd)があります。<ulink url="file:///etc/inetd.conf">/etc/inetd.conf</ulink> をみると様々なサービスが、/usr/sbin/tcpdによって実行されていることがわかります。tcpdデーモンは接続要求があるとそのホストをチェックし、アクセスを許可するかしないかを判断します。このアクセス許可と拒否はそれぞれ<ulink url="file:///etc/hosts.allow">/etc/hosts.allow</ulink> と <ulink url="file:///etc/hosts.deny">/etc/hosts.deny</ulink> に設定されます。
          </para>
          <para>
例えば、原則として外部からの接続は拒否し、自分のドメイン(192.168.0.0)からのアクセスのみ許可するには、/etc/hosts.denyと/etc/hosts.allowに以下のように記述します。
          </para>
          <screen>
$ cat /etc/hosts.deny
ALL: ALL

$ cat /etc/hosts.allow
ALL: 192.168.0.0/255.255.255.0
          </screen>
	  <para>
もし、一部のホスト(例えばvinelinux.orgドメインのホスト)からはアクセスを許可したい場合は、そのホストを/etc/hosts.allowに記述します。
          </para>
          <screen>
ALL: LOCAL
sshd: .vinelinux.org
          </screen>
	  <para>
詳細は<command>man hosts.allow</command>, <command>jman hosts_options</command>を参照して下さい。
          </para>
        </listitem>
      </varlistentry>
    </variablelist>
  </sect2>
</sect1>

</chapter>
