Skip to content

tolgaugurlu/Why

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 

Repository files navigation

Cyber Security Beginner

Image of Yaktocat

Herkese Merhaba, Eğer şu an buraları inceliyor ve okuyorsan muhtemelen Siber Güvenlik ve Yazılım alanına ilgi duyuyor olmalısın. Telaş yapma doğru yerdesin  Ben ve benim gibilerin temel amacı başlangıç aşamasında olan, kendini geliştirmeye çalışan, nereden başlayacağını bilmeyen kişileri doğru yönlendirmek ve bilinçlendirmektir.

Genel anlamda sorulan soruları ele alacağım. Birçok kullanıcı buradan verim elde edecektir bundan eminim. İlerleyen zamanlarda güncelleyerek farklı link ve projeleri de beraberinde yayınlayacağım.

Yazılım Nedir?

Yazılım, bütün belgeleriyle birlikte (fizibilite, yönetim, araştırma, belirtim, tasarım, geliştirme, test, bakım v.b.) sunulan bilgisayar programıdır.

Yazılım Mühendisliği Nedir?

Yazılım Mühendisliği, belirli bir hedefe ve sisteme dayalı olarak ve işbölümü yapılarak, belirli prensipler, yöntemler ve araçlar kullanılarak bilgisayar yazılımlarının tasarımı, geliştirilmesi, sınanması, bakımı konularını ele alan sistematik ve çok disiplinli bir mühendislik dalıdır.

Yazılım Mühendisi Kimdir?

Başta uzay ve savunma teknolojileri, bankacılık, otomotiv, telekomünikasyon v.b. sektörler olmak üzere her alanda kullanılan bilgisayar sistemlerine, yazılım tasarımı hazırlayan, sisteme entegre işlemini gerçekleştiren ve uygulamasını yapan kişidir.

Yazılım Mühendisleri Genel Çalışma Koşulları Nelerdir ve Neler Yaparlar?

Genellikle büro ortamımda çalışır. Bununla birlikte, proje ister ve analiz aşamalarında paydaş ziyaretlerinde bulunmaları gerekir ve projelere bağlı olarak yurt içi ve dışı seyahat etmeleri gerekebilir. Çalışırken üst yönetimle, programcılarla ve müşterilerle, yoğun olarak iletişim halindedirler. Hazırlanacak yazılımlarla ilgili olarak müşteri ilişkilerini kurarlar, müşterilerden aldığı bilgiler doğrultusunda analiz yaparlar, yazılım yasarım yapar ve programlarını hazırlarlar. Hazırlanmış programları test eder ve gerekli düzeltmeleri yaparlar. Yazılımı sorunsuz bir şekilde çalışır hale getirdikten sonra, gerekli durumlarda kullanım yönergesini hazırlayarak, kullanıcıların eğitilmesini sağlarlar ve yazılımın yaşatılması için gerekli işlemleri denetlerler.

Yazılım Mühendisi ve Bilgisayar Mühendisi arasındaki farklar nelerdir?

Bu iki mühendislik dalı arasındaki ortak yanlar çok fazla olmakla beraber, ana fark şu şekilde izah edilebilir; Bilgisayar Mühendisliği daha çok donanımın kendisini kontrol eden yazılımların tasarımı ve geliştirilmesine vurgu yaparken, Yazılım Mühendisliği ise çoğunlukla uygulama yazılımlarının tasarımı, geliştirilmesi, kurulması ve yaşatılması ile ilgilenir.

Yazılım Mühendisleri Nerelerde Çalışır?

Yazılım Mühendisi, içinde yazılım yapılması gereken her sektörde çalışabilir. Bunlardan bazıları; Bankacılık, Oyun, E-Devlet, Elektronik Savaş, Savunma Sistemleri, Sinyal İşleme, Sağlık Bilgi Sistemi, Robotik ve Yapay-Zeka alanlarıdır.

Şimdi teknik bölümleri geçtiğimize göre tavsiye, yönelim ve tekniklere bakalım.

Bir Programlama Dilini Nasıl Tercih etmeliyiz?

  • Önce problemi tespit ederek hangi alan üzerinde ihtiyacımız olduğuna bakmalıyız.
  • GitHub’ta repository araması yapmalıyız.
  • İlgili yazılı kaynaklar incelemeliyiz.
  • Paket ve Kütüphaneleri, varsa ücretli servisler karşılaştırmalyız.
  • Seçtiğiniz araca uygun bir Framework seçmeliyiz.
  • IDE ve Development environment hazırlamalıyız.

Bir Problem Nasıl Belirlenir?

Refleks olarak sorunu uzakta algılarız. Aslında birçoğumuz alıştığımız problemlerle yaşıyoruz. Kullandığın Kettle, kullanacağından daha fazla su ile çalışıyor olabilir mesela; bu bir problemdir.

Bir Problem Nasıl Çözülür?

Bunu öğrenmek herkes için sübjektif bir süreç. “No Pain, No Gain!”

