Posts tagged "redis"

Php uygulamalarında Session Handler olarak Redis Server’ ı Kullanmak

Php’ de default olarak session yönetimi için dosya sistemi kullanılır. Lakin in-memory çalışan Redis‘ i session için kullanmamız sistemimizi büyük oranda hızlandırmaktadır. Aşağıdaki rehberde, basit ayarlar yaparak, php uygulamalarınızda redis’ i session handler olarak kullanmayı anlatacağım. Aşağıdaki anlatım, Ubuntu server için geçerlidir. Diğer linux dağıtımlarında da ufak farklılıklar ile çalışacaktır.  Continue reading

Redis Server’ ınızı Güvenli Hale Getirin

Redis server kendi sitesinde de yapılan açıklamaya (http://redis.io/topics/security#redis-general-security-model) göre;

Güvenilir client lar ile güvenilir ortamlardan erişilmek üzere tasarlanmıştır. Bu demek oluyorki, Redis server’ı internetten erişilebilir halde bırakmak hiç iyi bir fikir değildir. İp adresi + port + şifre bilgileri girilerek herhangi bir program ki bu programlara http://angulartr.com/redis-server-icin-kullanici-arayuzuredis-desktop-manager/ yazımdaki örneğide verebiliriz, bu şekilde erişime açık bırakmak, problemler yaratabilir.

Redis, maksimum performans ve basitlik için optimize edilmiştir, maksimum GÜVENLİK için DEĞİL

Güvenliksiz performans, performans değildir diyerek, Redis Server’ ı güvenli hale getirebileceğiniz adımları paylaşıyorum.

Güvenlik Önlemleri;

“Firewall ile Redis Server’ a gelen istekleri reddetmek”

http://angulartr.com/ufw-ile-ubuntu-da-firewall-kurmak-ve-kurallar-olusturmak/ adresindeki konuyu inceleyin ve ufw ile istenilen port nasıl kapanır başlığına bakın. Redis’ in eğerki değiştirmediyseniz çalıştığı port 6379 dur. Bu portu dışarıdan gelen isteklere kapamalısınız.

“Binding to localhost”

Default olarak Redis server sadece localhost üzerinden erişilebilir durumdadır. Lakin herhangi bir sebeple, redis server erişimini dışarıya açtıysanız, bunu geri almakta fayda var. Aşağıdaki komut ile ayar yapacağımız dosyayı açıyoruz.

Aşağıdaki satırı buluyoruz ve başında # işareti varsa, # işaretini siliyoruz ve dosyayı kaydedip çıkıyoruz.

Ardından aşağıdaki komut ile redis serverı restart lıyoruz ki değişiklikler aktif olsun.

“Redis şifresini değiştirmek”

Redis default olarak şifresiz gelmektedir. Bu da büyük bir açık yaratıyor. http://angulartr.com/redis-sifremi-unuttum-redis-sifre-degistirme-redis-sifre-koyma/ adresindeki işlemlerden gerekli yardımı alabilirsiniz.

“Tehlikeli olabilecek komutların ismini değiştirmek yada komple geçersiz kılmak”

Redis’ in en güzel özelliklerinden biride komutlarının ismini değiştirmeye yada komple geçersiz kılmaya izin vermesidir. Bir şekilde redis-server a sızan biri bu tehlikeli komutları çalıştırarak, sisteminize büyük zararlar verebilir.

Aşağıdaki komut ile /etc/redis/redis.conf dosyasını açalım ve # rename-command CONFIG satırını inceleyelim.

Burada yapılan işlem CONFIG komutunun ismini b840fc02d524045429941cc15f59e41cb7be6c52 gibi bir hash ile değiştirmektir. Bu satırın başındaki # işaretini silip, dosyayı kaydettikten sonra redis-serverı restart ladığınızda artık CONFIG yazarak, config komutunun yaptığı işi yaptıramayacaksınız, onun yerine yukarıda gösterdiğim hash i yazmanız gerekmektedir. Bu sayede ultra güvenli bir yol izlenmiş olacaktır.

LAKİN, Örneğin redis-server ı kullanan uygulamanızdaki bir kod, bu komutu kullanıyorsa, artık çalışmayacaktır. Bu yüzden kodunuzda da CONFIG yazan yerleri hash ile değiştirmeniz gereklidir.

En tehlikeli komutların listesi aşağıdadır.

Bu komutların ismini isterseniz değiştirebilirsiniz, isterseniz de bu komutların kullanımını tamamen kapatabilirsiniz. Kapatma işlemi için açmış olduğunuz conf dosyasında yeni bir satıra geçin ve aşağıdaki örneği istediğiniz komut için düzenleyip kaydedin. Ardından da redis-server ı restart lamayı unutmayın.

Yukarıdaki örnek FLUSHDB komutunun artık çalışmamasını sağlıyor.

“Dosya İzinleri ve Sahipliğini Ayarlamak”

Aşağıdaki komutu çalıştırdığımızda, karşınıza gelen sonuç aşağı yukarı aşağıdaki gibidir.

/var/lib/redis klasörünün sahipliği redis kullanıcısı ve grubuna ait, bu güzel, fakat klasörün dosya izni 755, bu izni 700 yapıp sadece redis kullanıcısının erişimine açmalıyız. Bunu aşağıdaki komut ile gerçekleştiriyoruz.

Aşağıdaki komutu çalıştırırsak ta, redis şifremizi de içeren /etc/redis/redis.conf dosyasının izninin 644 yani herkes tarafından okunabilir olduğunu göreceğiz.

Bu çok tehlikeli. Bu dosya için en ideal ayar, redis kullanıcına ve root grubuna sahiplik vermektir. Bunu aşağıdaki komut ile gerçekleştiriyoruz.

Ardından da bu dosyayı okuma iznin sadece kendi kullanıcısına ait olmasını aşağıdaki komut ile sağlıyoruz.

Ardından aşağıdaki komut ile de değişikliklerin aktif olmasını sağlıyoruz.

 

Tebrikler, artık olabildiğince güvenli bir redis kurulumuna sahipsiniz.