My Tracking

My Tracking

記憶力の低下が気になるアラフォー男の備忘録

WindowsServer2016をインストールをしてみた

WindowsServer2016をダウンロードし、インストールしてみたので、その備忘録。

検証環境

検証環境は、下記の前提に基づく。

  • Windows10にインストールされたHyper-vホストに仮想マシンを作成する。
  • 作成した仮想マシンにWindowsServer2016 Technical Preview 5 をインストールする。
  • インストール際は、ISOを利用し、新規インストールする。
  • ServerCoreモードでインストールし、GUIはインストールしない。
  • ServerCoreモードでインストール後は、極力Powershellで初期セットアップを行う。

※以降の手順は、検証のための手順のため、公式の手順などではないです。

まずは、Hyper-V上に仮想マシンを作成する。

まずは、WindowsServer2016 Technical Preview 5をインストールすための 仮想マシンHyper-v上に作成する。

Hyper-v上の仮想マシン作成ウィザードを起動し、仮想マシンを適当に入力し、[次へ]

[次へ]

[第2世代]を選択し、[次へ]

[メモリ]設定し(ここでは1024MB)、[次へ]

作成済みの仮想スイッチを選択し、[次へ]

仮想ハードディスクを選択し、サイズを指定する(ここでは25GB)。その後、[次へ]

下記選択し、[次へ]

[完了]

WindowsServer2016をインストールする。

作成した仮想マシンの[DVDドライブ]にダウンロードしたisoファイルを設定し、仮想マシンを起動する。

[次へ]

[今すぐインストールする]

下記を選択し、[次へ]

同意し、[次へ]

カスタムを選択し、[次へ]

パーティションはとりあえず、Cドライブのみとするため、 [次へ]

インストールが開始される。

20分ぐらいすると、下記の画面に遷移した。

[OK]を選択

Administratorのパスワードを設定する。

Administratorのパスワードを設定した。

[OK]を選択

ログインできることを確認する。

次回以降、この環境に、Powershellでコマンドベースで初期設定を行う。

CentsOS7にHubotをインストールしてみた

いまさらながら、下記書籍を使用し、slackに関していろいろ試すためにまずは環境整備。 Hubotを利用する環境を CentsOS7に整えるための備忘録。

Slack入門 [ChatOpsによるチーム開発の効率化]

Slack入門 [ChatOpsによるチーム開発の効率化]

目次

 環境

下記のとおり、CentOS7.2を利用する。ここでは、まだNode.jsはインストールされていないため 後で、インストールする。

[myhubot@cent7 bot]$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[myhubot@cent7 bot]$

 最初に(少しハマったこと・・・)

  • rootでインストール作業しない

rootでインストールすると、以降の作業の局面で、下記のようなエラーに遭遇する。 パーミッション変更などで、対応してみたが、別の一般ユーザーを新たに作り、 セットアップをしたら、すんなりいったので、ここでは、別の一般ユーザー「myhubot」を作ったうえで作業する。

[root@cent7 bot]# yo hubot
/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/configstore/node_modules/mkdirp/index.js:90
                    throw err0;
                    ^

Error: EACCES: permission denied, mkdir '/root/.config'
    at Error (native)
    at Object.fs.mkdirSync (fs.js:794:18)
    at sync (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/configstore/node_modules/mkdirp/index.js:71:13)
    at Function.sync (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/configstore/node_modules/mkdirp/index.js:77:24)
    at Object.create.all.get (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/configstore/index.js:38:13)
    at Object.Configstore (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/configstore/index.js:27:44)
    at new Insight (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/insight/lib/index.js:37:34)
    at Object.<anonymous> (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/lib/cli.js:172:11)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
[root@cent7 bot]#
  • node.jsは v4.2を利用した。

2016年10月時点で、 node.jsは「v4.6」がダウンロード可能な模様だが、参考URLのとおり、「v4.2」を利用した。

以上を踏まえて、(いいか悪いかは別として)一般ユーザー「myhubot」で node.jsは v4.2を利用する前提で、以降を実施した。

 参考URL

基本下記をそのまま実施したらうまくいった。(ありがたや~)

qiita.com

 nvmの用意

nvmはnode.jsのバージョンを簡単に切り替えられるツールとのことなので、 まずは、インストール。

