Apa yang harus dilakukan untuk mengamankan Raspberry Pi?

82

Memiliki puluhan ribu Raspberry Pi yang terhubung ke internet pada akhirnya akan menarik minat beberapa orang yang ingin melakukan hal-hal buruk ke komputer kecil terutama ketika banyak orang menggunakan Pi mereka untuk melakukan server jaringan. Linux adalah OS yang solid di luar kotak keamanan bijaksana, tetapi selain dari hanya mengubah kata sandi apa yang harus dilakukan untuk "mengeraskan" Raspberry Pi jika saya berniat untuk meng-host layanan internet yang menghadap pada perangkat?

Hanya untuk mendukung sindiran "puluhan ribu" saya, Eben Upton mengatakan bahwa "The Raspberry Pi telah menjual lebih dari 200.000 modul komputer dasar dan saat ini mengirimkan 4.000 unit sehari" . Mungkin aman untuk berasumsi bahwa puluhan ribu dari 200.000 itu telah terhubung ke internet. Kurang aman untuk berasumsi bahwa puluhan ribu orang yang terhubung dengan internet Raspberry Pis menyelenggarakan layanan web yang dihadapkan kepada publik, tetapi potensi antusiasme peretas masih ada.

Dan B
sumber
3
Perlu diingat bahwa walaupun mungkin ada "puluhan ribu" yang terhubung, ada (saat ini) 3 distro Linux terpisah tersedia (yang saya ketahui) dan saya pikir ada beberapa proyek berbasis non-linux di luar sana. Ini memengaruhi perspektif hacker. Namun, jika keamanan penting, pertahankan distro Anda diperbarui dan, jika perlu, simpan perangkat Anda di belakang firewall.
RLH
Poin bagus RLH Saya akan menambahkan beberapa informasi tambahan ke pertanyaan yang mendukung jumlah Raspberry Pis di alam liar untuk memberikan gagasan yang lebih baik tentang permukaan serangan Raspberry Pi yang disebutkan Steve dalam jawabannya.
Dan B
@DanB Attack surface bukan fungsi dari jumlah Pi melainkan jumlah sistem dan layanan yang tersedia untuk diserang. en.wikipedia.org/wiki/Attack_surface
Steve Robillard
@SteveRobillard Maaf jika saya tidak jelas dalam komentar, tetapi dalam edit saya membuat pertanyaan saya mencoba untuk meringkas dengan cara kualitatif jumlah Pis yang hosting layanan yang menghadap publik dan karena itu akan menyediakan layanan yang tersedia untuk serangan .
Dan B
Saya telah menemukan tutorial singkat tentang cara mengamankan pi raspberry Anda saat menggunakan SSH, tampaknya cukup rapi. -> tutorial
Dominik St.

Jawaban:

54

Mengamankan komputer bukanlah proses yang mudah, seluruh buku ditulis pada topik. Ukuran Pi tidak mengurangi ancaman keamanan atau permukaan serangan yang diberikan kepada penyerang yang mungkin. Sebagai hasilnya, saya akan menjelaskan langkah-langkah yang terlibat dan memberikan tautan ke instruksi dan tutorial yang lebih rinci.

Karena Anda belum menyebutkan distro apa yang Anda gunakan, saya akan menganggap distro Raspbian yang direkomendasikan.

  1. Ubah kata sandi default. Distro Raspbian menyertakan ini sebagai opsi dalam skrip startup awal. Jika Anda belum melakukannya, Anda dapat menggunakan perintah passwd untuk mengubahnya. Pastikan untuk memilih kata sandi yang kuat .
  2. Nonaktifkan layanan yang tidak digunakan . Saya melihat bahwa distro Raspbian yang direkomendasikan mencakup server web Apache dan mengaktifkannya saat startup (dapatkah seseorang mengonfirmasi hal ini) . Apakah Anda benar-benar memerlukan server web berjalan? Jika tidak menonaktifkannya. Jika Anda perlu menjalankan Apache, pastikan untuk mengamankannya , dan lakukan juga untuk layanan lain (mis. FTP, NGINX, MySQL, dll.), Pencarian google harus menghasilkan beberapa sumber.
  3. Instal dan konfigurasikan iptables .
  4. Selalu perbarui sistem Anda. Anda dapat mengotomatisasi ini menggunakan cron atau menggunakan cron-apt .
  5. Konfigurasikan logging untuk memantau login dan usaha login yang gagal. Jika mungkin menggunakan Hard drive eksternal untuk menjadi tuan rumah Anda / partisi var, ini akan memberi Anda lebih banyak ruang, menghindari file log dari mengisi Kartu SD dan memperpanjang umur Kartu SD Anda.

Beberapa hal tambahan yang mungkin ingin Anda pertimbangkan:

Anda juga harus membaca pertanyaan terkait ini. Bagaimana saya bisa melindungi dari intrusi dan malware sebelum menghubungkannya ke internet (terutama pada alamat IP publik)? .

Ini hanya langkah-langkah minimum untuk mengamankan Pi Anda. Untuk info lebih lanjut, Anda mungkin ingin membaca Manual Pengamanan Debian .

