Amazon Inspector 入門

Amazon Inspectorって?

自動化されたセキュリティ評価サービス。 Amazon EC2 インスタンスのネットワークアクセスと、そのインスタンスで実行しているアプリケーションのセキュリティ状態をテストできる。

Amazon Inspector を使用すると、どのようなことができるのですか?

開発およびデプロイパイプライン全体で、または静的な本番システムに対してセキュリティ上の脆弱性の評価を自動化することができます。これにより、セキュリティテストを開発および IT オペレーションの通常の一部にすることができます。

評価結果はリストが作成される。 Amazon InspectorコンソールやAPIを介して詳細な評価レポートを入手できる。

Amazon Inspector の利点

  • 自動セキュリティチェックを通常のデプロイおよび本番プロセスに統合

フォレンジックトラブルシューティング、またはアクティブな監査目的のために AWS リソースのセキュリティを評価します。

  • アプリケーションのセキュリティ問題を発見

アプリケーションのセキュリティ評価を自動化し、脆弱性を予防的に特定しますこれにより、新しいアプリケーションの開発と反復実行を迅速に行い、ベストプラクティスやポリシーへのコンプライアンス状況を評価できます。

  • AWS リソースのより深い理解

mazon Inspector が生み出す調査結果を確認して、AWS リソースのアクティビティおよび設定データについて常に情報を入手できる。

Amazon Inspector の評価

事前に定義されたルールパッケージを使用でき、こうしたルールパッケージは一般的なセキュリティのベストプラクティスと脆弱性の定義にマッピングされています。

Amazon Inspector の評価テンプレート

評価の実行を定義するために、ユーザーは Amazon Inspector で評価テンプレートを作成する。この評価テンプレートには、以下を割り当てる。

  • 評価ターゲットを評価するためのルールパッケージ
  • 評価実行時間
    • 15 分
    • 1 時間 (推奨)
    • 8 時間
    • 12 時間
    • 24 時間
  • 評価の実行状態と結果に関する通知の送信先である Amazon SNS トピック
  • 評価の実行によって生成された結果を割り当てることができる Amazon Inspector 固有の属性 (キー/値のペア)

ルールパッケージとは何ですか?

ルールパッケージは、評価テンプレートと評価の実行の一部として構成されるセキュリティチェックのコレクションです。Amazon Inspector のルールパッケージには、Amazon EC2 インスタンスについてネットワークのアクセス可能性をチェックするネットワークの到達可能性ルールパッケージと、Amazon EC2 インスタンス脆弱性と問題のある設定をチェックするホスト評価のルールパッケージの 2 種類があります

Amazon Inspector の評価の実行とは?

評価の実行は、指定したルールパッケージを使用して評価ターゲットの構成、インストールされたソフトウェア、動作を分析し、潜在的なセキュリティ上の問題を発見するプロセスです。

Amazon Inspector の評価実行中にパフォーマンスへの影響はありますか?

ネットワークの到達可能性のルールパッケージを使用してエージェントレス型の評価を実行する場合、アプリケーションのパフォーマンスに対する影響はありません。Amazon Inspector エージェントを使用すると、評価実行時のデータ収集フェーズにおけるパフォーマンスへの影響を最小限に抑えることができます。

評価ターゲットとは?

評価対象となる Amazon EC2 インスタンスの集合。 すべてのインスタンスを評価ターゲットに含めることも、Amazon EC2 タグを使用して一部のインスタンスを指定することもできます。

評価の実行中に検出された潜在的なセキュリティ上の問題を所見と呼ぶ。 所見は Amazon Inspector コンソールに表示されるか、API を介して検索、およびセキュリティの問題の詳細な説明およびそれを修正する方法についての推奨事項の両方を含んでいます。

脆弱性の分析対象となるソフトウェア

OSのパッケージマネージャーでインストールされたソフトウェアの脆弱性を評価する。

  • 評価できる
  • 評価できない
    • make config
    • make install
    • Puppet
    • Ansible

