Firmanızı Korumak

Emre Bey’in attığı bir yorum üzerine bu yazıyı yazıyorum. Emre Bey’in derdi günümüzde çok yaygın olan veri ve ürün hırsızlığı ile ilgili. Yasaların yetersiz kaldığı yada uygulanmasının mümkün olmadığı durumlarda (finansal yetersizliklerden dolayı) ürün ve kaynak kodunu korumak için neler yapabilirsiniz? Yazılım firmanızı ve ürününüzü meraklı yazılım uzmanları ve hırsızlara karşı nasıl koruyacaksınız? Finansal olarak zaten küçük bir işletmesiniz ve dava açıp avukat masrafları ile uğraşmak ta istemiyorsunuz. Zaman ve nakit kaybını en aza indirerek ürününüzü ve firmanızın geleceğini korumak istiyorsunuz.

Teknik açıdan ne yaparsanız yapın elbet bir delik bulunacaktır. Ya sosyal mühendislik yolu ile yada sistemdeki bir açık yüzünden gözünüzün nuru ürününüz dışarıya sızacaktır. Gene de teknik açıdan yapılabilecek pek çok şey var. Ne kadar çok kapıyı kapatırsak o kadar sızıntıyı önlemiş oluruz. Öte yandan yazılımcıların esnekliğini kısıtlamış oluyorsunuz ve bir yazılımıc için pek iyi bir durum değil.

Yapılacak teknik kısıtlamalara bir bakalım. Uyarı: Bu yazılanları uygularsanız firmanızda Darth Wader olarak adınız çıkabilir.

1- Tüm disket ve CD sürücüleri kaldırın

Firma içinde yazılım amaçlı kullanılan ve yazılımın bulunduğu ağ dizinlerine erişebilecek her bilgisayarın disket ve CD sürücülerini kaldırın. Böylece bir kapıyı kapamış oluyoruz. Benim şu an çalıştığım departmanda CD ve disket sürücüleri bilgisayarların üzerinde fakat işletim sisteminden hiç birine erişim yok. BIOS seviyesinde kapatılmışlar.

Bazı bilgisayar kasaları vidaları sökülüp açıldığında sistem yöneticisine bildiri gönderecek şekilde dizayn edilmiştir. Bu kasaları kullanırsanız bir miktar daha koruma sağlamış olursunuz.

2- USB portlarını kapatın

USB portlarına takılacak herhangi bir araç kodun dışarıya sızmasına neden olabilir. USB portları muhakkak kapatılmalıdır. Ayrıca varsa infrared portaları da kapatılmalıdır.

3- BIOS şifrelenmeli

BIOS sistem yöneticisi tarafından bir şifre ile korunmalıdır. Böylece kimse BIOS üzerinden USB portlarını açamaz yada IDE sürücülerini etkin hale getiremez. Kasaları açıp pilleri çıkartınca pek geçerli bir koruma olmuyor ama haftalık kontroller ile denetlenebilir.

4- Tek bir sistem yöneticisi

Genel olarak bir yazılım evinde herkes sistem yöneticisi olarak tanımlanır ki herkes istediği her yere ulaşabilsin. Fakat çok yanlış bir uygulama. Ben kendi bilgisayarlarımda bile sistem yöneticisi olarak iş yapmıyorum. Biraz daha profesyonel olmak için bir domain kurun ve tek bir sistem yöneticisi atayarak kullanıcıları yönetin. Verilecek hakları ve erişimleri sıkı denetleyin.

5- Security Policy ayarları

Windows üzerindeki Security Policy ayarları ile kullanıcıların uygulama kurma ve kaldırma haklarını kapatın. Böylece bir şekilde ağınıza bir uygulama girse dahi kurulumu çok zor olacaktır. Domain kurarak bu ayarları domain bazında yapın.

6- Hiç kimse lokal admin olmamalı

Eğer COM+ geliştiriyorsanız olabilir tabii ama hiç kimse kullandığı bilgisayarda lokal admin olarak iş yapmamalı.

