40
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

はじめてのLinux(CentOS)サーバ構築 〜SSH接続、IP制限〜

Posted at

#背景

先日、「Linuxサーバ構築」というテーマで
社内で勉強会が行われましたので、メモを残しておきます。

そもそも、、、
日常の業務ではDockerを触ってはいるものの、
DockerFileを一から自分で構築したことはありませんでしたし、
構築するにしてもそのファイルはLinuxコマンドで書かれています。

なので、Dockerの理解を深めるためにも、とても良い機会となりました。

環境構築

まず、下記のdocker-compose.ymlを作業ディレクトリに追加します。
(docker-compose.ymlについての説明は割愛させていただきます。)

docker-compose.yml
version: '3'
services:
  host_server:
    image: centos:7
    command: /usr/sbin/init
    privileged: true
    ports:
      - 38080:80
  client_machine1:
    image: centos:7
    command: /usr/sbin/init
    privileged: true
  client_machine2:
    image: centos:7
    command: /usr/sbin/init
    privileged: true

ここからはターミナルで作業を行います。

作業ディレクトリに移動し、Dockerコンテナを作成し、起動させます。

docker-compose up -d

ターミナルを3つ用意し、それぞれのターミナルで各serviceのコンテナに入ります。

docker-compose exec host_server /bin/bash
docker-compose exec client_machine1 /bin/bash
docker-compose exec client_machine2 /bin/bash

host_serverでOpenSSHサーバ、net-tools、vimをインストールします。

yum install -y openssh-server net-tools vim

同様に、client_machine1,2でもOpenSSHクライアント、net-tools、vimをインストールします。

yum install -y openssh-clients net-tools vim

SSH接続するためにサーバ(host_server)側でパスワードを設定しておきます。(パスワード確認のため再入力もあります。)

passwd

host_serverを立ち上げます。

systemctl start sshd.service

ここで、host_serverのIPアドレスを確認しておきましょう。

ifconfig
=> 172.20.0.3

同様にclient_machineのIPも確認しておきます。

(host_server: 172.20.0.3)
client_machine1: 172.20.0.4
client_machine2: 172.20.0.5

#SSH接続

それでは、クライアント(client_machine1)からサーバ(host_server)にSSHで接続してみましょう。(ここではパスワード認証で接続していますが、脆弱性があるらしいので公開鍵認証の方が良いみたいです。)

ssh 172.20.0.3
=> Last login: Wed Jun 19 22:01:33 2019 from linux_test_client_machine1_1.linux_test_default

Last loginが表示されれば成功です。接続に成功したらログアウトしておきます。

exit

また、client_machine2でも接続ができることを確認しておきましょう。

(ここではパスワード認証で接続しているので、接続の度にパスワードを求められますが、公開鍵認証接続であればそれは必要なくなります。)

IP制限

それでは、サーバ(host_server)に接続できるIPアドレスを制限してみます。

指定したIPアドレスを拒否する

サーバ側でhosts.denyファイルを変更します。

vim /etc/hosts.deny
hosts.deny
ALL:ALL

この設定では、すべてのIPアドレスからの接続を拒否しているので
client_machine1、client_machine2 どちらからとも接続できないことを確認します。

ssh 172.20.0.3
=> ssh_exchange_identification: read: Connection reset by peer

接続できないことが確認できました。

指定したIPアドレスを許可する

次は、client_machine1: 172.19.0.4のIPアドレスのみ許可してみます。
先程と同様に、今度はhosts.allowファイルを変更します。

vim etc/hosts.allow
hosts.allow
ALL:172.19.0.4

接続してみます。

client_machine1: 172.19.0.4 => success
client_machine2: 172.19.0.5 => failed

期待通りの結果になりました。

おわりに

普段はソフトウェア開発をしているので、サーバやネットワークといったインフラ周りは慣れないですね。

次回のテーマは「ユーザに権限を付与する」です。

40
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?