Kategori arşivi: Kendime Not

Let’s Encrypt manual sertifika oluşturma

Merhabalar
Let’s encrypt da domaininiz için manual key oluşturmak için aşağıdaki komutu kullanabilirsiniz.

certbot certonly --manual -d ramazantufekci.com -d www.ramazantufekci.com -d hangi-alt-alan-adlarını-yapacaksan-buraya-d-parametresi-ile-ekle --preferred-challenges dns

Bu işlemi yapabilmek için certbot sisteminizde kurulu olması gerekiyor.
Dns ile doğrulama yapmamızın sebebi http doğrulaması kullanmak istememiz,çünkü alt alan adlarında istenilen dosyaları oluşturmak sorun oluyor.
Hosting cpanel üzerine ise webdisk gibi alt alan adlarında sorun yaşıyorsunuz.
Bu yüzden ben dns doğrulamasını tercih ediyorum.
Komutu çalıştırdıkdan sonra size ayarlamanız gereken dns kayıtlarını veriyor.Kullandığınız panel üzerinden gerekli dns kayıtlarını oluşturduktan sonra certbot doğrulamasından geçerse

/etc/letsencrypt/live/domainadi/

dizini altında gerekli dosyaları oluşturuyor.
Cpanel üzerinde yeni sertifika ekleyerek privkey.pem ve fullchain.pem dosyasının içeriğini gerekli alanlara yapıştırıyoruz.
Ssl sertifikası sistemimize yüklenmiş oluyor.
İsteyen olursa domaini için let’s encrypt üzerinden sertifika oluşturabilirim.Bunun için yoruma istediğiniz alan adlarını yazmanız yeterli.Gerekli iletişimi daha sonra yorumdaki mail adresinizden yaparız.

Linux Sistemlerde İp İşlemleri

Bu yazımız linux sistemlerde ip yapılandırması ile ilgili olacak.Linux sistemlerde eskiden ip yapılandırmasını ifconfig komutuyla yapıyorduk.Şimdi ise ip komutu ile yapacağız.Varolan ağ birimlerini görmek için

ip link show

Ağ birimine ip adresi atamak için

ip address add dev eth0 10.0.0.10/24

Ağ birimine route atamak için

ip route add 10.0.0.0/24 via 10.0.0.1 dev eth0

Bilgisayarın dns çözümlemelerini yapabilmesi için “/etc/resolv.conf” dosyasının içinde dns adreslerinin tanımlaması yapılmalı.

nameserver  8.8.8.8

Bilgisayara static ip adresi verilmek istenirse “/etc/network/interfaces” dosyasına gerekli bilgileri girmeliyiz.
Örnek:

auto eth0
iface eth0 inet static
address 10.0.0.10
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 8.8.8.8 8.8.4.4

Linux Sistemlerde Kullanıcı ve Group Yönetimi

Bu yazımız linux sistemlerde kullanıcı ve group yönetimi hakkında olacak.Linux işletim sistemleri multiuser olarak tasarlanmıştır.Sistem üzerinde çalışan çoğu uygulama sistemle etkileşime geçmek için kullanıcı oluşturur.Sistemde oluşturulan her kullanıcıyla beraber kullanıcı ismine uygun olarak birde grup oluşturulur(siz grup belirtmediğiniz sürece).Dosya izinleri gibi işlemler için sistemde gruplar oluşturulur.Gruplara kullanıcılar eklenerek gerekli izinler verilmiş olur.

Groupların Yönetimi

Grupları yönetmek için groupadd,groupmod ve groupdel komutları kullanılır.Bu komutlar “/etc” dizini altındaki group dosyasını işler.Gruplar için şifre oluşturulursa,şifreler “/etc/gshadow” dosyası içinde tutulur.

Grup oluşturmak için aşağıdaki komutları kullanmalısınız.

#groupadd satici
Oluşturulan grubu görmek için
#cat /etc/group | grep satici
satici:x:1001:
Grup oluştururken id atamak istersek
#groupadd satici -g 1001

Mevcut gruplar üzerinde değişiklik yapmak için aşağıdaki komutları kullanabiliriz.
Grup id sini değiştirmek için

#groupmod -g 2002 satici
Grubun ismini dğiştirmek için
#groupmod -n musteri_temsilcisi satici

Gruba kullanıcı eklemek ve çıkarmak için aşağıdaki komutları kullanabiliriz.Gruplara şifre verebiliriz ve bu şekilde gruba herhangi bir kullanıcı eklenmek istendiğinde şifre soracaktır.
Gruba şifre koymak için

#gpasswd satici
Gruba kullanıcı eklemek için
#gpasswd -a ahmet satici
Grupdan kullanıcıyı çıkarmak için
#gpasswd -d ahmet satici

Varolan bir grubu silmek için
#groupdel satici

Kullanıcı Yönetimi

Linux sistemlerde kullanıcıları yönetmek için useradd,usermod ve userdel komutları kullanılır.Bu komutlar “/etc” dizini altındaki passwd dosyasını işler.Eklenen kullanıcıların home dizini altında varsayılan olarak oluşturulacak dosyaları “/etc/skel/” dizini altında oluşturabiliriz.Buraya eklenen dosyalar kullanıcı home dizinine kopyalanır.
Kullanıcıların varsayılan ayarları “/etc/login.defs” dosyasında tutulur.Buradan varsayılan olarak kullanıcıların mail dosyası,şifre uzunluğu ve şifresinin hangi aralıklarla değiştirmesi gerektiği gibi ayarlar yapılabilir.

Yeni kullanıcı oluşturmak için

#useradd ahmet
Kullanıcıya uid belirlemek ve gruba eklemek için
#useradd ahmet -u 1000 -g satici
Kullanıcılara şifre atamak için
#passwd ahmet

Kullanıcı üzerinde değişiklikler yapmak için

#usermod -u 1002 -g ftp ahmet

Kullanıcıyı sistemden silmek için

#userdel ahmet
Kullanıcıyı home dizini ile birlikte sistemden silmek için
#userdel -r ahmet

Kullanıcılar arasında geçiş yapmak için

#su - ahmet

Ayrıca aşağıdaki kodlarla kullanıcı kilitli ve serbest olarak ayarlayabiliriz.

Kullanıcıyı kilitlemek için
#usermod -L ahmet
Kullanıcıyı serbest bırakmak için
#usermod -U ahmet

Kullanıcı ve grup işlemleri için örnek uygulamayı aşağıda bulabilirsiniz.
İlk önce bir dizin oluşturalım

#mkdir /tmp/satici
Grup oluşturalım
#groupadd satici
Kullanıcı oluşturalım
#useradd ahmet -g satici
Oluşturduğumuz dizine grubu atayalım
#chown  :satici /tmp/satici
Dizine sadece grup için izin verelim
#chmod 770 /tmp/satici

Yukarıdaki örnek de bir grup oluşturduk ve grubumuza bir kullanıcı atadık.Temp dizini altında bir dizin oluşturduk ve bu dizine grubu atadık.Root ve ahmet haricinde sistemde bir kullanıcı oturum açtığında /tmp/satici dizinine erişemeyecek ve herhangi bir işlem yapamayacak.

Zabbix Discovery Özelliğini Kullanma

Merhabalar,

Bir önceki yazımda zabbix in nasıl kurulacağı hakkındaydı.
Bu yazımda zabbix de discovery özelliğini kullanarak networkümüzde bulunan servisleri ve cihazları nasıl bulacağımıza bakalım.

Configuration -> Discovery seçeneğine tıklayalım varsayılan olarak local network tanımlı geliyor.
Local networkü tıklayarak kendi networkümüzün ip bilgilerini giriyoruz.

Add linkine tıklayarak istediğimiz portları servisleri ekliyoruz.Burada varsayılan olarak ftp,ssh vb servisler geliyor.
Tcp olarak kendimiz de bulmak istediğimiz servis portlarını ekleyebiliyoruz.

Network bloğunu yazarken 192.168.1.1-254 olarak yazabileceğimiz gibi 192.168.1.0/23 geniş bir blok tanımlayabiliriz.

Port tanımlamalarında tek bir port tanımlaması yapılabildiği gibi port aralığı da verilebiliyor.

Örnek 139-445 gibi.

En altta bulunan update linkini tıklayarak zabbix in networkümüzü taramasını bekliyoruz.

Tarama sonucunu Monitoring -> Discovery altında bulabiliriz.

Bulunan cihaz ve servisler için daha sonra Configuration altında host olarak tanımlayıp gerekli bilgileri toplayabilirsiniz.

Bir sonraki yazıda buluşmak dileğiyle.

Zabbix Nedir? Nasıl kullanılır

Merhabalar,

Bu yazımda sizlere zabbix hakkında biraz bilgi ve deneyimlerimi paylaşacağım.

Zabbix, C ve PHP tabanlı, uç noktadaki ağ hizmetleri, sunucular, servisler ve ağ donanımlarını izlemek için Alexei Vladishev tarafından geliştirilmiştir.

Günümüzde git gide büyüyen yapılardan dolayı sistem yöneticileri için bu uç noktaların kontrolü büyük bir zorluk haline gelmiştir. Herhangi bir uç noktada meydana gelen bir aksaklık, sorunla bir süre sonra bir şekilde karşılaşılması ile haber olunur hale gelmiştir. Çünkü sistemler ve servisler artık çok genişledi ve takip edilmesi zor bir halde aldı.

İşte bu noktada zabbix işimize gerçektende çok yarayan bir tool. Zabbix üzerine tanımladığınız hostlarda, servislerde yada ağ cihazlarında herhangi bir anormallik tespit etmesi durumunda geliştirildiği sistem itibari ile bir çok aksiyonu sizin belirlediğiniz çerçevede gerçekleştirme sağlamaktadır.

Zabbix kurulumu nasıldır konusuna değinmeyeceğim çünkü artık kurulum yapmaya gerek kalmadan appliance olarak dağıtımları bulunmaktadır. Buradan appliance sürümlerine ulaşabilirsiniz. Böylece kurulum aşamalarından kurtulmuş olursunuz.

Siz var olan sisteminiz için kurulum yapacaksanız aşağıdaki adımları takip edebilirsiniz.
Şu an için Ubuntu 18.04 (Bionic Beaver) LTS versiyonu üzerinde paket olarak kurulabiliyor.

#wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+bionic_all.deb
# dpkg -i zabbix-release_4.4-1+bionic_all.deb
# apt update

Veritabanı oluşturmak için

# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Veritabanı bağlantısı için zabbix_server.conf dosyasını editliyoruz.

# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=#veritabanı şifresi#

Zabbix serverı çalıştırıp aktif etmek için aşağıdaki komutları giriyoruz.

# service zabbix-server apache2 php-fpm start
# update-rc.d zabbix-server apache2 php-fpm enable

Zabbix çalışma mantığını yukarıdaki resim üzerinden tanımlamaya çalışırsak.

İtem: Bilgi toplana modüldür ve her item farklı bir servis hakkında bilgi toplar. Ör: mysql bilgisini bir item alır, cpu bilgisini başka bir item

Trigger: Tetikleyici dersek direk bir çağrışım yapabilir. İtem’ın aldığı veride sizin belirlediğiniz durumlarda bir anormallik tespit edilirse trigger devreye girer.Ör: Mysql servisi için cevap veriyorsa 1 değeri döndürülür, fakar servis cevap vermiyorsa 0 değeri döner. Bu durumda siz mysql için 0 değeri aldığında bir trigger yazarsanız, servis cevap vermediğinde trigger devreye girmiş olur.Problem: Yukarıdaki örnekte belirtmiş olduğum problem modülünü içermektedir

Action: Bu modül ise servisin cevap vermemesi durumunda zabbix nasıl bir tepki versin onu belirliyoruz. Burada action modülü kullanmaz isek zabbix içeriğine girip triggerları izleyerek durumları kontrol edebiliriz. Fakat bir item’a bağlı bir trigger çalışmış ise bu trigger’a bağlı bir action gerçekleştirilip bu sorunun çözülmesi gerekmektedir.Action modülü bu sorunlara;
1 – Mail atarak
2 – SMS atarak
3 – Komut çalıştırarak müdahale edebilmektedir.

Sms atmak için usb modem kullanılabilir.

Gelin şimdi client makine üzerindeki mysql servisinin zabbix ile nasıl monitoring yapılacağını birlikte yapalım.

Ben appliance kurulumu yaptığım zabbix ile ilgili ayarlarla uğraşmadım direk ip adresi ile web üzerinden erişim sağlıyorum.

Giriş yapmak için varsayılan kullanıcı ismi Admin şifre zabbix.

Giriş yaptığımda beni bu şekilde bir sayfa karşılıyor. Burada ilk olarak host ekleme işlemini gerçekleştireceğim fakat bunun için client makine üzerinde öncelikle zabbix agent kuralım ve daha sonra burdan bağlantıyı gerçekleştirelim.

Zabbix Server -> 172.16.4.134 Ubuntu
Web Client -> 172.16.4.184 Centos 7

Komut satırı işlemleri CLİENT üzerinde yapılacaklartır.

wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
sudo yum install zabbix-release-4.0-1.el7.noarch.rpm
sudo yum install zabbix-agent

Yukarıdaki kurulumlardan sonra client makine üzerinde zabbix agent yapılandırmasına geçebiliriz.