評価について

評価の種類 ルールパッケージの種類 内容 EC2インスタンスのエージェントの有無
ネットワーク評価 ネットワークの到達可能性 EC2 インスタンスについてネットワークのアクセス可能性をチェックする 不要 (有ればより詳細な評価レポートを生成)
ホスト評価 共通脆弱性識別子、Center for Internet Security (CIS) ベンチマークAmazon Inspector のセキュリティのベストプラクティス、実行時の動作の分析 EC2 インスタンス脆弱性と問題のある設定をチェックする 必要
  • NAT を使用しているインスタンスの評価もサポートしており、ユーザーの設定は必要ない。
  • プロキシ環境はLinuxならHTTPSプロキシを、WindowsならWinHTTPプロキシがサポートされている。

エージェントの導入方法

  • マニュアルでインストール
  • AWS Systems Manager Run Command ドキュメント (AmazonInspector-ManageAWSAgent) を用いて一回きりのロード
  • EC2 User Data Function を用いて自動エージェントインストール
  • AWS Lambda を用いてエージェントの自動インストール
  • EC2 コンソールまたは AWS Marketplace から予めインストールされた Amazon Inspector エージェントと共にAmazon Linux AMI を用いて EC2 インスタンスを起動

制限

リソース デフォルトの制限
評価ターゲット 50
実行しているエージェント 500
評価点プレートの数 500
評価の実行の作成数 50,000

Pycharm で Vim のプラグインを入れてから実行のショートカットが使えなくなった時

Vim を入れることで Keymap の設定に変更がかかるとショートカットが変わる。 Vim を使いながらも IDE のショートカットを有効にすると良い。

Preferences > Editor > Vim Emulation > Run All Cells の Handler を IDE に設定 > OKで閉じる

PowerShell で AWS CLI のプロファイルを環境変数に設定する

Windows 端末の PowerShellAWS CLI を利用する環境を想定。

AWS CLIで複数のプロファイルを登録していたり、IAMロールをスイッチする使い方をする場合、以下のコマンドを実行してプロファイルを指定することができます。

> $env:AWS_PROFILE = YourProfileName

ちなみに環境変数で設定しない場合はコマンドの末尾に--profile プロファイル名を付けばOK。

コマンド例

> aws ec2 describe-instances --profile YourProfileName

fluentd を使って S3 にログを集約する

環境

ソフトウェア バージョン
Ubuntu 16.04
td-agent 1.2.6
Apache 2.4

期待値

apacheアクセスログを s3 のバケット内に保管する。

設定方法

1. Fluentd をインストール

インストールスクリプトが公開されているため実行してインストールする。 URLにOSのバージョンが含まれているため、インストール対象のOSバージョンに合ったURLを確認すること。

Ubuntu のバージョン確認

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.5 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.5 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
$

インストール実行。

curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-xenial-td-agent3.sh | sh

td-agentがインストールされる。fluentdではない。

$ which td-agent
/usr/sbin/td-agent
$
$ td-agent --version
td-agent 1.2.6
$

2. Fluentdの設定

/etc/td-agent/td-agent.confを編集する。 対象となるログについて指定するsourceとログの出力設定を指定するmatchを設定する。

apache2 のログを転送対象にする。

<source>
  @type tail
  path /var/log/apache2/access.log
  tag td.apache2.access
  pos_file /var/log/td-agent/apache2.access.log.pos
  format apache2
</source>

続けてログをS3へ転送する設定も追記する。

<match td.apache2.access>
  @type s3
  s3_bucket logi-fluentd
  s3_region ap-northeast-1
  time_slice_format %Y%m%d%H%M
</match>

今回使用しないmatchコメントアウトする。(残したままにしているとエラーになったため)

