Saya mengkonfigurasi router Linux dengan iptables
. Saya ingin menulis tes penerimaan untuk konfigurasi yang menyatakan hal-hal seperti:
- lalu lintas dari beberapa pria di internet tidak diteruskan, dan
- TCP ke port 80 pada server web di DMZ dari host di LAN perusahaan diteruskan.
Sebuah FAQ kuno menyinggung iptables -C
opsi yang memungkinkan seseorang untuk bertanya sesuatu seperti, "diberikan paket dari X, ke Y, pada port Z, apakah itu akan diterima atau dibatalkan?" Meskipun FAQ menyarankannya berfungsi seperti ini, untuk iptables
(tapi mungkin tidak ipchains
seperti yang digunakan dalam contoh) -C
opsi tersebut tampaknya tidak mensimulasikan paket pengujian yang berjalan melalui semua aturan, tetapi memeriksa keberadaan untuk aturan yang sama persis. Ini memiliki nilai kecil sebagai ujian. Saya ingin menegaskan bahwa aturan memiliki efek yang diinginkan, bukan hanya aturan itu ada.
Saya telah mempertimbangkan untuk membuat lebih banyak VM uji dan jaringan virtual, kemudian memeriksa dengan alat seperti nmap
untuk efek. Namun, saya menghindari solusi ini karena kompleksitas menciptakan semua mesin virtual tambahan, yang sebenarnya merupakan cara yang cukup berat untuk menghasilkan beberapa traffic pengujian. Akan lebih baik jika memiliki metodologi pengujian otomatis yang juga dapat bekerja pada server nyata dalam produksi.
Bagaimana lagi saya bisa mengatasi masalah ini? Apakah ada beberapa mekanisme yang mungkin saya gunakan untuk menghasilkan atau mensimulasikan lalu lintas yang sewenang-wenang, lalu tahu apakah itu (atau akan) dijatuhkan atau diterima oleh iptables
?
sumber
Jawaban:
Jika Anda siap melakukan sedikit pengkodean, Anda dapat mencoba ini:
CLONE_NEWNET
bendera untukclone
panggilan sistem, atau dengan menggunakanip netns add
danip netns exec
perintah.tun
driver atauip link add
.iptables-restore
tun
atauveth
tun
atauveth
Pendekatan ini mungkin akan bekerja paling baik untuk menguji aturan untuk paket yang diteruskan. Koneksi ke / dari mesin tempat iptables digunakan membutuhkan sedikit usaha, tetapi harus layak untuk menguji cara ini juga.
Berikut adalah contoh urutan perintah, yang dapat digunakan:
Ini akan membuat tiga ruang nama jaringan untuk pengujian dan memuat seperangkat aturan iptables di salah satunya. Dua lainnya berfungsi sebagai peran beberapa pria di internet dan menjadi tuan rumah di LAN.
Dalam contoh di atas
telnet
perintah pertama yang menerima koneksi ditolak daritest-iptables-lan-host
namespace,telnet
perintah kedua mendapatkan batas waktu jika set aturan menjatuhkan paket.Ini tidak menyentuh namespace jaringan awal, yang mana semua produksi Anda akan terjadi secara default. Satu-satunya cara untuk mendapatkan lebih banyak pemisahan dari produksi Anda adalah dengan menjalankannya pada host yang terpisah (fisik atau virtual).
sumber
dunia profesional melakukannya dengan bantuan perangkat keras / lunak yang disediakan oleh 2 perusahaan.
www.ixiacom.com
www.spirent.com
Dalam kasus pertama Anda dapat menggunakan sesuatu seperti sasis Ixia 400T + Ixload.
Dalam kasus kedua, baris Smartbits atau Testcenter dengan aplikasi yang sesuai
Perangkat ini dapat (antara lain) meniru banyak klien yang melakukan berbagai jenis permintaan pada server target yang Anda pilih. Mereka siap menguji keamanan server Anda termasuk serangkaian tes serangan yang telah ditentukan plus Anda selalu dapat menentukan set Anda sendiri. Mereka juga memiliki banyak kemampuan lain seperti tes tegangan beban dan sejenisnya.
Bukan pilihan yang murah.
sumber