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


関連記事

YAMAHA RTX1200 設定のリストア(復元)についてメモ

  この機種はUSBメモリ、SDカードの両方が使えるのでちょっとした拡張性があり、これらのオプションをしっかり活用するのが、安定・安心運用のコツといえるところ。 コンフィグのコピーについてならローカル …

no image

カーネル負荷テストツール(LTP)

[pukiwiki] *カーネル負荷テストツール(LTP) IBM、SGI、OSDLなどが共同で運営している[[Linux Test Project(ltp):http://ltp.sourcefor …

no image

[自分メモ]Linux/BSD tarで固めたファイルの伸長サイズを確認

たま~に必要になるけど、すぐ忘れちゃうのでメモ。 tar で固めたファイルを展開せずに、実際のサイズを確認したいときは オプションtfに”-v(verpose)”をつければ確認 …

no image

RPMパッケージのJcodeインストール

[pukiwiki] &topicpath;   [参照サイト] お世話になっています。 http://fedorasrv.com/cpan2rpm.shtml **【インストール手順】 イ …

no image

opensshにてfingerprint確認を省略する設定

[pukiwiki] // tag // ssh openssh // fingerprint // Are you sure you want to continue connecting // k …

宅麺