#<match td.*.*>
#  @type tdlog
#  @id output_td
#  apikey YOUR_API_KEY
#
#  auto_create_table
#  <buffer>
#    @type file
#    path /var/log/td-agent/buffer/td
#  </buffer>
#
#  <secondary>
#    @type file
#    path /var/log/td-agent/failed_records
#  </secondary>
#</match

ログに対するアクセス権限でエラーにならないようにする。 /etc/init.d/td-agentを編集し、以下の箇所をrootに変更する。

TD_AGENT_USER=root
TD_AGENT_GROUP=root

EC2にS3に対する書き込みを許可するIAMを設定する。 今回は検証なのでAmazonS3FullAccessのポリシーで設定。

fluentd のプロセスを再起動する。

$ sudo /etc/init.d/td-agent restart

apache にアクセスしてしばらく待つと、S3 に ログが保管されていることを確認できた。

docker + nginx + uwsgi + flask の構築

環境

software version
Ubuntu 18.04
Docker 18.09.0
docker-compose 1.23.2

ディレクトリ構成

┣ myServer
    ┣ app
        ┣ Dockerfile
        ┣ main.py
        ┣ requirements.txt
        ┣ uwsgi.ini
    ┣ docker-compose.yaml
    ┣ nginx
        ┣ Dockerfile
        ┣ nginx.conf

1. docker-compose.yamlの作成

version: "3"
services:

  uwsgi:
    # ビルドするDockerfileのでディレクトリ相対パス
    build: ./app
    # 指定したパスをコンテナにマウントする。"ホストのパス:コンテナのパス"となる
    volumes:
      - ./app:/var/www/
    # 解放するポートを指定。"ホスト:コンテナ"のマッピング となる
    ports:
      - "3031:3031"
    # コンテナ内の環境変数を指定する
    environment:
      TZ: "Asia/Tokyo"

  nginx:
    build: ./nginx
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      # nginxのログをホストOSの /tmp/nginx_log に出力する
      - /tmp/nginx_log:/var/log/nginx
    links:
      - uwsgi
    ports:
      - "4231:80"
    environment:
      TZ: "Asia/Tokyo"

2. app の設定

Dockerfile

# ベースイメージ
FROM python:3.6

RUN mkdir /var/www
# workdirの指定
WORKDIR /var/www

# 依存Pythonライブラリ一覧コピー
COPY requirements.txt ./

# 依存Pythonライブラリインストール
RUN pip install --no-cache-dir -r requirements.txt

CMD ["uwsgi","--ini","/var/www/uwsgi.ini"]
  • --no-cache-dir: キャッシュを無効にする

  • -r: requirements.txtに記載されているパッケージを一括インストールする

main.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

requirements.txt

Flask
uwsgi

uwsgi.ini

[uwsgi]
wsgi-file = main.py
callable = app
master = true
processes = 1
socket = :3031
chmod-socket = 666
vacuum = true
die-on-term = true
py-autoreload = 1
  • wsgi-file: Flaskアプリケーションファイル
  • callable: このファイル内のFlaskアプリケーションオブジェクトの名前
  • master: オプションを指定すると、アプリケーションサーバーとして起動したとき、ソケットを閉じずに再起動したりできるようにします。
  • processes: uWSGIの最大ワーカープロセス数
  • socket: WEBサーバとWEBアプリケーションをつなぐポートもしくはUNIXソケットファイルを指定する
  • chmod-socket: UNIXソケットのファイルパーミッション。指定が無い場合はデフォルトで 666 になる
  • vacuum: プロセス終了時に生成されたすべてのファイル/ソケットを削除する
  • die-on-term: Upstartでプロセスが期待通りに処理されるために設定。uWSGIはプロセスを再ロードせずに強制終了します。
  • py-autoreload: コードの自動リロード機能。チェックサイクルごとにモジュールツリー全体をスキャンします。

余談

filesocket (/file/path/uwsgi.sock) を使った nginx -> uWSGI の通信の確立の仕方が分からなかった。

