Kötü niyetli kullanıcılar, Drupal uygulamalarındaki hassas verilerin gizliliğini tehlikeye sokarak şifrelenmemiş ağlar üzerinden iletilen düz metin verilerini kesebilir veya izleyebilir. Bu eğitici, aktarılan veritabanı sorgularınızı şifreleyerek bu tür saldırıları nasıl azaltacağınızı gösterecektir.
Saldırganların ve veri ihlallerinin her geçen gün daha karmaşık hale gelmesiyle, Drupal uygulamalarımızda hassas verileri korumak için mümkün olduğunca fazla adım atmamız şart. ÖncekiSonraki MariaDB ve MySQL veritabanı örnekleri için Amazon RDS kullanır . RDS, aktarılan veriler için SSL şifrelemesini destekler ve Drupal uygulamanızı bu şekilde bağlanacak şekilde yapılandırmak son derece basittir.
1. RDS PEM Paketi
İlk adım, Drupal uygulamanızın el sıkışmasını başlatmak için RDS genel sertifika zincirine erişiminin sağlanmasıdır. Bunu nasıl başaracağınız özel dağıtım yönteminize bağlıdır - bu sertifikaları standart kapsayıcı imajlarımıza dönüştürmeyi seçtik. PHP'ye eklediğimiz satırlar aşağıdadır Dockerfile.
# Add Amazon RDS TLS public certificate. ADD https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem /etc/ssl/certs/rds-combined-ca-bundle.pem RUN chmod 755 /etc/ssl/certs/rds-combined-ca-bundle.pem
Ansible veya puppet gibi bir yapılandırma yönetimi aracı kullanırsanız, aynı prensip geçerlidir - bu .pem dosyayı uygulama sunucusunda bilinen bir konuma indirin.
Barındırma ortamınız üzerinde sınırlı denetiminiz varsa, bu dosyayı kod tabanınıza da uygulayabilir ve uygulamanızla birlikte dağıtmasını sağlayabilirsiniz.
2. Drupal Veritabanı Yapılandırması
Daha sonra, varsa Drupal'ı bu sertifika zincirini kullanacak şekilde yapılandırmanız gerekir. PDO eklentisi, bunun hafif çalışmasını sağlar. Bu pasaj Drupal 7 ve 8 ile uyumludur.
$rds_cert_path = "/etc/ssl/certs/rds-combined-ca-bundle.pem"; if (is_readable($rds_cert_path)) { $databases['default']['default']['pdo'][PDO::MYSQL_ATTR_SSL_CA] = $rds_cert_path; }
3. Onay
Zor iş bitti, şimdi bağlantıların gerçekten şifrelenmiş olduğunu doğrulamak isteyeceksiniz.
PDO seçeneklerinin doğru bir şekilde alındığından emin olmak için sigara içmek için drush kullanın. Koşu drush sql-connectsize yeni bir bayrak vermelidir: --ssl-ca.
drush sql-connect
mysql ... --ssl-ca=/etc/ssl/certs/rds-combined-ca-bundle.pem
Tamam görünüyorsa, bir adım daha ileri gidebilir ve Drupal ile RDS sunucusu arasındaki TCP bağlantısını koklayabilirsiniz.
Bu, sunucunuza kök erişim gerektirir ve tcpflow paket yükleyin. Bu araç 3306 bağlantı noktası üzerinden iletilen verileri aktaracaktır. Okunamayan bozuk verileri görmek istiyorsunuz - kesinlikle bir SQL sorgusu veya yanıtı gibi görünen içerik değil !
Bu komutu çalıştırın ve oturum açmış durumdayken sitenizin çevresini tıklayın (minimum önbellek isabetini sağlamak için).
tcpflow -i any -C -g port 3306
Bu, bağlantının şifreli olduğunu gösteren çıkış türüdür.
tcpflow: listening on any
x1c
"|{mOXU{7-rd 0E
W$Q{C3uQ1g3a]9o1K*z:yPTqxqSvcCH#Zq2Hf8Fy>5iWlyz$A>jtfV9pdazdP7
tpQ=
i\R[dRa+Rk4)P5mR_h9S;lO&/=lnCF4P&!Y5_*f^1bvy)Nmga4jQ3"W0[I=[3=3\NLB0|8TGo0>I%^Q^~jL
L*HhsM5%7dXh6w`;B;;|kHTt[_'CDm:PJbs$`/fTv'M .p2JP' Ok&erw
W")wLLi1%l5#lDV85nj>R~7Nj%*\I!zFt?w$u >;5~#)/tJbzwS~3$0u'/hK /99.X?F{2DNrpdHw{Yf!fLv
`
KTWiWFagS.@XEw?AsmczC2*`-/R rA-0(}DXDKC9KVnRro}m#IP*2]ftyPU3A#.?~+MDE}|l~uPi5E&hzfgp02!lXnPJLfMyFOIrcq36s90Nz3RX~n?'}ZX
'Kl[k{#fBa4B\D-H`;c/~O,{DWrltYDbu
cB&H\hVaZIDYTP|JpTw0 |(ElJo{vC@#5#TnA4d@#{f)ux(EES'Ur]N!P[cp`8+Z-$vh%Hnk=K^%-[KQF'2NzTfjSgxG'/p HYMxgfOGx1"'SEQ1yY&)DC*|z{')=u`TS0u0{xp-(zi6zp3uZ'~E*ncrGPD,oW\m`2^ Hn0`h{G=zohi6H[d>^BJ~ W"c+JxhIu
[{d&s*LFh/?&r8>$x{CG4(72pwr*MRVQf.g"dZU\9f$
h*5%nV9[:60:23K Q`8:Cysg%8q?iX_`Q"'Oj
:OS^aTO.OO&O|c`p*%1TeV}"X*rHl=m!cD2D^)Xp$hj-N^pMb7x[Jck"P$Mp41NNv`5x4!k1Z/Y|ZH,k)W*Y(>f6sZRpYm
8Ph42K)}.%g%M]`1R^'qh/$3|]]y"zEh0xG(A]-I`MJGU7rKO~oi+K:4M(nyOXnvaWP4xV?d4Y^$8)2WOK,2s]gyny:-)@D*F%}ICT
Tu>ofc)P[DQ>Qn3=0^fuefIm1]-YHq5rx|W(S3:~2&*6!O|DAZWB:#n9|09`I`A3bq@\E\$=/L5VHm)[#|tI"lkuK.u|!2MT/@u7u(S{"H.H'Fh/4kF_2{)Jc9NQ%jA_rI1lH;k'$n~M_%t%y)t!C_4FO?idwMB]t^M::S!a=*Jee<3sgX@)L;zAuTN2}v#K4AX.(`X1<{#
Kaynaklar:
Amazon RDS MySQL SSL Desteği
Amazon RDS MariaDB SSL Desteği
PHP PDO Seçenekleri