Skip to content

Commit 818342b

Browse files
committed
added 30 days
1 parent 352ec00 commit 818342b

16 files changed

Lines changed: 2145 additions & 0 deletions

File tree

.DS_Store

0 Bytes
Binary file not shown.

2022/.DS_Store

0 Bytes
Binary file not shown.

2022/tr/.DS_Store

0 Bytes
Binary file not shown.

2022/tr/Days/day18.md

Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
1+
## SSH & Web Server
2+
3+
Bu makale boyunca belirtildiği gibi, muhtemelen birçok uzaktaki Linux sunucusunu yönetiyorsunuz. Bu nedenle, uzak sunuculara olan bağlantınızın mümkün olduğunca güvenli olduğundan emin olmanız gerekecektir. Bu bölümde, herkesin bilmesi gereken SSH'nin temellerini ve uzak sistemlere güvenli bir tünel oluşturmanıza yardımcı olacak bazı konuları ele alacağız.
4+
5+
- SSH ile bağlantı kurma.
6+
- Dosya transferi.
7+
- Özel anahtarınızı oluşturma.
8+
9+
### SSH'a Giriş
10+
11+
- Shell.
12+
- Bir Network protokolü.
13+
- Güvenli iletişim sağlar.
14+
- Herhangi bir Network hizmetini güvence altına alabilir.
15+
- Genellikle komut satırına uzaktan erişim için kullanılır.
16+
17+
Önceki günleri takip ettiyseniz, SSH'yi zaten kullandığımızı hatırlarsınız. Ancak, bu Vagrant aracılığıyla yapılandırılmış ve otomatikleştirilmiş olduğundan, sadece `vagrant ssh` komutunu çalıştırdık ve uzak sanal makineye erişim elde ettik.
18+
19+
Eğer uzaktaki makine sistemimizde değil de, örneğin bulutta veya yalnızca İnternet üzerinden erişilebilen bir veri merkezinde çalışıyorsa, sistemini yönetmek için güvenli bir erişim yöntemine ihtiyacımız olur.
20+
21+
Bu nedenle, kötü niyetli kişiler tarafından herhangi bir şeyin ele geçirilemeyeceği bir güvenli bir tünel sağlayan SSH protokolünden yararlanacağız.
22+
23+
![](Images/Day18_Linux1.png)
24+
25+
Sunucu, her zaman çalışan ve belirli bir TCP portunda (22) dinleyen bir SSH sunucu servisine sahiptir.
26+
27+
Doğru kimlik bilgileri veya SSH anahtarıyla istemcimizi kullanarak sunucuya bağlanırsak, o sunuca erişim elde ederiz.
28+
29+
### Sistemimize bir Bridge Network Adaptoru ekliyoruz.
30+
31+
VirtualBox üzerindeki sanal makinemizle bunu simüle edebilmek için sanal makineye bir Bridge Network Adaptoru eklememiz gerekmektedir.
32+
33+
Sanal makinenin kapalı olduğundan emin olun, VirtualBox içindeki makineye sağ tıklayın ve "Settings" seçeneğini seçin. Açılan yeni pencerede, "Network" seçeneğini seçin.
34+
35+
![](Images/Day18_Linux2.png)
36+
37+
38+
Şimdi makinenizi tekrar açın ve yerel makinenizde bir IP adresine sahip olacaksınız. Bununla ilgili olarak `IP addr` komutunu kullanarak doğrulama yapabilirsiniz.
39+
40+
### SSH sunucusunun çalıştığını doğrulama
41+
42+
SSH'nin zaten makinenize yapılandırıldığını biliyoruz çünkü vagrant ile kullanıyorduk, ancak bunu doğrulayabiliriz.
43+
44+
```shell
45+
sudo systemctl status ssh
46+
```
47+
48+
![](Images/Day18_Linux3.png)
49+
50+
Eğer sisteminizde SSH sunucusu yoksa, aşağıdaki komutu kullanarak yükleyebilirsiniz.
51+
52+
```shell
53+
sudo apt install OpenSSH-server
54+
```
55+
56+
Ardından, eğer bir güvenlik duvarı çalışıyorsa, SSH'nin güvenlik duvarı tarafından izin verildiğinden emin olmanız gerekmektedir. Örneğin, ufw adlı bir güvenlik duvarı kullanıyorsanız, aşağıdaki komutla protokolü etkinleştirmeniz gerekmektedir.
57+
58+
```shell
59+
sudo ufw allow ssh
60+
```
61+
Sanal makinede, Vagrant ile otomatik olarak yapılandırdığımız için bu adıma gerek yok.
62+
63+
### Remote Access(Uzak Erisim) - SSH Parolası
64+
65+
Şimdi SSH sunucumuzun gelen bağlantı istekleri için 22 numaralı portu dinlemesini sağladık ve köprü ağını ekledik. Windows'ta, putty veya başka bir SSH istemcisi kullanarak ana makinede, SSH'ye bağlanmak için sistemimize bağlanabiliriz.
66+
67+
![](Images/Day18_Linux4.png)
68+
69+
Ardından, "Open" düğmesine tıklayın. Eğer bu IP adresi üzerinden ilk kez bu sisteme bağlanıyorsanız, aşağıdaki uyarıyı göreceksiniz. Bu sistemin bizim olduğunu biliyoruz, bu yüzden "Evet" seçeneğini seçebilirsiniz.
70+
71+
![](Images/Day18_Linux5.png)
72+
73+
Şimdi kullanıcı adımızı (vagrant) ve şifremizi (default şifre - vagrant) girmemiz istenir. Sonra SSH istemcimizin (Putty) sanal makineye bağlandığını göreceksiniz.
74+
75+
![](Images/Day18_Linux6.png)
76+
77+
Harika! Artık uzaktan istemcimizden sanal makinemize bağlandık ve sistemimizde komutlarımızı çalıştırabiliriz.
78+
79+
Başka bir Linux'tan ise doğrudan "ssh" komutunu kullanarak shelle erişebilirsiniz. Komut satırı aşağıdaki gibidir: "
80+
81+
```shell
82+
ssh <nombre-usuario>@<IP-equipo-remoto>
83+
```
84+
85+
Eğer sanal makinenin IP adresi 192.168.169.135 ise, aşağıdaki komutu kullanmamız gerekecektir:
86+
87+
```shell
88+
ssh vagrant@192.168.169.135
89+
```
90+
91+
Bize şifre soracak ve ardından SSH'nin otomatik sertifikasını kabul etmemizi isteyecektir.
92+
93+
### Acceso remoto - SSH Anahtarı
94+
95+
Gördüğümüz yöntem, sistemlere hızlı ve kolay erişim sağlamanın bir yoludur, ancak hala kullanıcı adı ve şifre üzerine dayanmaktadır. Bu durumda, kötü niyetli bir aktör bu bilgilere ve sistemizin genel adresine veya IP'sine erişebilirse, güvenliğimiz tehlikeye girebilir. Bu zayıf noktayı azaltmak için SSH anahtarlarını kullanabiliriz.
96+
97+
SSH anahtarları, güvenilir bir cihaz olduğundan emin olmak için hem istemciye hem de sunucuya ait bir çift anahtar sağlar.
98+
99+
Bir anahtar oluşturmak kolaydır. Yerel makinenizde (Windows veya Linux'ta) aşağıdaki komutu kullanarak sertifikaları oluşturabilirsiniz.
100+
101+
```shell
102+
ssh-keygen -t ed25519
103+
```
104+
105+
Daha fazla `ed25519` hakkında bilgi edinmek isterseniz arastırabilirsiniz [kriptografi](https://en.wikipedia.org/wiki/EdDSA#Ed25519). Heyecan verici bir konu.
106+
107+
![](Images/Day18_Linux7.png)
108+
109+
Bu noktada, SSH anahtarımızı Windows için `C:\sers\micha/.ssh/` veya Linux için `$HOME/.ssh` dizininde oluşturduk ve sakladık.
110+
111+
Ancak bu anahtarı Linux sanal makineyle ilişkilendirmek için kopyalamamız gerekiyor. Bunun için kabukta `ssh-copy-id vagrant@192.168.169.135` komutunu kullanabiliriz.
112+
113+
Windows'da Powershell'i kullanarak anahtarları oluşturabilirsiniz, ancak burada ssh-copy-id mevcut değildir. Windows'ta bunu yapmanın yolları vardır ve çevrimiçi küçük bir arama size alternatifleri gösterecektir, ancak biz Windows için kopyalamayı yapmak için [git bash](https://gitforwindows.org/) kullanacağız.
114+
115+
![](Images/Day18_Linux8.png)
116+
117+
Şimdi, SSH anahtarlarımızla şifre gerektirmeyen bir bağlantı kurup kurmadığımızı test etmek için Powershell'e dönebiliriz. Bu, daha önce bahsettiğimiz komutu Linux istemcisinde kullanarak yapabilirsiniz.
118+
119+
```shell
120+
ssh vagrant@192.168.169.135
121+
```
122+
123+
![](Images/Day18_Linux9.png)
124+
125+
Gerektiğinde bunu daha da güvenli hale getirebiliriz. Bir parola ifadesi kullanarak bunu sağlayabiliriz. Ayrıca, hiçbir şifre kullanılmamasını ve yalnızca SSH üzerinden anahtar çiftlerinin kabul edilmesini sağlayabiliriz. Bu, sanal makinenin aşağıdaki yapılandırma dosyasında yapılabilir.
126+
127+
```shell
128+
sudo nano /etc/ssh/sshd_config
129+
```
130+
131+
Yapılandırma dosyasında `PasswordAuthentication yes` şeklinde bir satır bulacaksınız. Bu satırın başında `#` işareti olacak şekilde yorumlanmış olacak. Yorum işaretini kaldırın ve yes ifadesini no ile değiştirin. Ardından SSH hizmetini yeniden yüklemek için aşağıdaki komutu kullanmanız gerekecek:
132+
133+
134+
```shell
135+
sudo systemctl reload sshd
136+
```
137+
138+
Ve güvenliği artırdık. KonsKonfıgurasyon seviyelerine kadar daha da iyileştirilebilir, ancak başlamak için yeterli olanları yaptık.
139+
140+
## Web Sunucu Yapılandırması
141+
142+
Linux oyun alanımız için Linux sanal makineye daha fazla özellik ekleyelim. Bir Apache web sunucusu ekleyerek yerel ağda görüntülenebilecek basit bir web sayfası barındırabiliriz. Unutmayın, bu web sayfası İnternet üzerinden erişilebilir olmayacak. Bu önerilmez, ancak yapılabilir. Ancak, burada bunu görmeyeceğiz. [Ipucu](https://www.noip.com/).
143+
144+
Ayrıca bunu LAMP stack olarak da düşünebilirsiniz.
145+
146+
- **L**inux Ilsetim Sistemi
147+
- **A**pache Web Server
148+
- **M**ySQL Veritabanı
149+
- **P**HP
150+
151+
### Apache2
152+
153+
Apache2, açık kaynaklı bir HTTP sunucusudur. Apache2'yi aşağıdaki komutu kullanarak kurabiliriz.
154+
155+
```shell
156+
sudo apt-get install apache2
157+
```
158+
159+
Apache2'nin başarıyla yüklendiğini doğrulamak için şu komutu çalıştırabilirsiniz:
160+
161+
```shell
162+
sudo service apache2 restart
163+
```
164+
165+
Ardından, SSH bölümünde gördüğümüz uzak makinenin ağ adresini kullanacağız. Bir tarayıcı açın ve adresi kontrol edin. Örnek olarak, adresimiz `http://192.168.169.135/`.
166+
167+
![](Images/Day18_Linux10.png)
168+
169+
### mySQL
170+
171+
MySQL, basit web sitemiz için verilerimizi depolayacağımız bir veritabanıdır. MySQL'i yüklemek için aşağıdaki komutu kullanmalıyız.
172+
173+
```shell
174+
sudo apt-get install mysql-server
175+
```
176+
177+
### PHP
178+
179+
PHP, sunucu tarafında çalışan bir programlama dilidir. MySQL veritabanıyla etkileşimde bulunmak için PHP'yi kullanacağız. Son kurulum adımı, PHP ve bağımlılıklarını aşağıdaki komutu kullanarak yüklemektir.
180+
181+
```shell
182+
sudo apt-get install php libapache2-mod-php php-mysql
183+
```
184+
185+
Yapmak istediğimiz ilk yapılandırma değişikliği, Apache'nin `index.html` yerine `index.php` kullanmasını sağlamaktır.
186+
187+
Aşağıdaki komutu kullanacağız.
188+
189+
```shell
190+
sudo nano /etc/apache2/mods-enabled/dir.conf
191+
```
192+
Ve listelemede `index.php`'yi listenin ilk öğesine taşıyacağız.
193+
194+
![](Images/Day18_Linux11.png)
195+
196+
Apache2 hizmetini yeniden başlatıyoruz.
197+
198+
```shell
199+
sudo systemctl restart apache2
200+
```
201+
202+
Şimdi sistemimizin PHP için doğru şekilde yapılandırıldığını doğrulayalım. Aşağıdaki komutu kullanarak aşağıdaki dosyayı oluşturun, bu nano ile boş bir dosya açacaktır.
203+
204+
```shell
205+
sudo nano /var/www/html/90Days.php
206+
```
207+
208+
Daha sonra aşağıdaki metni belgeye kopyalayın ve öğrendiğimiz gibi, ctrl + x kullanarak çıkın ve dosyayı kaydedin.
209+
210+
```php
211+
<?php
212+
phpinfo();
213+
?>
214+
```
215+
216+
Şimdi tekrar Linux MV'nin IP adresine, URL'nin sonuna eklenen 90Days.php ile gezin: `http://192.168.169.135/90Days.php`. PHP doğru şekilde yapılandırılmışsa aşağıdakine benzer bir şey görmelisiniz.
217+
218+
![](Images/Day18_Linux12.png)
219+
220+
### WordPress'in Kurulumu
221+
222+
Ardından, LAMP stack'imize WordPress kurulumu için bu rehberi takip ettim.
223+
224+
```shell
225+
sudo mysql -u root -p
226+
```
227+
228+
```mysql
229+
CREATE DATABASE wordpressdb;
230+
231+
CREATE USER 'admin-user'@'localhost' IDENTIFIED BY 'password';
232+
233+
GRANT ALL PRIVILEGES ON wordpressdb.* TO 'admin-user'@'localhost';
234+
235+
FLUSH PRIVILEGES;
236+
237+
EXIT;
238+
```
239+
240+
```shell
241+
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
242+
```
243+
```shell
244+
sudo systemctl restart apache2
245+
```
246+
247+
```shell
248+
cd /var/www
249+
```
250+
251+
```shell
252+
sudo curl -O https://wordpress.org/latest.tar.gz
253+
```
254+
255+
```shell
256+
sudo tar -xvf latest.tar.gz
257+
```
258+
259+
```shell
260+
sudo rm latest.tar.gz
261+
```
262+
Bu noktada, "["Ubuntu üzerinde LAMP ile WordPress nasıl kurulur"](https://blog.ssdnodes.com/blog/how-to-install-wordpress-on-ubuntu-18-04-with-lamp-tutorial/)" adlı makalenin 4. adımındasınız ve WordPress dizini için doğru izinlerin yerinde olduğundan emin olmak için adımları izlemeniz gerekecektir.
263+
264+
Bu içsel bir kurulum olduğu için bu adımda "güvenlik anahtarları oluşturmak" gerekli değildir. Adım 5'e gidin, bu adımda Apache yapılandırmasını WordPress'e değiştirmeniz gerekmektedir.
265+
266+
Eğer her şey düzgün şekilde yapılandırılmışsa, dahili ağ adresiniz üzerinden WordPress kurulumunu çalıştırabilirsiniz.
267+
268+
## Kaynaklar
269+
270+
- [SSH GUI Client - Remmina](https://remmina.org/)
271+
- [The Beginner's guide to SSH](https://www.youtube.com/watch?v=2QXkrLVsRmk)
272+
- [Vim in 100 Seconds](https://www.youtube.com/watch?v=-txKSRn0qeA)
273+
- [Vim tutorial](https://www.youtube.com/watch?v=IiwGbcd8S7I)
274+
- [Learn the Linux Fundamentals - Part 1](https://www.youtube.com/watch?v=kPylihJRG70)
275+
- [Linux for hackers (don't worry you don't need to be a hacker!)](https://www.youtube.com/watch?v=VbEx7B_PTOE)
276+
- [Webminal](https://www.webminal.org/)
277+
- [Vim Temel Rehberi](https://gitea.vergaracarmona.es/man-linux/Guia-VIM)
278+
279+
Gorusmek Uzere [Gun 19](day19.md).

0 commit comments

Comments
 (0)