pengembangan-web-mp-pd.com

Langkah apa yang Anda ambil untuk mengamankan server Debian?

Saya menginstal server Debian yang terhubung langsung ke Internet. Jelas saya ingin membuatnya seaman mungkin. Saya ingin kalian menambahkan ide-ide Anda untuk mengamankannya dan program apa yang Anda gunakan untuk itu.

Saya ingin sebagian dari pertanyaan ini mencakup apa yang Anda gunakan sebagai firewall? Hanya iptables dikonfigurasi secara manual atau apakah Anda menggunakan beberapa jenis perangkat lunak untuk membantu Anda? Apa cara terbaik? Blokir semuanya dan hanya izinkan apa yang dibutuhkan? Apakah mungkin ada tutorial yang bagus untuk pemula untuk topik ini?

Apakah Anda mengubah port SSH Anda? Apakah Anda menggunakan perangkat lunak seperti Fail2Ban untuk mencegah serangan bruteforce?

66
Thomaschaaf

Wajib:

  • instalasi sistem dengan mode ahli, hanya paket yang saya butuhkan
  • firewall tertulis tangan dengan kebijakan standar pada iptables'input: drop, mengizinkan akses ke SSH, HTTP atau apa pun yang diberikan server sedang berjalan
  • Fail2Ban untuk SSH [dan terkadang FTP/HTTP/lainnya - tergantung pada konteks]
  • nonaktifkan login root, paksa menggunakan pengguna normal dan Sudo
  • kernel kustom [hanya kebiasaan lama]
  • peningkatan sistem terjadwal

Tergantung pada tingkat paranoia juga:

  • drop kebijakan pada output kecuali beberapa tujuan/port yang diizinkan
  • integrit untuk memeriksa apakah beberapa bagian dari sistem file tidak dimodifikasi [dengan checksum disimpan di luar mesin], misalnya Tripwire
  • pemindaian terjadwal setidaknya dengan nmap sistem dari luar
  • log otomatis memeriksa pola yang tidak diketahui [tapi itu sebagian besar untuk mendeteksi kerusakan perangkat keras atau beberapa kerusakan kecil]
  • jadwal berjalan chkrootkit
  • atribut abadi untuk /etc/passwd jadi menambahkan pengguna baru sedikit lebih sulit
  • / tmp dipasang dengan noexec
  • port knocker atau cara tidak standar lainnya untuk membuka port SSH [mis. mengunjungi halaman web 'rahasia' pada server web memungkinkan koneksi SSH yang masuk untuk jangka waktu terbatas dari alamat IP yang melihat halaman tersebut. Jika Anda terhubung, -m state --satete ESTABLISHED menjaga aliran paket selama Anda menggunakan sesi SSH tunggal]

Hal-hal yang tidak saya lakukan sendiri tetapi masuk akal:

  • grsecurity untuk kernel
  • syslog jarak jauh sehingga log tidak dapat ditimpa ketika sistem dikompromikan
  • mengingatkan tentang login SSH
  • configure rkhunter dan atur agar berjalan dari waktu ke waktu
50
pQd

Hanya catatan tentang firewall perangkat Anda ...

  • Gunakan daftar putih, bukan daftar hitam - mis. Blok semua, dan hanya izinkan apa yang Anda butuhkan, tolak semua yang lain.
  • Jangan gunakan GUI/ncurses atau perangkat lunak apa pun yang mencoba membuat tugas menulis firewall untuk Anda. Jika ya, Anda akan mengizinkan perangkat lunak membuat asumsi untuk Anda - Anda tidak perlu mengambil risiko itu dan tidak seharusnya. Konfigurasikan sendiri, jika tidak yakin, nonaktifkan - Anda akan segera mengetahuinya jika diperlukan. Jika sudah menjadi sistem yang berjalan dan Anda tidak dapat mengganggu lalu lintas (dengan secara tidak sengaja memblokirnya), kemudian jalankan tcpdump (dump to file) dan ambil sampel - pelajari nanti, lalu cari tahu apa yang valid dan apa yang tidak.
  • Saya pribadi tidak melihat ada gunanya menjalankan layanan pada port non-standar, alat tidak begitu bodoh hari ini untuk mengasumsikan bahwa karena sesuatu berjalan pada port 22 misalnya, maka itu harus ssh, dan tidak sebaliknya - untuk contoh amap, dan nmap's -A pilihan. Karena itu, Anda dapat (dan mungkin harus jika khawatir) memodifikasi layanan Anda untuk menyembunyikan diri dari mencongkel mata, misalnya, yang berikut ini akan membuat penyerang tahu versi tepat OpenSSH yang Anda jalankan, mereka kemudian dapat mencari exploit untuk versi yang tepat. Jika Anda menyembunyikan hal-hal seperti itu, Anda akan membuatnya lebih sulit untuk itu.
 [root @ ud-olis-1 uhtbin] # telnet localhost 22 
 Mencoba 127.0.0.1 ... 
 Terhubung ke localhost.localdomain (127.0.0.1). 
 .] Karakter melarikan diri adalah '^]'. 
 SSH-2.0-OpenSSH_3.9p1 
  • Tetap perbarui semua layanan publik Anda dan tempel dengan tambalan keamanan terbaru.
  • Jangan menyimpan DATA di server gateway itu sendiri, setidaknya Anda akan membeli waktu ketika mereka berhasil masuk ke mesin ini, dan Anda akan kehilangan satu atau dua layanan, dan beberapa waktu, tetapi bukan data.

