Penggunaan fungsi FALLOCATE pada PHP

  • Guide
  • API
  • Wiki
  • Forum
  • Community
    • Live Chat
    • Extensions
    • Resources
    • Members
    • Hall of Fame
    • Badges
  • More
    • Learn
    • Books
    • Resources
    • Develop
    • Download Yii
    • Report an Issue
    • Report a Security Issue
    • Contribute to Yii
    • About
    • What is Yii?
    • Release Cycle
    • News
    • License
    • Team
    • Official logo

Penggunaan fungsi FALLOCATE pada PHP

Sedikit paranoia yang sehat belum menyakiti siapa pun. Selain messenger dengan enkripsi ujung-ke-ujung, enkripsi file pada smartphone "di luar kotak" dan penggunaan wajib SSL di situs web, tidak akan berlebihan untuk melindungi data di server virtual. Selain itu, teknologi modern telah membuatnya sederhana dan dapat diakses oleh semua pengguna. Penyedia besar yang menyediakan layanan hosting VPS menawarkan untuk mengenkripsi data pengguna menggunakan alat sistem operasi standar. Misalnya, Microsoft, di cloud Azure-nya, menggunakan BitLocker untuk server di Windows , dan DM-Crypt untuk mesin virtual di Linux. ... Alat-alat ini memungkinkan Anda untuk menjaga privasi data Anda bahkan jika penyerang mendapatkan akses ke pusat data tempat server berada atau komputer lokal Anda.

 Anda dapat mempercayai data Anda kepada host yang menyediakan VPS, Anda tidak dapat mempercayai, tetapi tidak ada yang akan melarang Anda menggunakan metode yang sama dengan penyedia VPS mana pun, yang dikonfigurasi sendiri. Dalam artikel ini, saya akan menunjukkan cara melakukannya.


Mengenkripsi data di Windows dengan BitLocker


Metode enkripsi yang paling sederhana, tetapi paling aman untuk Windows adalah layanan BitLocker bawaan. Penyiapannya sederhana dan cepat, jadi cara termudah adalah menggunakan antarmuka grafis. Mari kita analisis proses ini menggunakan contoh Windows Server 2016, yang terletak di penyedia RuVDS. Saya akan memilih lokasi server di Moskow untuk mengurangi ping:

Penggunaan fungsi FALLOCATE pada PHP


Dan untuk BitLocker yang lebih cepat, gunakan SSD terkecil.

Penggunaan fungsi FALLOCATE pada PHP


Kami akan terhubung melalui RDP standar, yang harus dikonfigurasi sedikit sebelum digunakan. Untuk melakukan ini, klik tombol "Tampilkan parameter" di bagian bawah jendela, centang kotak "Papan klip" di tab "Sumber daya lokal", dan pilih "Disk" dalam dialog yang dipanggil dengan tombol "Detail". 

Penggunaan fungsi FALLOCATE pada PHP


Ini memungkinkan Anda menyalin berkas ke komputer atau menempelkannya melalui papan klip biasa. RDP sejujurnya akan memperingatkan Anda bahwa: "Sambungan jarak jauh ini dapat berbahaya ...", karena berbagi sumber daya lokal. Mari perhatikan dan sambungkan ke server.

Setelah login, kita akan melihat desktop biasa dan panel administrasi. Mari hubungkan layanan BitLocker langsung darinya dengan memilih opsi "Tambahkan peran dan fitur". Pada layar pertama, centang kotak "Lewati ..." agar tidak membaca peringatan setiap kali Anda mengubah konfigurasi, lalu klik "Berikutnya" dan pilih "Penginstalan berbasis peran atau berbasis fitur", lalu pilih server lokal kami dan di bagian "Fitur", tandai "BitLocker Drive Encryption". 

Penggunaan fungsi FALLOCATE pada PHP


Konfirmasikan "Tambahkan Fitur", klik "Berikutnya", centang opsi "Mulai ulang server tujuan secara otomatis jika diperlukan" dan klik "Instal".

Penggunaan fungsi FALLOCATE pada PHP


Setelah menginstal layanan, sistem akan secara otomatis melakukan boot ulang, dan saat Anda terhubung lagi, sebuah jendela akan muncul bahwa penginstalan berhasil.

Karena kami memiliki server virtual, server ini tidak memiliki prosesor kripto " Modul Platform Tepercaya ", yang berarti kami perlu mengonfigurasi kebijakan akses agar BitLocker meminta kata sandi saat boot sistem. Jika Anda tidak melakukannya, saat Anda mencoba mengaktifkan enkripsi, sistem akan menampilkan pesan kesalahan:

