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.

Reklamlar


Bu girdiye atılan yorumlar:

# re: Firmanızı Korumak

Sizinde belirtiğiniz gibi asıl olan insan.Tecrübelerinizi paylaştığınız ve yol gösterdiğiniz için çok teşekkür ederiz.
Herkezin iyi niyetli insanlarla çalışması dileğiyle.

Emre tarafından  2/12/2007 8:28 AM tarihinde atılmıştır.
# re: Firmanızı Korumak

Internet geliştirme sırasında olmazsa olmaz bir gereklilik. Konuya bu sertlikle yaklaşmak başka kırılmalara meydan verebilir.

Konunun daha iyi anlaşılması daha çok önem taşımaktadır. Sizinki biraz, okul öğretmenlerine benzemiş: Öğrencilerine disiplin getirmek için ne yapacaklarını bilemediklerinden öğrencilerini dövmeyi çare olarak görüyorlar...

inanç tarafından  3/11/2007 11:11 PM tarihinde atılmıştır.
# re: Firmanızı Korumak

Selam İnanç,

Yorumun için teşekkür ederim.

Yazının sonlarına doğru zaten ben de bu yöntemlerin kötü sonuçlar doğuracağını söylemiştim. Önemli olan insan ilişkilerinde sadakat ve firma içinde belli bir kültürü oturtmak. Firma çalışanlarının firmaya olan güveni ve gerçekten "helal süt emmiş" yazılım uzmanları ile çalışmak zaten bu tür yöntemlere yer bırakmaz.

Başta yazan yöntemlerin uygulandığı firmalar da var Türkiye'de. Firmalar ürünlerini korumak için bu tür yöntemlere yelteniyorlarsa anla ki bulundukları ortama güvenmiyorlar yada paronayak seviyesindeler.

Öyle yada böyle bir şekilde ürünlerini korumak zorundalar. Çalışanların tabiiatına bağlı olarak ya sert yöntemler kullanacaklar yada güven ortamı mevcut ise daha esnek davranacaklar. Yasalar bile bu konular da yetersiz kalabiliyor.

Gürkan Yeniçeri tarafından  3/12/2007 11:09 AM tarihinde atılmıştır.
# re: Firmanızı Korumak

Yazılım geliştirmek şiir/şarkı yazmak gibidir.
Kodlar da notalar ile heceler.

Kodcu kendi üretiminin sonuçlarına hakimse patronları ve yöneticileri fark etmeden orkestraya istediği gibi bir şarkıyı çaldırtabilir.

Programcının iyiliği ve kötülüğü (siz süt emme bağlamında düşünüyorsunuz :) )
ancak yapılan iş sonuca erdiğinde ortaya çıkar.

Kaldı ki büyük projeler canlı birer organizma gibi hep yaşar.
Hiç bir zaman süreç bitmez.
Bir fabrika gibi yazılım işçisi çalışır.
Taaa ki mükemmele ulaşıncaya kadar.
O da olamayacak kadar uzaktır.

Kısacası "Var olanların en iyisi ile yetinmek zorundayız."

murat tarafından  3/17/2007 9:05 PM tarihinde atılmıştır.
# re: Firmanızı Korumak

Selam Murat,
Yorumun için teşekkür ederim.

Yapılan iş sonuca ermeden de verimli ve verimsiz programcıları birbirinden ayırabiliriz. Örneğin Jeff'in FizzBuzz testi eleman alımlarında işe yarayacak bir test. Projelerin bir organizma gibi yaşamasını "sonsuz hata düzeltme" olarak ele alırsak bu sürecin içinde çıkmamız zorlaşır. Yani eğer proje başından hatasız kod yazmak için gerekenleri yapmıyorsak ve her zaman olduğu gibi test aşamalarına önem vermiyorsak canlı bir organizma ile değil kanserli bir hücre ile karşı karşıyayız demektir.

Var olanların en iyisi ile yetinmek yerine süreçleri iyileştirerek bir sonraki adımda daha da ileriye gitmek ve kaliteyi arttırmak daha iyi bir işleme modeli tarzı olabilir.

"Mükemmel" aslında uzak değil sadece vizyonumuzu biraz daha genişletmemiz gerekiyor.

Gürkan Yeniçeri tarafından  3/21/2007 11:34 AM tarihinde atılmıştır.
# re: Firmanızı Korumak

Kapsamli bir yazi olmus, elinize saglik.

Bilgi gizliligi ve korunmasi sadece yazilim sektoru icin degil hemen hemen tum sirketler icin gecerli gunumuzde. Ben universitenin IT departmaninda calisirken, calistigim bolume yabanci kisilerin (arkadas, akraba dahil) girmesi kesinlikle yasakti.