Intinya adalah bahwa Anda tidak akan pernah berhasil membuat apa pun 100% aman - itu tidak mungkin - jadi tujuannya adalah untuk membuat seaman mungkin - jika terlalu banyak upaya untuk merusak sistem Anda, itu cukup baik, dan sebagian besar lamer script-kiddies akan pindah ke sistem selanjutnya.

  • iptables adalah cara untuk menggunakan sistem Linux apa pun - tetapi konfigurasikan sendiri.

Jangan pernah menggunakan "perangkat lunak keamanan" apa pun yang tidak didasarkan pada standar terbuka - itu pasti akan ditulis dengan buruk dan akan diretas (bukan masalah "jika", tetapi "kapan"). Protokol open source dan terbuka terbuka untuk pengawasan publik dan menyatu untuk menjadi produk yang matang dan andal; perangkat lunak sumber tertutup sebagian besar bergantung pada kepercayaan diri penulis tentang betapa hebat/amannya sebuah produk mereka pikir itu - yaitu sejumlah kecil mata vs bumi yang penuh mata.

Semoga itu bisa membantu :)

18
Xerxes
  • nonaktifkan login root
  • nonaktifkan login dengan kata sandi (hanya izinkan login dengan kunci publik)
  • ubah port SSH
  • gunakan denyhosts (atau serupa)

  • tulis skrip iptbles Anda sendiri (sehingga Anda mengontrol dengan tepat apa yang diizinkan dan dapat membatalkan yang lainnya)

  • memaksakan penggunaan komunikasi aman SSL/TLS dan pastikan memiliki sertifikat yang valid, tidak kedaluwarsa, dan ditandatangani

  • aktifkan verifikasi sertifikat yang ketat untuk semua layanan eksternal (misalnya saat mengotentikasi pengguna dengan server LDAP di komputer lain)
12
x-way
9
KPWINC

Sebagai titik awal umum, saya mengikuti tolok ukur/panduan dari Pusat Keamanan Internet , yang merupakan kompilasi komprehensif praktik terbaik keamanan. Sepertinya benchmark Debian mereka tidak diperbarui dalam beberapa waktu, tetapi gambaran umum langkah-langkahnya adalah:

  • Terapkan patch/paket OS terbaru
  • Mengaktifkan akuntansi sistem/kernel/proses.
  • Aktifkan MAC (mis. SELinux atau AppArmor).
  • Aktifkan firewall berbasis Host (iptables).
  • Verifikasi APT sources.list (kunci benar, sumber tepercaya).
  • Minimalkan layanan jaringan, nonaktifkan semua yang tidak diperlukan, dan firewall apa yang ada.
  • Gunakan TCPWrappers untuk lebih membatasi akses sistem.
  • Hanya gunakan protokol jaringan terenkripsi, nonaktifkan layanan tidak terenkripsi (telnet, ftp, dll).
  • Konfigurasikan akses jarak jauh ke SSH saja.
  • Nonaktifkan kata sandi login pengguna dan memerlukan otentikasi berbasis kunci.
  • Nonaktifkan berbagi sistem file (NFS, SMB).
  • Aktifkan pencatatan sistem jarak jauh/terpusat (dan tinjau log secara rutin!).
  • Tetapkan kata sandi tingkat BIOS/firmware.
  • Tetapkan kata sandi bootloader.
  • Konfigurasikan cadangan sistem, miliki rencana pemulihan bencana dan UJI bahwa cadangan itu valid, dan bahwa personel mengetahui prosedur pemulihan bencana!