[myhubot@cent7 ~]$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.                                                                               29.0/install.sh | bash
~ 中略 ~
[myhubot@cent7 ~]$ source ~/.bashrc
[myhubot@cent7 ~]$ nvm --version
0.29.0
[myhubot@cent7 ~]$ 

 node.jsをインストール

[myhubot@cent7 ~]$ nvm install v4
~ 中略 (いろいろ出力され・・)~
Now using node v4.6.1 (npm v2.15.9)
[myhubot@cent7 ~]$

「node v4.6.1」がインストールされた模様。使いたいのは「v4.2」なので、 明示的に指定し、インストールする。

[myhubot@cent7 ~]$ nvm install v4.2
Downloading https://nodejs.org/dist/v4.2.6/node-v4.2.6-linux-x64.tar.xz...
######################################################################## 100.0%
WARNING: checksums are currently disabled for node.js v4.0 and later
Now using node v4.2.6 (npm v2.14.12)
[myhubot@cent7 ~]$ 

 利用できるバージョンを確認とデフォルト利用バージョンの設定

[myhubot@cent7 ~]$ nvm ls
->       v4.2.6
         v4.6.1
node -> stable (-> v4.6.1) (default)
stable -> 4.6 (-> v4.6.1) (default)
iojs -> N/A (default)
[myhubot@cent7 ~]$

デフォルトv4.6.1となっているようなので、 下記のとおり、明示的に「v4.2」を使うことを指定するとともに、

[myhubot@cent7 ~]$ nvm use v4.2
Now using node v4.2.6 (npm v2.14.12)
[myhubot@cent7 ~]$

デフォルト利用するバージョンをv4.2に設定する。

[myhubot@cent7 ~]$ nvm alias default v4.2.2
! WARNING: Version 'v4.2.2' does not exist.
default -> v4.2.2 (-> N/A)
[myhubot@cent7 ~]$

 Hubotのインストール

下記のように、Hubotをインストールする

[myhubot@cent7 ~]$ npm install -g hubot coffee-script
[myhubot@cent7 ~]$ npm install -g yo generator-hubot

なお、「yo」とはYeomanとうhubotのプロジェクトの構築ツール?のようなもので 当ツールの雛形を利用したプロジェクトの作成が推奨されている模様。

 プロジェクトの新規作成

yoコマンドを使用し、プロジェクト新規作成する。 ここでは、myhubotユーザーのホームディレクトリに「botディレクトリを 作成し、そこで、作業したものとする。

[myhubot@cent7 ~]$ pwd
/home/myhubot
[myhubot@cent7 ~]$ mkdir bot
[myhubot@cent7 ~]$ cd bot
[myhubot@cent7 bot]$ yo hubot
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== Yes
                     _____________________________
                    /                             \
   //\              |      Extracting input for    |
  ////\    _____    |   self-replication process   |
 //////\  /_____\   \                             /
 ======= |[^_/\_]|   /----------------------------
  |   | _|___@@__|__
  +===+/  ///     \_\
   | |_\ /// HUBOT/\\
   |___/\//      /  \\
         \      /   +---+
          \____/    |   |
           | //|    +===+
            \//      |xx|

? Owner <user@example.com>
? Bot name bot
? Description A simple helpful robot for your Company
? Bot adapter campfire

~ 中略 ~

下記設定の入力が求められるが、参考URLのとおり、デフォルト(全部Enter)で設定してみた。

  • Owner User・・・ユーザー(Emailアドレス)
  • Bot name ・・・Botの名前
  • Description ・・・Botの説明
  • Bot adapter ・・・Adapterの設定

 botを起動

下記のように、hubotを起動する。 下記の通り、エラーがでるが、ここではひとまず無視してGO!

