Kembali ke blog Webship

rekayasa Webship

Webship Server Web: Pengaturan Aman Secara Default

Webship secara default mengaktifkan pertahanan HTTP utamanya, batas sumber daya, dan perlindungan respons sambil menjaga permukaan kontrol opsional tetap pribadi atau dinonaktifkan. Berikut adalah garis dasar dan daftar periksa produksi.

# Webship Server Web: Pengaturan Aman Secara Default

Sebuah server web yang aman seharusnya tidak bergantung pada operator untuk mengingat satu pengaturan lagi pada pukul 2 pagi. Server tersebut seharusnya dimulai dari dasar perlindungan, menolak konfigurasi yang tidak aman, dan memerlukan pilihan yang disengaja sebelum menampilkan kemampuan sensitif.

Itu adalah model di balik Webship. Konfigurasi default-nya mengaktifkan pertahanan utama untuk permintaan dan respons, membatasi sumber daya yang dapat dikonsumsi oleh penyerang, dan meninggalkan permukaan kontrol opsional dalam keadaan nonaktif. Anda dapat menyesuaikan default tersebut untuk aplikasi nyata, tetapi Anda tidak perlu menemukan setiap perlindungan sebelum permintaan pertama tiba.

Aman secara default tidak berarti aman tanpa konteks. Sertifikat, otorisasi aplikasi, kebijakan jaringan, rahasia, dan tanggapan terhadap insiden tetap menjadi tanggung jawab operator. Tugas Webship adalah membuat titik awal yang aman menjadi jelas—dan membuat pelemahan yang tidak disengaja menjadi lebih sulit.

Perlindungan yang mulai diaktifkan

Webship mengaktifkan enam lapisan dalam konfigurasi dasarnya:

| Lapisan | Perilaku default | Apa yang dikuranginya | | --- | --- | --- | | Perlindungan file titik | Menolak segmen jalur statis yang diawali titik | Paparan tidak sengaja dari file lingkungan, metadata repositori, dan konfigurasi lokal | | Firewall aplikasi web | Memblokir pola serangan yang dikenal | Injeksi SQL, skrip lintas situs, penelusuran, probe jalur sensitif, injeksi perintah, penyelundupan header, dan encoding permintaan yang tidak didukung | | Kontrol DDoS | Berjalan dalam mode normal dengan status klien terbatas | Banjir permintaan, pelacakan tak terbatas, dan kelelahan sumber daya yang dapat dihindari | | Tantangan bot | Menggunakan cookie tantangan yang ditandatangani | Penyalahgunaan otomatis berbiaya rendah dan pemindaian berulang | | Header keamanan respons | Menambahkan kebijakan browser yang ketat | Kebingungan MIME, framing, kebocoran referer, kemampuan browser berbahaya, dan pemuatan konten yang luas | | Perisai API | Menggunakan mode blok dan menolak rute yang tidak dikenal setelah kontrak API ditetapkan | Endpoint bayangan, metode yang tidak diinginkan, jenis konten yang tidak terduga, dan persyaratan otorisasi yang hilang |

WAF default juga menempatkan batas keras pada apa yang diperiksanya: 32 KiB dari header permintaan, jalur 2.048 byte, dan badan permintaan 1 MiB. Ini adalah batas keamanan, bukan saklar kinerja sewenang-wenang. Jika suatu aplikasi secara sah membutuhkan permintaan yang lebih besar, tingkatkan batas yang relevan untuk aplikasi itu dan uji hasilnya alih-alih menonaktifkan pemeriksaan secara global.

Perlindungan DDoS dimulai dalam mode normal pada 600 permintaan per menit dengan izin lonjakan sebesar 100 per kunci klien. Tabel status kliennya dibatasi hingga 65.536 entri. Nilai-nilai ini adalah garis dasar, bukan model lalu lintas universal: API publik, layanan unduhan, dan panel admin internal seharusnya tidak berbagi batas spesifik aplikasi yang sama.

Proteksi browser adalah bagian dari dasar

