設定と目標
サーバーを実行していて、ssh
特定のユーザーを1人だけにshellinabox
ログインするように制限したいと思います。shellinabox
推論と方法
セキュリティ上の理由から、マスターユーザーにはmain_acc
証明書ベースのssh
アクセスしかありません(ssh
LAN IPの範囲外で直接使用する場合)。コマンドを使用すると、インターネットからアクセスするときにパスワード接続が機能しないことを確認できますssh
。
ユースケースでは、shellinabox
パスワードによるログインが必要です。これは、特に自分のコンピュータで秘密鍵を使用できない場合のためです。アイデアは、shiabox_acc
許可されたコマンドのみがローカルホストでssh
実行される制限付きシェルを持つ「プロキシ」ユーザーを使用してセキュリティ層を追加することですmain_acc
。これには、fail2ban
無差別代入攻撃者が仕事を困難にするために使用できる2つの暗号層と2つの層があります。
だから私がしたことは
- 存在する
sshd_config
- ユーザーは
main_acc
通常パスワード認証を受けません。 main_acc
LAN-IP範囲とポート22でパスワード認証を許可する(ローカルメンテナンスの理由で)- ユーザーは、
shiabox_acc
ポート1011(shellinaboxポート)のlocalhostでパスワード認証を許可しました。
apache
ウェブサイトの設定で
- reveseプロキシは私のウェブサイトのssh-loactionへのアクセスを
shellinabox
ポートに転送します。
- ルーターファイアウォール設定で
- WANはポート1011にアクセスできません。
- ポート 22 および 443 が開いています。
今質問が来ます:
main_acc
それでもパスワードでログインできます。shellinabox
なぜ?shiabox_acc
アクセスを制限する方法は?
私が理解したところ、Apacheはポート443でWebサイトベースの要求をリッスンし、それをローカルホストからポート1011に転送します。その後、ssh
ルールはアクセスポートを1011と一致させ、それを許可しないでくださいmain_acc
。
私はどこで間違っていますか?
apache
PS:認証オプションを知っていますが、私の方法が失敗する理由を理解したいと思います。
設定する/etc/ssh/sshd_config
#Global:
#DenyUsers
AllowUsers main_acc
PasswordAuthentication no
#shellinabox access
Match LocalPort 1011 User shiabox_acc
PasswordAuthentication yes
PubkeyAuthentication no
#LAN access w/ password
Match Address <LAN-IP>,127.0.0.1,::1 LocalPort 22 User main_acc
PasswordAuthentication yes
PubkeyAuthentication yes
サイト設定apache
:
<Location /shellinabox>
ProxyPass http://localhost:1011/
Order allow,deny
Allow from all
</Location>
shellinabox
設定:
SHELLINABOX_PORT=1011
SHELLINABOX_ARGS="--no-beep --localhost-only --disable-ssl"
バージョン
- Apache/2.4.57
- ShellInABox バージョン 2.20
- オペレーティングシステム:ラズビアン12