7- İnternet bağlantısı olmamalı

İnternet verimliliği düşüren en büyük etkenlerden biri bence. Ben kod yazarken ne Outlook nede MSN Live Messenger açıktır. Zaten gerek te yok çünkü en son sürüm MSDN kurulu makinemde.

8- Domain kurun ve kullanıcıları iyi yönetin

Her kullanıcıyı admin olarak tanımlamaktansa bir domain kurup kullanıcılara verilecek hakları belirleyin. İstisnalar olacaksa neden olacağını ve nasıl yönetileceğini de belirleyin.

9- Ağınıza bağlanacak makineleri takip edin

Linux için www.arpalert.org adresinde ArpAlert diye bir ürün mevcut. Bu ürün ile ağınıza bağlı makinelerin MAC adreslerini bir veritabanında tutuyorsunuz ve kayıtlı olmayan bir makine bağlandığında size haber veriyor. Günümüz MAC Spoof yöntemleri ile biraz geçersiz bir ürün oluyor ama hiç yoktan iyidir. Kablosuz ağlar içinde iyi sayılabilecek bir yöntem.

10- Kod deponuzu koruyun

Kod deponuz hangi ürün olursa olsun kesinlikle kilitli kapılar ardında olmalıdır. Ayrıca kullanıcıların yaptığı işlemleri takip edip uygunsuz bir işlem gördüğünüzde soruşturma yapın. Örneğin bir kullanıcı tüm kod deposunu indirmeye kalkarsa arkasında muhakkak bir çapan oğlu vardır. Her gün sonunda bir yedek alıp güvenli bir şekilde saklayın. Yedeğin bir kopyasını firma dışında bir yerde hatta farklı bir şehirde tutun.

11- Güvenilir kişiler ile çalışın

Bulması ve anlaması zor bir özellik. Kişilerin güvenilirliği çok değişken de olabilir. Haysiyetli ve helal süt emmiş yazılım uzmanları ile çalışırsanız riskiniz daha da azalacaktır. Deneme yanılma yolu ile bulacağınız bu kişiler firmanın kök ekibini oluşturabilir.

12- Log tutun ve logları inceleyin

Herkes log tutar ama bunları inceleyen çok azdır. Kilit işlemler yapılırken muhakkak log tutun ve bunları gün sonunda inceleyin. Çeşitli otomatik uyarı mekanizmaları kurup yapılan bazı işlemlerden anında haberdar olmaya bakın.

13- Dışarıya giden postaların kontrolü

Firmanızın sunucularından çıkacak her türlü e-posta incelenmeli ve onaylanmalıdır. Böylece bir yazılım uzmanı kodları zipleyip e-posta ile göndermeye kalkarsa durdurulabilir.

Kodu çalmak isteyen yazılımcı kodu yazıcıdan basabilir ve bir şekilde kodu dışarıya çıkarabilir. Teknik açıdan ne kadar kısıtlama getirirseniz getirin bir açık elbet olacaktır. Bu kadar çok kısıtlama yazılım uzmanlarını da bunaltabilir. Hani bu kadar yazdım ama ben bu tür bir firmada çalışmak istemezdim. Eğer firma sahibi beni hırsız olarak görüyorsa neden çalışayım ki… Sanırım teknik açıdan yapılacak şey çok fazla ve takibi ve teftişi için nakit ve vakit harcamanız gerekecek.

Sonuç

Sadakat kişilerin karşılıklı güvenlerinin artması sonucu doğan bir unsurdur. Eğer siz firma sahibi olarak çalışanlarınızın geleceğini garanti edebilirseniz çalışanlar da size sadık olacaktır. Yapacağınız satışlar ile firmanıza sağlayacağınız gelir akışları ve akabinde bunun herkesin çabası ile olduğunu anlatacak toplantılar veya kutlamalar yapabilirsiniz. Böylece çalışanlar kendilerini daha da fazla firmanın bir parçası olarak görürler. Gelecek vaad etmeyen bir firmada hiç kimse durmak istemez.

