(前ページより続く)
← Kondara MNU/Linux 2.1 編に戻る
← Vine Linux 2.6 編に戻る
Linux のインストールの際に2枚目のネットワークカード(NIC)を挿してあった 場合は、そのNICも自動的に認識されているはずです。 次のようにして、2枚目のNICが eth1 として認識されているかどうかを 調べます。
# dmesg | grep ethもし認識されていなかったら、kudzu を起動して認識させます。
# kudzukudzu の中でIPアドレスの設定を行っても良いのですが、 設定をスキップしても構いません。
eth1 が正しく認識されたら、 次に /etc/sysconfig/network-scripts/ifcfg-eth1 を編集して、 アドレスを設定します。 ifcfg-eth1 が存在しない時は ifcfg-eth0 を雛型にします。
# cd /etc/sysconfig/network-script # ls ifcfg-eth* ifcfg-eth0 # cp ifcfg-eth0 ifcfg-eth1 (ifcfg-eth1 を編集する)以下は ifcfg-eth1 の内容の例です。
BROADCAST=172.20.1.63 NETMASK=255.255.255.192 DEVICE=eth1 BOOTPROTO=none ONBOOT=yes NETWORK=172.20.1.0 IPADDR=172.20.1.1
ユーザ認証を行なうために、利用者は認証サーバのIPアドレスを知っておく必要があります。 しかし、この例のような 172.20.1.1 では覚えにくいので、 覚え易いアドレスを別名として付けておくと大変便利です。 端末側のインタフェース(複数ある場合はいずれか一つ)に、 例えば 10.0.0.1 というIPアドレスを別名として設定しておきます。
# cd /etc/sysconfig/network-script # cp ifcfg-eth1 ifcfg-eth1:1 (ifcfg-eth1:1 を編集する)以下は ifcfg-eth1:1 の内容です。
BROADCAST=10.0.0.1 NETMASK=255.255.255.255 DEVICE=eth1:1 BOOTPROTO=none ONBOOT=yes NETWORK=10.0.0.1 IPADDR=10.0.0.1
最後に、ネットワーク機能を再起動して、eth0 と eth1、および eth1:1 にアドレスが正しく設定されるかどうかを確認します。
# /etc/rc.d/init.d/network restart # ifconfig -a
端末に自動的にアドレスを振るために、DHCPサーバの設定を行います。 まず設定ファイル /etc/dhcpd.conf を作成します。 アドレスのリース期間は3分程度と短く設定します。
dhcpd.conf の例 :
#ddns-update-style none; default-lease-time 180; # 3min max-lease-time 1800; # 30min option subnet-mask 255.255.255.192; option broadcast-address 172.20.1.63; option routers 172.20.1.1; option domain-name-servers 192.168.1.1; option domain-name "XXX.YYY.ZZZ"; # eth0 # Note: Don't forget to pass network devices (eth1, etc) to # /usr/sbin/dhcpd started in /etc/rc.d/init.d/dhcpd . # subnet 192.168.1.0 netmask 255.255.255.192 { # (nothing) #} # eth1 subnet 172.20.1.0 netmask 255.255.255.192 { range 172.20.1.2 172.20.1.59; } # eth2 #subnet 172.20.1.64 netmask 255.255.255.192 { #option routers 172.20.1.65; #option broadcast-address 172.20.1.127; #range 172.20.1.66 172.20.1.125; #}この例では、DNSサーバのアドレスを 192.168.1.1 、DNSのドメイン名を XXX.YYY.ZZZ と仮定しています。 ( dhcpd がうまく動かない場合は1行目のコメントを外します。)
dhcpd.conf を作成したら、次はDHCPサーバ(dhcpd)のスタートアップ・スクリプト を編集します。 上の設定例では eth0 を定義していないので、dhcpd の起動の際に デバイスを明示する必要があるためです。
変更前の /etc/rc.d/init.d/dhcpd (部分) :
start() { # Start daemons. echo -n $"Starting $prog: " daemon /usr/sbin/dhcpd ${DHCPDARGS}変更後の /etc/rc.d/init.d/dhcpd (部分) :
start() { # Start daemons. echo -n $"Starting $prog: " daemon /usr/sbin/dhcpd ${DHCPDARGS} eth1(上記は Vine Linux の例です。Kondara では少しだけ違いがあります。)
DHCPサーバを起動します。
# /etc/rc.d/init.d/dhcpd start dhcpdを起動中: [ OK ]端末側ネットワークに端末を接続して、DHCPで正しくアドレスが取得できる ことを確認します。 MS-Windows 9x 系ならば winipcfg コマンド、MS-Windows NT4.0/2000 ならば ipconfig コマンドでアドレスを確認できます。
PCのブート時からDHCPサーバが動くように、ntsysv コマンドで dhcpd を有効にします。
# ntsysv
dhcpd のログは /var/log/messages に書き込まれます。 リースの更新間隔が短いので、 ログファイル (messages) のあふれには注意してください。
PCがゲートウェイとして動作するように、IP forwarding の機能を有効にします。 このためには、/etc/sysctl.conf の中で net.ipv4.ip_forward の設定を変更します。
(変更前) net.ipv4.ip_forward=0 (変更後) net.ipv4.ip_forward=1これでネットワークの再起動後に IP forwarding が有効になりますが、 再起動せずに有効にしたい場合は以下のようにします。
# echo 1 > /proc/sys/net/ipv4/ip_forward
端末からバックボーン側にアクセスできることを確認します。 以下は ping でDNSサーバの応答を調べる例です。
(端末側) C:\> ping 192.168.1.1
このままでは認証もなしに端末からバックボーン側に素通りできてしまうので、 Netfilter のデフォルトのポリシーを変更して、 通信をブロックするように設定します。 Netfilter は Linux のカーネルに組み込まれているパケットフィルターの機能です。 Netfilter の設定には iptables (または ipchains) を使います。
# iptables -P FORWARD DROP # iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destinationiptables -L で ``Chain FORWARD'' のポリシーが上のように ``DROP''になっていることを確認します。 また、端末からバックボーン側にアクセスできない ことを確認します。
システムのブート時から通信をブロックできるように、Netfilter の状態を保存します。
# /etc/rc.d/init.d/iptables save 現在のルールを/etc/sysconfig/iptablesに保存中: [ OK ]
無線LANやイーサネット・ジャックでは、不意のネットワーク接続の途切れや、 ユーザが正しいログアウト手順を踏まないことへの対策が非常に重要です。 使用中の端末が物理的にネットワークから切り離された後に、 正規のユーザが獲得して開いたままになったチャネルを介して 他人がバックボーン・ネットワークに到達できるようならば、 これは重大なセキュリティホールになるからです。 端末のネットワーク切断を検出できるようにするために、 ここでは Watchdog 機能付きの Secure Shell サーバを使います。
下記サイトから OpenSSH の Portable 版のソースパッケージと、 Heartbeat/Watchdog のパッチをダウンロードしてきます。
# gtar zxf openssh-3.5p1.tar.gz # gtar zxf openssh-3.5p1-watchdog.patch.tgz # cd openssh-3.5p1 # patch < ../openssh-3.5p1-watchdog.patch # ./configure --prefix=/usr/local --with-pam --with-tcp-wrappers # make
既存の OpenSSH のパッケージは削除せずに、 先ほどコンパイルした OpenSSH をインストールします。 ホストキーが変わると面倒なので、ホストキーもコピーしておきます。
# make install # cp -p /etc/ssh/ssh_host* /usr/local/etc//usr/local/etc/sshd_config を編集して、次の行を追加します。
PermitRootLogin no WatchdogTimeout1 20 ClientAliveInterval 5 ClientAliveCountMax 4また、下記のように sftp-server の行をコメントにして、 sftp-server を無効にします。
#Subsystem sftp /usr/local/libexec/sftp-server/usr/local/etc/ssh_config を編集して、次の行を追加します。
Heartbeat 5
古い sshd を止めます。
# /etc/rc.d/init.d/sshd stop新しい sshd を起動するために、/etc/rc.d/init.d/sshd の中で変数 SSHD を 変更します。
(変更前) SSHD=/usr/sbin/sshd (変更後) SSHD=/usr/local/sbin/sshd新しい sshd を起動します。
# /etc/rc.d/init.d/sshd start
認証ゲートウェイを実現するために必要な、 ``Simple Authenticating Gateway for Linux'' を導入します。 ソースパッケージを以下のサイトからダウンロードします。
アーカイブの展開、コンパイル、そしてインストールを行います。
# gtar zxf authipgate-1.4.tgz # cd authipgate-1.4 # make # make install/usr/local/sbin/aipgd をテキストエディタで編集して、 ファイルの先頭で3つの変数を次のように設定します。
CLIENTHOSTS="172.20.1.0/26" ALIASADDR="10.0.0.1" DNSSERVER="192.168.1.1"(DNSサーバのアドレス 192.168.1.1 は DHCP の設定と合わせておきます。)
必要があれば、 認証ゲートウェイを常に通過させたいホストや、Netfilter にデフォルトで設定しておきたいルールを追加しておきます。 常に通過させておきたいホストやネットワークは、aipgd の先頭で 変数 THROUGHHOSTS に列挙します。デフォルトのルールは、
#------------------------------- # Add your own rules here.の下に書き加えます。
authipgate を起動します。
# /etc/rc.d/init.d/aipgctl start Starting authipgate daemon:
このシステムを使うためには、SSH2 protocol または SSH1 protocol に対応した Secure Shell クライアント・プログラムが端末側に必要です。 SSH2 は通常のクライアントが使えます。 SSH1 では heartbeat (または keep-alive null packet) の送出機能を持ったクライアントが必要です。 heartbeat 機能を持つクライアントには、以下のようなものがあります。
ユーザ認証は、いずれかのプログラムを用いて認証サーバにログインすること によって行なわれます。SSH1 protocol で接続する場合は、 heartbeat の送出間隔を5秒程度に設定しておきます。
認証ゲートウェイの上でウェブサーバを立ち上げておき、そこから MindTerm を起動できるようにしておくと、 ユーザが Secure Shell のクライアント・プログラムを持っていなくても ブラウザから容易にログインできるようになるので、大変に便利です。 MindTerm については「サポート用ウェブサーバの設定」 で説明します。
認証ゲートウェイを利用するユーザのアカウントを作っておきます。 スーパーユーザ (root) ではリモートログインができない上に、 日常的に root で作業を行うのは大変危険です。 ユーザの作成手順は Linux の通常の操作と変わりありません。 useradd コマンドを用いてローカルにユーザを作成してもよいし、 NIS や LDAP を利用することも考えられます。
一般ユーザの誤操作や故意の破壊工作から認証ゲートウェイを保護するために、 一般ユーザが任意のコマンドを実行できないようにしておくのが安全です。 ユーザのログインシェルとして通常は /bin/bash や /bin/tcsh などが用いられますが、 これらの代わりにダミーのシェルを設定しておくと良いでしょう。 authipgate-1.4以降のパッケージに含まれている Extremely Restricted Shell (exrsh) が利用できます。 ユーザを作成する際に、ログインシェルとして /usr/local/sbin/exrsh を指定するだけです。
ここでは Windows 9x系/NT4.0/2000/XP を使った動作確認の手順を紹介します。 Windows 用の Secure Shell クライアントとして PuTTY を使います。
C:\> tracert -d 192.168.1.1のようにします。
Host Name : 172.20.1.1 ← 10.0.0.1 でも良い Protocol : SSHのように入力して、[Open]ボタンを押します。 ターミナルの画面に変わったら、指示に従って ID と パスワードを入力し、 認証ゲートウェイにログインします。
C:\> tracert -d 192.168.1.1
続いて、ネットワークの切断が正しく検出されるかどうかを確認します。
Warning: Command has been killed due to watchdog timeout.または
Disconnecting: Timeout, your session not responding.というメッセージが記録されているのを確認します。
セキュリティの向上のために、 認証ゲートウェイの動作に関係の無いサービスは極力止めておくようにします。 ntsysv コマンドを使ってサービスを非動作に設定します (設定後にシステムの再起動が必要)。 OSのインストールの際にほとんどのサービスを止めてあるはずです。
# ntsysvwebmin は便利ですが、この手のサービスは万一セキュリティホールが見つかると非常に危険なことが多いので、 止めておく方が無難です。
認証ゲートウェイでは、 Secure Shell 以外のログイン手段はセキュリティホールになります。 telnet が使えないようになっていることを、今一度確認しておきます。
認証ゲートウェイの上でウェブサーバを動かしておき、 本システムの使い方などのドキュメントを閲覧できるようにしておくと、 とても便利になります。 利用者は認証ゲートウェイのIPアドレスとSSID (場合によってはWEPの暗号化鍵) を知っているだけでよく、無線LANに接続したらウェブブラウザで
http://10.0.0.1/にアクセスすればドキュメントが読めるようになります。
OSには Apache HTTP Server が標準添付になっているので、 下記の手順で設定すれば、ウェブサーバを立ち上げることができます。
# /etc/rc.d/init.d/httpd start
Java で動く Secure Shell クライアントとして
MindTerm があります。
MindTerm をウェブサーバで提供すれば、利用者は Secure Shell クライアント・プログラムを
あらかじめインストールしておく必要がなく、
Java が使えるウェブブラウザさえ持っていれば本システムが利用できるようになります。
(注: MindTerm はここには置かれていません。)
(2002年6月)   大変残念なことに、
最近になって MindTerm のライセンス形態が非常に厳しいものになってしまいました。
現時点では事実上、個人はもちろん、小規模なサイトでも使うのが難しくなっています。
古き良き時代のバージョンでもよければ、
mindterm_2.1-bin.zip が入手できるようです。
(本家のサイトでは抹消されたようです。)
(2002年9月)   いつのまにか MindTerm の non-commercial license が復活していました。
AppGateのウェブサイトでダウンロードできます。
(2002年11月)   新バージョン MindTerm 2.3.1 が出ましたが、 無償版では signed applet が提供されなくなったようです。
必須ではありませんが、 認証ゲートウェイで欲しくなるだろうと思われる機能とその設定方法を紹介します。
session required /lib/security/pam_limits.so/etc/security/limits.conf を編集して、次のような一行を追加します。
* - maxlogins 2
USE_NAPT="no"となっている所を
USE_NAPT="yes"に書き換えるだけです。
# cat /proc/sys/fs/file-max 8192 # echo 16384 > /proc/sys/fs/file-max # cat /proc/sys/fs/file-max 16384echo の行だけを /etc/rc.d/init.d の下のいずれかのファイルに追加しておくと良いでしょう (例えば aipgctl)。