harumaki.net

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

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

   


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

参考:お世話になっております!
OpenSSH-5.9p1 日本語マニュアルページ (2011/09/10)
http://www.unixuser.org/~euske/doc/openssh/jman/sshd_config.html

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

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

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

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

などなど。

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

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

  • User(ユーザ名)
    • 設定例
      Match User <USERNAME>
  • Group(グループ名)
    • 設定例
      Match User <GROUPNAME>
  • 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

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

 

OpenSSH[実践]入門 Software Design plus
技術評論社 (2014-11-05)
売り上げランキング: 42,575

 

実用SSH 第2版―セキュアシェル徹底活用ガイド
Daniel J. Barrett Richard E. Silverman Robert G. Byrnes
オライリー・ジャパン
売り上げランキング: 198,635

 - GNU/Linux, network, ssh