Örnekle devam edelim; Bana sürekli “Yazılıma Nasıl Başlayabilirim?” adı altında soru ve sorular geliyor. Bende bunun üzerinden bir örnek vermek istiyorum. Problemin işaret ettiği gibi herkese cevap üretimine odaklanmak yerine kendi düşüncelerimi ardışık bir hale getirerek bu metni yazıyorum. Böylelikle tek bir cevap üzerine yoğunlaşıp, tekrar kullanılabilir hala getiriyorum. İnsan bazen hırsla aradığı bir şeyi her yere bakmasına rağmen göremez, aslında biraz sonra fark eder ki, aradığı şey tam önündeymiş. Sanıyorum ki gördüklerimizi önbelleklediğimiz için, bakıyor olduğumuz, gördüğümüz anlamına gelmiyor ve aradığımız şeyi orada olmasına rağmen göremiyoruz.

FrameWork Nedir?

FrameWorklerin kullanımı, bize kolaylık sağlar. Piyasa şartlarına baktığımızda da, yazılım dili deneyimi kadar framework deneyimi de aranıyor. Bir dilin Syntax, Variables, Values, Types, Operators, Loops ve Logic gibi temel yapıtaşları öğrenildikten sonra, frameworkler kodun bize nasıl yazılacağı noktasında araç ve teknikler sunar. Benim Python’da deneyimlediğim iki framework var. Flask ve Django. Flask, microservice yapımı için tasarlanmış ve oldukça hafif bir framework. Ancak geniş community desteği ve daha iyi dokümanyasyonu sebebiyle Django’yu tercih edeceğim.

Bir programlama diline hakim olmak, kişiye çok şey kazandırır. Ancak dili bilmiyorsan framework sana çok şey kazandırır. Çünkü her framework, aynı problemi çözmek isteyen insanları, sundukları çözümleriyle birlikte bir araya getirir ve bu ortak kültürün sonucunda temel şeyler için best pratices, yani bir işin en iyi yapılış yöntemi tespit edilmiş olur. Özetle, frameworkler bir programa dilinin üzerine inşaa edilmiş yazılım çerçeveleridir. Kod yazımınızı standardize ederek, birden fazla yazılımcının tek bir kod bütünü üstünde uzmanlaşmasını kolaylaştırır. Çünkü kodun daha düzenli olmasını sağlar.

Yazılım ve Siber Güvenlik/ Geliştirme için Masaüstü mü Laptop mu?

Arkadaşlar, Yazılım ya da Siber Güvenlik alanında olmak demek, hayatının %90’ını yoğun olarak makale okumak, araştırmak, öğrenmek ve video izlemekte geçirmek demek. Bunun yanında Virtual Machine(Sanal Makine) çalıştırmanı ve iyi bir Network(Ağ’a) sahip olmanı gerektirecek. Eskiye nazaran şu an kullanılan Masaüstü ve Laptop bilgisayarlar arasında neredeyse hiç fark yok diyebilirim. Bu yüzden Yazılımcılar ve Programcılar genellikle Laptop tercih eder. Bunun en önemli sebeplerinden bazıları; seyyar olabilmek, bağlı kalmamak, taşınabiliyor olması, hızlı ve kullanışlı olması. Bundan dolayı Laptop, bu mecrada iş yapanlar için biçilmiş kaftandır.

Laptop Önerileri;

  • Apple MacBook Air (2020)
  • Lenovo ThinkPad x1 Extreme
  • MacBook Pro İntel i5 (2020)

Bu işin bir yaşı var mı?

Arkadaşlar, Teknoloji sürekli olarak yenilenen, gelişen, devamlı olarak ilerleyen bir alandır. Durmaz ve tekrar etmez, daima yenilenir. Bu yüzden ayak uydurmak ve öğrenmek için belirli bir sınır ya da rant yok. İster 12-13 yaşında ol ister 40. Önemli olan husus ne kadar hevesli ve hırslı olduğundur. Bu yüzden “x” yaşındayım erken mi? Geç mi? Gibi sorular anlamsız.

Kod/Algoritma bütünlüklerine ücretsiz erişilebilir mi?

Bu sorunun cevabı evet ancak %60’a- %50 diyebilirim. Sürekli olarak kaynaklar ücretlendirilebiliyor ve İngilizce kaynaklara nazaran Türkçe kaynak bulmak fazlasıyla zor.

Algoritma mantığını daha iyi kavrayabilmek için; Algoritma Mantığı.

Genel kod mantığı için; Kod Mantığı.

Sıfırdan başlamak için; Sıfır Başlangıç.

Bu linklerden kendinizi geliştirebilir ve ilerletebilirsiniz.

Yeni yazılımcılara öneriler;

Python’ı öğrendikten sonra tek başına yeterli olur mu?

