Help us understand the problem. What is going on with this article?

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

背景

先日、「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

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

おわりに

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした