#contents
----
* FedoraCore4 - telnet サーバのインストールと設定 [#i3470981]
** [1] telnet サーバ? [#c018fb13]
telnet (テルネット)サーバは TCP 23 番ポートを使って外部(telnet クライアント)からの接続を受け付ける事が出来ます。&br;
簡単に説明してしまえば、遠隔(リモート)にあるサーバへログインするための仕組みです。
※本当は telnet 自体は暗号化されていない生データのため使うのは好ましくありません。2000 年を過ぎた頃からは SSH サーバ・クライアントの普及が広まってきたと思います。ですが、telnet しか実装されていない古いシステム等、クライアントの仕様による場合や、ローカル側での運営だからセキュリティは気にしない、という場合にセットアップする事もあると思います。
** [2] telnet サーバのセットアップ [#n84326ff]
Fedora Core 4 では telnet サーバがセットアップされていません。yum(ユム)を使ったインストールを行います。その際に xinetd(エックスアイネットディー)も同時にインストールします。サーバ内外の通信を司るのが xinetd の仕事で、セキュリティのためにアクセス制限をする(TCP Wrapper として用いる)ことができます。
*** [2-1] yum を使ったインストール作業 [#g19e6b0a]
サーバ上では 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 も必要となるので、セットアップされてない場合には一緒にセットアップされます。
&color(red){''【 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 側の調整 [#s2267b1a]
telnet-server のセットアップの次に xinetd の調整です。
xinetd を経由して telnet 接続が可能となります。
+コマンド【 /sbin/chkconfig --list telnet 】を実行すると、初期の段階では 『 of 』となっており、接続が有効になっていません。
# /sbin/chkconfig --list telnet
telnet off
+xinetd 経由で telnet が使えるように次のコマンドを実行します。実行した後に再度確認すると、telnet が『 on 』になっている事が確認できます。
# /sbin/chkconfig telnet on
# /sbin/chkconfig --list telnet
telnet on
+xinetd の起動を行います。
# /etc/init.d/xinetd start
xinetd を起動中: [ OK ]
通常であれば、普通にこのまま起動して設定は完了です。
+/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 のアクセス制限 [#c9aad89d]
セットアップを終わった段階では「どこからも接続が可能」な為、セキュリティ上に危険な状態となっています。次の手順で telnet の接続元を制限する必要があります。
+【 vi /etc/hosts.deny 】コマンドなどで /etc/hosts.deny ファイルを開きます。初期状態では何も記述がありません。hosts.deny 側では''拒否したいホスト情報の指定''を行います
in.telnetd: all
この記述は『 すべての接続を拒否する 』という意味です。&br;&br;
+次に【 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」が含まれているので、接続は許可されます。&br;
&br;
また、「.jp」と、かなり広範囲にわたって設定することも可能です。実際にはあまり好ましくありません。もし .jp のホストが不正アクセスを受けた場合、そこを踏み台にして何らかの攻撃を受ける可能性もあるからです。
** [4] ログの確認とセキュリティ [#ia2229bf]
/etc/hosts.allow hosts.deny ファイルでアクセスを制限すると、telnet 接続を拒否した時にログが記録されます。外部からの不正アクセスかな?という場合などに確認もできます。&br;
対象となるログファイルは /var/log/secure です。この中で拒否された環境(ホスト情報)が from= の部分に表示されます。
Jun 14 19:02:34 sion xinetd[3664]: FAIL: telnet libwrap from=192.168.11.102
この例は 192.168.11.102 からの接続を拒否したという意味です。&br;
同様に /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) [#u14b4ddb]
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 が許可されている事を確認出来ます。&br;
以下のコマンドを実行することでも telnet が iptables で許可されている事が確認できます。
# /sbin/iptables -L | grep telnet
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:telnet
厳密に書けば、これはまだまだ甘い設定です。とりあえず telnet を許可したという段階に過ぎません。iptables のマニュアル等を参考にして -s オプションを用いたソースの IP アドレス、もしくはネットワークからの許可を制限するようにした方が、より設定は強固になります。&br;
すみません、現段階では iptables の設定開設を目的としていないので割愛させていただきます……要望があれば別途書きます。
すみません、現段階では iptables の設定解説を目的としていないので割愛させていただきます……要望があれば別途書きます。