#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 の設定解説を目的としていないので割愛させていただきます……要望があれば別途書きます。