Kategori arşivi: Centos

centos işletim sistemi hakkında bilgiler, centos yapılandırma örnekleri, centos güvenlik önlemleri ve performans iyileştirmeleri, güncel haberler

CentOS 7’de SELinux Nasıl Devre Dışı Bırakılır?

SELinux (Security Enhanced Linux), yöneticilerin ve kullanıcıların erişim kontrolleri üzerinde daha fazla kontrol olanağı sağlayan bir Linux çekirdek güvenlik modülüdür. SELinux ilke kurallarına dayalı olarak erişime izin verir veya engeller.

SELinux ilke kuralları, süreçlerin ve sistemdeki kullanıcıların birbirleriyle nasıl etkileşimde bulunduğunu, süreçlerin ve kullanıcıların dosyalarla nasıl etkileşimde bulunması gerektiğini belirler.

Sistemde SELinux durumunu sestatus ile kontrol edebilirsiniz. Tahmini çıktımız aşağıdaki gibi olacaktır.

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      30

Mevcut durumu enabled olduğunu ve çalıştığını görüyoruz bunu disabled olarak ayarlamamız gerekiyor bunun için ise aşağıdaki komutu çalıştırmanız yeterli

sudo sed -i 's/enforcing/disabled/g' /etc/selinux/config

Değişikliklerin geçerli olması için sistemi yeniden başlatıyoruz.

sudo shutdown -r now

Ardından mevcut durumuna tekrar sestatus komutu ile bakıyoruz.

SELinux status:                 disabled

CentOS 7’de Redis Nasıl Kurulur

Redis bir veri yapısı sunucusudur. Açık kaynak, bellek kullanımlı, anahtar-değer deposudur. Redis “Uzak Sözlük Sunucusu” anlamına gelmektedir. 

Kurulum için kullanacağımız dosyalar remi deposunda yer almaktadır aşağıdaki adımlar ile remi deposunu sistemimize dahil ediyoruz

sudo yum install epel-release yum-utils
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi

Ardından bizim için gerekli olan redis paketini sisteme dahil ediyoruz

sudo apt install redis

Servislerini çalıştırıyoruz ve sistem başlangıcına gereken eklemeleri yapıyoruz

sudo systemctl start redis
sudo systemctl enable redis

Sunucuda IPv6 çalışmıyorsa Redis servisi start komutu ile birlikte hata verecektir. Lütfen başlatmadan önce IPv6 çalışır durumda olduğundan emin olun.

Çalıştığından emin olmak isterseniz redis-cli komutunu kullanınız. Yeni açılan redis konsolunda ping komutunu giriniz.
Çıktı olarak size PONG dönmesi gerekmektedir. 

Redis kullanımı için resmi dokümantasyonu ziyaret etmeyi unutmayın.


Redis Nedir?

CentOS 7’de Yarn Nasıl Kurulur?

Yarn, npm paketlerini kurmak, güncellemek, yapılandırmak ve kaldırma işlemlerini otomatikleştirmenize yardımcı olan npm ile uyumlu bir JavaScript paket yöneticisidir.

Bu paket yöneticisini kullanabilmemiz için sistemimizde nodejs kurulu olması gerekmektedir bunuda yapabilmemiz için depoları sistemimize dahil ediyoruz.

curl --silent --location <https://rpm.nodesource.com/setup_8.x> | sudo bash -

NodeJS kurulumunu yapıyoruz

sudo yum install nodejs

Ardından yarn için gereken depoları sisteme dahil ediyoruz

curl --silent --location <https://dl.yarnpkg.com/rpm/yarn.repo> | sudo tee /etc/yum.repos.d/yarn.repo

Kurulum için GPG anahtarına ihtiyacımız var bunun için ise aşağıdaki komutu kullanıyoruz

sudo rpm --import <https://dl.yarnpkg.com/rpm/pubkey.gpg>

Sistemimize Yarn’ı dahil ediliyoruz

sudo yum install yarn

CentOS 7’de FirewallD Nasıl Durdurulur ve Devre Dışı Bırakılır

CentOS 7’de iptables yerine FirewallD güvenlik duvarı yönetiminde kullanılmaktadır.

Mevcut güvenlik duvarı durumunu görüntülemek için aşağıdaki komutumuzu kullanıyoruz

sudo firewall-cmd --state

Çıktısı running olarak karşımıza çıkıyor. Yani güvenlik duvarımız aktif bir şekilde çalışmakta.