Penggunaan fungsi FALLOCATE pada PHP


Kami pergi ke pencarian, masukkan nama program di sana: " gpedit.msc " dan menjalankannya. Kita perlu menemukan opsi di sepanjang jalur berikut: Kebijakan Komputer Lokal → Konfigurasi Komputer → Template Administratif → Komponen Windows → Enkripsi Drive BitLocker → Drive Sistem Operasi

Penggunaan fungsi FALLOCATE pada PHP


Anda perlu mengaktifkan kebijakan dengan memilih "Diaktifkan", pilih kotak centang "Izinkan BitLocker tanpa TPM yang kompatibel (memerlukan sandi atau kunci startup pada flash drive USB)" di opsi dan klik "OK". 

Tetap memilih drive yang ingin Anda enkripsi di Explorer. 

Penggunaan fungsi FALLOCATE pada PHP


Wizard penyiapan akan menganalisis sistem dan meminta Anda untuk melanjutkan ("Berikutnya"). Di kotak dialog berikutnya, dia akan memperingatkan bahwa drive akan digunakan oleh BitLocker dan akan merekomendasikan Anda untuk membuat cadangan data penting terlebih dahulu. Ide bagus, tetapi dengan asumsi Anda sudah melakukannya, klik Berikutnya. Sistem akan menyiapkan drive untuk enkripsi, tetapi dalam prosesnya, ia akan memperingatkan Anda bahwa tidak ada tempat untuk mentransfer data Pemulihan Windows dan akan menawarkan untuk mengaktifkan dan mengkonfigurasi sistem ini setelah enkripsi. Penginstalan hampir selesai dan wizard akan meminta Anda untuk mereboot sistem.

Penggunaan fungsi FALLOCATE pada PHP


Setelah reboot, layanan akan diinstal dan sistem akan menawarkan untuk mengenkripsi disk

Penggunaan fungsi FALLOCATE pada PHP


Pada kotak dialog berikutnya, wizard akan meminta Anda untuk memasukkan USB flash drive atau memasukkan kata sandi. Karena server kami virtual, kami memilih yang terakhir. Di jendela berikutnya, kami muncul dengan, masukkan dan konfirmasi kata sandi, sistem akan bersumpah, jika terlalu sederhana atau pendek, Anda harus menunjukkan imajinasi Anda. 

Selanjutnya, kita akan diminta untuk memilih cara penyimpanan kunci pemulihan akses jika kita lupa kata sandi BitLocker. 

Penggunaan fungsi FALLOCATE pada PHP


Kami tidak punya tempat untuk memasukkan USB, Anda dapat memilih disk lokal komputer Anda, akses yang dibuka di opsi RDP. File tersebut akan diberi nama seperti ini: "BitLocker Recovery Key BE32F397-9C84-4765-9840-50BF3893CAB6.TXT". Dan di dalamnya akan ada instruksi singkat dan kunci pemulihan: 

Lihat

BitLocker Drive Encryption recovery key 

To verify that this is the correct recovery key, compare the start of the following identifier with the identifier value displayed on your PC.

Identifier:

      BE32F397-9C84-4765-9840-50BF3893CAB6

If the above identifier matches the one displayed by your PC, then use the following key to unlock your drive.

Recovery Key:

      667260-267685-242209-551199-606441-680966-499147-122408

If the above identifier doesn't match the one displayed by your PC, then this isn't the right key to unlock your drive.
Try another recovery key, or refer to http://go.microsoft.com/fwlink/?LinkID=260589 for additional assistance.

      
      




Setelah menyimpan file, kami melanjutkan ke pilihan jenis enkripsi. Karena hard drive lokal kami dilindungi, kami memilih opsi pertama: "Mode enkripsi baru". 

Layar berikutnya memerlukan konfirmasi bahwa kami benar-benar ingin mengenkripsi disk, klik "Lanjutkan", kami mendapat pesan bahwa proses akan dimulai setelah reboot dan proposal untuk mem-boot ulang komputer.

Semuanya - disk sistem server kami dienkripsi.

Kami mencoba menghubungkannya dan ... Tidak ada yang berhasil!

Semuanya logis. BitLocker akan meminta Anda memasukkan kata sandi saat boot, dan ini terjadi bahkan sebelum sistem siap untuk operasi jarak jauh. Ini tidak dapat dilakukan melalui RDP.