vi /etc/zabbix/zabbix_agentd.conf#Dosyasında gerekli ayarları girelim.
Server= 172.16.4.134
ServerActive=172.16.4.134#Restart edelim
systemctl restart zabbix-agent

Yukarıdaki ayarlardan sonra artık client makine üzerinde zabbix agent restart ederek işlemi tamamlamış oluyor. Burada agent server tarafından gelecek isteği bekler. Server client üzerine hangi item için istek yollarda agent o servis ile ilgili bilgileri porttan iletir.

Şimdi zabbix üzerinden host tanımlamasına geçelim.

Zabbix web arayüzünden Configuration -> Hosts bölümüne giriyoruz. Kurmuş olduğum clienti tanıtacağız.

Bu bölümden Host sekmesinde bir isim veriyorum ve client makinenin IP adresini belirtiyorum. Default olarak 10050 portunu kullanıyor değiştirmediğim için öyle bırakıyorum. Daha sonra Templates sekmesinden hangi servisleri dinleyeceksem onları seçiyorum ve add diyorum. Daha sonra tekrar Hosts sekmesine tıklıyorum.

Burada ilk bir kaç dk yeşil olmayabilir istek ve cevap geldikten sonra artık yeşil olarak gözükmektedir. Burada Web Server yanında bazı Items Trigger’lar seçilen template ile otomatik gelmektedir. Buradan etkileşim kurarak actionlar oluşturulabilir.

Şimdi mysql servisinin durumunu dashboard üzerinde gösterelim. İlk olarak burada client üzerinde mysql’de kullanıcı oluşturmamız ve bunu agent tarafında göstermemiz gerekmektedir.

mysql# create user 'zabbix'@'localhost' IDENTIFIED BY 'Password';
Query OK, 0 rows affected (0.00 sec)
mysql# GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'Password';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql# flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql# exit

Yukarıda mysql üzerinde zabbix kullanıcı oluşturma aşaması gözükmektedir. Şimdi agent tarafında mysql ile ilişkili dosyayı oluşturalım.

Eğer bu dosya yoksa oluşturalım ve yukarıdakini içerisine olduğu gibi yapıştıralım. Bu dosya içerisinde /var/lib/zabbix belirtilen yere mysql erişim bilgilerini ekleyelim.

Bu dosyayı oluşturduktan sonra agenti restart ediyorum. Bu aşamalardan sonra Web Server hostu üzerinde Items bölümüne girdiğimizde MySQL ile ilgili alanları inceleyelim.

Yukarıda gözükeceği üzere MySQL items konfigürasyon öncesi bilgi alamadığı için uyarı vermektedir.

Server ve client iletişim kurduktan sonraki hali yukarıdaki gibi olacaktır. Mysql items artık bilgi toplamaya başlamış ve uyarı kaybolmuştur.

Şimdi iletişim sağlandığına göre dashboard kısmına geçebiliriz.

Monitoring -> All Dashboard -> Create Dashboard diyerek yeni bir dashboard oluşturalım. Daha sonra dashboard üzerinde Add widget ile dashboard ekranını görselleştirelim.

Windows search servisini yeniden kurmak

Windows search servisini yeniden kurmanız gerekiyor.Fakat windows search servisi windows özellik aç kapat da görünmüyor.
Nasıl yeniden kurulum yapacaksınız?
Powershell i yönetici olarak açalım.
Windows search servisini kaldırmak için aşağıdaki komutu kullanıyoruz.

Dism /Online /Disable-Feature  /FeatureName:SearchEngine-Client-Package

Tekrar aktif etmek için aşağıdaki komutu kullanıyoruz.

Dism /Online /Enable-Feature  /FeatureName:SearchEngine-Client-Package

Let’s Encrypt Free ssl sertifika kurulumu

Merhaba arkadaşlar.
Bugün sizlere let’s encrypt free ssl nasıl kurulur.Nasıl otomatik yenileme yapılır onu anlatacağim.
Elimizde bulunan sunucuya ssh ile bağlanıyoruz.
Sunucumuzda git kurulu değilse git i sunucumuza kuruyoruz.
Let’s encrypt GitHub deposundan klon oluşturuyoruz.

sudo git clone https://github.com/certbot/certbot /opt/letsencrypt(Siz kendinizin kullanmak istediği yolu yazabilirisiniz.)

Klon oluşturduktan sonra klon oluşturduğumuz dizine geçiyoruz.

cd /opt/letsencrypt

Kurulum için aşağıdaki komutu kullanıyoruz.

./certbot-auto certonly --standalone