Güvenlik duvarı servisini durdurmak için aşağıdaki komutumuzu kullanıyoruz.

sudo systemctl stop firewalld

Hemen ardından sistem başlangıcından kopartıyoruz ve yeniden başladığında çalışmamasını sağlıyoruz

sudo systemctl disable firewalld

Önlem olarak güvenlik duvarının başka servisler tarafından başlatılmasının da önüne geçmemiz gerekiyor bunun için ise aşağıdaki komutu kullanıyoruz.

sudo systemctl mask --now firewalld

Ben bunu sildim ama bana lazım oldu tekrar kurmam gerekli diyorsanız. CentOS 7’de FirewallD Nasıl Kurulur? adlı makaleme göz atabilirsiniz.

CentOS 7’de FirewallD Nasıl Kurulur?

FirewallD, sistemin iptables kurallarını yöneten ve üzerinde çalışmak için bir ara birim sağlayan güvenlik duvarı çözümüdür.

Düzgün yapılandırılmış bir güvenlik duvarı, genel sistem güvenliğinin en önemli yönlerinden biridir.

Güvenlik duvarımız için FirewallD kurulumunu yapıyoruz

sudo yum install firewalld

Mevcut güvenlik duvarının durumuna bakıyoruz

sudo firewall-cmd --state

Servisleri başlatıyoruz ve sistem başlangıcına ekliyoruz

sudo systemctl start firewalld
sudo systemctl enable firewalld

Web sunucumuz için gerekli olan 80 ve 443 portlarımızı açıyoruz.

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https

Geçerli olması için yeniden yükleme komutumuzu veriyoruz

sudo firewall-cmd --reload

CentOS 7’de Git Nasıl Kurulur?

Git, yüz binlerce projede kullanılan en popüler sürüm kontrol sistemidir. Kod değişikliklerimizi takip etmemize, önceki sürümlere geri dönmenize, birden çok dalda aynı anda çalışmanıza ve diğer geliştiricilerle işbirliği yapmanıza olanak tanır.

Kurulum için bize gerekli olan repoyu sistemimize /etc/yum.repos.d/ yoluna ekliyoruz.

nano /etc/yum.repos.d/git-main.repo

İçerisine aşağıdaki satırları ekliyoruz

[git-main]
name=Wandisco GIT Repository
baseurl=http://opensource.wandisco.com/centos/7/git/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco

Gerekli olan GPG Anahtarını sistemimize ekliyoruz

sudo rpm --import <http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco>

Git’i sistemimize kuruyoruz

sudo yum install git

Kişisel bilgilerimizi ilk kurulum anında ayarlamamız gerekiyor. Bunun için aşağıdaki satırları kullanabilirsiniz.

git config --global user.name "Mertcan GÖKGÖZ"
git config --global user.email "admin@mertcangokgoz.com"

Yukarıda girdiğimiz bilgiler ~/.gitconfig alanında saklanacaktır. Git hakkında daha fazla bilgi edinmek isterseniz Git 101 Adlı Türkçe dokümantasyona bakabilirsiniz.

CentOS 7’de Jenkins Nasıl Kurulur?

Jenkins, entegrasyon ve dağıtım (CI/CD) için açık kaynak kodlu otomasyon sunucusu ve entegrasyon aracıdır, java tabanlıdır. Ekip üyelerinin düzenli olarak sürüm kontrol havuzuna yükledikleri kodlarda kontrollerin yapıldığı bir DevOps uygulamasıdır, ardından otomatikleştirilmiş testler çalıştırılır.

OpenJDK yerine kurulumunuz da Oracle Java’yı tercih ederseniz CentOS 7’de Java nasıl kurulur makalemize göz atabilirsiniz.

Jenkinsi sistemimize dahil edebilmemiz için depolarını sistemimize eklememiz gerekiyor bunu yapmak için

curl --silent --location <http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo> | sudo tee /etc/yum.repos.d/jenkins.repo

Depolarda bulunan dosyaları sistemimize dahil edebilmemiz için gereken GPG anahtarını sistemimize dahil ediyoruz.

sudo rpm --import <https://jenkins-ci.org/redhat/jenkins-ci.org.key>

Gerekli olan paketimizi sisteme dahil ediyoruz

sudo yum install jenkins

Servisleri başlatıyoruz ve sistem başlangıcına ekliyoruz