[myhubot@cent7 bot]$  bin/hubot
bot> [Tue Oct 18 2016 09:03:50 GMT+0900 (JST)] WARNING Loading scripts from hubot-scripts.json is deprecated and will be removed in 3.0 (https://github.com/github/hubot-scripts/issues/1113) in favor of packages for each script.

Your hubot-scripts.json is empty, so you just need to remove it.
[Tue Oct 18 2016 09:03:50 GMT+0900 (JST)] ERROR hubot-heroku-alive included, but missing HUBOT_HEROKU_KEEPALIVE_URL. `heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s  | grep web-url | cut -d= -f2)`
[Tue Oct 18 2016 09:03:51 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379

プロンプトが入力待ちになったら、「bot ping」と実行する。 「PONG」と返答されれば、正常に稼働している模様。

bot> bot ping
bot> PONG
bot>

「たったこれだけ?」と思うところだが、まぎれもなくコンピュータのボットと会話が成立していると思うと、 少しうれしい。

この環境と先の書籍をを利用して、いろいろ試していく予定。

HTTPクッキーの属性について

HTTPの属性について、詳しく調べる必要があったため、その備忘録。

目次

学習教材

WEBアプリケーションのセキュリティに関しては、下記の本で学んだため、 再度、本書を本棚より引っ張りだした。

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

そもそもクッキーとは

HTTPプロトコルは、サーバ側では状態を保持しない(ステートレス)なものであるため、 アプリケーションで状態を保持したい要求が発生する。

例えば、下記用のもの。

・オンラインのショッピングサイトで、商品カタログから「購入」ボタンを押した商品を覚えておく。
・ログインした後で、認証状態を覚えておく。


など。

上記のように、アプリケーションの状態を覚えておくことをセッション管理と呼ぶ(と思う) このセッション管理をHTTPで実現する目的でクッキー(Cookie)という仕組みが導入された。

実例

下記のような、cakePHPを利用したWEBアプリケーションの ログイン画面があったとして、ログインを実行する。

ログインアクションを実行した際のHTTPリスクエスとレスポンスヘッダは 下記のようになる。(Fiddlerで確認)

このとき、サーバ側でログインの状態を覚えておくように レスポンスヘッダーに「Set-Cookie」でクッキーをブラウザに設定される。

ログイン後の画面。

ログイン以降は、設定されたクッキーを今度は、リクエストヘッダーの「Cookie」ヘッダに 設定し、リクエストされることで、アプリケーション上で状態(認証状況など)が覚えられる。

クッキーの属性

クッキーを発行する際は、様々なオプションの属性を設定可能。 主な属性は下記のとおり。

属性 意味
Domain ブラウザがクッキー値を送信するサーバのドメイン
Path ブラウザがクッキー値を送信するURLのでディレクト
Expires クッキー値有効期限。指定しない場合はブラウザの終了まで
Secure SSLの場合のみクッキーを送信する
HttpOnly この属性が指定されたクッキーはJavaScriptからアクセスできない

このうち、セキュリティ上重要な属性は、Domain、Secure、HttpOnly

Domain属性

クッキーは、デフォルトでは、クッキーをセットしたサーバにのみ送信される。

セキュリティ上これが最も安全となるが、複数のサーバに送信されるクッキーを生成したい場合は、 Domain属性を指定可能。

例えば、「Domain=example.jp」という属性を指定したクッキーがどのサーバに送信されるかは 下記のとおり。

ドメイン クッキー送信
a.example.jp 送信される
b.example.jp 送信される
a.example.com 送信されない

異なるドメインに対するクッキーが設定できると、セッションIDの固定化攻撃などの手段として、 利用されるので、通常、最も送信範囲が狭くなる「Domain属性をしていない」状態が良いとされる。

Secure属性

Secureをつけたクッキーは、SSL通信の場合のみサーバに送信される。

一方Secure属性のついていないクッキーは、SSL通信かどうかに関係なく、 常にサーバに送信される。

ただし、httpsとhttpが混在するサイトでは、セッションIDに対して、クッキーのセキュア属性を 指定すると、httpの場合、クッキーが送信されなくなるため、アプリケーションが動作しなくなることが あるので、注意する。

HttpOnly属性

HttpOnly属性は、JavaScriptからアクセスできないクッキーを設定する。

クッキーとして、格納されたセッションIDを盗み出す攻撃に典型例はクロスサイトスクリプティング 攻撃により、JavaScriptを悪用してクッキーを盗み出すというものがある。

HttpOnly属性をつけることで、クロスサイトスクリプティングを完全に防ぐことはできないが、 攻撃を難しくすることはできるため、セッションIDには、HttpOnly属性をつけるとよいとされる。

WindowsUpdate後、Hyper-Vの仮想マシンが「アクセス拒否エラー」で起動しない。

Windows10の2016年9月のアップデート後、 OSのビルドを「14393.222」にしたところ、 なぜか、Hyper-V仮想マシンが起動しない現象に遭遇したため、その備忘録。

なお、本記事はあくまで個人的な対応手順となり、公式かつ正確な手順でないため、その点は留意されたい。

目次

事象

WindowsUpdate後、いつも利用しているHyper-V仮想マシンが「保存完了」状態となっていた。

起動しても、下記のようなエラーとなる。

①仮想ディスクを一旦削除し、再設定してみる。⇒事象変わらず

http://blog.tpc.jp/2011/05/hyper-v-os-id.html

上記エントリを参考に、仮想ディスクを一旦削除し、再設定。

一旦、削除して、

仮想マシンを再度作成

その後、当該仮想マシンを起動してみるが、事象変わらず。

②icaclsコマンド実行。⇒事象変わらず

https://support.microsoft.com/ja-jp/kb/2249906

上記エントリを参考に、下記のように、icaclsコマンドを実行し、 その後、当該仮想マシンを起動してみるが、事象変わらず。

icacls "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\Linux.vhdx" /grant "NT VIRTUAL MACHINE\366C2BDE-DF7B-45D9-A2ED-4C0A91BD453F":(F)

仮想マシンネットワークアダプタ削除・追加。⇒事象が治る

エラーメッセージを改めて読んでみると、先頭行に ネットワークアダプタに関連するメッセージとなるため、

仮想マシンネットワークアダプタを一度、削除。

その後、再度追加して、

仮想スイッチに紐づける。

そして、仮想マシンを起動すると、正常に起動した。

根本原因はわからないが、WindowsUpdateの過程で、物理的なネットワークアダプタを 仮想スイッチ側でうまく認識できなくなったものと思われる。

【書評】DeNAのサイバーセキュリティ Mobageを守った男の戦いの記録

セキュリティに関する下記の書籍が発売されていたので、Amazon電子書籍版を購入。

DeNAのサイバーセキュリティ Mobageを守った男の戦いの記録

DeNAのサイバーセキュリティ Mobageを守った男の戦いの記録

筆者については、下記の書籍などで元IBMの優秀なインフラエンジニアであることなどを以前から知っていたことと、

下記の記事などでも、『1人CSIRT』を実践していたことなども紹介されていたため、活動を読んでみたかったのが、購入の動機。

itpro.nikkeibp.co.jp

以下、本書内で、気になった箇所等。

 セキュリティ分野はコンピュータサイエンス総合格闘技

サイバーセキュリティ分野では、幅広い要素技術に関する知識をもっていることの 重要性が再三言及されており、筆者は、それを「コンピュータサイエンス総合格闘技」と 表現している。

その幅広さゆえ、純粋にエンジニアとして、技術的に興味を掻き立てられていいた経緯が 下記のように述べられている。

(本書「P325」)より

学びをすすめていくうちに、サイバーセキュリティの分野は
コンピュータサイエンスの集合体であり、
網羅的に理解するには難易度は高いが、それを実現できた暁には、
技術的にとても面白い地平線が広がっているはすだ。

 エンジニアとしてより長く”食っていける”

(本書「P581」)より

セキュリティの分野は関係する要素技術がとても広く、
かといって浅い知識でよいわけではありません。
半面、得られる充実感や達成感は大きい分野です。

また、セキュリティ対策の潜在ニーズは非常に大きく、
今後すべての企業や組織で必要とされるはずです。

それはつまり、高いセキュリティ技術を身につければ、多くの場面で必要とされる、
要するにエンジニアとして、より長く食っていけるということも同時感じました。

 脆弱性に対応するかどうかの最終判断は事業部で意思決定

筆者の所属するDeNAでは、CSIRT発足にあたり、以下の注文がついたとのこと。

・脆弱性を発見しても”鬼の首”を取ったような態度は取らないこと。
・リスクテークはありえる。発見された脆弱性に対応するかどうかの
 最終判断は事業部で意思決定する。

セキュリティの業務に近いところで仕事をしていると、 脆弱性やそれらが潜在的に抱えるリスクについて、 事業部門や上層部に説明しても、十分に理解してもらえないことを 日々痛感することがある。対応しようとしている脆弱性の問題についても、事業部門側に十分に 理解されないことがあるため、結局リスク分析や対応の要否の意思決定まで、システム部門側で 主体的に行われるというのが、私の所属する会社の実態となるため、脆弱性の対応の意思決定が、 事業部門側で主体的に行われることが個人的には凄いと感じたところ。

 孤独になりやすいからこそ、コミュニティへの参加を

セキュリティ業務に日々、従事していると扱う題材が非常に難解で、 理解されづらいことも多いため、説明をしてもうまく理解されなかったり、 相談できる人が周りにあまりいなかったりと、ある種の「孤独感」を感じることがある。

そんな時は、同じ境遇にいる人たちが集まるコミュニティへの参加が有益であると本書では述べられている。

 「セキュリティ原理主義者」にならない

セキュリティのゴールは、事業スピードを高めることと定義づけ、 人間の意識の向上や協力を全く必要とせず、システム的要素、 仕組化だけで、セキュリティを担保することの難しさについても、 述べられている。セキュリティレベルが高まることだけを追求する 「セキュリティ原理主義者」にならないことが大事であり、 多くの人が納得し、無理なく守れるルール作りの重要性について言及されている。

 挑戦を続け、組織内に変化を浸透させる。

個人的に、最も共鳴したのが、以下の個所。

(本書「P2722」)より

筆者が実践していることは、組織内に変化を浸透させるために、
まずは、自分自身が変化することです。
新しいことへの挑戦を積極的に行うようにしています。

また、過去の慣例や過去に自分自身が下した決断にとらわれることなく、
現時点での最適解を冷静に見極めることを心がけています。

積極的な変化が仮にネガティブな結果をもたらしたとしても、
挑戦したことに対しては、ポジティブな評価をすることが重要です。

多くの挑戦とそれに伴う失敗なくして、新たな成功を得るのは難しいものです。

セキュリティという不確かで成果の見えにくい分野だからこそ、数多くの
挑戦が必要であり、チーム全体が自律的に挑戦を繰り返して変化を
起こす文化を作っていきたいと思っています。

どんなレベルであれ、セキュリティ分野の業務を行い、 日々苦闘している人たちにとっては、救いとなる良書であると思う。

写真バックアップ用のSambaサーバ

子供の写真やデジタルデータには主に下記の製品で、バックアップを取っていて 概ね不満はないが、この機械が壊れたことを考えて、副系のファイルサーバを 余ったPCに立ててみようと思ったため、その備忘録。

目次

 環境

環境は余ったPC上にインストールした CentOS6の32bit版を最小モードでインストーしたもの。

 接続ユーザーを作成する

のちに、samabaへPCから接続するユーザーを作成する。

[root@fileserver ~]# useradd fileuser
[root@fileserver ~]#
[root@fileserver ~]# passwd fileuser
ユーザー fileuser のパスワードを変更。
新しいパスワード:
よくないパスワード: 辞書の単語に基づいています
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
[root@fileserver ~]#

 sambaのインストール

sambaをインストールする。

[root@fileserver ~]# yum install -y samba

[root@fileserver ~]# rpm -qa | grep samba
samba-winbind-3.6.23-36.el6_8.i686
samba-3.6.23-36.el6_8.i686
samba-common-3.6.23-36.el6_8.i686
samba-winbind-clients-3.6.23-36.el6_8.i686
[root@fileserver ~]#

 sambaに接続ユーザーをsambaに紐づける

ユーザ"fileuser"をsambaアクセスユーザにする

[root@fileserver ~]# pdbedit -a fileuser
new password:
retype new password:
Unix username:        fileuser
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-2085749281-3536368019-2575061359-1000
Primary Group SID:    S-1-5-21-2085749281-3536368019-2575061359-513
Full Name:
Home Directory:       \\fileserver\fileuser
HomeDir Drive:
Logon Script:
Profile Path:         \\fileserver\fileuser\profile
Domain:               FILESERVER
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    火, 01  6月 2004 14:01:14 JST
Password can change:  火, 01  62004 14:01:14 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@fileserver ~]#

参考 sambaアクセスユーザのパスワード変更

# smbpasswd linux

sambaアクセスユーザの削除

# pdbedit -x linux

 sambaに共有フォルダの作成

/networkパスを共有パスとして作成
[root@fileserver ~]# mkdir /network
[root@fileserver ~]# chmod 755 /network
[root@fileserver ~]#

 sambaの設定

下記記事の設定をほぼパクらせてもらいました。。 http://kajuhome.com/samba.shtml

[root@fileserver ~]# vi /etc/samba/smb.conf

※下記の設定を変えた
   unix charset = UTF-8
   display charset = UTF-8
   dos charset = CP932

 sambaの再起動

[root@fileserver ~]# vi /etc/samba/smb.conf
[root@fileserver ~]# service smb start
SMB サービスを起動中:                                      [  OK  ]
[root@fileserver ~]#

 sambaの起動設定

[root@fileserver ~]# chkconfig smb on
[root@fileserver ~]# chkconfig --list smb
smb             0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@fileserver ~]#

 PC(クライアント)からのSamba接続