küçük bir yükleme yapacak sonra size mail adresinizi ve ssl oluşturmak istediğiniz site adresini soruyor.Buraya kullanmak istediğiniz alan adını yazın.
Örnek

example.com, www.example.com

Oluşturulan keyleri

/etc/letsencrypt/live/domain ismi/

dizininin altına oluşturuyor.
Daha sonra kullandığınız webserver a göre ayarlarınızı yapmanız gerekiyor.
Örnek olarak nginx de şu şekilde yapılır.

server {
 #http ye geln istekleri https e yönlendiriyoruz.
       listen 80;
        server_name example.com www.example.com;
        return 301 https://$host$request_uri;
}

server {
        listen 443 ssl;
        server_name example.com www.example.com;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

        root /var/www/example.com;
        index index.php;
#
       location / {
                try_files $uri /index.php;
        }

        location ~ /.well-known{
                allow all;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;

        }
}

Ayarlarımızı yaptıktan sonra webserver restart ediyoruz.
Sitemize tekrar giriş yaptığımızda https ile bağlantı yaptığımızı göreceksiniz.
Gelelim ssl sertifikasının yenilenme ayarlarının yapılmasına.
web serverimizda location izni veriyoruz.

location ~ /.well-known{
                allow all;
        }

Aşağıdaki kodu kullanarak ayar dosyasının örneğini kopyalıyoruz.

cp /opt/letsencrypt/examples/cli.ini /usr/local/etc/le-renew-webroot.ini

Daha sonra editor ile ayar dosyamızı açıyoruz.

nano /usr/local/etc/le-renew-webroot.ini

içeriği şu şekilde olmalı

rsa-key-size = 4096

email = info@example.com(buraya sizin mail adresiniz gelecek)

domains = example.com, www.example.com(Buraya sizin sertifika oluşturduğunuz domainler)

webroot-path = /var/www/example.com(Buraya websitenizin dizini gelecek)

Dizin olarak letsencrypt i indirdiğimiz dizine geçiyoruz.

cd /opt/letsencrypt/

Aşağıdaki komutu çalıştırıyoruz.

./letsencrypt-auto certonly -a webroot --renew-by-default --config /usr/local/etc/le-renew-webroot.ini

Kontrol yapacak dosyayı curl ile indiriyoruz.

curl -L -o /usr/local/sbin/le-renew-webroot http://do.co/le-nginx-renew

Çalışma izni verelim.

chmod +x /usr/local/sbin/le-renew-webroot

Kaç gün kaldığını control etmek için indirdimiz komut dosyasını kullanacağız.

le-renew-webroot

Bunu cron la otomatik hale getirelim.

crontab -e
30 2 * * 1 le-renew-webroot >> /var/log/le-renewal.log

Cron servisini tekrar başlatıyoruz.

service cron restart

işlemimiz tamamlanmıştır.
yararlı olması dileğiyle.

Outlook 2007 Çince oldu düzeltme aracı

Office 2007 güncelleme sonrası outlook programı çince oluyor.Bu sorunu gidermek için son yüklenen gülcellemeleri kaldırabilir veya sistem geri yükleme yapabilirsiniz.Başka bir yol olarak da bizim hazırladığımız düzeltme aracını kullanabilirsiniz.Düzeltme aracını aşağıdaki link ten windows sürümünüze uygun olanı indirin. Uygun bir yere rar veya zip dosyasını açın çalıştırıp onar butonuna basın.
Windows xp için Düzeltme aracını Indirin.
Windows 8-10 için Düzeltme aracını Indirin.
Not :Windows 7-8-10 sürümlerinde uygulamaya sağ tıklayıp yönetici olarak çalıştır demeniz gerekmekte.

wordpress de wp-json özelliğinin kapatılması

WordPress 4.7.1 sürümüyle res-api özelliğini duyurdu.Bizde güncelleme var diye wordpress i güncelledik.Fakat wordpress in 4.7.1 sürümüyle gelen rest-api de açık bulundu.Kötü niyetli kişi post id ile içeriği değiştirebiliyor.Bu yüzden rest-api yi kapatmak isteyebilirsiniz.Wordpress in bunun için bir plugini var.isterseniz wp-includes/rest-api/class-wp-rest-server.php php dosyasını düzenleyerek kapatabilirsiniz.Bu dosya bir class __construct() yapıcı methoduna die(); eklerseniz sayfa bilgi sağlamayacaktir.Aynı işlemi wp-includes/rest-api/class-wp-rest-request.php php dosyasında da yapabilirsiniz.Bazen güncellemek sizi korumuyor demek ki.