sudo systemctl start jenkins
sudo systemctl enable jenkins

Web arayüzüne erişmek için gerekli olan portu güvenlik duvarı aracılığı ile açıyoruz ve servisleri yeniliyoruz.

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload

5 Aşamalı kurulumu yapacağımız ara yüzümüze ise http://<ip_adresi>:8080 aracılığı ile ulaşıyoruz.

Doğrulama için ilk başta bir parola istemeyi ihmal etmeyecek bu parolayı almak için aşağıdaki komutu kullanıyoruz

sudo cat /var/lib/jenkins/secrets/initialAdminPassword
jenkins ana ekran gorsel1

CentOS 7’de MongoDB Nasıl Kurulur?

MongoDB ücretsiz ve açık kaynaklı bir veritabanıdır. MySQL ve PostgreSQL gibi geleneksel tablo tabanlı SQL veritabanlarından farklı bir NoSQL veritabanı olarak sınıflandırılmıştır.

MongoDB’de veriler, alanların belgeden belgeye değişebileceği esnek, JSON benzeri dosyalarda saklanır. Ön tanımlı bir şema gerektirmez ve veri yapısı zamanla değiştirilebilir.

Gerekli olan depomuzu /etc/yum.repos.d/ dosya yoluna ekliyoruz.

nano /etc/yum.repos.d/mongodb-org.repo

İçerisine aşağıdaki satırları ekliyoruz

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

Ardından MongoDB’yi sistemimize dahil ediyoruz.

sudo yum install mongodb-org

Bu sırada GPG anahtarının sisteme eklenmesini isteyebilir. y deyip devam ediyoruz. mongodb-org paketinin kurulumunu yaparken mongodb-org-server, mongodb-org-mongos, mongodb-org-shell, mongodb-org-tools paketlerininde sisteme dahil edildiğini göreceksiniz korkmayın.

MongoDB servisini başlatıyoruz ve sistem başlangıcına ekliyoruz

sudo systemctl start mongod
sudo systemctl enable mongod

MongoDB’de Güvenlik Ayarları Nasıl Yapılır?

Kurulumu tamamladığımız zaman pek çok arkadaşımız parola koymayı unutuyordu hatta zamanında bu yüzden pek çok kurumunda başı derde girmişti. Biz gerekli kontrollerimizi yapıyoruz. /etc/mongod.conf yolunda aşağıdaki değişiklikleri gözlemliyoruz. Kimlik doğrulamanın aşağıdaki gibi açık olması gerektiğini unutmayın.

security:
  authorization: enabled

Eğer herhangi bir değişiklik yaparsanız ayarların geçerli olması için lütfen MongoDB servislerini yeniden başlatın

sudo systemctl restart mongod

Geriye kalan bütün her şey için lütfen Resmi MongoDB dokümantasyonunu kontrol edin.

CentOS 7’de Let’s Encrypt ile NGINX Nasıl Yapılandırılır?

Certbot, Let’s Encrypt SSL sertifikalarını imzalamak ve yenileme görevlerini otomatikleştiren ve bunları kullanmak için web sunucularını yapılandıran kullanımı aşırı kolay bir araçtır.

EPEL depolarından kurulum yapılabilir

sudo yum install certbot

Dh (Diffie-Hellman) Oluşturmak

Diffie – Hellman anahtar değişimi (DH), güvenli olmayan bir iletişim kanalı üzerinden kriptografik anahtarların güvenli bir şekilde alışverişi için kullanılan bir yöntemdir.

2048 bitlik Dh’mizi oluşturalım

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

İsterseniz 4096 bit uzunluğunda oluşturabilirsiniz, ancak unutmayınız ki sunucu gücünüze göre bu işlem yaklaşık 30 dakika kadar sürebilir.

Let’s Encrypt SSL’nın Edinilmesi

ACME için gerekli olan dizini oluşturuyoruz.

sudo -u nginx sh -c "mkdir -p /var/www/_letsencrypt"

Web sunucumuza gereken tanımlamayı /etc/nginx/conf.d/acme.conf içerisine yapıyoruz.

location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/www/_letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}

Web sunucumuzu SSL için yapılandıracağız kullanacağı kriptografik yöntemleri /etc/nginx/conf.d/ssl.conf içerisine yapılandırıyoruz.

ssl_dhparam /etc/nginx/ssl/dhparam.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;