Kebijakan header-respons Webship diaktifkan bahkan ketika sebuah aplikasi lupa menambahkan headernya sendiri. Default-nya meliputi:

  • X-Content-Type-Options: nosniff;
  • kebijakan tolak-bingkai;
  • Kebijakan-Perujuk: tanpa-perujuk;
  • Strict-Transport-Security selama satu tahun, termasuk subdomain;
  • Kebijakan Keamanan Konten dibatasi pada konten dari sumber yang sama, dengan pembatasan framing dan base-URI;
  • Kebijakan-Izin menonaktifkan akses geolokasi, mikrofon, dan kamera.

Default ini sengaja dibuat membatasi. Tinjau HSTS sebelum menerapkannya ke domain dengan subdomain yang belum sepenuhnya siap HTTPS. Tinjau Content-Security-Policy sebelum sebuah aplikasi memuat skrip, gaya, font, gambar, atau koneksi dari asal lain. Default yang aman sebaiknya gagal secara terlihat saat deployment, bukan dilemahkan secara diam-diam dalam produksi.

Permukaan opsional tetap tertutup

Webship tidak menampilkan setiap fitur hanya karena biner mengandungnya. Reverse proxy, WebTransport, endpoint observabilitas, TLS otomatis, asal respons, dan endpoint kontrol MCP dinonaktifkan secara default.

Endpoint MCP memiliki cakupan loopback saat diaktifkan dan memerlukan konfigurasi keamanan yang eksplisit. Metrik dan statistik memerlukan instrumentasi yang diaktifkan secara sengaja. Manajemen sertifikat otomatis mengharuskan operator memilih direktori ACME, kontak, penyimpanan, dan penerimaan syarat layanan. Hal ini mencegah fitur operasional menjadi permukaan jaringan yang mengejutkan.

Pendengar dasar juga terikat ke 127.0.0.1. Seorang operator harus secara eksplisit memilih alamat publik. Pilihan tunggal itu menciptakan titik tinjau yang berguna untuk aturan firewall, izin layanan, identitas TLS, dan topologi penyebaran.

Proxy terbalik mempertahankan batas kepercayaan

Ketika reverse proxy diaktifkan, penerusan TLS tetap menjadi default. Webship meneruskan lalu lintas terenkripsi tanpa mengambil alih plaintext aplikasi atau kunci sesi aktif. Asal tetap bertanggung jawab atas TLS dan protokol yang dinegosiasikan.

Aktifkan terminasi TLS hanya ketika Webship harus memeriksa permintaan HTTP, mengarahkan berdasarkan jalur, menerapkan kebijakan WAF dan API, menulis ulang header, atau menyimpan respons dalam cache. Terminasi tidak secara inheren kurang aman; hal itu hanya memindahkan batas kepercayaan. Keputusan penting adalah mesin mana yang diizinkan untuk melihat teks biasa dan mengapa.

Pass-through juga memiliki batas fungsional. Routing TCP didasarkan pada ClientHello SNI karena permintaan HTTP terenkripsi. HTTP/3 pass-through memerlukan rute untuk berbagi satu asal UDP. Jika Anda memerlukan keamanan yang sadar konten di edge, hentikan TLS di sana dan lindungi hop dari edge ke asal secara terpisah.

Garis dasar produksi yang bisa Anda tinjau

Cuplikan berikut membuat pengaturan default penting menjadi jelas alih-alih mengandalkan penghilangan:

listen = "0.0.0.0:443"
deny_dotfiles = true

[tls]
unknown_sni = "reject"

[ddos]
enabled = true
mode = "normal"
requests_per_minute = 600
burst = 100
block_seconds = 60
max_tracked_clients = 65536

[security]
enabled = true
rate_limit_max_entries = 65536

[security.waf]
enabled = true
mode = "block"
sqli = true
xss = true
traversal = true
sensitive_paths = true
header_abuse = true
max_header_bytes = 32768
max_path_bytes = 2048
max_body_bytes = 1048576