PCから、UNCパス形式(\\サーバ名)で接続

前出の手順で作成したユーザーとパスワードを入力。

以下のフォルダが参照できる。 この『fileuser』はログイン(アクセス)したユーザの個人フォルダで、 『ServerDirectory』は全ユーザがアクセス可能な共有フォルダ(だと思う)

ServerDirectoryを開く。 日本語ファイル名などが正常に作成できることを確認する。

Sambaサーバ側でも、/networkディレクトリ配下に 物理ファイルが作成されていることを確認する。

後は、共有フォルダ上で、作成したファイルが削除できることなどを確認しておく

【sendmail】confBAD_RCPT_THROTTLE設定

あるセキュリティに関連する業者から、スパムメールの緩和策の一つとして、 sendmailの「confBAD_RCPT_THROTTLE」という設定を紹介されたのでその検証。

目次

 「confBAD_RCPT_THROTTLE」設定とは

詳細は、下記の記事などに記載があるが5回した接続に対してプロトコル速度を落とす」 という設定の模様で、あまりセキュリティ強化に寄与する本質的な設定ではないものの、動き自体を確認してみたかったた検証して見ることに・・・・

スパム対策SpamAssassinを導入する前にSendmailの設定を! « ぴー@North Hill Work Studio の雑記帳

