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

USB接続HDDのマウント(Linux)

[pukiwiki] 久しぶりにパーティション切ってフォーマットしようとしたら やり方を忘れてしまっていた… たまにしかやらないので手順を忘れやすい為、メモしとく(自分用にw)。 :OS|CentOS …

no image

haproxyを試す 3.SSLリバースプロキシを設定してみる

  HAProxyにてSSLリバースプロキシを設定してみるテスト。 設定環境はAWS EC2にてRightImageのCentOS6を使用しました。 HTTP/80については設定済みとなっている前提で …

no image

mysql sshトンネリングでの暗号化接続をさくっと試す

リモートホストのMySQLサーバーへアクセスする際に、クライアント – サーバー間の通信を暗号化する方法をかるく検証。 (MySQLのDBスキーマやテーブルの暗号化ではない) 方法としては …

no image

[Juniper]SRX アカウント設定いろいろ

SRXシリーズでのアカウントの各種設定をメモ書き。 コマンドラインから操作する場合は、原則configureモードで行う。 参考:お世話になっております! SRX Getting Started &# …

no image

MRTG setup

[pukiwiki] &topicpath; 2010/10/21 超絶久しぶりにMRTGを利用するためセッティング。 ひとまずRPMでデフォルトインストールされているやつを利用。 -参照サ …