Sadece Python kullanarak yapılabilecekler:

  • Terminal(siyah ekran)’da çalışan konsol uygulamaları,
  • Django/flask gibi python framework’ler yardımı ile web api’lari(backend),
  • Pandas, numpy gibi kütüphaneleri kullanarak veri analizi uygulamaları yazılabilir. Python’ı öğrendikten sonra ilgi alanına göre onu başka diller/frameworkler ile desteklemek iyi bir fikir olabilir.

Html,css veya başka dillerde Python’ı öğrenmem gerekir mi ?

Eğer web alanında çalışmayacaksan gerekli değil. Ancak web geliştirmesi yapacaksan öğrenmen gerekir. Günümüzde web geliştirmesi yapmamak diye bir şey kaldı mı o da bir diğer soru işareti doğrusu.

Python kodu okumak istiyorum. Github biraz karmaşık ve çözemedim doğrusu, gerçek projeleri okuyabileceğim başka bir platform mevcut mu?

Python tutorialları yayınlayan kişilerin bloglarını takip etmek faydalı olabilir ancak Github/Bitbucket/Gitlab gibi alanlar dışında nereye bakarsan bak bunlarin yaninda yetersiz kalacaklardır. Bu işin odak noktası bu platformlar. Belli bir seviyeye gelince de stackoverflow’da yeni sorulan Python sorularını takip etmek iyi bir fikir olur.

Programlama geçmişim var fakat Siber Güvenlikte hangi alanı seçeceğimi bilmiyorum;

Owasp benzeri kurumları inceleyerek, App Pent.’lık veya Security Researcher’lık olacaktır. Hızlıca para kazanmanın temel yolu budur. BugCrowd ve Hackerone’ın eğitim sitelerine girip, bu firmaların Bug Bounty programlarına göz atarak para kazanabilirsiniz.

Udemy Kurs Önerileri;

  • Atıl Samancıoğlu
  • Ahmet Birkan
  • Ebubekir Bastama
  • Cemal Taner

Üniversite Okumalı Mıyım?

EVET OKUMALISIN!

Yazılım için değil, DİPLOMA için okumalısın. Lisans Diplomasına sahip değilsen. Daima üstüne basmaya çalışacaklarından emin olabilirsin. Tecrübeye dayanarak söylüyorum…

Hangi Programlama Dillerini Öğrenmeliyim? Neleri Öğrensem Yararlı Olur?

Bu konuda birçok kaynak var aslında: Python, JavaScript, C/C++, Bash Scripting(Linux komut satırı), sanal makinede Kali Linux çalıştırabilmek, temel CCNA ile network bilgisi SQL hakkında fikir sahibi olmak. Başlangıç için bunlar oldukça işine yarayacaktır.

İngilizce Zorunlu mu? Öğrenmeli miyim? Nasıl Öğrenebilirim?

Evet, İngilizce maalesef zorunlu. Okuduğunu anlayacak seviyede İngilizce diline hakim olmalısın. Ne yazık ki başka bir yolu yok bunun. İnsanlık tarihinin çok büyük bir bölümünde yazı yoktu. Sonradan icat edildi. Hepimiz anadilimizi dinleyerek öğrendik. Yani insan beyni dili dinleyerek öğrenmeye koşullanmış. Dolayısıyla dil öğrenmenin temeli dinleme, işitmedir. Yapılan araştırmalar da işitsel öğrenmenin çok daha verimli olduğunu gösteriyor. Buna bağlı olarak dil öğrenirken başlangıç noktamız her zaman dinleme olmalı. uzunca bir süre dile harcanın zamanın çoğunluğu dinlemeye ayrılmalı. kullandığımız kaynaklar dinleme üzerine kurulu olmalı veya mutlaka ses desteği içermeli. Önce bir süre metin üzerinden öğrenip sonra kayıtları olan metinler, kaynaklar kullanmalısınız. Çalıştığınız materyali çok kez, tekrar tekrar dinlemelisinz. Dizileri yabancı alt yazı izleyerek gelişebilirsin.

Buradan da öğrenim sağlayabilirsin; Eğitim İçin.

Dizi ve Filmlerde geçen terim ve kalıpları anlayabilmek için şurayı da kullanabilirsin; Dizi İçin.

Linux öğrenmeli miyim? Nasıl öğrenebilirim?

Evet eğer Siber Güvenlik alanı ile ilgileniyor isen Debian Tabanına hakim olmalısın. Buradan gerekli sistem ve bilgiye sahip olabilirsin; Linux101.

Pentester olmak istiyorum. Bu benim ilgi duyduğum alan;

HackTheBox. buradan gerekli koşulları sağlayarak kayıt olabilir ve pentesting alanında ilerleyebilirsin.

Kurulum ve giriş için şurayı inceleyebilirsin; Hackthebox Kurulum.

Alternatif olarak; TryHackMe. Türkçe Kaynak; PriviaHub.

BugBounty için Öneriler;

Awesome serisi; (İngilizce Kaynaklar)

About

Siber Güvenlik Bilgilendirme

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published