Saya telah, kurang lebih, mengikuti konfigurasi pada AWS:
Penyeimbang beban elastis dengan 3 mesin o 3 zona ketersediaan berbeda. Grup keamanan saya memungkinkan 0.0.0.0/0:80 karena ini adalah aplikasi rel saya (nginx, unicorn).
Saya bertanya-tanya apakah ada cara untuk menolak akses ke aplikasi saya ke alamat IP publik tertentu? Saya telah membaca dokumentasi AWS, tetapi karena SG "menolak semua" tidak ada cara untuk menolak hanya satu alamat IP tertentu.
Ada ide? iptables pada 3 mesin di belakang load balancer?
Terima kasih!
sumber
Sebenarnya, itu bukan solusi yang baik karena ip jarak jauh (
$remote_addr
di Nginx) akan berasal dari loadbalancer Amazon. Larangan yang akan mengakibatkan semua lalu lintas diteruskan dilarang.Anda harus memeriksa paket-paket dan menemukan
X-Forwarded-For
header HTTP , IPtables tidak menyadari protokol seperti itu.Saya setuju untuk solusi berikut untuk 2 IP nakal di Nginx
Memperkenalkan variabel
$client_ip
, hanya supaya saya juga bisa menguji ini secara lokal, di mana tidak ada yanghttp_x_forwarded_for
tersedia ..Sedikit offtopic tetapi memposting untuk kenyamanan, saya juga menambahkan ip klien ke log akses saya:
Itu tidak cantik, tapi harap itu membantu
sumber