試したこと

  • server unix:///tmp/uwsgi.sock
  • server uwsgi:/tmp/uwsgi.sock

参考

3. nginx の設定

Dockerfile

FROM nginx
CMD ["nginx", "-g", "daemon off;", "-c", "/etc/nginx/nginx.conf"]

nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    upstream uwsgi {
        server uwsgi:3031;
    }

    server {
        listen 80;
        charset utf-8;

        location / {
            include uwsgi_params;
            uwsgi_pass uwsgi;
        }

    }
}

4. dockerコンテナのビルドと実行

docker-compose.yaml と Dockerfile の内容に従ってコンテナをビルドする。

$ sudo docker-compose build
Building uwsgi
Step 1/6 : FROM python:3.6
 ---> 1ec4d11819ad
Step 2/6 : RUN mkdir /var/www
 ---> Using cache
 ---> 0cba8c49bdd8
Step 3/6 : WORKDIR /var/www
 ---> Using cache
 ---> 8d210dacf801
Step 4/6 : COPY requirements.txt ./
 ---> Using cache
 ---> 21c64fe227f5
Step 5/6 : RUN pip install --no-cache-dir -r requirements.txt
 ---> Using cache
 ---> 2836363b7b84
Step 6/6 : CMD ["uwsgi","--ini","/var/www/uwsgi.ini"]
 ---> Using cache
 ---> 1f55d63545b3
Successfully built 1f55d63545b3
Successfully tagged myserver_uwsgi:latest
Building nginx
Step 1/2 : FROM nginx
 ---> 568c4670fa80
Step 2/2 : CMD ["nginx", "-g", "daemon off;", "-c", "/etc/nginx/nginx.conf"]
 ---> Using cache
 ---> ac6b828f2312
Successfully built ac6b828f2312
Successfully tagged myserver_nginx:latest
$

docker-compose.yaml のコンテナを実行する。

$ sudo docker-compose up -d
Creating network "myserver_default" with the default driver
Creating myserver_uwsgi_1 ... done
Creating myserver_nginx_1 ... done
$

-d: バックグラウンドで実行する

実行中のdockerコンテナのプロセスを確認。

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
28901248f4c9        myserver_nginx      "nginx -g 'daemon of…"   53 seconds ago      Up 52 seconds       0.0.0.0:4231->80/tcp     myserver_nginx_1
860cd0fe644e        myserver_uwsgi      "uwsgi --ini /var/ww…"   54 seconds ago      Up 52 seconds       0.0.0.0:3031->3031/tcp   myserver_uwsgi_1
$

nginx にアクセスして検証する。

f:id:dafukui:20181220145051p:plain

表示できた。

$ cat /tmp/nginx_log/access.log
xxx.xx.73.51 - - [20/Dec/2018:14:49:10 +0900] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.91" "-"
$

アクセスログもホストOSで確認することができた。

ubuntu で Ansible を使う

1. 構成

server ---> client
役割 IP OS ホスト名
server 10.0.0.204 ubuntu 18.04 develop01
client 10.0.1.217 ubuntu 16.04 develop02

2. Ansibleの導入

インストール

ubuntu@develop01:~$ sudo apt-get update
ubuntu@develop01:~$ sudo apt-get install software-properties-common
ubuntu@develop01:~$ sudo apt-add-repository --yes --update ppa:ansible/ansible
ubuntu@develop01:~$ sudo apt-get install ansible

バージョン確認

$ ansible --version

ansible 2.7.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/ubuntu/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]

3. 秘密鍵、公開鍵の作成

ubuntu@develop01:~$ mkdir .ssh
ubuntu@develop01:~$ cd .ssh
ubuntu@develop01:~/.ssh$ ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ubuntu/.ssh/id_rsa.
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:fMv/Wvlb/igct568ePTx4HeyMkANomdxEvA3xqqCQ7Q your-email@example.com
The key's randomart image is:
+---[RSA 4096]----+
|      ....       |
|       .+.o      |
|  .    ..==o     |
| . .  ..o+...    |
|  E    oS..      |
| . .   . o... +o |
|  o . .   oo =o++|
|   . .     .=+==*|
|            +OO*B|
+----[SHA256]-----+
ubuntu@develop01:~/.ssh$

