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


関連記事

[Google Drive] LinuxサーバーにてRcloneインストール&お試し

  LinuxサーバーからGoogle Driveのストレージにファイルの同期をしよう、ということで 数あるGoogle Driveの同期ツールの中から、今回はインストール/環境整備がもっとも手軽で …

[ただのメモ] Amazon_Linux_yumでのupdate不具合を解消

09/01にAmazon LinuxにてGitのアップデートがリリースされたのでyum updateしようとしたら、”No packages marked for update&#8221 …

nagiosgraph​/メモ:nagiosグラフで出力されるレポートについて

  [pukiwiki] *nagiosグラフで出力されるレポートについて [#xda76c69] nagiosgraphをセットアップした時気になったことをツラツラと。 **1)自動で出力されるグラ …

no image

postfix SMTP-auth設定

[pukiwiki] &topicpath;   **▼SMTP-auth設定 [#e44ccef9]  (会社編)  ※自宅サーバ編は別途編集。 postfix+cyrus-SASLの組み …

no image

USB接続のHDDをmke2fsでext3にフォーマットしたときのメッセージを確認(tune2fs )

CentOS5.8にて、USB接続の外付けHDDをext3にてフォーマットした際 “ファイルシステムは29回マウントされるか、または180日経過するか、どちらか先に来たら自動でチェックされ …