Kang IT
Bunkerized-Nginx - Gambar Docker Nginx Diamankan Secara Default
Gambar nginx Docker aman secara default.
Hindari kerumitan mengikuti praktik terbaik keamanan setiap kali Anda membutuhkan server web atau proxy balik. Bunkerized-nginx menyediakan konfigurasi, pengaturan, dan alat keamanan umum sehingga Anda tidak perlu melakukannya sendiri.
Daftar fitur yang tidak lengkap:
- Dukungan HTTPS dengan otomatisasi Let's Encrypt transparan
- Keamanan web tercanggih: header keamanan HTTP, mencegah kebocoran, pengerasan TLS, ...
- WAF ModSecurity terintegrasi dengan Kumpulan Aturan Inti OWASP
- Larangan otomatis atas perilaku aneh dengan fail2ban
- Tantangan antibot melalui cookie, javascript, captcha atau recaptcha v3
- Blokir TOR, proxy, agen pengguna yang buruk, negara, ...
- Blokir IP buruk yang diketahui dengan DNSBL dan CrowdSec
- Cegah serangan bruteforce dengan pembatasan kecepatan
- Deteksi file buruk dengan ClamAV
- Mudah dikonfigurasi dengan variabel lingkungan
Menipu alat / pemindai otomatis:
Demo langsung
Anda dapat menemukan demo langsung di https://demo-nginx.bunkerity.com .
Panduan memulai cepat
Jalankan server HTTP dengan pengaturan default
docker run -p 80:8080 -v /path/to/web/files:/www:ro bunkerity/bunkerized-nginx
File web disimpan di direktori / www, kontainer akan melayani file dari sana.
Dikombinasikan dengan PHP
docker network create mynet
docker run --network mynet \
-p 80:8080 \
-v /path/to/web/files:/www:ro \
-e REMOTE_PHP=myphp \
-e REMOTE_PHP_PATH=/app \
bunkerity/bunkerized-nginx
docker run --network mynet \
--name=myphp \
-v /path/to/web/files:/app \
php:fpm
The REMOTE_PHP
variabel lingkungan memungkinkan Anda menentukan alamat contoh PHP-FPM remote yang akan mengeksekusi file php. REMOTE_PHP_PATH
harus disetel ke direktori tempat container PHP akan menemukan file tersebut.
Jalankan server HTTPS dengan Let's Encrypt otomatis
docker run -p 80:8080 \
-p 443:8443 \
-v /path/to/web/files:/www:ro \
-v /where/to/save/certificates:/etc/letsencrypt \
-e SERVER_NAME=www.yourdomain.com \
-e AUTO_LETS_ENCRYPT=yes \
-e REDIRECT_HTTP_TO_HTTPS=yes \
bunkerity/bunkerized-nginx
Sertifikat disimpan di direktori / etc / letsencrypt, Anda harus menyimpannya di drive lokal Anda.
Jika Anda tidak ingin server web Anda untuk mendengarkan pada HTTP menambahkan variabel lingkungan LISTEN_HTTP
dengan tidak ada nilai. Tapi Let's Encrypt membutuhkan port 80 untuk dibuka jadi pengalihan port itu wajib.
Di sini Anda memiliki tiga variabel lingkungan:
SERVER_NAME
: tentukan FQDN server web Anda, ini wajib untuk Let's Encrypt ( www.yourdomain.com harus menunjuk ke alamat IP Anda)AUTO_LETS_ENCRYPT
: aktifkan pembuatan Let's Encrypt otomatis dan pembaruan sertifikatREDIRECT_HTTP_TO_HTTPS
: aktifkan pengalihan HTTP ke HTTPS
Sebagai proxy terbalik
docker run -p 80:8080 \
-e USE_REVERSE_PROXY=yes \
-e REVERSE_PROXY_URL=/ \
-e REVERSE_PROXY_HOST=http://myserver:8080 \
bunkerity/bunkerized-nginx
Ini adalah proxy balik sederhana untuk aplikasi unik. Jika Anda memiliki lebih dari satu aplikasi, Anda dapat menambahkan lebih banyak REVERSE_PROXY_URL / REVERSE_PROXY_HOST dengan menambahkan nomor sufiks seperti ini:
docker run -p 80:8080 \
-e USE_REVERSE_PROXY=yes \
-e REVERSE_PROXY_URL_1=/app1/ \
-e REVERSE_PROXY_HOST_1=http://myapp1:3000/ \
-e REVERSE_PROXY_URL_2=/app2/ \
-e REVERSE_PROXY_HOST_2=http://myapp2:3000/ \
bunkerity/bunkerized-nginx
Di belakang proxy terbalik
docker run -p 80:8080 \
-v /path/to/web/files:/www \
-e PROXY_REAL_IP=yes \
bunkerity/bunkerized-nginx
The PROXY_REAL_IP
variabel lingkungan, ketika set ke yes , mengaktifkan ngx_http_realip_module untuk mendapatkan IP klien nyata dari reverse proxy.
Lihat bagian ini jika Anda perlu mengubah beberapa nilai (ip / jaringan tepercaya, header, ...).
Multisite
Secara default, bunkerized-nginx hanya akan membuat satu blok server. Saat menyetel MULTISITE
variabel lingkungan ke ya , satu blok server akan dibuat untuk setiap host yang ditentukan dalam SERVER_NAME
variabel lingkungan.
Anda dapat menyetel / mengganti nilai untuk server tertentu dengan memberi awalan variabel lingkungan dengan salah satu nama server yang ditentukan sebelumnya.
docker run -p 80:8080 \
-p 443:8443 \
-v /where/to/save/certificates:/etc/letsencrypt \
-e SERVER_NAME=app1.domain.com app2.domain.com \
-e MULTISITE=yes \
-e AUTO_LETS_ENCRYPT=yes \
-e REDIRECT_HTTP_TO_HTTPS=yes \
-e USE_REVERSE_PROXY=yes \
-e app1.domain.com_PROXY_URL=/ \
-e app1.domain.com_PROXY_HOST=http://myapp1:8000 \
-e app2.domain.com_PROXY_URL=/ \
-e app2.domain.com_PROXY_HOST=http://myapp2:8000 \
bunkerity/bunkerized-nginx
Ini USE_REVERSE_PROXY
adalah variabel global yang akan diterapkan ke setiap blok server. Sedangkan app1.domain.com_*
dan app2.domain.com_*
hanya akan diterapkan ke app1 . domain . com dan app2 . domain . blok server com masing-masing.
Saat menyajikan file, direktori root web harus berisi subdirektori yang dinamai sebagai server yang ditentukan dalam SERVER_NAME
variabel lingkungan. Berikut ini contohnya:
docker run -p 80:8080 \
-p 443:8443 \
-v /where/to/save/certificates:/etc/letsencrypt \
-v /where/are/web/files:/www:ro \
-e SERVER_NAME=app1.domain.com app2.domain.com \
-e MULTISITE=yes \
-e AUTO_LETS_ENCRYPT=yes \
-e REDIRECT_HTTP_TO_HTTPS=yes \
-e app1.domain.com_REMOTE_PHP=php1 \
-e app1.domain.com_REMOTE_PHP_PATH=/app \
-e app2.domain.com_REMOTE_PHP=php2 \
-e app2.domain.com_REMOTE_PHP_PATH=/app \
bunkerity/bunkerized-nginx
Direktori / where / are / web / files harus memiliki struktur seperti ini:
/where/are/web/files
├── app1.domain.com
│ └── index.php
│ └── ...
└── app2.domain.com
└── index.php
└── ...
Tantangan Antibot
docker run -p 80:8080 -v /path/to/web/files:/www -e USE_ANTIBOT=captcha bunkerity/bunkerized-nginx
Jika USE_ANTIBOT
disetel ke captcha , setiap pengguna yang mengunjungi situs web Anda harus melengkapi captcha sebelum mengakses halaman. Tantangan lain juga tersedia: cookie , javascript atau recaptcha (info lebih lanjut di sini ).
Tutorial dan contoh
Anda akan menemukan beberapa contoh docker-compose.yml di direktori contoh dan tutorial tentang bunkerized-nginx di blog kami .
Daftar variabel lingkungan
nginx
Misc
MULTISITE
Nilai: ya | tidak ada
Nilai default: tanpa
Konteks: global
Jika disetel ke tidak , hanya satu blok server yang akan dibuat. Jika tidak, satu server per host yang ditentukan dalam SERVER_NAME
variabel lingkungan akan dibuat.
Variabel lingkungan apa pun yang diberi tag sebagai konteks multisite dapat digunakan untuk blok server tertentu dengan format berikut: host_VARIABLE = value . Jika variabel digunakan tanpa awalan host, itu akan diterapkan ke semua blok server (tetapi masih dapat diganti).
SERVER_NAME
Nilai: <nama depan> <nama kedua> ...
Nilai default: www.bunkerity.com
Konteks: global
Menyetel nama host server web yang dipisahkan dengan spasi. Ini harus cocok dengan header Host yang dikirim oleh klien.
Berguna bila digunakan dengan MULTISITE=yes
dan / atau AUTO_LETSENCRYPT=yes
dan / atau DISABLE_DEFAULT_SERVER=yes
.
MAX_CLIENT_SIZE
Nilai: 0 | Xm
Nilai default: 10m
Konteks: global , multisite
Mengatur ukuran tubuh maksimum sebelum nginx mengembalikan kode kesalahan 413.
Menyetel ke 0 berarti ukuran tubuh "tak terbatas".
ALLOWED_METHODS
Nilai: metode HTTP yang diizinkan dipisahkan dengan | char
Nilai default: GET | POST | HEAD
Konteks: global , multisite
Hanya metode HTTP yang terdaftar di sini yang akan diterima oleh nginx. Jika tidak terdaftar, nginx akan menutup koneksi.
DISABLE_DEFAULT_SERVER
Nilai: ya | no
Nilai default: tidak ada
Konteks: global , multisite
Jika disetel ke yes, nginx hanya akan menanggapi permintaan HTTP ketika header Host cocok dengan FQDN yang ditentukan dalam SERVER_NAME
variabel lingkungan.
Misalnya, akan menutup koneksi jika bot mengakses situs dengan ip langsung.
SERVE_FILES
Nilai: ya | no
Nilai default: yes
Konteks: global , multisite
Jika disetel ke yes, nginx akan menyajikan file dari direktori / www di dalam container.
Kasus penggunaan untuk tidak menyajikan file adalah saat Anda menyiapkan bunkerized-nginx sebagai proxy terbalik melalui konfigurasi khusus.
DNS_RESOLVERS
Nilai: <dua alamat IP dipisahkan dengan spasi>
Nilai default: 127.0.0.11 8.8.8.8
Konteks: global
Alamat IP resolver DNS yang akan digunakan saat melakukan pencarian DNS.
ROOT_FOLDER
Nilai: * <jalur yang valid ke file web>
Nilai default: / www
Konteks: global
Folder default tempat nginx akan mencari file web. Jangan mengubahnya kecuali Anda ingin membuat gambar Anda sendiri.
HTTP_PORT
Nilai: <sembarang port valid yang lebih besar dari 1024>
Nilai default: 8080
Konteks: global
Nomor port HTTP yang digunakan oleh nginx dan certbot di dalam penampung.
HTTPS_PORT
Nilai: <sembarang port valid yang lebih besar dari 1024>
Nilai default: 8443
Konteks: global
Nomor port HTTPS yang digunakan oleh nginx di dalam penampung.
Kebocoran informasi
SERVER_TOKENS
Nilai: pada | off
Nilai default: off
Konteks: global
Jika disetel ke hidup, nginx akan menampilkan versi server di header Server dan halaman kesalahan default.
REMOVE_HEADERS
Nilai: < daftar header yang dipisahkan dengan spasi >
Nilai default: Server X-Powered-By X-AspNet-Version X-AspNetMvc-Version
Konteks: global , multisite
Daftar header yang akan dihapus saat mengirim tanggapan ke klien.
Halaman kesalahan kustom
ERROR_XXX
Nilai: <jalur relatif ke halaman kesalahan>
Nilai default:
Konteks: global , multisite
Gunakan jenis variabel lingkungan ini untuk menentukan halaman kesalahan khusus tergantung pada kode kesalahan HTTP. Ganti XXX dengan kode HTTP.
Contoh: ERROR_404=/404.html
berarti halaman /404.html akan ditampilkan ketika kode 404 dibuat. Path relatif ke folder web root.
Otentikasi dasar HTTP
USE_AUTH_BASIC
Nilai: ya | tidak ada
Nilai default: tanpa
Konteks: global , multisite
Jika disetel ke ya, mengaktifkan otentikasi dasar HTTP di lokasi AUTH_BASIC_LOCATION
dengan pengguna AUTH_BASIC_USER
dan kata sandi AUTH_BASIC_PASSWORD
.
AUTH_BASIC_LOCATION
Nilai: seluruh situs | / somedir | <lokasi mana pun yang valid>
Nilai default: seluruh situs
Konteks: global , multisite
Lokasi yang akan dibatasi jika USE_AUTH_BASIC
disetel ke ya . Jika nilai khusus di seluruh situs digunakan, dasar autentikasi akan disetel di tingkat server di luar konteks lokasi mana pun.
AUTH_BASIC_USER
Nilai: <sembarang nama pengguna yang valid>
Nilai default: changeme
Konteks: global , multisite
Nama pengguna diizinkan untuk mengakses AUTH_BASIC_LOCATION
jika USE_AUTH_BASIC
disetel ke ya.
AUTH_BASIC_PASSWORD
Nilai: <sembarang kata sandi yang valid>
Nilai default: changeme
Konteks: global , multisite
Kata sandi AUTH_BASIC_USER
saat USE_AUTH_BASIC
disetel ke ya.
AUTH_BASIC_TEXT
Nilai: <teks apa pun yang valid>
Nilai default: Area terbatas
Konteks: global , multisite
Teks yang ditampilkan di dalam prompt login jika USE_AUTH_BASIC
disetel ke ya.
Proksi terbalik
USE_REVERSE_PROXY
Nilai: ya | tidak ada
Nilai default: tanpa
Konteks: global , multisite
Setel variabel lingkungan ini ke ya jika Anda ingin menggunakan bunkerized-nginx sebagai proxy terbalik.
REVERSE_PROXY_URL
Nilai: < semua jalur lokasi yang valid >
Nilai default:
Konteks: global , multisite
Hanya valid jika USE_REVERSE_PROXY
disetel ke ya . Mari Anda menentukan jalur lokasi untuk dicocokkan saat bertindak sebagai proxy terbalik.
Anda dapat mengatur beberapa url / host dengan menambahkan nomor akhiran untuk nama variabel seperti ini: REVERSE_PROXY_URL_1
, REVERSE_PROXY_URL_2
, REVERSE_PROXY_URL_3
, ...
REVERSE_PROXY_HOST
Nilai: < nilai proxy_pass yang valid > Nilai
default:
Konteks: global , multisite
Hanya valid jika USE_REVERSE_PROXY
disetel ke ya . Mari kita tentukan tujuan proxy_pass yang akan digunakan saat bertindak sebagai proxy terbalik.
Anda dapat mengatur beberapa url / host dengan menambahkan nomor akhiran untuk nama variabel seperti ini: REVERSE_PROXY_HOST_1
, REVERSE_PROXY_HOST_2
, REVERSE_PROXY_HOST_3
, ...
PROXY_REAL_IP
Nilai: ya | tidak ada
Nilai default: tanpa
Konteks: global , multisite
Setel variabel lingkungan ini ke ya jika Anda menggunakan bunkerized-nginx di belakang proxy terbalik. Ini berarti Anda akan melihat alamat klien sebenarnya alih-alih proxy di dalam log Anda. Modsecurity, fail2ban, dan alat keamanan lainnya juga akan berfungsi dengan benar.
PROXY_REAL_IP_FROM
Nilai: <daftar alamat IP tepercaya dan / atau jaringan dipisahkan dengan spasi>
Nilai default: 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8
Konteks: global , multisite
Jika PROXY_REAL_IP
disetel ke ya , memungkinkan Anda menentukan tepercaya IP / jaringan diizinkan untuk mengirim alamat klien yang benar.
PROXY_REAL_IP_HEADER
Nilai: X-Forwarded-For | X-Real-IP | custom header
Nilai default: X-Forwarded-For
Context: global , multisite
Jika PROXY_REAL_IP
disetel ke yes , Anda dapat menentukan header yang berisi alamat IP klien yang sebenarnya.
PROXY_REAL_IP_RECURSIVE
Nilai: pada | off
Nilai default: on
Konteks: global , multisite
Jika PROXY_REAL_IP
disetel ke ya , setel ke aktif hindari serangan spoofing menggunakan tajuk yang ditentukan di PROXY_REAL_IP_HEADER
.
Kompresi
USE_GZIP
Nilai: ya | no
Nilai default: tanpa
Konteks: global , multisite
Jika disetel ke yes , nginx akan menggunakan algoritme gzip untuk memampatkan respons yang dikirim ke klien.
GZIP_COMP_LEVEL
Nilai: < sembarang bilangan bulat antara 1 dan 9 >
Nilai default: 5
Konteks: global , multisite
Tingkat kompresi gzip yang akan digunakan jika USE_GZIP
disetel ke ya .
GZIP_MIN_LENGTH
Nilai: < sembarang bilangan bulat positif >
Nilai default: 1000
Konteks: global , multisite
Ukuran minimum (dalam byte) dari respons yang perlu dikompres jika USE_GZIP
disetel ke ya .
GZIP_TYPES
Nilai: < daftar jenis mime dipisahkan dengan spasi >
Nilai default: application / atom + xml application / javascript application / json application / rss + xml application / vnd.ms-fontobject application / x-font-opentype application / x-font- aplikasi truetype / aplikasi x-font-ttf / aplikasi x-javascript / xhtml + aplikasi xml / font xml / font eot / font opentype / font otf / gambar truetype / svg + xml gambar / vnd.microsoft.icon gambar / x-ikon image / x-win-bitmap text / css text / javascript text / plain text / xml
Konteks: global , multisite
Daftar respons Jenis MIME yang diperlukan untuk dikompres jika USE_GZIP
disetel ke ya .
USE_BROTLI
Nilai: ya | no
Nilai default: tanpa
Konteks: global , multisite
Jika disetel ke yes , nginx akan menggunakan algoritme brotli untuk memampatkan respons yang dikirim ke klien.
BROTLI_COMP_LEVEL
Nilai: < sembarang bilangan bulat antara 1 dan 9 >
Nilai default: 5
Konteks: global , multisite
Tingkat kompresi brotli yang akan digunakan jika USE_BROTLI
disetel ke ya .
BROTLI_MIN_LENGTH
Nilai: < sembarang bilangan bulat positif >
Nilai default: 1000
Konteks: global , multisite
Ukuran minimum (dalam byte) dari respons yang perlu dikompres jika USE_BROTLI
disetel ke ya .
BROTLI_TYPES
Nilai: < daftar jenis mime dipisahkan dengan spasi >
Nilai default: application / atom + xml application / javascript application / json application / rss + xml application / vnd.ms-fontobject application / x-font-opentype application / x-font- aplikasi truetype / aplikasi x-font-ttf / aplikasi x-javascript / xhtml + aplikasi xml / font xml / font eot / font opentype / font otf / gambar truetype / svg + xml gambar / vnd.microsoft.icon gambar / x-ikon image / x-win-bitmap text / css text / javascript text / plain text / xml
Konteks: global , multisite
Daftar respons Jenis MIME yang diperlukan untuk dikompres jika USE_BROTLI
disetel ke ya .
Cache
USE_CLIENT_CACHE
Nilai: ya | tidak ada
Nilai default: tanpa
Konteks: global , multisite
Jika disetel ke yes , klien akan diberi tahu untuk menyimpan beberapa file secara lokal.
CLIENT_CACHE_EXTENSIONS
Nilai: < daftar ekstensi yang dipisahkan dengan | >
Nilai default: jpg | jpeg | png | bmp | ico | svg | tif | css | js | otf | ttf | eot | woff | woff2
Konteks: global , multisite
Daftar ekstensi file yang harus disimpan dalam cache klien saat USE_CLIENT_CACHE
disetel ke yes .
CLIENT_CACHE_CONTROL
Nilai: < Nilai header Kontrol-Cache > Nilai
default: publik, max-age = 15552000
Konteks: global , konten multisite
dari header Kontrol-Cache untuk dikirim ketika USE_CLIENT_CACHE
diatur ke ya .
CLIENT_CACHE_ETAG
Nilai: pada | off
Nilai default: on
Konteks: global , multisite
Apakah nginx akan mengirim header ETag atau tidak jika USE_CLIENT_CACHE
disetel ke yes .
USE_OPEN_FILE_CACHE
Nilai: ya | no
Nilai default: no
Konteks: global , multisite
Jika disetel ke yes , nginx akan membuka cache fd, keberadaan direktori, ... Lihat open_file_cache .
OPEN_FILE_CACHE
Nilai: < parameter open_file_cache yang valid >
Nilai default: max = 1000 inactive = 20s
Konteks: global , multisite
Parameter untuk digunakan dengan open_file_cache jika USE_OPEN_FILE_CACHE
disetel ke yes .
OPEN_FILE_CACHE_ERRORS
Nilai: pada | off
Nilai default: on
Konteks: global , multisite
Apakah nginx harus melakukan cache kesalahan pencarian file atau tidak jika USE_OPEN_FILE_CACHE
disetel ke yes .
OPEN_FILE_CACHE_MIN_USES
Nilai: <* any valid integer *>
Nilai default: 2
Konteks: global , multisite
Jumlah minimum akses file yang diperlukan untuk menyimpan cache fd jika USE_OPEN_FILE_CACHE
disetel ke yes .
OPEN_FILE_CACHE_VALID
Nilai: < nilai waktu apa pun seperti Xs, Xm, Xh, ... >
Nilai default: 30s
Konteks: global , multisite
Waktu setelah elemen yang di-cache harus divalidasi jika USE_OPEN_FILE_CACHE
disetel ke ya .
USE_PROXY_CACHE
Nilai: ya | no
Nilai default: no
Konteks: global , multisite
Jika disetel ke yes , nginx akan menyimpan respons dari aplikasi yang di-proxy-kan. Lihat proxy_cache .
PROXY_CACHE_PATH_ZONE_SIZE
Nilai: < ukuran valid apa pun seperti Xk, Xm, Xg, ... >
Nilai default: 10m
Konteks: global , multisite
Ukuran maksimum metadata yang di-cache jika USE_PROXY_CACHE
disetel ke ya .
PROXY_CACHE_PATH_PARAMS
Nilai: < parameter apa pun yang valid ke direktif proxy_cache_path >
Nilai default: max_size = 100m
Konteks: global , multisite
Parameter yang akan digunakan untuk direktif proxy_cache_path jika USE_PROXY_CACHE
disetel ke ya .
PROXY_CACHE_METHODS
Nilai: < daftar metode HTTP yang dipisahkan dengan spasi >
Nilai default: GET HEAD
Konteks: global , multisite
Metode HTTP yang seharusnya memicu operasi cache jika USE_PROXY_CACHE
disetel ke ya .
PROXY_CACHE_MIN_USES
Nilai: < sembarang bilangan bulat positif >
Nilai default: 2
Konteks: global , multisite
Jumlah minimum permintaan sebelum respons di-cache ketika USE_PROXY_CACHE
disetel ke ya .
PROXY_CACHE_KEY
Nilai: < daftar variabel >
Nilai default: $ scheme $ host $ request_uri
Konteks: global , multisite
Kunci yang digunakan untuk secara unik mengidentifikasi respons yang di-cache ketika USE_PROXY_CACHE
disetel ke ya .
PROXY_CACHE_VALID
Nilai: < status = daftar waktu dipisahkan dengan spasi >
Nilai default: 200 = 10m 301 = 10m 301 = 1h any = 1m
Konteks: global , multisite
Tentukan waktu caching tergantung pada kode status HTTP (daftar status = waktu dipisahkan dengan spasi ) jika USE_PROXY_CACHE
disetel ke ya .
PROXY_NO_CACHE
Nilai: < daftar variabel >
Nilai default: $ http_authorization
Konteks: global , multisite
Kondisi yang harus dipenuhi untuk menonaktifkan cache dari respons ketika USE_PROXY_CACHE
disetel ke ya .
PROXY_CACHE_BYPASS
Nilai: < daftar variabel > Nilai default: $ http_authorization
Konteks: global , multisite Kondisi yang harus dipenuhi untuk melewati cache jika USE_PROXY_CACHE
disetel ke ya .
HTTPS
Mari Enkripsi
AUTO_LETS_ENCRYPT
Nilai: ya | tanpa
Nilai default: tanpa
Konteks: global
Jika disetel ke ya, pembuatan dan perpanjangan sertifikat otomatis akan disiapkan melalui Let's Encrypt. Ini akan mengaktifkan HTTPS di situs web Anda secara gratis.
Anda perlu mengarahkan ulang port 80 ke port 8080 di dalam container dan juga menyetel SERVER_NAME
variabel lingkungan.
HTTP
LISTEN_HTTP
Nilai: ya | no
Nilai default: yes
Konteks: global , multisite
Jika disetel ke no, nginx tidak akan di dengarkan di HTTP (port 80).
Berguna jika Anda hanya menginginkan akses HTTPS ke situs web Anda.
REDIRECT_HTTP_TO_HTTPS
Nilai: ya | tidak ada
Nilai default: tanpa
Konteks: global , multisite
Jika disetel ke yes, nginx akan mengalihkan semua permintaan HTTP ke HTTPS.
Sertifikat khusus
USE_CUSTOM_HTTPS
Nilai: ya | tidak ada
Nilai default: tanpa
Konteks: global
Jika disetel ke ya, HTTPS akan diaktifkan dengan sertifikat / kunci pilihan Anda.
CUSTOM_HTTPS_CERT
Nilai: <sembarang jalur yang valid di dalam penampung>
Nilai default:
Konteks: global
Lintasan lengkap file sertifikat yang akan digunakan jika USE_CUSTOM_HTTPS
disetel ke ya.
CUSTOM_HTTPS_KEY
Nilai: <sembarang jalur yang valid di dalam penampung>
Nilai default:
Konteks: global
Jalur lengkap file kunci yang akan digunakan jika USE_CUSTOM_HTTPS
disetel ke ya.
Sertifikat yang ditandatangani sendiri
GENERATE_SELF_SIGNED_SSL
Nilai: ya | tidak ada
Nilai default: tanpa
Konteks: global
Jika disetel ke ya, HTTPS akan diaktifkan dengan sertifikat yang ditandatangani sendiri yang dibuat oleh penampung.
SELF_SIGNED_SSL_EXPIRY
Nilai: integer
Nilai default: 365 (1 tahun)
Konteks: global
Perlu GENERATE_SELF_SIGNED_SSL
bekerja. Setel tanggal kedaluwarsa untuk sertifikat yang dibuat sendiri.
SELF_SIGNED_SSL_COUNTRY
Nilai: teks
Nilai default: Swiss
Konteks: kebutuhan global untuk bekerja. Menyetel negara untuk sertifikat yang dibuat sendiri.GENERATE_SELF_SIGNED_SSL
SELF_SIGNED_SSL_STATE
Nilai: teks
Nilai default: Swiss
Konteks: kebutuhan global untuk bekerja. Menyetel status untuk sertifikat yang dibuat sendiri.GENERATE_SELF_SIGNED_SSL
SELF_SIGNED_SSL_CITY
Nilai: teks
Nilai default: Bern
Konteks: global
Perlu GENERATE_SELF_SIGNED_SSL
bekerja. Menyetel kota untuk sertifikat yang dibuat sendiri.
SELF_SIGNED_SSL_ORG
Nilai: teks
Nilai default: AcmeInc
Konteks: kebutuhan global untuk bekerja. Setel nama organisasi untuk sertifikat yang dibuat sendiri.GENERATE_SELF_SIGNED_SSL
SELF_SIGNED_SSL_OU
Nilai: teks
Nilai default: IT
Konteks: kebutuhan global untuk bekerja. Menetapkan unit organisasi untuk sertifikat yang dibuat sendiri.GENERATE_SELF_SIGNED_SSL
SELF_SIGNED_SSL_CN
Nilai: teks
Nilai default: bunkerity-nginx
Konteks: global
Perlu GENERATE_SELF_SIGNED_SSL
bekerja. Setel nama server CN untuk sertifikat yang dibuat sendiri.
Misc
HTTP2
Nilai: ya | no
Nilai default: yes
Konteks: global , multisite
Jika disetel ke yes, nginx akan menggunakan protokol HTTP2 saat HTTPS diaktifkan.
HTTPS_PROTOCOLS
Nilai: TLSv1.2 | TLSv1.3 | TLSv1.2 TLSv1.3
Nilai default: TLSv1.2 TLSv1.3
Konteks: global , multisite
Versi TLS yang didukung. Kami merekomendasikan nilai default TLSv1.2 TLSv1.3 untuk alasan kompatibilitas.
ModSecurity
USE_MODSECURITY
Nilai: ya | tidak
Nilai default: yes
Konteks: global , multisite
Jika diatur ke yes, ModSecurity WAF akan diaktifkan.
Anda dapat menyertakan aturan kustom dengan menambahkan file .conf ke direktori / modsec-confs / di dalam container (yaitu: melalui volume).
USE_MODSECURITY_CRS
Nilai: ya | tidak
Nilai default: yes
Konteks: global , multisite
Jika diatur ke yes, OWASP ModSecurity Core Rule Set akan digunakan. Ini memberikan aturan umum untuk mendeteksi serangan web umum.
Anda dapat menyesuaikan CRS (yaitu: menambahkan pengecualian WordPress) dengan menambahkan file .conf kustom ke direktori / modsec-crs-confs / di dalam penampung (yaitu: melalui volume). File di dalam direktori ini disertakan sebelum aturan CRS. Jika Anda perlu mengubah (yaitu: SecRuleUpdateTargetById), letakkan file .conf di dalam / modsec-confs / yang disertakan setelah aturan CRS.
Header keamanan
X_FRAME_OPTIONS
Nilai: DENY | SAMEORIGIN | IZINKAN-DARI https://www.website.net | ALLOWALL
Nilai default: MENYANGKAL
Konteks: global yang , multisite
Kebijakan yang akan digunakan ketika situs ditampilkan melalui iframe. Dapat digunakan untuk mengurangi serangan clickjacking . Info selengkapnya di sini .
X_XSS_PROTECTION
Nilai: 0 | 1 | 1; mode = blok
Nilai default: 1; mode = blok
Konteks: global , Kebijakan multisite yang
akan digunakan ketika XSS terdeteksi oleh browser. Hanya bekerja dengan Internet Explorer.
Info selengkapnya di sini .
X_CONTENT_TYPE_OPTIONS
Nilai: nosniff
Nilai default: nosniff
Konteks: global , multisite
Memberi tahu browser untuk bersikap ketat tentang jenis MIME.
Info selengkapnya di sini .
REFERRER_POLICY
Nilai: tanpa perujuk | no-referrer-when-downgrade | asal | origin-when-cross-origin | asal yang sama | asal ketat | tight-origin-when-cross-origin | unsafe-url
Nilai default: no-referrer
Konteks: global , Kebijakan multisite yang
akan digunakan untuk Referer header.
Info selengkapnya di sini .
FEATURE_POLICY
Nilai: <directive> <allow list>
Nilai default: accelerometer 'none'; ambient-light-sensor 'tidak ada'; putar otomatis 'tidak ada'; kamera 'tidak ada'; display-capture 'none'; dokumen-domain 'tidak ada'; media terenkripsi 'tidak ada'; layar penuh 'tidak ada'; geolokasi 'tidak ada'; giroskop 'tidak ada'; magnetometer 'tidak ada'; mikrofon 'tidak ada'; midi 'tidak ada'; pembayaran 'tidak ada'; gambar-dalam-gambar 'tidak ada'; pembicara 'tidak ada'; sync-xhr 'tidak ada'; usb 'tidak ada'; getar 'tidak ada'; vr 'none'
Konteks: global , multisite
Memberi tahu browser fitur mana yang dapat digunakan di situs web.
PERMISSIONS_POLICY
Nilai: fitur = (izinkan daftar)
Nilai default: accelerometer = (), ambient-light-sensor = (), autoplay = (), camera = (), display-capture = (), document-domain = (), encrypted -media = (), layar penuh = (), geolokasi = (), giroskop = (), magnetometer = (), mikrofon = (), midi = (), pembayaran = (), gambar-dalam-gambar = (), speaker = (), sync-xhr = (), usb = (), vibrate = (), vr = ()
Konteks: global , multisite
Memberi tahu browser fitur mana yang dapat digunakan di situs web.
Info selengkapnya di sini .
COOKIE_FLAGS
Nilai: * HttpOnly | MyCookie mengamankan SameSite = Lax | ...
Nilai default: * HttpOnly SameSite = Lax
Konteks: global , multisite
Menambahkan beberapa keamanan ke cookie yang ditetapkan oleh server.
Nilai yang diterima dapat ditemukan di sini .
COOKIE_AUTO_SECURE_FLAG
Nilai: ya | tidak
Nilai default: yes
Konteks: global , multisite
Jika disetel ke ya , keamanan akan otomatis ditambahkan ke cookie saat menggunakan HTTPS.
STRICT_TRANSPORT_POLICY
Nilai: max-age = expireTime [; includeSubDomains] [; preload]
Nilai default: max-age = 31536000
Konteks: global , multisite
Memberi tahu browser untuk menggunakan HTTPS secara eksklusif, bukan HTTP saat berkomunikasi dengan server.
Info selengkapnya di sini .
CONTENT_SECURITY_POLICY
Nilai: <direktif 1>; <direktif 2>; ...
Nilai default : default-src 'self'; bingkai-nenek moyang 'diri'; bentuk-tindakan 'diri'; blokir semua konten campuran; kotak pasir allow-forms allow-same-origin allow-scripts; blok tercermin-xss; basis-uri 'diri'; referrer no-referrer
Konteks: global , Kebijakan multisite yang
akan digunakan saat memuat sumber daya (skrip, formulir, bingkai, ...).
Info selengkapnya di sini .
Memblokir
Antibot
USE_ANTIBOT
Nilai: tidak | cookie | javascript | captcha | recaptcha
Nilai default: tidak ada
Konteks: global , multisite
Jika disetel ke nilai lain yang diizinkan daripada tidak , pengguna harus menyelesaikan "tantangan" sebelum mengakses laman di situs web Anda:
- cookie : meminta pengguna untuk menyetel cookie
- javascript : pengguna harus menjalankan kode javascript
- captcha : captcha teks harus diselesaikan oleh pengguna
- recaptcha : gunakan skor Google reCAPTCHA v3 untuk mengizinkan / menolak pengguna
ANTIBOT_URI
Nilai: <any valid uri>
Nilai default: / challenge
Konteks: global , multisite
URI yang valid dan tidak digunakan untuk mengalihkan pengguna saat USE_ANTIBOT
digunakan. Pastikan itu tidak ada di situs web Anda.
ANTIBOT_SESSION_SECRET
Nilai: acak | <32 karakter pilihan Anda>
Nilai default: random
Konteks: global , multisite
Rahasia yang digunakan untuk menghasilkan sesi saat USE_ANTIBOT
disetel. Menggunakan nilai acak khusus akan menghasilkan nilai acak. Pastikan untuk menggunakan nilai yang sama saat Anda berada di lingkungan multi-server (jadi sesi valid di semua server).
ANTIBOT_RECAPTCHA_SCORE
Nilai: <0.0 hingga 1.0>
Nilai default: 0.7
Konteks: global , multisite
Skor minimum yang diperlukan saat USE_ANTIBOT
disetel ke recaptcha .
ANTIBOT_RECAPTCHA_SITEKEY
Nilai: <kunci publik yang diberikan oleh Google>
Nilai default:
Konteks: global
Kunci situs yang diberikan oleh Google saat USE_ANTIBOT
disetel ke recaptcha .
ANTIBOT_RECAPTCHA_SECRET
Nilai: <kunci pribadi yang diberikan oleh Google>
Nilai default:
Konteks: global
Rahasia yang diberikan oleh Google jika USE_ANTIBOT
disetel ke recaptcha .
Daftar hitam eksternal
BLOCK_USER_AGENT
Nilai: ya | no
Nilai default: yes Konteks: global , multisite
Jika disetel ke yes, blokir klien dengan agen pengguna "buruk".
Daftar hitam dapat ditemukan di sini .
BLOCK_TOR_EXIT_NODE
Nilai: ya | tidak
Nilai default: yes
Konteks: global , multisite
Diatur ke yes, akan memblokir node keluar TOR yang diketahui.
Daftar hitam dapat ditemukan di sini .
BLOCK_PROXIES
Nilai: ya | no
Nilai default: yes
Konteks: global , multisite Disetel
ke yes, akan memblokir proxy yang dikenal.
Daftar hitam dapat ditemukan di sini .
BLOCK_ABUSERS
Nilai: ya | no
Nilai default: yes
Konteks: global , multisite Disetel
ke yes, akan memblokir pengguna yang dikenal.
Daftar hitam dapat ditemukan di sini .
DNSBL
USE_DNSBL
Nilai: ya | tidak
Nilai default: ya
Konteks: global , multisite
Jika disetel ke ya , pemeriksaan DNSBL akan dilakukan ke server yang ditentukan dalam DNSBL_LIST
variabel lingkungan.
DNSBL_LIST
Nilai: <daftar zona DNS yang dipisahkan dengan spasi>
Nilai default: bl.blocklist.de problems.dnsbl.sorbs.net sbl.spamhaus.org xbl.spamhaus.org
Konteks: global
Daftar zona DNSBL yang akan ditanyakan bila USE_DNSBL
disetel ke ya .
CrowdSec
USE_CROWDSEC
Nilai: ya | tidak ada
Nilai default: tanpa
Konteks: global , multisite
Jika disetel ke ya , CrowdSec akan diaktifkan dengan koleksi nginx . Penarikan API akan dilakukan secara otomatis.
Daftar putih kustom
USE_WHITELIST_IP
Nilai: ya | no
Nilai default: yes
Konteks: global , multisite
Jika disetel ke ya , memungkinkan Anda menentukan alamat IP khusus untuk dimasukkan ke daftar putih melalui WHITELIST_IP_LIST
variabel lingkungan.
WHITELIST_IP_LIST
Nilai: <daftar alamat IP dipisahkan dengan spasi>
Nilai default: 23.21.227.69 40.88.21.235 50.16.241.113 50.16.241.114 50.16.241.117 50.16.247.234 52.204.97.54 52.5.190.19 54.197.234.188 54.208.100.253 54.208.102.37 107.21.19
Konteks: global
Daftar alamat IP yang akan diizinkan jika USE_WHITELIST_IP
disetel ke ya . Daftar default berisi alamat IP crawler DuckDuckGo .
USE_WHITELIST_REVERSE
Nilai: ya | tidak
Nilai default: yes
Konteks: global , multisite
Jika disetel ke yes , memungkinkan Anda menentukan sufiks DNS terbalik khusus untuk dimasukkan ke daftar putih melalui WHITELIST_REVERSE_LIST
variabel lingkungan.
WHITELIST_REVERSE_LIST
Nilai: <daftar akhiran DNS terbalik dipisahkan dengan spasi>
Nilai default: . googlebot . com . google . com . pencarian . msn . com .crawl.yahoot.net .crawl.baidu.jp. merangkak . baidu . com . yandex . com .yandex.ru .yandex.net
Konteks: global
Daftar sufiks DNS terbalik ke daftar putih jika USE_WHITELIST_REVERSE
disetel ke ya . Daftar default berisi sufiks mesin telusur utama.
Daftar hitam kustom
USE_BLACKLIST_IP
Nilai: ya | no
Nilai default: yes
Konteks: global , multisite
Jika disetel ke yes , memungkinkan Anda menentukan alamat IP khusus untuk dimasukkan ke daftar hitam melalui BLACKLIST_IP_LIST
variabel lingkungan.
BLACKLIST_IP_LIST
Nilai: <daftar alamat IP yang dipisahkan dengan spasi>
Nilai default:
Konteks: global
Daftar alamat IP yang akan diblokir jika USE_BLACKLIST_IP
disetel ke ya .
USE_BLACKLIST_REVERSE
Nilai: ya | no
Nilai default: yes
Konteks: global , multisite
Jika disetel ke yes , Anda dapat menentukan sufiks DNS terbalik kustom untuk dimasukkan ke daftar hitam melalui BLACKLIST_REVERSE_LIST
variabel lingkungan.
BLACKLIST_REVERSE_LIST
Nilai: <daftar sufiks DNS terbalik yang dipisahkan dengan spasi>
Nilai default: .shodan.io
Konteks: global
Daftar sufiks DNS terbalik ke daftar hitam jika USE_BLACKLIST_REVERSE
disetel ke ya .
Pembatasan permintaan
USE_LIMIT_REQ
Nilai: ya | no
Nilai default: yes
Konteks: global , multisite
Jika diatur ke yes, jumlah permintaan HTTP yang dibuat oleh pengguna akan dibatasi selama periode waktu tertentu.
Lebih banyak info tingkat membatasi di sini .
LIMIT_REQ_RATE
Nilai: Xr / s | Xr / m
Nilai default: 20r / s
Konteks: global , multisite
Batas tingkat yang diterapkan jika USE_LIMIT_REQ
disetel ke ya . Default-nya adalah 10 permintaan per detik.
LIMIT_REQ_BURST
Nilai: <any valid integer>
Nilai default: 40
Konteks: global , multisite
Jumlah permintaan untuk dimasukkan ke dalam antrian sebelum menolak permintaan.
LIMIT_REQ_CACHE
Nilai: Xm | Xk
Nilai default: 10m
Konteks: global
Ukuran cache untuk menyimpan informasi tentang pembatasan permintaan.
Negara
BLACKLIST_COUNTRY
Nilai: <kode negara 1> <kode negara 2> ...
Nilai default:
Konteks: global , multisite
Blokir beberapa negara dari mengakses situs web Anda. Gunakan kode negara 2 huruf yang dipisahkan dengan spasi.
WHITELIST_COUNTRY
Nilai: <kode negara 1> <kode negara 2> ...
Nilai default:
Konteks: global , multisite
Hanya izinkan negara tertentu mengakses situs web Anda. Gunakan kode negara 2 huruf yang dipisahkan dengan spasi.
PHP
REMOTE_PHP
Nilai: <sembarang IP / nama host yang valid>
Nilai default:
Konteks: global , multisite
Setel alamat IP / nama host dari PHP-FPM jarak jauh untuk menjalankan file .php. Lihat USE_PHP
apakah Anda ingin menjalankan instance PHP-FPM di penampung yang sama dengan bunkerized-nginx.
REMOTE_PHP_PATH
Nilai: <sembarang jalur absolut yang valid>
Nilai default: / app
Konteks: global , multisite
Jalur tempat file PHP berada di dalam server yang ditentukan di REMOTE_PHP
.
Fail2ban
USE_FAIL2BAN
Nilai: ya | no
Nilai default: yes
Konteks: global , multisite
Jika disetel ke yes, fail2ban akan digunakan untuk memblokir pengguna yang mendapatkan terlalu banyak kode HTTP "aneh" dalam jangka waktu tertentu.
Alih-alih menggunakan iptables yang tidak mungkin dilakukan di dalam container, fail2ban akan secara dinamis memperbarui nginx untuk melarang / membatalkan pelarangan alamat IP.
Jika nomor ( FAIL2BAN_MAXRETRY
) dari kode HTTP "aneh" ( FAIL2BAN_STATUS_CODES
) ditemukan di antara interval waktu ( FAIL2BAN_FINDTIME
) maka alamat IP asal akan diblokir untuk periode waktu tertentu ( FAIL2BAN_BANTIME
).
FAIL2BAN_STATUS_CODES
Nilai: <kode status HTTP dipisahkan dengan | char>
Nilai default: 400 | 401 | 403 | 404 | 405 | 444
Konteks: global
Daftar kode kesalahan "aneh" yang akan dicari oleh fail2ban.
FAIL2BAN_BANTIME
Nilai:
Nilai default: 3600
Konteks: global
Durasi waktu, dalam detik, larangan.
FAIL2BAN_FINDTIME
Nilai:
Default: nilai: 60
Konteks: global
Interval waktu, dalam detik, untuk mencari kode status HTTP "aneh".
FAIL2BAN_MAXRETRY
Nilai: <sembarang bilangan bulat positif>
Default: nilai: 15
Konteks: global
Jumlah kode status HTTP "aneh" untuk ditemukan di antara interval waktu.
ClamAV
USE_CLAMAV_UPLOAD
Nilai: ya | tidak
Nilai default: yes
Konteks: global , multisite
Jika disetel ke yes, ClamAV akan memindai setiap file yang diupload dan memblokir upload jika file tersebut terdeteksi.
USE_CLAMAV_SCAN
Nilai: ya | tidak
Nilai default: yes
Konteks: global
Jika disetel ke yes, ClamAV akan memindai semua file di dalam container setiap hari.
CLAMAV_SCAN_REMOVE
Nilai: ya | tidak
Nilai default: yes
Konteks: global
Jika disetel ke yes, ClamAV akan secara otomatis menghapus file yang terdeteksi.
Misc
ADDITIONAL_MODULES
Nilai: <daftar paket yang dipisahkan dengan spasi>
Nilai default:
Konteks: global
Anda dapat menentukan modul tambahan untuk dipasang. Semua paket alpine valid.
LOGROTATE_MINSIZE
Nilai: x | xk | xM | xG
Nilai default: 10M
Konteks: global
Ukuran minimum file log sebelum diputar (tidak ada huruf = byte, k = kilobyte, M = megabyte, G = gigabyte).
LOGROTATE_MAXAGE
Nilai: <any integer>
Nilai default: 7
Konteks: global
Jumlah hari sebelum file yang diputar akan dihapus.
Sertakan konfigurasi khusus
File konfigurasi khusus (diakhiri dengan akhiran .conf) dapat ditambahkan di beberapa direktori di dalam penampung:
- / http-confs: konteks http
- / server-confs: konteks server
Anda hanya perlu menggunakan volume seperti ini:
docker run ... -v /path/to/http/confs:/http-confs:ro ... -v /path/to/server/confs:/server-confs:ro ... bunkerity/bunkerized-nginx
Jika MULTISITE
disetel ke ya , file .conf di dalam direktori / server-confs dimuat oleh semua blok server. Anda juga dapat menyetel konfigurasi khusus untuk blok server tertentu dengan menambahkan file di subdirektori yang dinamai sebagai host yang ditentukan di SERVER_NAME
variabel lingkungan. Berikut ini contohnya:
docker run ... -v /path/to/server/confs:/server-confs:ro ... -e MULTISITE=yes -e "SERVER_NAME=app1.domain.com app2.domain.com" ... bunkerity/bunkerized-nginx
Direktori / path / to / server / confs harus memiliki struktur seperti ini:
/path/to/server/confs
├── app1.domain.com
│ └── custom.conf
│ └── ...
└── app2.domain.com
└── custom.conf
└── ...
Data cache
Anda dapat menyimpan data yang di-cache (blacklist, geoip DB, ...) untuk menghindari mendownloadnya lagi setelah penghapusan container dengan memasang volume di direktori / cache:
docker run ... -v /path/to/cache:/cache ... bunkerity/bunkerized-nginx
Regards
dr. Muhammad Sobri Maulana
No comments:
Post a Comment