なにかの技術メモ置き場

なにかの技術メモ置き場

@インフラエンジニア

インフラ構築 - サーバ - TELNETサーバ

前回の基本設定とは何だったのか。
まぁ、TELNETサーバは普段は導入しないため、ということであながち間違ってはいない。

TELNETサーバの設定

インストール

[root@監視管理 ~]# yum -y install telnet-server

自動起動の有効化

[root@監視管理 ~]# systemctl enable telnet.socket
ln -s '/usr/lib/systemd/system/telnet.socket' '/etc/systemd/system/sockets.target.wants/telnet.socket'
[root@監視管理 ~]#
[root@監視管理 ~]# systemctl list-unit-files | grep telnet.socket
telnet.socket enabled

ファイアウォールの設定

[root@監視管理 ~]# firewall-cmd --add-service=telnet --permanent
success
[root@監視管理 ~]#
[root@監視管理 ~]# systemctl restart firewalld
[root@監視管理 ~]#
[root@監視管理 ~]# firewall-cmd --list-service
dhcpv6-client telnet

サービスの開始

[root@監視管理 ~]# systemctl start telnet.socket
[root@監視管理 ~]#
[root@監視管理 ~]# systemctl list-units | grep telnet.socket
telnet.socket loaded active listening Telnet Server Activation Socket
[root@監視管理 ~]#
[root@監視管理 ~]# ss -4nat | grep 23
[root@監視管理 ~]#
[root@監視管理 ~]# ss -nat | grep 23
LISTEN 0 128 :::23 :::*

なぜIPv6のみなんだ・・・

rootでのログインを許可する場合。

[root@監視管理 ~]# vi /etc/securetty
#最下行に追記
pts/0

ここで色々試してみたのだが、この"pts/N"のNという端末番号が意外とシビアだと判った。

以下、実験。
[接続状況]
172.16.0.100 → 172.16.0.101(pts/0) SSHログイン済

[root@監視管理 ~]# who
root pts/0 2014-08-25 11:55 (172.16.0.100)

telnetを実行。

[root@検証 ~]# telnet 172.16.0.101
Trying 172.16.0.101...
Connected to 172.16.0.101.
Escape character is '^]'.

Kernel 3.10.0-123.6.3.el7.x86_64 on an x86_64
監視管理 login: root
Password:
Login incorrect

これは、SSHセッションがpts/0を既に使用しているため。

では次の実験。

[root@監視管理 ~]# vi /etc/securetty
#最下行に追記
pts/0
pts/2

[接続状況]
172.16.0.100 → 172.16.0.101(pts/0) SSHログイン済

[root@監視管理 ~]# who
root pts/0 2014-08-25 11:55 (172.16.0.100)

telnetを実行。

[root@検証 ~]# telnet 172.16.0.101
Trying 172.16.0.101...
Connected to 172.16.0.101.
Escape character is '^]'.

Kernel 3.10.0-123.6.3.el7.x86_64 on an x86_64
監視管理 login: root
Password:
Login incorrect

監視管理 login:

ログインできないが、このままログインプロンプトが表示されている状態で放置。
[接続状況]
172.16.0.100 → 172.16.0.101(SSH)(pts/0) ログイン済
172.16.0.201 → 172.16.0.101(TELNET)(pts/1) 未ログイン

ログインはできていないがセッションを維持したまま、2つめの窓でtelnetを実行。

[root@検証 ~]# telnet 172.16.0.101
Trying 172.16.0.101...
Connected to 172.16.0.101.
Escape character is '^]'.

Kernel 3.10.0-123.6.3.el7.x86_64 on an x86_64
監視管理 login: root
Password:
Last login: Mon Aug 25 12:47:04 from ::ffff:172.16.0.201
[root@監視管理 ~]#
[root@監視管理 ~]# who
root pts/0 2014-08-25 11:55 (172.16.0.100)
root pts/2 2014-08-25 12:47 (::ffff:172.16.0.201)

[接続状況]
172.16.0.100 → 172.16.0.101(pts/0) SSHログイン済
172.16.0.201 → 172.16.0.101(pts/1) TELNET未ログイン
172.16.0.201 → 172.16.0.101(pts/2) TELNETログイン済

なるほど、rootでのtelnet接続は厳密にpts/0とpts/2のみ許可されている。
"セッション数"制御ではなく、"端末"制御だというわけだ。
なので、例えば『セッションを5つ用意したい』という要求は厳密には実現できず、『この5つの端末なら使って良いよ。但し空いていたらね。』ということしかできない。

実験終了。