[security.response_headers]
enabled = true
nosniff = true
frame_deny = true
referrer_no_referrer = true
hsts = "max-age=31536000; includeSubDomains"
content_security_policy = "default-src 'self'; frame-ancestors 'none'; base-uri 'self'"
permissions_policy = "geolocation=(), microphone=(), camera=()"

Pada listener multi-domain, unknown_sni = "reject" mencegah hostname yang tidak dikenali menerima sertifikat default listener. Listener automatic-TLS Webship sudah menolak nama yang tidak dikenal sampai sertifikat tersedia.

Validasi adalah kontrol keamanan

Webship memvalidasi konfigurasi sebelum mengikat pendengar. Bidang yang tidak dikenal, batas yang tidak valid, identitas yang tidak lengkap, pendengar yang bertentangan, dan kombinasi protokol yang tidak didukung akan menyebabkan kegagalan startup dengan kesalahan spesifik. Validasi yang sama dijalankan sebelum konfigurasi yang aktif dipasang. Reload yang gagal meninggalkan konfigurasi saat ini tetap aktif.

Path konfigurasi MCP yang terautentikasi menambahkan penjaga tambahan: ia menolak perubahan langsung yang akan menonaktifkan WAF aktif, lapisan DDoS, API Shield, tantangan bot, kebijakan edge-auth, atau lapisan header-respons. Pemeriksaan versi mencegah seorang administrator menimpa snapshot konfigurasi yang lebih baru. Pengaturan yang terkait dengan proses tetap memerlukan restart alih-alih berpura-pura bahwa perubahan langsung sebagian berhasil.

Ini adalah perbedaan yang berguna. Default yang aman melindungi penyebaran baru. Validasi transaksional dan pembaruan yang dijaga melindungi yang sedang berjalan.

Operator mana yang masih perlu memutuskan

Sebelum mengekspos Webship ke internet:

  1. Konfigurasikan identitas TLS yang tepercaya dan lindungi kunci privat.
  2. Tetapkan penanganan SNI yang tidak diketahui untuk topologi pendengar.
  3. Konfirmasikan bahwa HSTS dan Content-Security-Policy sesuai dengan setiap aplikasi dan subdomain.
  4. Tentukan endpoint API Shield, metode yang diterima, jenis konten, dan persyaratan otorisasi.
  5. Tambahkan batasan tarif spesifik rute alih-alih hanya mengandalkan garis dasar global.
  6. Aktifkan autentikasi edge untuk host atau jalur yang dilindungi dan gunakan token dengan masa berlaku singkat.
  7. Jaga MCP dan pendengar observabilitas tetap pribadi, terautentikasi, dan terpisah dari lalu lintas publik.
  8. Jalankan Webship dengan akun khusus tanpa hak istimewa, root aplikasi hanya-baca jika memungkinkan, dan hanya kemampuan sistem operasi yang dibutuhkan.
  9. Validasikan konfigurasi sebelum penerapan, lalu uji lalu lintas yang diblokir dan diizinkan di lingkungan canary.
  10. Pantau peristiwa audit keamanan dan latih pergantian dari mode normal ke mode under_attack atau lockdown.

Default yang lebih aman adalah sebuah permulaan, bukan klaim

Tidak ada server web yang dapat memutuskan pengguna mana yang seharusnya melihat faktur Anda, asal mana yang dapat memanggil API Anda, atau seberapa cepat endpoint bisnis Anda harus menerima permintaan. Kontrol tersebut memerlukan pengetahuan aplikasi.

Webship menyediakan lapisan bawah: parser terbatas, konfigurasi ketat, header respons defensif, inspeksi permintaan, kontrol penyalahgunaan, dan permukaan opsional yang ditutup. Hasilnya bukan “keamanan yang selesai.” Itu adalah celah yang lebih kecil antara memasang server dan mengoperasikannya secara bertanggung jawab.

Tinjau Webship dokumentasi secara lengkap sebelum penerapan produksi. Skema konfigurasi dan binary yang berjalan tetap menjadi sumber otoritatif untuk versi tepat yang Anda operasikan.