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

[Juniper]SRX220 J-Webのトラブルシュートと設定変更

SRX220のJ-Webへログインできなくなっちゃったときのトラブルシュート。 J-Webを使ってSRXの設定変更をしていた際、誤ってログアウトせずにブラウザを閉じてしまい、再度アクセスをしたところ、 …

no image

smtp-sink

[pukiwiki] #topicpath #contents *smtp-sink(テスト環境) [#r75f2c04] smtpのテストツール。postfixのパッケージに含まれている。 MTA経 …

no image

netscreenのコンフィグバックアップスクリプト(telnet編)

会社のNetscreenのコンフィグを、Linuxサーバー側からtelnetでアクセスしたのち tftpを使ってdailyでバックアップする、やや回りくどいスクリプト。 とりあえずLANなのでteln …

no image

trafshow

[pukiwiki] #topicpath #contents *trafshow [#u9455f3e] トラフィック・モニターtrafshowのインストールと動作具合をテスト。 //ググっても情報 …

[CentOS7] user.slice 由来で出力される大量のログを抑制する

  社内のバッチ用途で、久々にオンプレのサーバにCentOS7を入れてセットアップをしていたら/var/log/messagesにuser.sliceのメッセージが短時間で大量に出ていた。 ここんとこ …