Kami pergi ke halaman RuVDS, yang berisi informasi tentang server yang sedang berjalan, dan kami melihat gambar yang menarik:

Penggunaan fungsi FALLOCATE pada PHP


Di tangkapan layar dari monitor virtual, sesuatu yang sangat mirip dengan prompt sistem. Memang, kita harus menggunakan konsol akses mode darurat untuk memasukkan kata sandi sebelum mem-boot sistem:

Penggunaan fungsi FALLOCATE pada PHP


Kami memasukkan kata sandi dan melihat kelanjutan unduhan. Konsol darurat dapat ditutup dan dihubungkan melalui RDP. Omong-omong, kami membutuhkan operasi seperti itu setiap kali server virtual dimulai ulang. Tidak terlalu nyaman, tapi itulah harga keamanan.

Sekarang, ketika kita membuka menu drive, kita melihat item baru di dalamnya: "Ubah sandi BitLocker" dan "Kelola BitLocker". Setelah membuka item kedua, kita dapat melihat status disk dan manajemen enkripsi nya. Karena saya sengaja memilih SSD kecil untuk demonstrasi, enkripsi memakan waktu kurang dari lima menit. Ketika itu berakhir, antarmukanya terlihat seperti ini:

Penggunaan fungsi FALLOCATE pada PHP


Instalasi Bitlocker dan enkripsi disk di server virtual sekarang sudah selesai. Sekarang, jika seseorang mendapatkan akses fisik ke komputer Anda, dia tidak akan dapat terhubung ke server, bahkan jika dia membuka situs web penyedia dengan login Anda. Dan jika dia datang ke pusat data dan terhubung ke VPS Anda dari dalam, dia tetap tidak dapat menerima data - data itu akan dienkripsi.

Hal utama adalah jangan melihat file yang berisi kunci untuk memulihkan akses!

Omong-omong, bagaimana Anda menggunakan kunci ini jika Anda lupa kata sandi BitLocker Anda? Ini sangat sederhana, Anda perlu me-reboot server dan pergi ke konsol darurat, tetapi sekarang memilih untuk tidak masuk, tetapi memulihkan. Tekan ESC dan dapatkan undangan untuk memasukkan kunci. Satu kehalusan, Anda hanya perlu memasukkan angka, dan pemisah minus akan dimasukkan secara otomatis. Jika Anda salah memasukkan, Anda akan menerima pesan kesalahan dan permintaan untuk memasukkan kunci lagi. Jika dimasukkan dengan benar, sistem akan melanjutkan booting. 

Mengonfigurasi BitLocker di Server Jarak Jauh - Selesai.

Mengenkripsi data di Linux dengan dm-crypt


Ada banyak solusi enkripsi partisi yang berbeda untuk Linux, kami akan menggunakan dm-crypt , sistem sederhana dan andal yang digunakan Microsoft di cloud Azure-nya. 

dm-crypt - sistem enkripsi disk standar berdasarkan kernel Linux, berdasarkan: d evice m apper , subsistem membuat dan memberikan transparansi untuk bekerja dengan perangkat virtual; dan crypt o API- subsistem enkripsi yang digunakan untuk VPN melalui IPsec dan sejumlah fungsi lainnya. Dm-crypt memiliki dua cara untuk bekerja dengan cryptocontainer, biasa - di mana datanya tidak berisi format yang terlihat dan terlihat seperti sekumpulan byte acak, dan LUKS - yang menyediakan lebih banyak opsi, misalnya, deteksi otomatis wadah kripto oleh sistem, tetapi file tersebut akan berisi metadata, menurut yang dapat menentukan fakta enkripsi. Kami akan menggunakan metode kedua, melalui protokol LUKS .

Server dipilih dengan cara yang sama seperti di bagian pertama, kecuali untuk sistem operasi. Mari lewati langkah - langkah untuk presetting, mereka dapat ditemukan di manual RuVDSdan lanjutkan ke menginstal sistem enkripsi. Mari perbarui daftar paket dan instal cryptsetup - antarmuka baris perintah dm-crypt (untuk kesederhanaan, semua perintah akan dimasukkan sebagai root):

apt update
apt install cryptsetup 

      
      




Untuk menyimpan data terenkripsi, Anda harus terlebih dahulu membuat file khusus, yang kemudian akan bertindak sebagai perangkat. Itu harus tidak dapat dipisahkan, dan untuk ini ada beberapa cara, dengan berbagai tingkat keamanan.