Steve Robillard
sumber
6
Pastikan untuk membuat kunci ssh Anda sendiri. Saya pikir beberapa gambar sudah memiliki kunci di dalamnya.
John La Rooy
2
Apache tidak diinstal dalam raspbian secara default (pengguna menginstal sesuatu seperti php5-mysql IIRC). Untuk filter paket yang sedikit lebih ramah daripada iptables telanjang, mungkin sebaiknya kita merekomendasikan ufw dan mungkin bahkan GUI frontend gufw-nya?
elmicha
1
Apakah masuk akal untuk menginstal iptables, meskipun Anda berada di belakang router?
keiki
2
@ otakun85 Ya, itu disebut pertahanan mendalam. Dengan mengandalkan sepenuhnya pada router Anda jika seseorang melewati router Anda yang memiliki iptables dan menjalankan membuat eksploitasi lebih lanjut lebih sulit.
Steve Robillard
2
Menonaktifkan layanan yang tidak digunakan juga membantu dengan waktu startup dan menyimpan sejumlah kecil memori dan CPU.
TomG
11

Setelah melihat RPi, sepertinya perangkat yang cukup aman, asalkan Anda melakukan beberapa hal.

Kebutuhan pengguna / pass standar diubah. Paling tidak, ubah kata sandi. Untuk keamanan yang lebih baik lagi, ubah nama pengguna juga. (Tambahkan pengguna baru, lalu nonaktifkan PI. Periksa bahwa ROOT juga dinonaktifkan dari masuknya SSH, meskipun saya pikir itu secara default.)

Memindai RPi hanya mengembalikan satu port terbuka, 22, yang merupakan koneksi SSH, dan bahkan itu harus dinyalakan sebelum ditampilkan (meskipun kebanyakan orang akan menggunakannya daripada monitor, keyboard, dan mouse, saya harapkan, terutama pada server {web})

Anda dapat mengubah nomor port SSH, tetapi itu tidak akan banyak, karena port dapat dipindai dengan cukup mudah. Sebagai gantinya, aktifkan otentikasi SSH-Key.

Anda sekarang tidak memiliki cara bagi siapa pun untuk masuk ke mesin Anda tanpa kunci SSH, nama pengguna, dan kata sandi yang benar.

Selanjutnya, atur server web Anda. Apache ada di mana. Itu akan duduk dan memantau port 80 sebagai default, dan secara otomatis menanggapi koneksi dari browser, melayani halaman web Anda.

Jika Anda memiliki firewall atau router, Anda dapat mengubah port RPi, dan meminta router mengarahkan lalu lintas dari satu port ke port lainnya. Misalnya, lalu lintas port 80 ke router dialihkan ke port 75 pada RPi, dan SSH pada 22 diarahkan ke port 72. Ini akan menambah lapisan perlindungan lain, tetapi sedikit lebih rumit.

Tetap perbarui dan tambal sulam semuanya.

Ini tidak akan melindungi Anda dari serangan yang mengeksploitasi java, flash, SQL server, dll yang mungkin Anda tambahkan nanti, tapi itu saja untuk dasarnya, sungguh.

Anda juga bisa menambahkan firewall, yang akan memperlambat siapa pun yang masuk ke sistem Anda dari keluar pada port yang berbeda jika mereka menginstal layanan baru. Router Anda harus berurusan dengan itu, tetapi jika itu terhubung langsung, kemudian mengaturnya, dan, untuk berapa lama, Anda mungkin juga menjalankannya - itu tidak akan menambah banyak cara sumber daya sistem.

Satu hal lain yang mungkin ingin Anda tambahkan adalah fail2ban ( http://www.fail2ban.org/wiki/index.php/Main_Page ) yang menambahkan aturan firewall untuk memblokir beberapa upaya login, mencegah serangan kamus. Meskipun ini tidak dapat bekerja pada sistem Anda jika Anda telah mengikuti hal di atas, jika Anda karena alasan tertentu perlu meninggalkan kata sandi hanya auth SSH di tempat (Anda login jauh dari banyak mesin yang berbeda, misalnya) maka itu akan mencegah serangan kamus dari bekerja. Setelah jumlah upaya yang Anda tentukan, itu akan memblokir untuk beberapa waktu lagi upaya dari alamat IP itu. (Berhati-hatilah karena tidak melihat router / alamat IP lokal dan larangan itu terlalu dini atau terlalu lama!)

Diedit untuk menambahkan: Setelah semuanya diatur dengan baik, gunakan alat seperti dd atau Win32DiskImager untuk mengambil cadangan bit-bijaksana lengkap dari kartu SD Anda. Dengan begitu, jika terjadi kesalahan, Anda dapat mengembalikannya ke kartu yang sama atau menuliskannya ke kartu baru, dan melanjutkannya. (Tetapi jika diretas, Anda ingin mengetahui lubang apa yang ditemukan dan menutupnya terlebih dahulu, mungkin!)

Nigel Tolley
sumber
1
Bisakah Anda menjelaskan bagaimana mengubah port RPi pada router menambah lapisan perlindungan lain?
Andrei
-1

Selain pengerasan OS, Anda juga dapat mempertimbangkan menggunakan layanan pemantauan keamanan berbasis cloud untuk memantau aktivitas ke / dari / di perangkat Anda dan menerima peringatan jika ada sesuatu yang tidak diinginkan terdeteksi. Ada beberapa alat SIEM berbasis cloud yang tersedia saat ini, dan beberapa (seperti siemless) mengoperasikan model freemium sehingga pengguna rumahan tidak perlu membayar sepeser pun. Untuk menggunakan servcie seperti itu, Anda harus membiasakan diri dengan hal-hal seperti rsyslog / syslog yang merupakan bagian standar dari semua distribusi OS Linux.

spids
sumber
1
Alat cloud meningkatkan permukaan serangan, pemantauan keamanan lokal (logwarn / check) adalah alat yang baik, tetapi jawaban ini tidak lengkap dan lebih banyak komentar.
user1133275