SSL sertifikaları sunucu ve istemci arasındaki bağlantının şifrelenmesinde kullanılan güvenlik sertifikalarıdır. Piyasada bulunan pek çok SSL sertifikasının yapmakta olduğu işlem aynıdır ancak aralarındaki fiyat farkı prestijlerinden ya da birden fazla alan adı desteği, çoklu alt alan adı desteği gibi özelliklerden kaynaklanmaktadır.
Kendinize özel SSL sertifikanızı da oluşturabilirsiniz ancak bu durumda web tarayıcınız SSL sertifikanızın markasını tanımayacağı için güvenlik uyarısı verecektir. Web tarayıcılarının tanıdığı Rapid SSL, Thawte, GeoTrust, Symantec, Comodo, Lets Encrypt gibi markalardır. Bu SSL sertifikalarının arasında ücretsiz olan SSL sertifikası Lets Encrypt tarafından sağlanmaktadır. Lets Encrypt SSL sertifikası diğerlerinden farklı olarak 4096 bit key desteği vermesidir.
Plesk Panel, Cpanel, Centos Web Panel gibi sunucu kontrol panellerinde de artık Lets Encrypt SSL sertifikası bir eklenti olarak gelmekte ancak bu sunucu eklentilerinde gelen Lets Encrypt SSL sertifikası varsayılanda 2048 bit olarak sertifikayı oluşturmaktadır. Ayrıca Lets Encrypt SSL sertifikasında wildcard (*.alanadı.com yani çoklu alt alan adı), ve san (subject alternative names, birden fazla alan adı) desteği de bulunmaktadır ancak Plesk Panel, Cpanel gibi sunucularda bulunan bu Lets Encrypt eklentisine henüz wildcard ve san desteğinin eklenmediğini görmekteyim. Acme.sh isimli bir script ile Lets Encrypt SSL sertifikanızı kendi isteklerinize göre wildcard, san ve 4096 bit olarak oluşturabilmektesiniz. Ben de bu Acme.sh scriptini kullanarak Plesk Panel sunucu için wildcard ve 4096 bit destekli Lets Encrypt sertifikasını oluşturup sunucu üzerine kurulumunu yapan ayrı bir script hazırladım. Hazırladığım scripti Github sayfam üzerinden indirerek kullanabilirsiniz. Ancak hazırladığım script DNS doğrulaması yaparak SSL sertifikasını aktif hale getirmekte ve doğrulama yapacağı DNS kaydını Cloudflare üzerinde API aracılığı ile oluşt
Bir başka konumda temel Iptables kullanımı ile ilgili bilgi vermiştim. Iptables üzerinde çok işlem yapıyorsanız eğer, yeni IP adreslerine izin tanımlama farklı portlara izin tanımlama gibi,
sürekli sürekli aynı komutları yazmak sıkıcı gelebilir. Aşağıdaki paylaştığım script ile bu işlemi kısa sürede halledebilirsiniz.
#!/bin/bash
# Muhammed Niyazi ALPAY
# https://niyazi.org
function iptablesrules(){
echo ""
echo "=========================================================="
echo ""
read -p "IP adreslerini aralarında virgül ile birlikte giriniz: " ipaddresses
echo ""
read -p "Port numaralarını aralarında virgül ile birlikte giriniz: " ports
echo ""
echo 0 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -p tcp -m multiport --dports $ports -s 127.0.0.1,$ipaddresses -j ACCEPT
iptables -A INPUT -p udp -m multiport --dports $ports -s 127.0.0.1,$ipaddresses -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports $ports -j DROP
iptables -A INPUT -p udp -m multiport --dports $ports -j DROP
echo 1 > /proc/sys/net/ipv4/ip_forward
echo ""
echo "=========================================================="
echo ""
echo "İşlem başarı ile tamamlandı."
echo ""
echo "=========================================================="
echo ""
}
read -p "Önceki Iptables kuralları silinsin mi? (e ya da h) " removerule
if [ ${removerule} == "e" ]; then
echo "Iptables kuralları silindi"
iptables --flush
elif [ ${removerule} == "h" ]; then
echo ""
else
echo "Lütfen e veya h olarak giriş yapın"
fi
iptablesrules
condition_to_check="False"
while [[ ${condition_to_check} == "False" ]]; do
read -p "İşleme devam edilsin mi? (e ya da h) " query
if [ ${query} == "h" ]; then
condition_to_check="True"
elif [ ${query} == "e" ]; then
iptablesrules
else
echo "Lütfen e veya h olarak giriş yapın"
fi
done
chkconfig iptables on
service iptables save
echo ""
echo "===========
Linux işletim sistemi çalıştığı süre boyunca karşılaşılan hatalar, sistem uyarıları vs her şeyin kaydını tutmaktadır. Bu kayıtlar bir zaman sonra büyük boyutlara ulaşabiliyor. Bu da haliyle harddisk üzerinde yer kaplamakta. Bu durum ev kullanıcıları için çok bir şey farkettirmese de web sunucuları üzerinde yer sıkıntısı yaşanabiliyor. Sunucu üzerinde gerekli bakımlar vs yapılmadığı durumlarda log dosyaları büyük boyutlara ulaşabiliyor.
Linux işletim sistemi üzerinde log dosyaları /var/log altında bulunur. Bu log dosyalarını tamamen silmek işletim sistemine zarar verir. Sisteme zarar vermemek için bu dosyaların içlerini boşaltmak gerekir. Örneğin mail gönderme loglarını temizleyecekseniz "rm -rf /var/log/maillog" komutunu çalıştırmak sisteme zarar verecektir. Bu durumda maillog dosyası silinir ve bir daha buraya log yazamayacağı için sistem sorun çıkartır. Bu log dosyasının içini ":> /var/log/maillog" bu şekilde temizleyebiliriz. Ancak /var/log dizini altında bir çok dosya ve dizin bulunmakta, tek tek hepsini temizlemek de zaman alabilir. Log dosyalarının temizleme işlemini aşağıdaki komutlar ile daha hızlı bir şekilde halledebilirsiniz. Bu komutlar "sh" uzantısı ile kaydetmeniz gerekmektedir.
#!/bin/bash
# Muhammed Niyazi ALPAY
# https://niyazi.org
find /var/log/ -type f >logdosyalari.txt
while read line
do
NAME=`echo "$line" | cut -d'.' -f1`
EXTENSION=`echo "$line" | cut -d'.' -f2`
rm -rf $NAME.gz
:> "$line";
done <logdosyalari.txt
rm -rf logdosyalari.txt
rm -rf /var/log/*-2*
rm -rf /var/log/*.2*
echo "Log dosyaları silindi"
Bu komutları logclear.sh olarak kaydettikten sonra çalıştırırsanız /var/log içerisindeki ve alt dizinlerindeki tüm log dosyaları temizlenecektir.
WHM panel üzerinde toplu olarak DNS güncellenecek bir ekran bulunmuyor. DNS kayıtlarının toplu olarak güncellemesini SSH üzerinden yapmamız gerekiyor. Cpanel kurulu sunucularda DNS kayıtları /var/named/ altında siteadresi.com.db olarak tutulmaktadır. Aşağıdaki komut ile bu dosyaların içerisindeki belirli bir kaydı yeni bir kayıt ile güncelleyebiliriz.
replace "eski kayıt" "yeni kayıt" -- /var/named/*.db
service named restart
Kayıtları değiştirdikten sonra Cpanel DNS servislerini yeniden başlatmamız gerekiyor.
Linux sunucu üzerinde bulunan web siteleri için dosya ve dizinlerin yazılabilirlik ayarlarını yapmak bazen zaman alabiliyor. Örneğin FileZilla ile alt dizinler seçeneği seçilip sadece klasörlere uygula işaretlendiğinde veya sadece dosyalara uygula seçildiğinde FTP üzerindeki dosya miktarına göre işlem uzun sürebiliyor. SSH üzerinden yalnızca chmod komutu ile de işlem yapıldığında da ya tüm alt klasörlerle birlikte herşeye izinler tanımlanır ya da tek bir dizin içerisinde bulunanlara. Aşağıdaki komut ile bulunduğunuz dizin ve alt dizinlerindeki dosya veya dizinlerin yazılabilirlik ayarlarını ayarlayabilirsiniz.
chmod 755 $(find /dosya-veya-dizin-yolu -type d)
chmod 644 $(find /dosya-veya-dizin-yolu -type f)
-type d (directory) yalnzıca dizinleri belirtir, -type f (file) ise yalnızca dosyaları. Dizinlerin yazılabilirlik izinleri 755, dosyaların ise 644 olması gerekir. Her defasında sunucu üzerindeki farklı farklı siteler için dosya yolu veya dizin yolu yazmak yerine aşağıdaki komutları .sh uzantısı ile kaydedip sitenin bulunduğu dizin altında çalıştırmanız daha hızlı olacaktır.
#!/bin/bash
directory=`pwd`
chmod 755 $(find $directory -type d)
chmod 644 $(find $directory -type f)
Burada dikkat edilmesi gereken şey bu .sh uzantılı dosya yalnızca sitenin bulunduğu dizinde çalıştırılmalıdır. Farklı bir yerde çalıştırılması sunucunun zarar görmesine sebep olabilir.