構成ファイルの新しい構成オプションと改訂された構成オプション、および関連トピック (Solaris のシステム管理 (資源管理とネットワークサービス))

検証環境

以前作った下記の検証環境が残っていたため、下記の環境を使用する。

設定前の動作確認

設定前の動作確認を行う。 検証には、宛先間違いを明示的に発生させる必要があるため、 メールサーバにtelnet接続を行う。

宛先間違い「User unknown」をひたすら発生させても、 動き的に特に変化がないことを確認する。

confBAD_RCPT_THROTTLE設定

下記のとおり、senmail.mcをバックアップし、末尾にconfBAD_RCPT_THROTTLEを設定してみる。 その後、sendmailを再起動する。

[root@mx-ns ~]# cd /etc/mail/
[root@mx-ns mail]# cp sendmail.mc sendmail.mc.20160917
[root@mx-ns mail]# vi sendmail.mc

#末尾に追加
######################################################################
## 2016.09.17 AddSection. (for security test)
######################################################################
define(`confBAD_RCPT_THROTTLE', `5')dnl



[root@mx-ns mail]# service sendmail restart
sm-client を停止中:                                        [  OK  ]
sendmail を停止中:                                         [  OK  ]
sendmail を起動中:                                         [  OK  ]
sm-client を起動中:                                        [  OK  ]
[root@mx-ns mail]#

sendmail.cfには、下記のとおり出力される

O BadRcptThrottle=5

設定後の動作確認

設定後の動作確認を行う。 設定前と同様に、宛先間違いを明示的に発生させる必要があるため、 メールサーバにtelnet接続を行い、ひたすら

宛先間違い「User unknown」をひたすら発生させる。 すると、6回目以降に「User unknown」の返却が若干遅くなる。

ただし、劇的に遅くなるわけではなく、気持ち遅くなる程度で 目に見えて遅くなるわけではない。

その後、正常な宛先を設定し、メールが正常に送信(メールサーバ側からすると受信) されることを確認する。

検証の結果

上記のように、本設定は、セキュリティ強化につながる本質的な対策ではなく、 「あて先間違い」を無差別に発生させられた場合のあくまで、緩和策と捉えたほうがよさそう。