SSL sertifikamızı oluşturmak için gerekli olan certbot komutunu verelim.

certbot certonly --webroot -d mertcangokgoz.com -d www.mertcangokgoz.com --email info@mertcangokgoz.com -w /var/www/_letsencrypt -n --agree-tos --force-renewal

Sertifikamız onaylandıktan sonra sunucumuzda hem 443 portunu hemde gereken ayarlamaları yapmak için aşağıdaki yapılandırmayı /etc/nginx/sites-enabled/mertcangokgoz.com.conf içerisine uyguluyoruz.

server {
	listen 443 ssl http2;
	listen [::]:443 ssl http2;

	server_name mertcangokgoz.com;

	# SSL
	ssl_certificate /etc/letsencrypt/live/mertcangokgoz.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/mertcangokgoz.com/privkey.pem;
	ssl_trusted_certificate /etc/letsencrypt/live/mertcangokgoz.com/fullchain.pem;

	# index.php
	index index.php;

	# index.php fallback
	location / {
		try_files $uri $uri/ /index.php?$query_string;
	}

	# handle .php
	location ~ \\.php$ {
		include php_fastcgi.conf;
	}
}

# subdomains redirect
server {
	listen 443 ssl http2;
	listen [::]:443 ssl http2;

	server_name *.mertcangokgoz.com;

	# SSL
	ssl_certificate /etc/letsencrypt/live/mertcangokgoz.com/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/mertcangokgoz.com/privkey.pem;
	ssl_trusted_certificate /etc/letsencrypt/live/mertcangokgoz.com/fullchain.pem;

	return 301 https://mertcangokgoz.com$request_uri;
}

# HTTP redirect
server {
	listen 80;
	listen [::]:80;

	server_name .mertcangokgoz.com;

	location / {
		return 301 https://mertcangokgoz.com$request_uri;
	}
}

Yukarıdaki yapılandırmada HTTPS’yi zorluyor ve www’i www olmayan bir versiyona yönlendiriyoruz.

Ayarların geçerli olması için servisi yeniden dürtüyoruz.

sudo systemctl reload nginx

CentOS 7’de Hostname Nasıl Değiştirilir?

Kimi zaman sistemlerimizde hostname değiştirmemiz gerekebilir, örneğin bir mail sunucusu yapılandırırken FQDN uyumlu bir hostname gerekir. 

CentOS 7‘de, sistemde hostname ve ilgili ayarları hostnamectl komutunu kullanarak değiştirebiliriz.

sudo hostnamectl set-hostname mail.mertcangokgoz.com
sudo hostnamectl set-hostname "hostname belirleyin" --pretty

Ana bilgisayar adını direk değiştiriyoruz.

sudo hostnamectl set-hostname mail.mertcangokgoz.com

İsterseniz okunaklı olarak da değiştirebilirsiniz

sudo hostnamectl set-hostname "Mertcanin Bilgisayari" --pretty

CentOS 7’de Plex Media Server Nasıl Kurulur?

Kurulum için gerekli olan repoyu her zaman ki gibi sisteme dahil etmemiz gerekiyor /etc/yum.repos.d/plex.repo yolunu kullanacağız.

sudo nano /etc/yum.repos.d/plex.repo

İçerisine aşağıdaki satırları ekliyoruz

[PlexRepo]
name=PlexRepo
baseurl=https://downloads.plex.tv/repo/rpm/$basearch/
enabled=1
gpgkey=https://downloads.plex.tv/plex-keys/PlexSign.key
gpgcheck=1

Plesk Media Server kurulumunu yapıyoruz.

sudo yum install plexmediaserver

Servisini çalıştırıyoruz ve sistem başlangıcına ekliyoruz

sudo systemctl start plexmediaserver.service
sudo systemctl enable plexmediaserver.service

Bu sefer bir farklılık yapıp güvenlik duvarı ayarlarımızı servis olarak yapılandıracağız /etc/firewalld/services/plexmediaserver.xml yoluna ayarlarımızı gireceğiz

sudo nano /etc/firewalld/services/plexmediaserver.xml

İçerisine aşağıdaki satırları ekliyoruz

<?xml version="1.0" encoding="utf-8"?>
<service version="1.0">
<short>plexmediaserver</short>
<description>Plex TV Media Server</description>
<port port="1900" protocol="udp"/>
<port port="5353" protocol="udp"/>
<port port="32400" protocol="tcp"/>
<port port="32410" protocol="udp"/>
<port port="32412" protocol="udp"/>
<port port="32413" protocol="udp"/>
<port port="32414" protocol="udp"/>
<port port="32469" protocol="tcp"/>
</service>

