LAN(Local Area Network)
ネットワークの状態を知る
ifconfigコマンド
ネットワークに接続されている場合、しばしば不通になることがあります。そのときにはネットワークの状態を調べる必要があります。ifconfigコマンドはIPアドレスやネットマスクの表示や設定を行えます。
# /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)
eht0がetherのデバイスを示します。また、「inetアドレス」がIPアドレスを示します。
netstatコマンド
設定に問題が無い場合は通信経路を調べる必要があります。netstatコマンドではルーティング(経路)を知ることができます。
$ 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
pingコマンドとtracerouteコマンド
pingコマンドは相手のホストまで、きちんと通信が行えるか調べることができます。応答時間が帰ってくれば繋がっています。止めるには Ctrlcを押します。
$ 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ミリ秒
tracerouteコマンドを用いると途中の経路まで分かります。
# 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
pingやtracerouteを実行したときに、時間がかかる場合は、ネームサーバの設定がおかしい可能性があります。/etc/resolv.confの nameserver にネームサーバのIPアドレスが設定されているか確認してください。
LANとセキュリティ
LANを構成してインターネットに接続している場合や、多くのユーザがいる場合には、LANの構成やセキュリティについて考慮しなければなりません。
LANの構成
多数のホストを接続してLANを構成する場合のヒントをいくつか示します。LAN一般に関しては、/usr/share/doc/JF/LAN-mini-HOWTO.txt.gzを参照してください。
ネットワークユーザの集中管理
単一のホストしかない場合は、useraddコマンドなどによって/etc/passwdにユーザを登録すれば良いですが、多数のホストがある場合には、全てのホストのファイルを書き換えることは大変です。LANを構成した場合、NIS(YP)によってユーザを管理する方法があります。/usr/share/doc/JF/NIS-HOWTO.txt.gz に設定方法が書かれていますので参照してください。
ファイルシステムの共有
多数のホストのどれにログインしても同じ環境を得るようにするには、ホームディレクトリ(/home)を全てのホストで共有する必要があります。同様に、/usr/localなどを共有させることもできます。この共有には NFSマウントを用います。ホームディレクトリを管理するファイルサーバを設定します。各ホストはファイルサーバのファイルシステム(ディスク)をマウントすることで、ローカルに持っているファイルシステムと同様に利用することができます。設定については /usr/share/doc/JF/NFS-HOWTO.txt.gz を参照して下さい。
ホスト名とIPアドレス
ホスト名とIPアドレスを対応付けるにはいくつかの方法があります。単一ホストの場合、必要なホストを /etc/hostsに記述すれば良いですが、多数のホストを管理する場合、全てのホストのファイルを書き換えるのは大変です。そこで、前述の「ユーザ管理」と同様に NISを用いて解決することができます。
次に、LANにある各ホストをLAN外からアクセスできるようにするには、ネームサーバにホスト名とIPアドレスを登録する必要があります。上流のドメインにネームサーバがある場合は、そこに登録してもらえばアクセスできます。もし独自のネームサーバを設定する場合は、上流のドメインの管理者に相談してから設定してください。設定方法は /usr/share/doc/JF/DNS-HOWTO.txt.gz に書かれています。
IPマスカレード
LAN内にあるホストにプライベートネットワークのIPアドレスを付けた場合、そのままではLAN外にアクセスすることはできません。IP マスカレードを利用すると、IPアドレスが登録されていないホストでもルータとして設定されているホストを経由してアクセスすることができます。設定方法は/usr/share/doc/JF/IP-Masquerade-HOWTO.txt.gz を参照してください。
プライベートネットワークには以下のアドレスが予約されています。
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
ルーティング(経路制御)
LAN内のホストが外部にアクセスするには、通信ができるように経路(ルート)を決める必要があります。設定方法は /usr/share/doc/JF/NET3-4-HOWTO.txt.gz を参照してください。
セキュリティ
LANがインターネットに接続している場合、外部からの不法な侵入に備えておく必要があります。また、LAN内においても、システム管理者以外のユーザがroot権限を取得できることは好ましくありません。ここではセキュリティについてのヒントを示します。セキュリティ一般については/usr/share/doc/JF/Security-HOWTO.txt.gz を参照してください。
shadow パスワード
特に、どんな形態であれインターネットに接続する場合、自分の環境を守るだけでなく外のネットワークへ迷惑をかけないためにも、セキュリティーには十分に気をつけておく必要があります。 Vine Linux では、インストール時にMD5パスワードとシャドーパスワードの使用を選択できるようになっています。システムのパスワードシステムを shadow パスワードにするには、root ユーザで次のようにします。詳しくは man 5 shadow、man pwconv, /usr/share/doc/JF/Shadow-Password-HOWTO.txt.gz などを参照してください。
# /usr/sbin/pwconv
pwconvを実行すると、/etc/passwdのパスワードフィールドが x になり、暗号化されたパスワードが保護されます。また、暗号化されたパスワードは/etc/shadowに書き込まれますが、一般ユーザからは読めないようになっているので比較的安全です。
# 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
shadow パスワードを使うと認証が必要な一部のアプリケーションがうまく動作しない場合があるようです。しかし、標準でインストールされるアプリケーションの多く(telnet, ftpなど)は shadow パスワードに対応しています。shadow化をやめるには /usr/sbin/pwunconvを実行します。
PAMを使ったセキュリティ
Vine LinuxではPAM(Pluggable Authentication Modules)を使ってsuなどの特定のコマンドに対してセキュリティを強化することができます。ここでは、良く使われる方法をいくつか紹介します。PAMの詳細については /usr/share/doc/pam-*/ 以下の文書(英語)を参照して下さい。
○ suの制限
システム管理を行うには、suコマンドを用います。一般ユーザに suコマンドを利用させないようにするには、まず、システム管理者を /etc/groupの wheelに追加します。次に、/etc/pam.d/su に以下を追加します。
auth required /lib/security/pam_wheel.so debug group=wheel
こうすると、/etc/groupの wheelに登録されたユーザしか suコマンドを実行することができなくなります。
リモートからアクセスしているユーザにsuコマンドを利用させないようにするには、以下を追加します。
auth required /lib/security/pam_securetty.so
shutdownの制限
サーバなどは shutdownコマンドを一般ユーザに実行されては困ります。そこで、shutdownコマンドを行えるユーザを制限することができます。/etc/shutdown.allow というファイルを作ると、そこに記述されたユーザがログインしているときだけ、shutdownコマンドを実行することができます。
$ cat /etc/shutdown.allow
user1
user2
user3
iptablesによるパケットフィルタリング
インターネットをはじめネットワークを流れるパケットは、決して安全なものばかりではありません。そうした悪意のあるパケットから、あなたのコンピュータを守る一つの手段としてiptablesによるパケットフィルタリングを行う事ができます。設定方法については、Linux 2.4 Packet Filtering HOWTO(/usr/share/doc/JF/packet-filtering-HOWTO.txt.gz)を参考にしてください。また、netfilter/iptables FAQ(/usr/share/doc/JF/netfilter-faq.txt.gz)によくある質問がまとめられています。
Vine Linux 4.x では、標準でインストール時あるいはGUIにより iptables を利用した簡易なファイアウォールの設定が出来るようになっています。デフォルトではインストールの時点でこのファイアウォールが有効になるように設定されており、原則として外部からのパケットを遮断するようになっています。この設定は「セキュリティレベルの設定」ツールによって簡単に変更することができます。
tcp_wrapperによるアクセス制限
簡単なアクセス制限の方法として、tcp_wrapper(tcpd)があります。/etc/inetd.conf をみると様々なサービスが、/usr/sbin/tcpdによって実行されていることがわかります。tcpdデーモンは接続要求があるとそのホストをチェックし、アクセスを許可するかしないかを判断します。このアクセス許可と拒否はそれぞれ/etc/hosts.allow と /etc/hosts.deny に設定されます。
例えば、原則として外部からの接続は拒否し、自分のドメイン(192.168.0.0)からのアクセスのみ許可するには、/etc/hosts.denyと/etc/hosts.allowに以下のように記述します。
$ cat /etc/hosts.deny
ALL: ALL
$ cat /etc/hosts.allow
ALL: 192.168.0.0/255.255.255.0
もし、一部のホスト(例えばvinelinux.orgドメインのホスト)からはアクセスを許可したい場合は、そのホストを/etc/hosts.allowに記述します。
ALL: LOCAL
sshd: .vinelinux.org
詳細はman hosts.allow, jman hosts_optionsを参照して下さい。