CentOS’da Hostname Değiştirme

Şu sıralar sunucular üzerinden yazı yazıyorum devamlı. Fena halde kafayı takmış durumdayım. Bu yazımda da önemli ve basit bir işlemin nasıl yapılacağını anlatıyorum.Varsayılan olarak hostname’iniz sunucunuz adınız olarak atanır. Cpanel gibi bazı yazılımlar hostname için FQDN(Fully Qualified Domain Name) isterler lisans onaylama sistemlerinden ötürü.

Peki, Hostname Nasıl Değiştirilir?

Hostname‘i 4 adımda değiştirebiliriz. Şanslısınız ki oldukça kolay adımlardır :)

Sysconfig/Network

/etc/sysconfig/network dosyasını açın. Bu dosyada HOSTNAME= değerini kendinize göre uygun bir FQDN ile düzenleyeceğiz. Yönetici değilseniz komutların başına sudo ekleyin lütfen.

nano /etc/sysconfig/network
HOSTNAME=sunucum.domain.com

Hosts Dosyası

Sunucunuzun IP adresiyle ilişkilendirilmiş olan hostumuzu güncellemeliyiz. (/etc/hosts konumunda bulunur)

hosts

‘Hostname’ Komutu

‘hostname’ komutu ile komut satırının bildiği bütün hostname’leri güncelleyebilirsiniz. Fakat sistemdeki bütün hostname değerlerini güncellemediğini bilmelisiniz. Bu yüzden bir değişiklik anında tek tek kontrol etmelisiniz.

hostname

 

Network Servisini Yeniden Başlatma Vakti

Bu aşamada ayarlarımızı kaydettik, ayarlarımızın yürülüğe girmesi için tek yapmamız gereken network servisini yeniden başlatma ;)

service network restart

veya

/etc/init.d/network restart

İyi tatiller,

 

En Çok Kullanılan 17 Linux IPTables Kuralı

İlk sefer bakanlar için veya yeni yeni kurcalamaya başlayanlar için IPTables kuralları karışık gelebilir.

Bu makalede, genellikle ihtiyaç duyacağınız 17 pratik IPTables kuralını sizlerle paylaşıyorum. Sizde rahatlıkla kopyala/yapıştır yaparak faydalanabilirsiniz.

Aşağıdaki örneklerin kimisi temsili değerler göz önüne alınarak hazırlanmıştır. Siz kendi ihtiyaçlarınız doğrultusunda düzenleyiniz lütfen.

1. IPTables Kurallarını Silme

Yeni kurallarınızı oluşturmadan önce bütün IPTables kurallarınızı temizlemek en doğrusu olacaktır. Bu sayede çakışma vs. olmayacaktır. Bunun için flush komutunu kullanacağız.

iptables -F

veya

iptables --flush

2. Varsayılan Zincir Politikasını Ayarlama

Aslında bu başlık biraz google translate oldu. Orjinali Default Chain Policy.

Varsayılan zincir politikası ACCEPT‘tir.

iptables -P INPUT DROP
 iptables -P FORWARD DROP
 iptables -P OUTPUT DROP

INPUT ve OUTPUT‘un ikisini de DROP olarak ayarlarsanız her güvenlik duvarı kuralında ikisini de tanımlamak zorundasınız. Gelen ve giden bağlantılar…

Aşağıdaki örneklerin hepsinde INPUT ve OUTPUT ayrı ayrı tanımlanmıştır.

3. IP Adresi Engelleme

Belirli bir IP adresinin sunucunuza erişmesini istemiyorsanız onu engelleyebilirsiniz. Sunucunuzdaki hiç bir web adresine erişimi kalmayacaktır bu sayede. “x.x.x.x” kısmını düzenlemelisiniz.

BLOCK_THIS_IP="x.x.x.x"
 iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP

Log dosyalarınızda şüpheli eylemler gerçekleştiren IP adreslerini engellemek isteyebilirsiniz. İsterseniz kalıcı isterseniz geçici..

Ayrıca bu IP adresi için eth0 üzerindeki TCP trafiğini de engelleyebilirsiniz.

iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
 iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

4. Bütün SSH Bağlantılarına İzin Ver

Aşağıdaki kural SSH bağlantısı kurmak isteyen eth0’dan herkesi kabul edecektir. Aslında 22 portunu açıyoruz.

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

5. SSH’a Sadece Kısmi Bir Ağdan Erişime İzin Verme

Aşağıdaki komut sadece 192.168.100.X IP’li kullanıcılara SSH erişimini açacaktır.

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

6. Gelen HTTP ve HTTPS Sorgularına İzin Ver

Aşağıdaki komut web trafiğine izin verecektir. Yani 80 portunu açacak. HTTP

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Aşağıdaki komut sayesinde ise 443 portu açılacak ve bu da HTTPS.

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

7. MultiPort’u Kullanarak Birden Fazla Kuralı Birleştirme

Her port için ayrı ayrı kural yazmaktansa bütün portları MultiPort kullanarak tek kural ile yazabiliriz. Aşağıdaki kural ile HTTP, HTTPS ve SSH’a erişime izin veriyoruz.

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

8. Giden SSH’a İzin Verme

Sunucunuzdan başka bir sunucuya bağlanmanıza olanak sağlar.

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Gelen SSH’dan farklı olduğunu incelerseniz görebilirsiniz.

9. Sadece Kısmi Bir Ağa (Giden)SSH İle Bağlanma

Aşağıdaki kural ile sunucunuzdan 192.168.100.0/24 ağındaki bir IP adresine bağlantı sağlayabilirsiniz.

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

