harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

GNU/Linux network ssh

OpenSSHのMatchディレクティブを利用したアクセスコントロール

投稿日:2012年8月12日

Last Updated on 2014年2月4日 by かんりにん

OpenSSH4.4以上で利用できるようになったMatch(条件分岐)ディレクティブを使った、アクセスコントロールを検証。

参考:お世話になっております!
OpenSSH-5.9p1 日本語マニュアルページ (2011/09/10)

きっかけとしては、
原則rootのログインは禁止でOKだけど、特定のリモートホストからのバッチ処理で
root権限が必要になってしまったので、このホストだけはrootでの接続を許可したい
というニーズができた、というのが理由です。

そこでPAM認証の設定で検証しようとしていたら、たまたまMatchディレクティブで PermitRootLogin のコントロールができるようになっていたので
(更新履歴を調べたら、ずいぶん前でしたね…orz)
CentOS6.*のパッケージに含まれるOpenSSH-5.3系で、手っ取り早く試してみました。

Matchディレクティブでできること(なんとなくユースケース)

  • デフォルトは公開鍵認証だけだけど、ユーザーによってパスワード認証を許可できるOK
  • 特定のホストからはrootログインを受け付ける
  • 踏み台サーバーにはX11転送を許可する

などなど。

条件分岐に使用できるパターン

パターンマッチング用のパラメータ

  • ”User(ユーザ名)”
    • 設定例
      ”Match User ”
  • ”Group(グループ名)”
    • 設定例
      ”Match User ”
  • ”Host(ホスト名)”
    • 設定例
      ”Match Host <webserver.domain.local’>’
  • ”Address(アドレス) ※CIDR表記での指定も可能。”
    • 設定例
      ''Match Address 192.168.0.254/32''
      ''Match Address 192.168.0.0/24''
      ''Match Address 192.168.0.*''
      

パターンマッチングに関する備考

  • パターンの指定には単一のエントリ、またはカンマで区切りでの複数のパターン
    ワイルドカードを使ったパターンマッチングも使用可能。
  • Address指定では、CIDR表記での指定も可能。

Matchディレクティブ内で使用できる設定

sshd_configで使用できるパラメータすべてが使用できるわけではないので、確認すること。

AllowAgentForwarding
AllowTcpForwarding
AuthorizedKeysFile
AuthorizedPrincipalsFile
Banner
ChrootDirectory
ForceCommand
GatewayPorts
GSSAPIAuthentication
HostbasedAuthentication
HostbasedUsesNameFromPacketOnly
KbdInteractiveAuthentication
KerberosAuthentication
MaxAuthTries
MaxSessions
PasswordAuthentication
PermitEmptyPasswords
PermitOpen
PermitRootLogin
PermitTunnel
PubkeyAuthentication
RhostsRSAAuthentication
RSAAuthentication
X11DisplayOffset
X11Forwarding
X11UseLocalHost

サンプルケース

やりたいこと

  • LANの内外でアクセス権限を変えたい
  • リモートのバッチ処理サーバーのうち、rootでの処理が必要なジョブを動かすサーバーは
    PermitRootLoginを許可、変わりに認証は公開鍵認証のみとする。

権限割り当てのイメージ

  • LAN外
    • PermitRootLogin はもちろんno
      パスワード認証を許可しない
      公開鍵認証のみ
      X11転送を禁止。
  • LAN内
    • PermitRootLogin を許可する。
      パスワード認証を許可する
      X11転送を許可。
  • リモートのバッチ処理サーバー
    • PermitRootLogin を許可する。
      →バッチ処理が目的。root権限が必要なファイルの取得、アップが必要。
      パスワード認証を許可しない
      公開鍵認証のみ
      X11転送を禁止。

設定ファイルサンプル(sshd_config)

sshd_config抜粋

Port 50022
Protocol 2
SyslogFacility AUTHPRIV
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
X11Forwarding no
 
# LAN内ホストからの接続時のアクセスコントロール
Match Address 192.168.1.0/24
PermitRootLogin yes
PasswordAuthentication yes
X11Forwarding yes
 
# バッチ処理サーバーへのアクセスコントロール
Match Address ***.***.***.***/32
PermitRootLogin yes

上記の設定にてアクセスコントロールの動作を確認。
今回の要件は問題なく完了できそうです。

-GNU/Linux, network, ssh

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

no image

[Linux]statコマンド

ファイル、および当該ファイルのファイルシステムのステータスを表示する。 実際には、指定したファイルのinode情報を表示するコマンドの様子。 -参考にしたサイト お世話になっております! Linux …

no image

[メモ]Juniper SSG ScreenOS ファームウェアのアップデート

SSGシリーズ(SSG-5-SH-EXT)のファームウェアを最新版にアップデートしたので、そのメモをまとめときました。作業はTFTPベースでささっと実施。 更新前後のバージョンは以下の通りです。 更新 …

no image

VMware server上で共有ディスクを新規作成(Linux)

[pukiwiki] #topicpath #contents *VMware server上で共有ディスクを新規作成(Linux) WMwareのクラスタ検証環境を構築する際、nfsマウントしたディ …

no image

[備忘録]PuTTYの設定情報のエクスポートとインポート

[pukiwiki] 頻度が高いわけではないが、時々やろうとすると忘れてしまうので、メモ書き。 とりわけレジストリのパスを忘れてしまう・・・ **1.レジストリエディタ起動 -”XPの場合 …

no image

備忘録:logrotateのデバッグモード

logrotateのデバッグモード 実際の処理をトレースする。 オプション”-dv”を忘れやすいのでメモ… # logrotate -dv <logrotate.conf …

宅麺