Ada server tanpa pertahanan iptables :ACCEPT all..
Mungkin ada aplikasi khusus di server ini.
Jika kita harus mengeraskan server ini (jadi tolak semua, dan biarkan saja yang dibutuhkan oleh aplikasi) dengan aturan iptables yang ketat, kita harus mencari tahu dengan tangan apa aplikasi yang menggunakan yang mana dst/src
port/protocol
dan kemudian kita harus menulis aturan iptables untuk mereka..
Pertanyaannya : apakah ada skrip yang dapat membantu mengumpulkan informasi ini dari mesin yang sedang berjalan? (dari log?) - Dan secara otomatis menghasilkan aturan iptables?
Seperti ada audit2allow
pada SELinux
. Hanya untuk iptables
!
Mesin tidak dapat padam!
Contoh: skrip "MAGIC" harus dijalankan seminggu / bulan pada mesin, mengumpulkan informasi, kemudian, setelah seminggu / bulan, skrip akan dapat menghasilkan file aturan iptables yang dapat kita gunakan.
Banyak orang bisa mendapatkan dalam situasi ini (cara mengeraskan server tentang iptables). Dan alangkah baiknya jika ada skrip / solusi yang dapat melakukan ini: \
Jawaban:
Lakukan secara manual
atau
Penjelasan:
sumber
Jalankan
tcpdump
pada mesin selama seminggu atau lebih untuk menangkap lalu lintas rata-rata. Kemudian Anda dapat menelusuri lalu lintas menggunakan wireshark nanti untuk melihat port apa yang sedang digunakan.Perintah untuk ini adalah
tcpdump -i <interface> -s 65535 -w <some-file>
Anda kemudian dapat memetakan ini kembali menggunakan
netstat -tuanp
untuk melihat PID / aplikasi apa yang menggunakan port apa.Secara teoritis ini bisa dituliskan.
sumber
Anda dapat mulai dengan templat yang sangat mendasar seperti- https://gist.github.com/jirutka/3742890 , yang hanya mengizinkan ssh dan ping, dan menambahkan hal lain secara manual.
peretasan skrip cepat untuk menghasilkan aturan iptables untuk mendengarkan aplikasi Anda di antarmuka publik (0.0.0.0) / tcp
Anda juga dapat menggunakan
iptables -I INPUT <number>
untuk menyuntikkan aturan di lokasi tertentu, yang dapat Anda daftarkaniptables -nvL --line-numbers INPUT
sumber
Sayangnya tidak ada skrip yang pernah saya lihat yang dapat berjalan dalam mode pembelajaran atau mode pasif masuk semua penggunaan jaringan Anda, mengambil hasilnya dan menghasilkan firewall yang sebenarnya menggunakan
iptables
dari log-nya.Taruhan terbaik Anda adalah memulai dengan sederhana dan terus-menerus menambahkan berbagai potongan saat Anda mulai memahami sepenuhnya layanan apa yang disediakan sistem Anda. Anda harus menggunakan alat-alat seperti
netstat
untuk melihat port apa yang digunakan untuk berbagai layanan yang Anda host, serta alamat IP apa yang mengaksesnya.CATATAN: Di atas, Anda dapat melihat layanan apa yang saya jalankan di server yang menerima koneksi TCP, yaitu mereka "mendengarkan" untuk koneksi pada berbagai port.
Tidak sulit untuk memulai dengan hal-hal seperti SSH (port 22) dan HTTP (port 80), jika ini khas untuk sistem Anda, jadi saya akan melakukan jenis layanan ini secara massal sekaligus. Untuk layanan lain seperti LDAP atau NIS Anda mungkin ingin melakukan ini dengan cara yang lebih terkontrol, memastikan hal-hal tidak rusak saat Anda memperkenalkannya.
Alat-alat seperti FireHOL , Firewall Builder (fwbuilder), dan eztables mungkin membantu ketika Anda menyerang proyek ini, karena mereka memberikan lapisan abstraksi yang bagus karena harus membuat
FireHOLiptable
aturan khusus dengan tangan, yang bisa rumit.contoh
fwbuildercontoh
Menggunakan Fail2Ban
Dengan
kutipaniptables
firewall yang belum sempurna di tempat Anda mungkin ingin memujinya menggunakan alat seperti Fail2Ban .Menggunakan alat-alat seperti ini akan membantu membatasi paparan yang harus ditanggung oleh sistem Anda saat Anda terus mengerasnya. Bahkan setelah Anda cukup yakin bahwa sistem Anda telah dikeraskan, Anda mungkin masih ingin terus menggunakan Fail2Ban sebagai bagian dari langkah-langkah keamanan Anda.
Referensi
sumber
Gunakan aturan iptable untuk mencatat koneksi baru, yang juga akan mencatat udp.
Anda dapat menentukan berbeda
--log-level
untuk memiliki log di file lain selain / var / log / messages (Anda harus mengkonfigurasi daemon syslog).Saya pikir Anda harus membaca log aplikasi utama karena beberapa server memiliki aktivitas yang sangat berkala seperti siang, akhir minggu, akhir bulan (kuartal, tahun) sehingga Anda tidak akan kehilangan aktivitas jaringan penting dari server.
Karena server sangat penting, buat matriks aliran jaringan server pada spreadsheet yang bagus (sumber ip, ip dest, protokol, port, aplikasi) yang akan membantu Anda membuat aturan.
sumber
Saya tahu ini bukan skrip dan ini bukan jawaban untuk pertanyaan OP tetapi ini adalah ide saya yang ingin saya bagikan dengan OP.
Saya mendapat semua port mendengarkan dengan:
Mungkin ini bisa membuat Anda semakin dekat dengan menulis skrip Anda sendiri. :)
sumber
Anda dapat mulai dengan sesuatu seperti ini:
dan kemudian lanjutkan dengan
atau
Apa yang dilakukan baris pertama adalah menggunakan netstat untuk membuat daftar proses mendengarkan dan porta mereka. Kemudian akan menghasilkan baris "iptables" untuk memungkinkan masing-masing koneksi yang masuk. Substitusi reg sed sedikit disesuaikan untuk output netstat di server saya, jadi mungkin diperlukan beberapa penyesuaian untuk Anda. Ketika berhasil, Anda harus berakhir dengan sesuatu yang tampak seperti:
Dua hal penting yang perlu diperhatikan:
1) Aturan-aturan ini tidak melakukan apa pun untuk Anda sampai Anda meletakkan garis DROP atau TOLAK di akhir atau menjadikannya kebijakan default untuk paket yang tidak cocok. Aturan-aturan ini memungkinkan paket, yang dapat diperdebatkan, jika kebijakan defaultnya adalah membiarkan apa pun tidak cocok.
2) Aturan-aturan ini ambivalen tentang IP sumber . Dari posting asli Anda, sepertinya Anda ingin mengizinkan semua klien Anda menggunakan server, kemudian, periksa log untuk mendapatkan IP sumber untuk pergi dengan port tujuan. Saya tidak tahu alat untuk melakukan itu, jadi skrip ini hanya akan mencegah orang membuat layanan baru di server Anda yang mendengarkan di port lain ... yang merupakan sesuatu .
sumber