10. Giden HTTPS’ye İzin Verme

Sunucunuzdan https adreslerine istek yapabilmenizi sağlar. wget vs. ile dosya indirmek istediğinizde oldukça işinize yarayacaktır.

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Not: HTTP için 443 portunu 80 olarak güncelleyin.

11. Sunucunuza Ping Yapılmasına İzin Verme

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
 iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

12. Sunucunuzda Ping Yapabilme

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
 iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

13. MySQL Sunucunuza Kısmi Bir Ağdan Erişime İzin Verme

MySQL kullanıyoruz sunucu dışından direk erişime izin vermek pek de mantıklı bir hamle değil.

Fakat geliştiriciler laptoplarından veya bilgisayarlarından kullandıkları MySQL yazılımları bağlanmak isteyebilirler. 192.168.100.0/24 ağına MySQL’i açalım.

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

14. Sendmail ve Postfix’e İzin Verme

Sendmail veya Postfix’e smtp portunu açarak izin veriyoruz.

iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

15. IMAP ve IMAP2’ye İzin Verme

iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT

IMAPS’e izin vermek içinse:

iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

16. POP3 ve POP3S’e İzin Verme

iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

POP3S’e izin vermek içinse

iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

17. DoS Ataklarını Engelleme

Aşağıdaki IPTables kuralı web sunucunuzu DoS ataklarını kısmen koruyacaktır.

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

Yukarıdaki örnekte:

-m limit: IPTables’ın limit eklentisini kullanır
–limit 25/minute: Dakikada 25 bağlantı kabul edileceğini belirtir
–limit-burst 100: 100 bağlantı sayısına ulaşıldığında limit/minute kuralını çalıştırır

Umarım işinize yarar, hepinize iyi çalışmalar dilerim,

Varnish Nedir?

Varnish bir HTTP hızlandırıcıdır(Ters Vekil Sunucusu, Reverse Proxy Server). Ziyaretçileri her ziyarette tekrar oluşturulan dinamik sayfalar yerine önbelleğine alınmış statik sayfalara yönlendirir ve sitenin hızlı bir şekilde açılmasını sağlar. Varnish’in en güzel özelliklerinden bir tanesi ise ne zaman içeriği dinamik olarak oluşturulmasını sağlayacağını bilmesidir. Bu durumda sadece gerek olduğu zaman sayfalar dinamik olarak oluşturulur.

Varnish basitçe, yapılan istekleri, belli kurallar ile cache’leyip istemciye dönen, genelde web sunucuların önünde konumlandırılan bir araç. İstekler Varnish’e geliyor, Varnish önbelleğinde varsa isteği buradan dönüyor, eğer yoksa sunucudan derleniyor. Varnish’in hızlı olmasının en büyük sebebi proxy için disk kullanmadan sadece ram kullanması ve log tutmak için yine disk kullanmamasıdır.

Örnek vermek gerekirse oluşan markup çıktısı her ne kadar ~20KB civarında olsa da, o 20KB’ı oluşturmak için, her istekte 5-10 MB RAM ve işlemci boşa harcanıyor. Ve siteye aynı anda 10.000 kullanıcı gelirse, 70-80 GB RAM’e ihtiyacınız oluyor! Toplamda ~20KB RAM işinizi görecekken 70-80 GB’lık bir sunucu bulmanız, yükü ona göre dağıtmanız ve bu sunucuları maintain etmeniz, en önemlisi bu sunuculara “para ödemeniz” gerekiyor. Varnish işte tam burada yardımınıza yetişiyor.

Daha aydınlatıcı olması için test edelim…

PHP ile basitçe 50ms’de dönen bir kod yazalım:

varns3

Şimdi apache üzerinde, mod_php ile çalışan bu adrese, anlık 100, toplam 5000 istek gönderelim:

varns

5000 isteğin tamamlanması 3.304 saniye sürmüş. Bu da saniyede toplam 1513 isteğe cevap verebilmişiz demek. Bir de Varnish ile deneyelim:

varns2

Bu sefer, 5000 istek, 0.307 saniyede döndü! Ve saniyede 16309.86 isteğe cevap verebilen bir sunucumuz oldu. Süper değil mi? 10 kattan daha fazla kazancımız oldu. Bu da kabaca, 10 tane sunucunun işini tek sunucuda yapabiliyoruz demek. cloudbunny

Ters Vekil Sunucusu(Reverse Proxy Server) Nedir?

Ters vekil sunucusu, bilgisayar ağlarında bir veya daha fazla sunucudan istemci adına kaynakları alan bir vekil sunucu türüdür. Kaynakları daha sonra istemciye geri döndürür.

İleri proxy, istemcilere yakın bir yerde çalışan Web sunucularla istemciler arasında aracı olan bir vekil sunucusudur. Ters vekil ise sunucu tarafında bulunan bir vekil sunucudur ve kaynakları Web sunucularından çekerek istemcilere iletir.

Reverse Proxy’nin Kullanım Amacı

  • Ters proxyler sunucularda varlığını ve özelliğini gizleyebilir.
  • Uygulama güvenlik duvarı özellikleri Web tabanlı saldırılara karşı koruyabilir.
  • Güvenli Web siteleri, SSL şifrelemesi Web sunucusu tarafından yürütülmez ters proxy sunucusuna devredilebilir.
  • Ters proxyler Web sunucuları üzerinden yükü azaltarak, Web isteklerine hızlı bir şekilde cevap verebilir.