Yaziya ilave edecegim bir nokta ise yedekler ile ilgili. Alinan yedeklerin de korunmasi tabiki tartisilmaz bir konu. Yine daha onceden calistigim yerde yedeklerin bir kopyasi baska bir sehirde de saklaniyordu, sadece bulundugumuz yerdeki sunucularda degil. Bu da dogal felaketlere karsi alinan bir korunma idi.

Erinç tarafından  3/21/2007 12:22 PM tarihinde atılmıştır.
# re: Firmanızı Korumak

Gürkan Bey,

Kaynak kodun çalınmasını önlemek için kodun belli bir bölümünün kapalı olması ve derlenmiş dll'ler olarak kullanılması hakkında ne düşünüyorsunuz? Örneğin kapalı olan dll'in içine de proje specific bazı değerler verilmiş olsa bu durumda kodu götüren kişi bu kodu kullanabilse de en azından yeni projelerde kullanamayacaktır. (Ya da yapmak için geri derleme vs birçok işlem yapmak zorunda kalacaktır.)

Sizin söyledikleriniz çok güzel ama küçük firmalarda kodun kopyalanmasını engellemek hemen hemen imkansız. Bu ve buna benzer alternatifyollar olabilir mi?

Gökhan Ercan tarafından  3/9/2008 1:46 PM tarihinde atılmıştır.
# re: Firmanızı Korumak

Gökhan Bey,

Birileri eğer kodunuzu çalmak için and içmiş ise ne yaparsanız yapın gidecektir. Kodu dll olarak kapatmak bir nebze işe yarayacaktır ama Reflector veya benzeri bir araç ile bakan birisi hemen geri mühendislik ile kodu tekrardan oluşturabilir. Proje spesifik değerler ile korumak bir alternatif olabilir. Ama sanırım bir güven ortamı oluşturmak en iyi yöntem olacaktır.

Gürkan Yeniçeri tarafından  3/19/2008 3:21 AM tarihinde atılmıştır.

Yorumunuzu buradan giriniz

Yorumlar onaylandıktan sonra yayınlanacaktır

*


*


 (Görüntülenmeyecek)


 (İsminizde link olarak görüntülenecek)


*
Bold Italic Underline Blockquote Hyperlink Hyperlink

 

Please add 7 and 4 and type the answer here:

Yorum Önizleme:

 

Arama



Hakkımda

Merhaba, ben Gürkan Yeniçeri. 10 yılı aşkın süredir özel sektör ve hükümet iştiraklerinde yazılım mühendisliği yapıyorum. Bu sitede 2005 Mart ayından beri genelde yazılım mühendisliği ve hobilerim hakkında yazmaktayım. Profesyonel iş geçmişim hakkında daha fazla bilgiyi aşağıdaki Linkedin.com linkinden alabilirsiniz.
Gürkan Yeniçeri'nin profilini görmek için tıklayın

Kontak

Soru sormak veya öneride bulunmak isterseniz buradaki kontak formunu kullanın. Mesajlarınıza en kısa zaman içinde cevap vermeye çalışacağım. Ayrıca Windows Live Messenger kullanarak gyeniceri {AT} hotmail {DOT} com adresinden bana ulaşabilirsiniz.

Eğer İngilizce blogumu okumak isterseniz buraya buyrun.
Blogumu RSS Bandit gibi bir RSS okuyucusu ile de takip etmek için kullanın.
Ayrıca aşağıdaki linklerden hakkımda ayrıtılı bilgi alabilirsiniz.
Twitter
Friendfeed
Facebook

RSS 2.0

Reklamlar


Vezir

Vezir Proje Danışmanı
Sitede birde Vezir isminde wikimiz var. Bu wikiyi yazmayı düşündüğüm bir kitap için oluşturmuştum daha sonra herkese açmaya karar verdim. Vezir yazılım firması kurmak isteyenlere tavsiyeler vermek için hazırlandı. Ayrıca UML ve Modül Tabanlı Geliştirme hakkında da bilgiler mevcut. Vakit buldukça yeni eklemeler yapıyorum. Değişikliklerden haberdar olmak için RSS çıktısına üye olabilirsiniz.

Tag Bulutu

Tüm taglar...
www.flickr.com
This is a Flickr badge showing public photos from gurkanyeniceri. Make your own badge here.
Bu blogda 265 yazı ve 509 yorum var. Diğer sitelerden 26 adet link gelmiş.

Reklamlar