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 接続が可能となります。
[3] telnet のアクセス制限 †セットアップを終わった段階では「どこからも接続が可能」な為、セキュリティ上に危険な状態となっています。次の手順で telnet の接続元を制限する必要があります。
[4] ログの確認とセキュリティ † /etc/hosts.allow hosts.deny ファイルでアクセスを制限すると、telnet 接続を拒否した時にログが記録されます。外部からの不正アクセスかな?という場合などに確認もできます。 Jun 14 19:02:34 sion xinetd[3664]: FAIL: telnet libwrap from=192.168.11.102 この例は 192.168.11.102 からの接続を拒否したという意味です。 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 が許可されている事を確認出来ます。 # /sbin/iptables -L | grep telnet ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:telnet 厳密に書けば、これはまだまだ甘い設定です。とりあえず telnet を許可したという段階に過ぎません。iptables のマニュアル等を参考にして -s オプションを用いたソースの IP アドレス、もしくはネットワークからの許可を制限するようにした方が、より設定は強固になります。 |