Eklediğimiz plexmediaserver.xml dosyasını güvenlik duvarı üzerinde izinlilere ekliyoruz

sudo firewall-cmd --add-service=plexmediaserver --permanent
sudo firewall-cmd --reload

Media Server Yapılandırma

Bizim için gereken dizinleri oluşturuyoruz

sudo mkdir -p /opt/plexmedia/{Filmler,Diziler,Muzikler}

Dizine gereken kullanıcıyı tanımlıyoruz

sudo chown -R plex: /opt/plexmedia

Kurulum tamamlandı artık güle güle dizi film izleyebilirsiniz.

plex media server giris gorsel

Plex Media Server’ı kullanmak için bir hesap oluşturmanız gerekeceğini unutmayın.

CentOS 7’de Vagrant Nasıl Kurulur?

Vagrant, sanal makine ortamlarını oluşturmak ve yönetmek için kullanılan açık kaynak kodlu bir araçtır. Varsayılan olarak Vagrant, VirtualBox, Hyper-V ve Docker’ın üzerine makineler kurabilir ancak Vagrant eklentileri sayesinde Libvirt (KVM), VMware ve AWS gibi diğer birçok sağlayıcı üzerine de makine kurabilir.

Vagrant, geliştiriciler tarafından geliştirme ortamı oluşturmak için kullanılır. Bu makalede ise makineleri açmak için VirtualBox sanallaştırma uygulamasını kullanacağız.

Sisteminizde VirtualBox kurulu değilse, CentOS 7’de VirtualBox Nasıl Kurulur? makalesine bakabilirsiniz.

Vagrant indirme sayfasını ziyaret edin ve Vagrant’ın yeni bir sürümü olup olmadığını kontrol edin. Muhtemelen mevcut sürüm 2.2.1 olacaktır.

Aşağıdaki komut aracılığı ile kurulumu başlatıyoruz.

sudo yum install https://releases.hashicorp.com/vagrant/

Yüklemenin başarılı olduğunu doğrulamak için Vagrant sürümünü ekrana bi basalım

vagrant --version

Çıktısı Vagrant 2.0.2 olacak.

Şimdi Vagrantı, CentOS sistemimize kurduk en yaygın kullanım durumu olan bir geliştirme ortamı oluşturacağız. Bunun için hemen bir dizin oluşturalım.

mkdir ~/test-project
cd ~/test-project

Bir sonraki adımda, vagrant init komutunu kullanarak yeni bir Vagrant dosyasını oluşturun ve kullanmak istediğiniz sistemi belirtin.

vagrant init ubuntu/bionic64

Oluşturduğunuz Vagrantfile dosyasını dokümantasyona göre düzenlemekte özgürsünüz.

Şimdi sanal makineyi Vagrantfile'a göre oluşturacak ve yapılandıracak Vagrant komutunu çalıştırabiliriz.

vagrant up

Makineyi kurmaya başlayacak ve işlemi internet hızınıza göre kısa bir sürede tamamlayacaktır.

==> default: Configuring and enabling network interfaces...
default: SSH address: 192.168.0.15:22
default: SSH username: vagrant
default: SSH auth method: private key
==> default: Rsyncing folder: /home/mertcan/Vagrant/test-project/ => /vagrant

Kullanmış olduğum Vagrantfile dosyasına gelecek olursak

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"

	config.vm.provision :shell, :inline => "apt-get update --fix-missing"
  config.vm.provision :shell, :inline => "apt-get install -q -y g++ make git curl vim"
  config.vm.synced_folder "home/mertcan/Vagrant/test-project/", "/vagrant"
end

Makine kurulduktan sonra oluşturduğunuz proje dosyasını vagrant direk olarak kendi dizini içerisine taşıyabilir ve geliştirme ortamınızı kurabilir.

Oluşturduğumuz makineye SSH bağlantısı kurmak istiyorsak

vagrant ssh

Oluşturduğumuz makineyi durdurmak istiyorsak

vagrant halt

Çalışan makineyi durdurmak ve makinenin oluşturulması sırasında oluşturulan tüm kaynakları yok etmek istiyorsak

vagrant destroy