Ada banyak sumber daya pada semua pengaturan yang beragam ini, termasuk perintah khusus dan file konfigurasi untuk diimplementasikan pada sistem di benchmark CISecurity.

6
jtimberman

Saya sarankan untuk tidak memasang mesin secara langsung ke Internet. Tempatkan semacam firewall antara mesin dan Internet. Ini memungkinkan Anda untuk melakukan pemantauan keamanan dan jaringan tanpa menempatkan lebih banyak beban di server. Secara pribadi, saya menemukan segmentasi fungsi dan jaringan sering menyederhanakan pemecahan masalah jaringan, meskipun kadang-kadang, kompleksitas tambahan membuat analisis lebih sulit.

Kebijakan firewall yang paling aman, tetapi paling menjengkelkan untuk dikelola, adalah menolak semua dan secara eksplisit hanya mengizinkan lalu lintas yang harus Anda izinkan. Ini menjengkelkan, karena orang sering perlu memperbarui kebijakan firewall karena jaringan perlu diubah.

Saya juga menyarankan menggunakan semacam antarmuka firewall di server - pertahanan mendalam adalah kuncinya. Menggunakan port non-standar untuk layanan terkait administrasi tidak ada salahnya. fail2ban baik-baik saja. Kejar pertanyaan yang lebih spesifik tentang aplikasi keamanan di Serverfault untuk menemukan lebih banyak ide.

Keamanan seperti lelucon tentang dua pejalan kaki dan beruang - sementara seseorang tidak pernah dapat mencapai keamanan yang sempurna, akan sangat membantu untuk menjadi target yang lebih sulit daripada yang lain.

5
pcapademic

Beberapa orang telah menunjuk ke Securing Debian Manual . Ini harus cukup memadai untuk semuanya kecuali persyaratan militer.

Banyak orang berpikir bahwa menjadi paranoid sangat keren atau profesional atau semacamnya. Ini bukan , itu hanya menjengkelkan untuk admin lain dan langsung represif untuk pengguna Anda. Sebagian besar dari hal-hal yang Anda lihat direkomendasikan hanyalah kesibukan palsu untuk merasa berguna bagi admin paranoid, tetapi sebenarnya tidak membantu, karena pelanggaran keamanan nyata kemungkinan disebabkan oleh sistem yang tidak cukup diperbarui dan/atau dari sumber dalam.

Yang mengatakan, saya menganggap itu salah satu prinsip saya untuk tidak mempercayai apa pun di jaringan lokal lebih dari apa pun dari Internet. Oleh karena itu, saya mengkonfigurasi semuanya untuk memerlukan otentikasi bahkan di jaringan lokal. Saya mengenkripsi dan mengotentikasi semua lalu lintas antara setiap komputer menggunakan IPsec.

Saya sedang dalam proses konversi ke enkripsi disk penuh untuk semua server saya.

Saya hanya menginstal layanan yang saya gunakan. Saya tidak punya firewall; Saya mengkonfigurasi layanan yang harus saya minta otentikasi atau membatasi mereka (dengan konfigurasi program sendiri atau oleh pembungkus TCP) untuk IP tertentu. Satu-satunya hal yang perlu saya blokir menggunakan iptables adalah memcached, karena tidak memiliki file konfigurasi, dan tidak menggunakan TCP-wrappers.

Saya menggunakan kata sandi yang baik, yang dibuat secara acak untuk akun saya dan mempercayai server SSH saya (dan semua layanan lainnya) untuk menjaga mereka yang tidak mengetahui kata sandi itu. fail2ban hanya untuk mereka yang memiliki ruang terbatas untuk file log, IMO. (Anda harus memiliki kata sandi yang cukup baik untuk bisa memercayainya.)

4
Teddy

Pergilah melalui How-to Nice ini di www.debian.org/doc/manuals/securing-debian-howto/

Saya pribadi mengubah port ssh dan menggunakan fail2ban + denyhosts. Dan saya memblokir semua yang tidak diperlukan. Semakin banyak Anda memblokir semakin sedikit Anda harus khawatir.

3
Vihang D