作成した秘密鍵、公開鍵を確認。

ubuntu@develop01:~/.ssh$ ll
合計 16
drwxrwxr-x 2 ubuntu ubuntu 4096 1214 15:19 ./
drwxr-xr-x 3 ubuntu ubuntu 4096 1214 15:18 ../
-rw------- 1 ubuntu ubuntu 3326 1214 15:19 id_rsa
-rw-r--r-- 1 ubuntu ubuntu  748 1214 15:19 id_rsa.pub
ubuntu@develop01:~/.ssh$

ansible の playbook を実行するとデフォルトでrootに対してSSHを行う。 今回はrootに対するSSH接続を許可する。

server で作成した公開鍵を client の~/.ssh/authorized_keysに追記。

/etc/ssh/sshd_configに以下を設定。

PermitRootLogin prohibit-password

playbookの実行を許可するホストの管理を行う。

/etc/ansible/hostsの末尾に接続先の情報を追記。

# This is the default ansible 'hosts' file.
#
# It should live in /etc/ansible/hosts
#
#   - Comments begin with the '#' character
#   - Blank lines are ignored
#   - Groups of hosts are delimited by [header] elements
#   - You can enter hostnames or ip addresses
#   - A hostname/ip can be a member of multiple groups

# Ex 1: Ungrouped hosts, specify before any group headers.

## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10

# Ex 2: A collection of hosts belonging to the 'webservers' group

## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110

# If you have multiple hosts following a pattern you can specify
# them like this:

## www[001:006].example.com

# Ex 3: A collection of database servers in the 'dbservers' group

## [dbservers]
##
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57

# Here's another example of host ranges, this time there are no
# leading 0s:

## db-[99:101]-node.example.com

[client]
10.0.1.217

Ansibleで client のタイムゾーンと言語設定を変更する。 以下のファイルを用意。

/etc/ansible/common.yml

---
- hosts: all
  become: yes
  roles:
    - system
    - lang

/etc/ansible/roles/lang/tasks/main.yml

 name: install language-pack-ja
  apt:
    name: language-pack-ja
    update_cache: yes
- name: create locale ja_JP.UTF-8
  locale_gen:
    name: ja_JP.UTF-8
- name: change locale
  command: update-locale LANG=ja_JP.UTF-8

/etc/ansible/roles/system/tasks/main.yml

- name: set timezone to Asia/Tokyo
  timezone:
    name: Asia/Tokyo

まずは--checkを付与しドライランする。

ubuntu@develop01:/etc/ansible$ ansible-playbook -i hosts common.yml --check

PLAY [all] *************************************************************************************************

TASK [Gathering Facts] *************************************************************************************
Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':
ok: [10.0.1.217]

TASK [system : set timezone to Asia/Tokyo] *****************************************************************
changed: [10.0.1.217]

TASK [lang : install language-pack-ja] *********************************************************************
changed: [10.0.1.217]

TASK [lang : create locale ja_JP.UTF-8] ********************************************************************
changed: [10.0.1.217]

TASK [lang : change locale] ********************************************************************************
skipping: [10.0.1.217]

PLAY RECAP *************************************************************************************************
10.0.1.217                 : ok=4    changed=3    unreachable=0    failed=0

ubuntu@develop01:/etc/ansible$
  • -i: ホストリストのパスを指定(デフォルトは /etc/anonymous/hosts)
  • --check: ドライラン実行

client の状態

root@develop02:~/.ssh# loclae
No command 'loclae' found, did you mean:
 Command 'locale' from package 'libc-bin' (main)
