FedoraCore4 - telnet サーバのインストールと設定

[1] telnet サーバ?

 telnet (テルネット)サーバは TCP 23 番ポートを使って外部(telnet クライアント)からの接続を受け付ける事が出来ます。
 簡単に説明してしまえば、遠隔(リモート)にあるサーバへログインするための仕組みです。

※本当は telnet 自体は暗号化されていない生データのため使うのは好ましくありません。2000 年を過ぎた頃からは SSH サーバ・クライアントの普及が広まってきたと思います。ですが、telnet しか実装されていない古いシステム等、クライアントの仕様による場合や、ローカル側での運営だからセキュリティは気にしない、という場合にセットアップする事もあると思います。

[2] telnet サーバのセットアップ

 Fedora Core 4 では telnet サーバがセットアップされていません。yum(ユム)を使ったインストールを行います。その際に xinetd(エックスアイネットディー)も同時にインストールします。サーバ内外の通信を司るのが xinetd の仕事で、セキュリティのためにアクセス制限をする(TCP Wrapper として用いる)ことができます。

[2-1] yum を使ったインストール作業

 サーバ上では root ユーザ権限で操作を行います。

 yum でインストールを行う場合『 yum install パッケージ名 』のような使い方をします。今回使用するのは telnet-server パッケージです。次のようにコマンドを入力します(yum の初回実行時にはデータベースを更新するので、多少時間がかかる場合もあります)。

# yum install telnet-server
Setting up Install Process
Setting up repositories
updates-released          100% |=========================|  951 B    00:00
extras                    100% |=========================|  951 B    00:00
base                      100% |=========================| 1.1 kB    00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package telnet-server.i386 1:0.17-35 set to be updated
--> Running transaction check
--> Processing Dependency: xinetd for package: telnet-server
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Package xinetd.i386 2:2.3.13-6 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 telnet-server           i386       1:0.17-35        base               33 k
Installing for dependencies:
 xinetd                  i386       2:2.3.13-6       base              125 k

Transaction Summary
=============================================================================
Install      2 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 158 k
Is this ok [y/N]: 

 インストールするパッケージ情報が表示されます。telnet-server を使うときには xinetd も必要となるので、セットアップされてない場合には一緒にセットアップされます。

 【 y 】と入力してエンターを押すとセットアップが自動開始されます。

Downloading Packages:
(1/2): telnet-server-0.17 100% |=========================|  33 kB    00:00
(2/2): xinetd-2.3.13-6.i3 100% |=========================| 125 kB    00:00
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
public key not available for telnet-server-0.17-35.i386.rpm
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
Importing GPG key 0x4F2A6FD2 "Fedora Project <fedora@redhat.com>"
Is this ok [y/N]: y
Key imported successfully
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: xinetd                       ######################### [1/2]
  Installing: telnet-server                ######################### [2/2]

Installed: telnet-server.i386 1:0.17-35
Dependency Installed: xinetd.i386 2:2.3.13-6
Complete!

 このように Complete! と表示されていれば問題ありません。

[2-2] xinetd 側の調整

 telnet-server のセットアップの次に xinetd の調整です。

 xinetd を経由して telnet 接続が可能となります。

  1. コマンド【 /sbin/chkconfig --list telnet 】を実行すると、初期の段階では 『 of 』となっており、接続が有効になっていません。
    # /sbin/chkconfig --list telnet
    telnet          off
  2. xinetd 経由で telnet が使えるように次のコマンドを実行します。実行した後に再度確認すると、telnet が『 on 』になっている事が確認できます。
    # /sbin/chkconfig telnet on
    # /sbin/chkconfig --list telnet
    telnet          on
  3. xinetd の起動を行います。
    # /etc/init.d/xinetd start
    xinetd を起動中:                                           [  OK  ]
     通常であれば、普通にこのまま起動して設定は完了です。
  4. /sbin/chkconfig の確認。念のためサーバ起動時に xinetd が自動起動するか確認します。
    # /sbin/chkconfig --list xinetd
    xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off
     3 もしくは 5(あるいは両方)が on になっているので、サーバ起動時には自動で xinetd が立ち上がることが分かります。もし off のままであれば
    # /sbin/chkconfig xinetd on
     と入力して、自動起動させるように出来ます。

