2019年3月3日日曜日

疎通確認①

1.はじめに

iptables、ファイアウォールを設定後の疎通確認として
特定のポート、TCP、UDPなどを指定しての確認方法を記載


2.確認のパターンについて

だいたい、以下の3パターンの組み合わせを想定して、
①送信元、送信先のOSがWindow、Linux
②プロトコルがTCP、UDP
③送信元、送信先のポート番号指定

今回の記述は、送信元がWindowsとLinux
送信先が、Linux
プロトコルは、TCP
ポート番号の指定は、送信先のみ

3.Windowsでの確認方法

Powershellで以下のコマンドを実行

・ソケット作成
$tc = New-Object System.Net.Sockets.tcpClient
・指定したIPアドレスとポート番号を利用してクライアントをリモートTCPホストに接続
$tc.connect("192.168.125.1", 80)
$tc.connect("IPアドレス", ポート番号)
・ソケットのクローズ
$tc.close()

疎通できない場合、接続のコマンド実行後に以下のようなエラーが表示されます。
PS C:\Users\administrator> $tc.connect("192.168.125.1", 80)
"2" 個の引数を指定して "Connect" を呼び出し中に例外が発生しました: "接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。192.168.125.1:80"
発生場所 行:1 文字:1
+ $tc.connect("192.168.125.1", 80)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SocketException


4.Linuxでの確認方法

・telnetクライアントを利用する場合

コマンド
$ telnet <IPアドレス> <ポート番号>

応答結果①
Trying 192.168.125.1...
telnet: connect to address 192.168.125.1: Connection refused

結果の内容:アクティブでないサービスに接続しようとした場合、
      または要求したアドレスにサービスプロセスが存在しなかった場合に起こります。

応答結果②
Trying 192.168.125.1...
Connected to 192.168.125.1.
Escape character is '^]'.

結果の内容:OSまでの疎通が出来ており、なおかつ対象ポート番号でのサービスも存在します。
「Ctrl」+「」」キーを同時押した後に、quitを入力することで、telnetから抜けれます。

・nmap-ncatを利用する場合

$ nc <IPアドレス> <ポート番号>

応答結果
対向側のサービスによる


・送信先のポート番号がListen状態になっていない場合

受信側のポートがListen状態にない場合は、応答を返さないため、
ncコマンドにより、特定ポート番号でListen状態にすることが可能
$ nc -l <ポート番号>


上記コマンドでは、1回のアクセスが発生したらプロセスが終了してしまうため、ループさせた方が試験を行いやすい。

例)ポート番号80で待ち受けするコマンド
$ while true; do ( echo "応答 Ok" ) | nc -l 80; done 

受信側で上記コマンドを実行後、送信側でncコマンドで疎通確認を実行したら
送信側に「応答 OK」が表示される。








2019年2月16日土曜日

WinRMの設定を行った時の問題と解決方法

1.はじめに

Windows2012のサービス監視のためHinemosエージェントをインストールし、
WinRMの設定を行ったところエラーが発生したための解決までを記載

・当初予定していた作業の流れ
Hinemosインストール後、以下のコマンドを管理者で起動したPowershellで
順番に実行することでHinemosマネージャ側からプロセス監視が可能となる。

・WinRMの有効化
winrm quickconfig
・Basic認証許可
winrm set winrm/config/service/auth '@{Basic="true"}'
・平文許可
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
・アカウント設定



2.発生した問題

WinRMを有効化のためのコマンドを実行したところ以下のエラーが発生
PS C:\Windows\system32> winrm quickconfig
WinRM サービスは、既にこのコンピューターで実行されています。
WSManFault
    Message
        ProviderFault
            WSManFault
                Message = ファイアウォールの状態を確認できません。
エラー番号: -2147024894 0x80070002
指定されたファイルが見つかりません。

また、平文許可のコマンドを実行時もエラーが発生
PS C:\Windows\system32> winrm set winrm/config/service '@{AllowUnencrypted="true"}'
WinRM サービスは、既にこのコンピューターで実行されています。
WSManFault
    Message
        ProviderFault
            WSManFault
                Message = 指定したファイルが見つかりません。
エラー番号: -2147024894 0x80070002
指定されたファイルが見つかりません。


ファイアウォールの設定は、個別にTCP5985を例外に追加しておくことで
エラーは出るが無視できる。
AllowUnencryptedがfalse状態では、プロセス監視が行えないため
True状態に変更する必要がある。


3.確認したこと

複数あるネットワークインターフェースの1つのネットワークプロファイルがパブリックになっていることが原因の1つでありそうだったが、
ネットワークプロファイルを設定変更の許可が出なかったので未確認


4.解決した方法

①グループポリシーエディタを利用し設定変更

「gpedit.msc」を実行し、ローカルグループポリシーエディターを起動し
左のツリーより[コンピュータの管理]-[管理テンプレート]-[Windowsコンポーネント]-[Windowsリモート管理(WinRM)]-WinRMサービス を選択し「暗号化されていないトラフィックを許可する」をダブルクリックします。


暗号化されていないトラフィックを許可する画面で、[有効]を選択し「OK」ボタンを押します。



②レジストリの修正でも可能

以下のレジストリを0:falseから1:tureに変更する。
Registry HiveHKEY_LOCAL_MACHINE
Registry PathSoftware\Policies\Microsoft\Windows\WinRM\Service
Value NameAllowUnencryptedTraffic
Value TypeREG_DWORD

参考