loclae: command not found
root@develop02:~/.ssh# locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
root@develop02:~/.ssh#
root@develop02:~/.ssh#
root@develop02:~/.ssh# echo $TIMEZONE

root@develop02:~/.ssh#
root@develop02:~/.ssh#
root@develop02:~/.ssh# timedatectl
      Local time: Mon 2018-12-17 05:03:53 UTC
  Universal time: Mon 2018-12-17 05:03:53 UTC
        RTC time: Mon 2018-12-17 05:03:53
       Time zone: Etc/UTC (UTC, +0000)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no
root@develop02:~/.ssh#

変更実行

$ ansible-playbook -i hosts common.yml

再ログイン後に設定確認

ubuntu@develop01:~$ locale
LANG=ja_JP.utf8
LANGUAGE=
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=
ubuntu@develop01:~$
ubuntu@develop01:~$ timedatactl
      Local time: Mon 2018-12-17 14:06:21 JST
  Universal time: Mon 2018-12-17 05:06:21 UTC
        RTC time: Mon 2018-12-17 05:06:21
       Time zone: Asia/Tokyo (JST, +0900)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no
ubuntu@develop01:~$

変更の反映を確認。

ユーザansibleを作成してplaybook commandを実行するといくつかエラーが出たので、対処と併せて記録。

"module_stdout": "sudo: unable to resolve host" 接続先サーバの /etc/hosts にホスト名を設定。

"module_stdout": "sudo: a password is required\r\n"

usernameansible_sudo_pass を指定する

$ ansible-playbook -i hosts common.yml --user=username --extra-vars "ansible_sudo_pass=yourpassword" --check

ヤマハRTX830 の設定

既存のルータをヤマハRTX830と置き換えることにした。

設定はWeb GUIとコマンドで行う方法がある。 Web GUIでは設定できないパラメータ(DHCPの割当予約)があるためコマンドによる設定を行う。

1. telnetで接続

Teratarmを使用。192.168.100.1にtelnet接続する。

RTX830 Rev.15.02.01 (Thu Jun 22 16:17:56 2017)
Copyright (c) 1994-2017 Yamaha Corporation. All Rights Reserved.
To display the software copyright statement, use 'show copyright' command.
AA:BB:CC:DD:EE:FF, AA:BB:CC:DD:EE:FF
Memory 256Mbytes, 2LAN
> 

2. ユーザー変更

以下のコマンドを実行し、管理ユーザにスイッチする。

administrator

> 
> adadministrator 
Password: 
# 

3. LANポート1のIPアドレス変更

既存のルータとRTX830を置き換えるにあたってデフォルトゲートウェイのアドレスを合わせたいため、以下のコマンドを実行しルータのIPアドレスを変更する。

ip lan1 address 192.168.10.1/24

> 
> ip lan1 address 192.168.10.1/24

実行するとルータのIPアドレスが変更され、telnet通信が切断される。 前回のセッションがタイムアウトするまでしばらく時間を置いてから192.168.10.1に再度telnetする。

4. DHCPの設定

DHCPの割当範囲を100から開始させて、予約 & 空きはいつでも使える状態にしておきたかったが、設定がよくわからなかった。

今回は以下のように設定した。

範囲 用途
192.168.10.1-192.168.10.99 予約 & 空き
192.168.10.100-192.168.10.199 クライアント割り当て

administratorでログインした状態で以下を実行する。

dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.10.1-192.168.10.199/24 except 192.168.10.8-192.168.10.99

dhcp scope lease type 1 bind-priority
dhcp scope bind 1 192.168.10.2 ethernet AA:BB:CC:DD:EE:FF
dhcp scope bind 1 192.168.10.3 ethernet AA:BB:CC:DD:EE:FF

設定を保存する。

save

余談

公式サイトの手順に沿ってbind-onlyを設定したらDHCPでアドレスが割り当てできなくて少し考えた。

参考 : DHCP認証機能