[3] telnet のアクセス制限

 セットアップを終わった段階では「どこからも接続が可能」な為、セキュリティ上に危険な状態となっています。次の手順で telnet の接続元を制限する必要があります。

  1. 【 vi /etc/hosts.deny 】コマンドなどで /etc/hosts.deny ファイルを開きます。初期状態では何も記述がありません。hosts.deny 側では拒否したいホスト情報の指定を行います
    in.telnetd: all
     この記述は『 すべての接続を拒否する 』という意味です。

  2. 次に【 vi /etc/hosts.allow 】で接続を許可したいホスト情報の指定を行います。hosts.deny ファイルより、hosts.allow ファイルの方が優先されます。つまり、hosts.deny で一旦すべての接続を拒否した上で、特定の環境のみ hosts.allow ファイルで許可を与えます。
    in.telnetd: 127.0.0.1
    in.telnetd: 192.168.1.0/255.255.255.0
    in.telnetd: .example.jp
     このようにして IP やネットワーク、ホスト名・ドメイン名に対して許可を与えることが出来ます。三行目の「.example.jp」は「ホスト名に .example.jp があれば接続を許可する」という意味です「www.example.jp」も「ftp.example.jp」も、ホスト名の中に「.example.jp」が含まれているので、接続は許可されます。

     また、「.jp」と、かなり広範囲にわたって設定することも可能です。実際にはあまり好ましくありません。もし .jp のホストが不正アクセスを受けた場合、そこを踏み台にして何らかの攻撃を受ける可能性もあるからです。

[4] ログの確認とセキュリティ

 /etc/hosts.allow hosts.deny ファイルでアクセスを制限すると、telnet 接続を拒否した時にログが記録されます。外部からの不正アクセスかな?という場合などに確認もできます。
 対象となるログファイルは /var/log/secure です。この中で拒否された環境(ホスト情報)が from= の部分に表示されます。

Jun 14 19:02:34 sion xinetd[3664]: FAIL: telnet libwrap from=192.168.11.102

 この例は 192.168.11.102 からの接続を拒否したという意味です。
 同様に /var/log/messages にも拒否したという記録が表示されます。

Jun 14 19:02:34 sion xinetd[3664]: libwrap refused connection to telnet
 (libwrap=in.telnetd) from 192.168.11.10

 実用的な使い方としては、特定の相手に対して telnet を許可したい場合です。予め何時接続するか伝えたり、あるいは電話しながらサーバにアクセスしてもらいます。制限がかかっていれば当然接続は拒否され「どこからの接続を拒否した」というログが残ります。アクセス元のネットワーク情報が不明な場合、そのログを元に環境を追加することが出来るので、何かと便利だと思います。

[5] iptables が有効な時の対処法(Fedora Core 4)

 Fedora Core 4 でファイアウォール(iptables)を有効にしている場合、そのままでは telnet は許可されません。以下のコマンドを順番に実行して、telnet (tcp/23) 接続の設定を行います。

# /sbin/iptables -D RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
# /sbin/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT
# /sbin/iptables -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
# /sbin/service iptables save

 あとは外部のホストから telnet が許可されている事を確認出来ます。
 以下のコマンドを実行することでも telnet が iptables で許可されている事が確認できます。

# /sbin/iptables -L | grep telnet
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:telnet

 厳密に書けば、これはまだまだ甘い設定です。とりあえず telnet を許可したという段階に過ぎません。iptables のマニュアル等を参考にして -s オプションを用いたソースの IP アドレス、もしくはネットワークからの許可を制限するようにした方が、より設定は強固になります。
 すみません、現段階では iptables の設定解説を目的としていないので割愛させていただきます……要望があれば別途書きます。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Wed, 15 Jun 2005 22:50:25 JST (7055d)