Salah satunya dengan perintah fallocate.

Buat file 512 MB bernama test-crypt di direktori utama pengguna root:

fallocate -l 512M /root/test-crypt

      
      




Ini adalah metode termudah dan tercepat, tetapi paling tidak aman, karena perintah hanya mengalokasikan ruang disk tanpa menimpa data yang ada di sana.

Lebih aman membuat file menggunakan utilitas dd (definisi dataset), ini memungkinkan Anda tidak hanya membuat file, tetapi juga menulis informasi ke dalamnya yang akan menimpa konten sebelumnya dari area yang dipilih. Misalnya nol dari / dev / zero perangkat virtual:

dd if=/dev/zero of=/root/test-crypt bs=1M count=512

      
      




Cara paling paranoid adalah mengisi file dari / dev / urandom. Tapi ini juga yang paling lambat:

dd if=/dev/urandom of=/root/test-crypt bs=1M count=512

      
      




Setelah membuat file, Anda perlu mengubahnya menjadi bagian LUKS:

cryptsetup -y luksFormat /root/test-crypt

      
      




Jawab YES



prompt program dan kemudian atur kata sandi. Tidak seperti BitLocker, tidak akan ada metode pemulihan, kunci privat, dan kemudahan lainnya, jika Anda lupa kata sandi, data Anda akan hilang tanpa dapat diambil kembali! Dekati masalah ini dengan sangat bertanggung jawab. Oleh karena itu, pastikan untuk menggunakan opsi -y



yang meminta konfirmasi kata sandi. 

Mari kita periksa apa yang kita dapatkan dengan menggunakan utilitas file



:

file /root/test-crypt

      
      




Outputnya akan menunjukkan sesuatu seperti:

test-crypt:  LUKS encrypted file, ver 2 [, , sha256] UUID: 820a6557-ee7b-4f67-9f53-eb11586cc5dc

      
      




Ini berarti bahwa penampung kripto telah dibuat dan siap digunakan, ia tetap menerapkannya ke perangkat volume-kripto: 

cryptsetup luksOpen /root/test-crypt crypt-volume

      
      




Buat sistem file di sana:

mkfs.ext4 -j /dev/mapper/crypt-volume

      
      




Dan pilih titik pemasangan: 

mkdir /mnt/crypt-files

      
      




Perangkat terenkripsi siap digunakan, yang tersisa hanyalah memasang dan menggunakannya sebagai disk biasa, semua operasi enkripsi dan dekripsi berlangsung "dengan cepat", transparan bagi pengguna dan sistem.

mount /dev/mapper/crypt-volume /mnt/crypt-files

      
      




Mari kita periksa perangkat kita. Mari salin beberapa data ke dalamnya, misalnya, isi direktori / etc / ssh dan lihat apa yang dikatakan utilitas dh

cp -r /etc/ssh/ /mnt/crypt-files/ 
df -h

Filesystem           Size  Used Avail Use% Mounted on
udev                 928M     0  928M   0% /dev
tmpfs                191M  648K  191M   1% /run
/dev/sda1             20G  2.7G   16G  15% /
tmpfs                955M     0  955M   0% /dev/shm
tmpfs                5.0M     0  5.0M   0% /run/lock
tmpfs                955M     0  955M   0% /sys/fs/cgroup
tmpfs                191M     0  191M   0% /run/user/1000
/dev/mapper/crypt-volume  465M  1.3M  429M   2% /mnt/crypt-files

      
      




Seperti yang bisa kita lihat, perangkat dipasang, memiliki volume yang ditentukan oleh kami dan diisi sekitar 1% dengan file dari direktori ssh.

Untuk menyelesaikan pekerjaan dengan penampung kripto, Anda harus melepasnya lalu menonaktifkannya:

cd /
umount /mnt/crypt-files
cryptsetup luksClose crypt-volume

      
      




Pekerjaan dengan perangkat selesai dan kami memiliki file paling biasa yang dienkripsi dengan kata sandi kami, data yang tidak tersedia untuk orang luar, bahkan jika dia mendapat akses fisik ke server. 

Untuk menggunakan penampung crypto lagi, Anda perlu menginisialisasi dan memasangnya lagi:

cryptsetup luksOpen /root/test-crypt crypt-volume
mount /dev/mapper/crypt-volume /mnt/crypt-files

      
      




Ini melengkapi tinjauan sistem enkripsi data yang dapat digunakan pada server virtual.

Koneksi yang bagus semuanya!