Windows2016にOpenSSHを導入してセキュアにsshd_configを設定する

Windows2016にOpenSSHを導入して、
・指定ユーザからのみアクセス可能
・特定のディレクトリのみ表示して上の階層は表示させない
・SFTPコマンドのみ使用可能とし、他のコマンド操作はさせない
上記条件を満たすようにsshd_configを設定してみました。

1.GitHub の PowerShell/Win32-OpenSSHにアクセスする

https://github.com/PowerShell/Win32-OpenSSH/releases

2.OpenSSH-Win64.zip をダウンロード
(2020/02/29 時点では v8.1.0.0p1-Beta が最新Ver)

3.所定のフォルダに展開して配置する
(ここでは、C:\直下を展開先として指定し、C:\OpenSSH-Win64 に配置します)

4.システム環境変数のPATH に C:\OpenSSH-Win64 を追加
マイコンピュータを右クリック>プロパティ>システムの詳細設定>環境変数をクリック
システム環境変数のPathを選択して編集を押し、新規を押して、C:\OpenSSH-Win64 を追加

5.管理者権限でコマンドプロンプトを開いてPoweshellプロンプトを表示
cd C:\OpenSSH-Win64
powershell

6.Powershellの実行権限を変更
Set-ExecutionPolicy RemoteSigned

7.Powershellの実行権限を確認
Get-ExecutionPolicy

RemoteSignedと表示されることを確認

8.sshのインストールスクリプトの実行
cd C:\OpenSSH-Win64
install-sshd.ps1

「sshd and ssh-agent services successfully installed」
と表示されれば成功

9.WindowsFirewallでPort22をOpenする
New-NetFirewallRule -Name sshd -DisplayName ‘OpenSSH Server (sshd)’ -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

10.WindowsFirewallでルールが追加されていることを確認する
スタート>Windows管理ツール>セキュリティが強化されたWindowsファイアウォール
受信の規則

9.sshdサービスの自動起動設定
スタート>Windows管理ツール>サービス を開き、
下記2サービスを自動起動、開始にする

OpenSSH SSH Server
OpenSSH Authentication Agent

10.SFTP用ユーザの作成
Usersグループ所属でsftp_testを作成

11.アップロード用フォルダの作成とNTFSアクセス権の設定
C:\upload フォルダを作成し、Usersグループに変更と書き込みの権限を付与します

12.sshd_config設定変更
C:\ProgramData\ssh\sshd_configを下記のように修正します

#SSH接続を経由して、他のサーバに転送通信をできなくする

AllowTcpForwarding no
AllowStreamLocalForwarding no

#rootでのログインを許可しない(Windowsでは無効)

PermitRootLogin no

#administratorグループの接続を拒否し、sftp_testユーザの接続のみを許可する

DenyGroups administrators
AllowUsers sftp_test

#ユーザsftp_testにマッチすれば、C:\uploadをルートディレクトリとして以上の階層を表示しない

#sftpコマンドのみ使用できるようにする

Match User sftp_test
ChrootDirectory C:/upload
ForceCommand internal-sftp

修正が済んだら、
OpenSSH SSH Server
を再起動

13.接続テスト

SFTP接続が出来てファイルの書き込みが出来ることが確認できました。

Comments are closed.