君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

Dockerでたてたコンテナにtelnet-serverを入れて、telnetでコンテナ間通信ができるようにしてみた

f:id:karoten512:20180110003655p:plain

いきさつ

networkやセキュリティ、telnetデーモンを叩き起こすxintedの勉強がてらやってみた。

手順

0. 準備

0-1. telnet-server用のコンテナを走らせる

$ docker pull centos:centos7
$ docker run --privileged -d --name centos_test centos:centos7 /sbin/init

なお、telnet-serverコンテナでは、

後程systemdを用いてサービスを走らせるので、

--privilegedと/sbin/initが必要になってくる。

qiita.com

0-2 telnet-client用のコンテナを走らせる

$ docker run -d --name telnet-client centos:centos7

1. telnet-serverコンテナの設定

1-1. telnet-serverのinstall

$ docker exec -it telnet-server /bin/bash
# yum -y install telnet-server

1-2. リモートホストからのアクセス制御の設定をする

他のサーバからのアクセスを制御します。

すべてのhost/すべてのサービスからのアクセスを拒否します。

# echo 'ALL: ALL' >> /etc/hosts.deny

特定のサービス/特定のホストからのアクセスを許可します。

# echo 'in.telnetd: 172.18.0.5' >> /etc/hosts.allow

telnetデーモンに対して、172.18.0.5からアクセスがあった場合は許可します。

なお、172.18.0.5はtelnet-clientコンテナのipアドレス

1-3. xinetdの設定

# vi /etc/xinetd.d/telnet

以下を追記します。

service telnet
{
    flags       = REUSE
    socket_type = stream
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    log_on_failure  += USERID
    disable     = no
}

2. telnet-serverの起動

# systemctl status telnet.socket

3. telnet接続用のuserを作成する

# useradd telnet-user
# passwd telnet-user
Changing password for user telnet-user.
New password:
Retype new password: 

4. telnet-clinentコンテナの設定

4-1. telnet-clinentのinstallをする

$ docker exec -it telnet-client /bin/bash
# yum install -y telnet

4-2. 接続

いちおう、サーバ側のポートが空いていることを確認してみる。

$ nmap -sV -PE -p 23 172.18.0.4
Starting Nmap 6.40 ( http://nmap.org ) at 2018-01-09 16:00 UTC
Nmap scan report for 172.18.0.4
Host is up (0.000039s latency).
PORT   STATE SERVICE VERSION
23/tcp open  telnet  Linux telnetd

あいてた。

$ telnet 172.18.0.4 23
Trying 172.18.0.4...
Connected to 172.18.0.4.
Escape character is '^]'.

Kernel 4.14.11-coreos on an x86_64
f71734bf26ca login: telnet-user
Password: 
Last login: Tue Jan  9 16:07:51 from 172.18.0.5

入れた!

感想

コンテナからコンテナにtelnetログインするだけでそれなりの作業量となる。

色々勉強になった。

参考

kajuhome.com