Firma kültürünü ve sadakati misyon haline getirseniz dahi birileri mutlaka kodu çalmak için yeltenecektir. Gizlilik anlaşması bu aşamada imdadımıza yetişebilir. Bu anlaşma kişilerin çalıştıkları ürün hakkında dışarıda konuşmalarını ve herhangi bir şekilde kaynak kodunun dışarıya sızdırılması halinde yasal işlemlerin uygulanacağını açık seçik belirten bir anlaşmadır. (bakınız Non-Disclosure Aggrement yada Confidentiality Aggreement). En iyi çözüm bir gizlilik anlaşması imzalatmak ve güvenilir kişiler ile çalışmak. Yapılan her işlem için log da tutabilirsiniz. Anlaşmayı imzalayan ve her işlem için log tutulduğunu bilen yazılım uzmanları kodu çalmaya yeltenmeyecektir (en azından ben öyle umuyorum). Bu iki anlaşma örneğini yakında blogumda vereceğim.

Bazı anlaşmalarda ayrılan kişilerin rakip firmalarda çalışmasını önleyecek maddeler bulunur. Örneğin A firmasından ayrılıp aynı tür ürün geliştiren B firmasına geçip çalışmamız engellenmek istenebilir. Bu hayatımda gördüğüm en rezil uygulama. Zaten yasal bir dayanağı da yok. Ben kendi bildiğim işleri yapmak ve kariyerimde ilerlemek için tabii ki aynı işi yapan daha büyük bir firmaya geçicem. Bu kaçınılmaz.

Karşılıklı güven ve sadakatin gelişmesi için sağlanacak ortamın yaratılması ve kişilerin özveri ile çalıştığı bir firmada bu tür yaptırımlara gerek kalmaması lazım. Uygulanacak her türlü yaptırım, yazılım uzmanlarının çalışma şartlarını bozar. Kodun kalitesini dahi düşürebilir. Kontrolün dozajını iyi ayarlayıp çalışanları tiksindirmeden bu işi halletmek gerekiyor. Firmada çalışan herkes istisnasız bu anlaşmaları imzalamadır. İstisna yapmaya başlarsanız diğer çalışanlar bu durumdan rahatsız olabilir.

Diğer bir yöntem yazılım ve şirket genel ağlarını birbirinden fiziksel olarak ayırmak. Hatta her bir test seviyesi için birer ağ kurmak iyi olabilir. Örneğin benim çalıştığım departmanda Geliştirme, Fonksiyon Testleri, Kullanıcı Kabul Testleri, Entegrasyon Testleri, Performans Testleri için birer ağ mevcut. Bu ağlar birbirinin hemen hemen aynısı. Fakat domain olarak ayrılar. Aralarında fiziksel olarak bağlantı var fakat firewall bunları denetliyor. Masraflı ama günümüzün Virtual PC imkanlarını düşünecek olursanız aslında uygulaması o kadar da maliyetli değil. Benim çalıştığım yerde Performans testlerine kadar olan tüm ağlar ve bilgisayarlar sanal. Yönetimi de çok kolay oluyor. Bir temel “image” hazırlayıp her kurulumda bunu kullanabilirsiniz.

Kod çalınırsa yada kaçak olarak yerlerde satılmaya başlarsa yapacağınız en mantıklı hareket, ürünün bir sonraki sürümünde ekleyeceğiniz özellikleri geliştirmektir. Öyle ki müşteriler yerlerde satılan eski sürüm yerine yeni sürüm için aşersinler. Arayüzlerde yapılacak yenilikler veya sistemde temelden yapılacak değişiklikler buna neden olabilir. Evet masraflı ama pazarda kalabilmenin ve hırsızlarla mücadele etmenin başka bir yolu.

Umarım yararlı bir yazı olmuştur.

Posted in Bilişim, Türkçe.