Archive for Nisan, 2019

Oracle Database Security Assessment Tool (DBSAT)


Veritabanı Güvenliği Değerlendirme aracı (DBSAT), yaygın veritabanı güvenliği sorunlarını kontrol etmenize yardımcı olacak bir yardımcı program olarak Oracle tarafından sağlanmaktadır.
DBSAT ile kısa vadeli güvenlik risklerini ortadan kaldırmak ve kapsamlı bir güvenlik stratejisi uygulamak için gerekli bulguları rapor edebilirsiniz. Doc ID 2138254.1'i Oracle desteğinden indirebiliriz.
DBSAT aracı üç modül içerir:

  • Toplayıcı: sql cümleleri ve işletim sistemi komutlarını çalıştırarak erişim sisteminden veri toplar. Bunu önce veri sözlüğü görünümlerini sorgulayarak yapar. Toplanan veriler analiz aşamasında kullanılmak üzere DBSAT Reporter tarafından bir JSON dosyasına yazılır.
  • Muhabir: Toplanan verileri analiz eder ve HTML, Excel, JSON veya txt formatlarından bir veritabanı güvenliği değerlendirme raporu oluşturur.
  • Discoverer: Mantıksal verileri bulmak ve raporlamak için bağımsız bir modül. Veritabanı Duyarlı Veri Değerlendirme raporunu hazırlar.

DBSAT ayrıca aşağıdakileri içeren birkaç tamamlayıcı yardımcı program (Reporter JSON çıkış formatı) içerir:

  • DBSAT Extract – Kimlikleriyle bulgular çıkarmanızı sağlayan Python programı
  • DBSAT Diff – İki raporu karşılaştırmanıza ve farkları bulmanıza olanak sağlayan Python programı

Yukarıdaki DBSAT ek modüllerini, DBSAT aracını (Doc ID 2138254.1) indirmek için kullandığınız aynı My Oracle Support belgesinden indirebilirsiniz.

DBSAT kullanmak için ön koşullar

  • DBSAT'ın yalnızca aşağıdaki işletim sistemlerinde çalışması için onaylandığını unutmayın:
    • Solaris x64 ve Solaris SPARC64
    • Linux x86-64
    • Windows x64
    • HP-UX IA (64 bit)
    • IBM AIX (64 bit) ve Linux, zSeries üzerinde (64 bit)
  • DBSAT’ı herhangi bir Oracle Database 10.2.0.5 veya daha yenisinde çalıştırın
  • Zip, unzip ve python sunucuya kurulmalıdır. Aşağıdaki komutu vererek bunları kolayca yükleyebilirsiniz:



yum yüklemek -y zip unzip python


• İşletim sistemi düzeyinde aşağıdaki komutu vererek, Python'un sunucuya (2.6 veya daha üstü gerekir) kurulu olduğunu kolayca doğrulayabilirsiniz:




(root @ test ~) # python -V
Python 2.6.6

• Son olarak, aşağıdaki komutları çalıştırarak sunucunuza zip ve unzip'in yüklenip yüklenmediğini kontrol edebilirsiniz.




zip -v
-v dosyasını aç

• Discoverer modülü ortamınıza en az Java 1.8 JDK kurmalı ve çalışıyor olmalı ve JAVA_HOME ortam değişkeni ayarlanmış olmalıdır. Java'nın ortamınızda çalışıp çalışmadığını aşağıdaki komutu vererek kontrol edebilirsiniz:




(root @ test ~) # java -versiyon
java sürümü "1.8.0_211"
Java (TM) SE Çalışma Zamanı Ortamı (derleme 1.8.0_211-b12)
Java HotSpot (TM) 64-Bit Sunucu VM (25.211-b12 yapı, karma mod)
(root @ test ~) #
(root @ test ~) # export JAVA_HOME = / usr / bin / java

• Daha sonra, DBSAT'ı kullanmak için gerekli yetkilere sahip bir kullanıcı oluşturmamız gerekiyor:




"112233ee" TARAFINDAN KİMLİKLENDİRİLEN KULLANICI DBSAT_USER;
DBSAT_USER'E HEMEN YARATMA TOPLANTISI;
GRANT SELECT_CATALOG_ROLE İÇİN DBSAT_USER;
SYS.REGISTRY'DEKİ HEDEF SEÇİMİ $ DBSAT_USER TARİHİ;
DBSAT_USER'E HIZLI DV_SECANALYST; (Veritabanı Kasası etkinse)
SYS.DBA_USERS_WITH_DEFPWD TO DBSAT_USER'DE HESAP SEÇİMİ; (eğer 11G veya üstü)
DBSAT_USER'E BÜYÜK AUDIT_VIEWER; (eğer 12c veya üstü)
HEDEF SEÇİMİ AUDSYS.AUD $ DBSAT_USER'E BELİRTİLMEMİŞTİR; (eğer 12c veya üstü)
HİÇBİR CAPTURE_ADMIN DBSAT_USER; (eğer 12c veya üstü)

Kurmak

DBSAT kurulumu çok basittir:

  • DBSAT kullanmak istediğiniz veritabanı sunucusunda oturum açın.
  • DBSAT dizini oluşturun
  • zip dosyasını indirin ve veritabanı sunucusuna kopyalayın ve sıkıştırmasını açın



(oracle @ test ~) $ mkdir / home / oracle / dbsat
(oracle @ test ~) $ cd / ev / oracle / dbsat /
(oracle @ test dbsat) $ unzip dbsat.zip
Arşiv: dbsat.zip
şişirme: dbsat
şişirme: dbsat.bat
...... ..

Collect Modülünde Çalıştırma

DBSAT toplayıcı modunu çalıştırmak için tek yapmanız gereken DBSAT programını aşağıdaki parametrelerle çalıştırmaktır:

  • collect: collect modülünü uyguladığımız anlamına gelir.
  • connect_string: Veritabanına bağlanmak için bağlantı dizesini belirtir. Örneğin, tns dosyasındaki veritabanı bağlantımız.
  • Hedef: Veritabanı Güvenlik Değerlendirmesi raporunun konumunu ve dosya adını belirtir.

Komut, yürütme sırasında zip dosyası için ayarlanacak şifreyi ister. Komut çalıştıktan sonra, belirtilen dizinde (/ home / oracle / dbsat) belirtilen isimde sıkıştırılmış bir dosya (test_output.zip) oluşturulacaktır. Bu dosya raporlama için kullanılacak verileri içerir.




(oracle @ test dbsat) $ ./dbsat dbsat_user @ ORCL test_output toplamak

Veritabanı Güvenliği Değerlendirme Aracı sürüm 2.1 (Mart 2019)

Bu araç, Oracle veritabanınıza yardımcı olmak için tasarlanmıştır
Benim sistemim Sisteminizden ve sonuçtan yalnızca siz sorumlusunuz
bunlarla sınırlı olmamak üzere,
Herhangi bir hasar veya veri kaybı). Ayrıca, bu araç tarafından üretilen çıktı
Potansiyel olarak hassas sistem yapılandırma verilerini ve bilgilerini içerir
Sisteminize nüfuz etmek için yetenekli bir saldırgan tarafından kullanılabilir. Sen
bu aracın çıktısını almasından yalnızca
oluşturulan raporlar dahil
şirketin politikaları.

Hedef Oracle veritabanına bağlanılıyor ...


SQL * Plus: Sürüm 11.2.0.4.0 Çar 24 Nisan'da Üretim 10 10:21:06 2019

Telif Hakkı (c) 1982, 2013, Oracle. Tüm hakları Saklıdır.

Şifre girin:

Bağlı:
Oracle Database 11g Enterprise Edition Sürüm 11.2.0.4.0 - 64bit Üretim
Bölümleme, OLAP, Veri Madenciliği ve Gerçek Uygulama Testi seçenekleriyle

Kurulum tamamlandı.
SQL sorguları tamamlandı.
İşletim sistemi komutları tamamlandı.
Oracle Database 11g Enterprise Edition Sürüm 11.2.0.4.0 - 64bit Üretimi ile bağlantısı kesildi
Bölümleme, OLAP, Veri Madenciliği ve Gerçek Uygulama Testi seçenekleriyle
DBSAT Collector başarıyla tamamlandı.

Test_output.json'ı şifrelemek için /u01/app/oracle/product/11.2.0/db_1/bin/zip aranıyor ...

Şifre girin:
Şifreyi doğrula:
ekleyerek: test_output.json (% 85 sönük)
zip başarıyla tamamlandı.


(oracle @ test dbsat) $ ls -l | grep testi
-rw -------. 1 oracle oinstall 31827 Nis 24 10:22 test_output.zip

Çalışan Rapor Modu

Raportör modu, daha önce çalıştırılmış olan Toplayıcı mod tarafından toplanan tüm verileri analiz eder ve veritabanının güvenliğini artırmak için önerilerde bulunur.
DBSAT'ı rapor modunda çalıştırmak için, tek yapmanız gereken DBSAT çalıştırılabilir dosyasını ve aşağıdaki parametreleri çalıştırmaktır:

  • rapor: rapor modunda olduğumuzu gösterir
  • -a: Analiz sırasında tüm kullanıcıları veritabanına dahil et. Aksi halde, süresi dolmuş, hesap kilitli vb. Gibi veritabanına erişemeyen kullanıcıları içermez.
  • -n: Oluşturulan raporların şifreli olmadığını belirtir
  • -x: raporun bazı bölümlerinin dahil edilmemesini sağlar. Bu bölümler aşağıdaki gibidir:
    • KULLANICI: Kullanıcı hesapları
    • PRIV: Güçler ve roller
    • AUTH: Yetki kontrolü
    • CRYPT: Veri şifreleme
    • ERİŞİM: İnce Taneli erişim kontrolü
    • DENETİM: Denetim
    • CONF: Veritabanı yapılandırması
    • NET: Ağ yapılandırması
    • İşletim Sistemi: İşletim sistemi
  • Hedef: Hedef Veritabanı Güvenlik Değerlendirmesi raporunun konumunu ve dosya adını belirtir.

Raporu çalıştırırken, sizden veri tabanından veri toplanırken kullanılan şifreleme şifresini elle girmeniz istenecek ve zip çıktısı dosyası için bir şifreleme anahtarı (şifre) gerekecektir.




(oracle @ test dbsat) $ ./dbsat test_output raporu

Veritabanı Güvenliği Değerlendirme Aracı sürüm 2.1 (Mart 2019)

Bu araç, Oracle veritabanınıza yardımcı olmak için tasarlanmıştır
Benim sistemim Sisteminizden ve sonuçtan yalnızca siz sorumlusunuz
bunlarla sınırlı olmamak üzere,
Herhangi bir hasar veya veri kaybı). Ayrıca, bu araç tarafından üretilen çıktı
Potansiyel olarak hassas sistem yapılandırma verilerini ve bilgilerini içerir
Sisteminize nüfuz etmek için yetenekli bir saldırgan tarafından kullanılabilir. Sen
bu aracın çıktısını almasından yalnızca
oluşturulan raporlar dahil
şirketin politikaları.

Arşiv: test_output.zip
(test_output.zip) test_output.json şifresi:
şişirme: test_output.json
DBSAT Muhabiri başarıyla çalıştı.

Oluşturulan raporları şifrelemek için / usr / bin / zip aranıyor ...

Şifre girin:
Şifreyi doğrula:
zip uyarısı: test_output_report.zip bulunamadı veya boş
ekleyerek: test_output_report.txt (% 77 sönük)
ekleyerek: test_output_report.html (% 84 sönük)
ekleyerek: test_output_report.xlsx (% 3 sönük)
ekleyerek: test_output_report.json (% 81 sönük)
zip başarıyla tamamlandı.


(oracle @ test dbsat) $ ls -l | grep testi
-rw -------. 1 oracle oinstall 94395 Nis 24 14:39 test_output_report.zip
-rw -------. 1 oracle oinstall 31827 Nis 24 10:22 test_output.zip

Rapor modülü tüm bulguları içeren yeni bir zip dosyası oluşturacaktır, yukarıdaki örnekte test_output_report.zip dosyası olacaktır. Zip dosyasını açarak (işleme girilen şifreleme şifresini kullanarak) ve raporun TXT veya HTML sürümlerine bakarak bulguları inceleyebilirsiniz.




(oracle @ test dbsat) $ unzip test_output_report.zip
Arşiv: test_output_report.zip
(test_output_report.zip) test_output_report.txt şifre:
şişirme: test_output_report.txt
şişirme: test_output_report.html
şişirme: test_output_report.xlsx
şişirme: test_output_report.json  

Elde edilen HTML dosyasına bakıldığında, bulguların bir özetini görebiliriz.

<img data-ek-id = "3655" data-permalink = "http://www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png" veri kaynağı file = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png?fit=802%2C374" veri boyutu-boyutu = "802,374" veri-yorumlar-açık = "1" veri-resim-meta = "{" açıklık ":" 0 "," kredi ":" "," kamera ":" "," resim yazısı ":" ", "created_timestamp": "0", "telif hakkı": "", "FOCAL_LENGTH": "0", "iso": "0", "shutter_speed": "0", "başlık": "", "yönlendirme": "0"} "data-image-title =" Oracle veritabanı güvenliği dbsat "data-image-Description ="

Oracle veritabanı güvenliği dbsat

"data-medium-file =" https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png?fit=300%2C140 " data-large-file = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png?fit=802%2C374" sınıfı = "aligncenter size-medium wp-image-3655" src = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png Yeniden boyutlandır = 300% 2C140 "alt =" oracle veritabanı güvenliği dbsat "width =" 300 "height =" 140 "srcset =" https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/ 2019 / 04 / oracle-database-security-dbsat.png? Yeniden Boyutlandırma =% 300 2C140 300w, https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database -security-dbsat.png? yeniden boyutlandır = 768% 2C358 768w, https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png? w = 802 802w "boyut =" (maks. genişlik: 300 piksel) 100vw, 300 piksel "data-recalc-dims =" 1 "/>

keşfedin

Discover, temel olarak veritabanındaki hassas verileri kontrol eden ve toplayıcıya ve muhabire bağlı olmayan ayrı bir Java tabanlı bir araçtır. Önce bir dbsat.config dosyası yaratmalısınız. İstediğiniz herhangi bir şeyi arayabilirsiniz, çünkü daha sonra açıkça başvurabilirsiniz.




(oracle @ test dbsat) $ cd / ana sayfa / oracle / dbsat
(oracle @ test dbsat) $ cp Keşfedin / conf / sample_dbsat.config Keşfedin / conf / dbsat.config 

/ Discover / conf / dbsat.config. Dosyasının içeriğini düzenlemeniz gerekecektir. En azından aşağıdakileri ayarlamalısınız.




(Veritabanı)
DB_HOSTNAME = yerel ana bilgisayar
DB_PORT = 1521
DB_SERVICE_NAME = orcl

“Discover / conf / sensitive_en.ini” dosyası, her biri sütun adları için ilişkilendirilmiş bir kalıp içeren, potansiyel olarak hassas veri kategorilerinin bir listesini içerir. Bu dosyayı incelemeli ve gerekirse fazladan bölüm veya desen eklemeyi düşünmelisin.
Konfigürasyon tamamlandıktan sonra, konfigürasyon dosyasını ve çıktı dosyası adını belirterek keşif cihazını çalıştırabilirsiniz. Veritabanının kimlik bilgileri ve ortaya çıkan zip dosyası için parola girmeniz istenir.




(oracle @ test dbsat) $ ./dbsat, -c ./Discover/conf/dbsat.config test_output_discovery dosyasını keşfedin.

Veritabanı Güvenliği Değerlendirme Aracı sürüm 2.1 (Mart 2019)

Bu araç, Oracle veritabanınıza yardımcı olmak için tasarlanmıştır
Benim sistemim Sisteminizden ve sonuçtan yalnızca siz sorumlusunuz
bunlarla sınırlı olmamak üzere,
Herhangi bir hasar veya veri kaybı). Ayrıca, bu araç tarafından üretilen çıktı
Potansiyel olarak hassas sistem yapılandırma verilerini ve bilgilerini içerir
Sisteminize nüfuz etmek için yetenekli bir saldırgan tarafından kullanılabilir. Sen
bu aracın çıktısını almasından yalnızca
oluşturulan raporlar dahil
şirketin politikaları.

Kullanıcı adını girin: dbsat_user
Şifre girin:
DBSAT Discover başarıyla çalıştırıldı.
Oluşturulan raporları şifrelemek için / usr / bin / zip aranıyor ...

Şifre girin:
Şifreyi doğrula:
zip uyarısı: test_output_discovery_report.zip bulunamadı veya boş
ekleyerek: test_output_discovery_discover.html (% 84 sönük)
ekleyerek: test_output_discovery_discover.csv (% 81 sönük)

Şimdi Discover modülü tarafından oluşturulan HTML raporunu inceleyebilirsiniz.




(test_output_discovery_report.zip) test_output_discovery_discover.html şifresi:
şişirme: test_output_discovery_discover.html
şişirme: test_output_discovery_discover.csv  

Referanslar;
https://docs.oracle.com/cd/e93129_01/satug/toc.htm#satug-guıd-cf88a2ae-e989-4f82-889c-005b32858a44

Mustafa Bektas Tepe adlı diğer profesyoneller
İyi iş

13.887 toplam görüntüleme, 186 görüntüleme bugün


Oracle Database Security Assessment Tool (DBSAT)


The Database Security Assessment tool (DBSAT) is provided by Oracle as a utility to help you check common database security issues.
With DBSAT, you can report the findings needed to eliminate short-term security risks and implement a comprehensive security strategy. We can download Doc ID 2138254.1 from Oracle support.
The DBSAT tool contains three modules:

  • Collector: Collects data from the access system by executing sql clauses and operating system commands. It does this by first querying the data dictionary views. The collected data is written to a JSON file by DBSAT Reporter for use in the analysis phase.
  • Reporter: Analyzes the collected data and generates a database security evaluation report from HTML, Excel, JSON or txt formats.
  • Discoverer: A stand-alone module for finding and reporting logical data. Prepares Database Sensitive Data Assessment report.

DBSAT also includes several complementary utilities (Reporter JSON output format), which are:

  • DBSAT Extract – Python program that allows you to extract findings from their identities
  • DBSAT Diff – Python program that allows you to compare two reports and find differences

You can download the above DBSAT supplementary modules from the same My Oracle Support document that you used to download the DBSAT tool (Doc ID 2138254.1).

Prerequisites for using DBSAT

  • Note that DBSAT is approved to run only on the following operating systems:
    • Solaris x64 and Solaris SPARC64
    • Linux x86-64
    • Windows x64
    • HP-UX IA (64-bit)
    • IBM AIX (64-bit) & Linux on zSeries (64-bit)
  • Run DBSAT on any Oracle Database 10.2.0.5 or later
  • Zip, unzip and python must be installed on the server. You can easily install them by giving the following command:

yum install -y zip unzip python


• You can also easily verify that Python is installed on the server (2.6 or higher required) by issuing the following command at the operating system level:


(root @ test ~) # python -V
Python 2.6.6

• Finally, you can verify whether zip and unzip are installed on your server by running the following commands.


zip -v
unzip -v

• The Discoverer module must be installed and running at least Java 1.8 JDK in your environment for setting purposes and the JAVA_HOME environment variable must be set. You can check if java is running in your environment by giving the following command:


(root @ test ~) # java -version
java version "1.8.0_211"
Java (TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot (TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
(root @ test ~) #
(root @ test ~) # export JAVA_HOME = / usr / bin / java

• Next, we need to create a user with the necessary privileges to use DBSAT:


CREATE USER DBSAT_USER IDENTIFIED BY "112233ee";
GRANT CREATE SESSION to DBSAT_USER;
GRANT SELECT_CATALOG_ROLE TO DBSAT_USER;
GRANT SELECT ON SYS.REGISTRY $ HISTORY TO DBSAT_USER;
GRANT DV_SECANALYST TO DBSAT_USER; (If Database Vault is enabled)
GRANT SELECT ON SYS.DBA_USERS_WITH_DEFPWD TO DBSAT_USER; (if 11G or later)
GRANT AUDIT_VIEWER TO DBSAT_USER; (if 12c or later)
GRANT SELECT ON AUDSYS.AUD $ UNIFIED TO DBSAT_USER; (if 12c or later)
GRANT CAPTURE_ADMIN TO DBSAT_USER; (if 12c or later)

Setup

DBSAT installation is very simple:

  • Log on to the database server that you want to use DBSAT.
  • Create the DBSAT directory
  • download the zip file and copy it to the database server and decompress it

(oracle @ test ~) $ mkdir / home / oracle / dbsat
(oracle @ test ~) $ cd / home / oracle / dbsat /
(oracle @ test dbsat) $ unzip dbsat.zip
Archive: dbsat.zip
  inflating: dbsat
  inflating: dbsat.bat
...... ..

Running in the Collect Module

To run the DBSAT collector mode, all you need to do is run the DBSAT program with the following parameters:

  • collect: means that we implement the collect module.
  • connect_string: Specifies the connection string to connect to the database. For example, our database connection in the tns file.
  • destination: Specifies the location and file name for the Database Security Assessment report

The command will prompt you for the password to be set for the zip file during execution. After the command runs, a compressed file (test_output.zip) with the specified name will be created in the specified directory (/ home / oracle / dbsat). This file contains the data to be used for reporting.


(oracle @ test dbsat) $ ./dbsat collect dbsat_user @ ORCL test_output

Database Security Assessment Tool version 2.1 (March 2019)

This tool is intended to assist in your Oracle database
My system. You are solely responsible for your system and the effect and
results, including, without limitation,
any damage or data loss). Further, the output generated by this tool may
include potentially sensitive system configuration data and information
that could be used by a skilled attacker to penetrate your system. You
are solely responsible for ensuring that the output of this tool,
including any generated reports
company's policies.

Connecting to the target Oracle database ...


SQL * Plus: Release 11.2.0.4.0 Production on Wed Apr 24 10:21:06 2019

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Enter password:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Setup complete.
SQL queries complete.
OS commands complete.
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
DBSAT Collector completed successfully.

Calling /u01/app/oracle/product/11.2.0/db_1/bin/zip to encrypt test_output.json ...

Enter password:
Verify password:
  adding: test_output.json (deflated 85%)
zip completed successfully.


(oracle @ test dbsat) $ ls -l | grep test
-rw -------. 1 oracle oinstall 31827 Apr 24 10:22 test_output.zip

Running Report Mode

The Reporter mode analyzes all data collected by the Collector mode that was previously run and makes recommendations to improve the security of the database.
To run DBSAT in report mode, all you need to do is run the DBSAT executable and the following parameters:

  • report: indicates that we are in report mode
  • -a: Include all users in the database during analysis. Otherwise, it will not include users who cannot access the database, such as password expired, account locked, etc.
  • -n: Specifies that generated reports are not encrypted
  • -x: ensures that some parts of the report are not included. These sections are as follows:
    • USER: User accounts
    • PRIV: Powers and roles
    • AUTH: Authorization check
    • CRYPT: Data encryption
    • ACCESS: Fine-Grained access control
    • AUDIT: Auditing
    • CONF: Database configuration
    • NET: Network configuration
    • OS: Operating system
  • Destination: Specifies the location and file name of the Target Database Security Assessment report.

When running the report, you will be prompted to manually enter the encryption password used when data is being collected from the database, and you will require an encryption key (password) for the zip output file to be generated.


(oracle @ test dbsat) $ ./dbsat report test_output

Database Security Assessment Tool version 2.1 (March 2019)

This tool is intended to assist in your Oracle database
My system. You are solely responsible for your system and the effect and
results, including, without limitation,
any damage or data loss). Further, the output generated by this tool may
include potentially sensitive system configuration data and information
that could be used by a skilled attacker to penetrate your system. You
are solely responsible for ensuring that the output of this tool,
including any generated reports
company's policies.

Archive: test_output.zip
(test_output.zip) test_output.json password:
  inflating: test_output.json
DBSAT Reporter ran successfully.

Calling / usr / bin / zip to encrypt the generated reports ...

Enter password:
Verify password:
        zip warning: test_output_report.zip not found or empty
  adding: test_output_report.txt (deflated 77%)
  adding: test_output_report.html (deflated 84%)
  adding: test_output_report.xlsx (deflated 3%)
  adding: test_output_report.json (deflated 81%)
zip completed successfully.


(oracle @ test dbsat) $ ls -l | grep test
-rw -------. 1 oracle oinstall 94395 Apr 24 14:39 test_output_report.zip
-rw -------. 1 oracle oinstall 31827 Apr 24 10:22 test_output.zip

The report module will create a new zip file containing all the findings, in the example above it will be the test_output_report.zip file. You can review the findings by opening the zip file (using the encryption password entered in the process) and looking at the TXT or HTML versions of the report.


(oracle @ test dbsat) $ unzip test_output_report.zip
Archive: test_output_report.zip
(test_output_report.zip) test_output_report.txt password:
  inflating: test_output_report.txt
  inflating: test_output_report.html
  inflating: test_output_report.xlsx
  inflating: test_output_report.json  

Looking at the resulting HTML file, we can see a summary of the findings.

<img data-attachment-id = "3655" data-permalink = "http://www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png" data-orig- file = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png?fit=802%2C374" data-orig-size = "802,374" data-comments-opened = "1" data-image-meta = "{" aperture ":" 0 "," credit ":" "," camera ":" "," caption ":" ", "created_timestamp": "0", "copyright": "", "FOCAL_LENGTH": "0", "iso": "0", "shutter_speed": "0", "title": "", "orientation": "0"} "data-image-title =" oracle database security dbsat "data-image-description ="

oracle database security dbsat

"data-medium-file =" https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png?fit=300%2C140 " data-large-file = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png?fit=802%2C374" class = "aligncenter size-medium wp-image-3655" src = "https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png Resize = 300% 2C140 "alt =" oracle database security dbsat "width =" 300 "height =" 140 "srcset =" https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/ 2019/04 / oracle-database-security-dbsat.png? Resize = 300% 2C140 300w, https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database -security-dbsat.png? resize = 768% 2C358 768w, https://i2.wp.com/www.mustafabektastepe.com/wp-content/uploads/2019/04/oracle-database-security-dbsat.png? w = 802 802w "sizes =" (max-width: 300px) 100vw, 300px "data-recalc-dims =" 1 "/>

Discover

Discover is essentially a separate Java-based tool that controls sensitive data in the database and does not depend on the collector and reporter. You must first create a dbsat.config file. You can search for anything you want because you will then explicitly refer to it.


(oracle @ test dbsat) $ cd / home / oracle / dbsat
(oracle @ test dbsat) $ cp Discover / conf / sample_dbsat.config Discover / conf / dbsat.config 

You will need to edit the contents of the file / Discover / conf / dbsat.config.. You should at least set the following.


(Database)
        DB_HOSTNAME = localhost
        DB_PORT = 1521
        DB_SERVICE_NAME = orcl

The “Discover / conf / sensitive_en.ini” file contains a list of potentially sensitive data categories, each of which contains an associated pattern for column names. You should review this file and consider adding extra sections or patterns if necessary.
After the configuration is complete, you can run the discoverer by specifying the configuration file and output file name. You will be prompted for the credentials of the database and the password for the resulting zip file.


(oracle @ test dbsat) $ ./dbsat discover -c ./Discover/conf/dbsat.config test_output_discovery

Database Security Assessment Tool version 2.1 (March 2019)

This tool is intended to assist in your Oracle database
My system. You are solely responsible for your system and the effect and
results, including, without limitation,
any damage or data loss). Further, the output generated by this tool may
include potentially sensitive system configuration data and information
that could be used by a skilled attacker to penetrate your system. You
are solely responsible for ensuring that the output of this tool,
including any generated reports
company's policies.

Enter username: dbsat_user
Enter password:
DBSAT Discover ran successfully.
Calling / usr / bin / zip to encrypt the generated reports ...

Enter password:
Verify password:
        zip warning: test_output_discovery_report.zip not found or empty
  adding: test_output_discovery_discover.html (deflated 84%)
  adding: test_output_discovery_discover.csv (deflated 81%)

You can now review the HTML report generated by the Discover module.


(test_output_discovery_report.zip) test_output_discovery_discover.html password:
  inflating: test_output_discovery_discover.html
  inflating: test_output_discovery_discover.csv  

References;
https://docs.oracle.com/cd/e93129_01/satug/toc.htm#satug-guıd-cf88a2ae-e989-4f82-889c-005b32858a44

More professionals named Mustafa Bektas Tepe
Good work

13,884 total views, 183 views today


Network File System (NFS)


NFS  (Network  File  System),  1984  yılında  Sun  Microsystems  tarafından  geliştirilmişbir protokoldür. Uzaktaki makine üzerinde bulunan dosya sistem(lerin)i, farklı bir işletim sistemine  bağlayabilmeniz  (mount)  için  geliştirilmiştir.  Ve  bunu  yaparken,  kullanıcının sanki yerel bir dosya sistemi üzerindeymiş gibi çalışmasını sağlar.

TCP / IP’nin evriminin başlarında, kullanıcının ağ üzerinden başka bir makineye erişmesine izin vermek için bazı araçlar oluşturulmuştu. Telnet gibi remote access protocols (uzaktan erişim protolleri), kullanıcının başka bir bilgisayarda oturum açmasına ve buradaki kaynakları kullanmasına izin verdi. File Transfer Protocol  (FTP), birinin uzak bir makineden bir dosyayı kendi dosyasına kopyalamasına ve düzenlemesine izin verdi.

Ancak, bu çözümlerin hiçbiri, bir kullanıcının uzak bir makinedeki bir dosyaya, yerel bir dosyanın kullanıldığına benzer bir şekilde erişmesine izin verme kurallarına uymuyordu. Sun bu ihtiyacı karşılamak için Network File System (Ağ Dosya Sistemi)’i (NFS) yarattı. NFS, yerel ve uzak bir dosya arasındaki ayrımı ortadan kaldırmak amacıyla özel olarak tasarlanmıştır. Bir kullanıcı için, uygun kurulum yapıldıktan sonra, uzak bilgisayardaki bir dosya, kullanıcının yerel bilgisayarındaki bir sabit disk üzerindeymiş gibi kullanılabilir. Sun ayrıca, hem Sun tarafından hem de diğer şirketler tarafından yapılan donanımların birlikte çalışabilmesini sağlamak için NFS’yi özellikle satıcıdan/üreticiden bağımsız olacak şekilde üretti.

NFS, klasik TCP / IP client/server modelini izler. Bir sabit disk veya belirli bir bilgisayarın depolama aygıtındaki dizin, yönetici tarafından paylaşılan bir kaynak olarak ayarlanabilir. Bu kaynağa daha sonra paylaşılan sürücü(shared drive) veya directory denir ve client makinede yerel bir dizin gibi görünmesini sağlayarak bilgisayarlardan erişilebiliriz.

NFS, çalışmasını tanımlayan üç ana bileşen içeren bir mimari kullanır. External Data Representation (XDR) standardı, verilerin client ve server arasındaki değişimlerde nasıl temsil edildiğini tanımlar. Remote Procedure Call (RPC) protokolü, uzak makinelerde procedure çağırma yöntemi olarak kullanılır. Ardından, bir dizi NFS prosedürü ve işlemi çeşitli istekleri yerine getirmek için RPC kullanarak çalışır. Mount protokolü, kaynakları yukarıda belirtildiği gibi bağlamak için kullanılır.

NFS’nin en önemli tasarım hedeflerinden biri performanstı. Açıkçası, uzaktaki bir makineye yerelmiş gibi bir dosya ayarlasanız bile, gerçek okuma ve yazma işlemleri bir ağ üzerinde ilerlemek zorunda. Genellikle bu sadece bir bilgisayar içerisine veri göndermekten daha fazla zaman alır, bu yüzden protokolün kendisinin mümkün olduğunca “yalın ve ortalama” olması gerekiyordu. Bu karar, çoğu dosya aktarım protokolünün yaptığı gibi güvenilir TCP yerine TCP / IP’de aktarım için güvenilir olmayan User Datagram Protocol’nün (UDP) kullanılması gibi bazı ilginç kararlara yol açmıştır. Bu da protokolün bir bütün olarak nasıl çalıştığı üzerinde ilginç sonuçlara sahiptir.

NFS için bir diğer önemli tasarım amacı basitti (elbette performansla ilgili). NFS sunucularının durumsuz olduğu söyleniyor, bu protokolün hangi sunucuların hangi clientler tarafından hangi dosyaların açıldığını takip etmesine gerek kalmayacak şekilde tasarlandığı anlamına geliyor. Bu, isteklerin birbirinden bağımsız olarak yapılmasına izin verir ve bir sunucunun karmaşık kurtarma prosedürlerine ihtiyaç duymadan çökmeler gibi olaylarla incelikle başa çıkmasını sağlar. Protokol ayrıca, isteklerin kaybolması veya çoğaltılması durumunda dosya bozulması yaşanmayacak şekilde tasarlanmıştır.

NFS Sürüm ve Standartları

NFS’in şu  zamana  kadar  dört  temel  sürümü  (NFS,  NFSv2,  NFSv3  ve  NFSv4) çıkmıştır.  NFS’nin ilk yaygın sürümü sürüm 2 idi. NFS sürüm 3 ve sürüm 2’ye benzer, ancak birkaç değişiklik yapar ve bazı yeni özellikler ekler. Bunlar, daha büyük dosya transferleri için destek, dosya özniteliklerini(attributes) ayarlama konusunda daha iyi destek ve birkaç yeni dosya erişim ve işleme prosedürünü içerir. NFS Sürüm 4, 2000 yılında yayınlandı. NFS sürüm 3, sürüm 2’de yalnızca küçük değişiklikler içerdiğini söylemiştik, NFSv4, NFS’nin neredeyse yeniden yazmasıdır. En çok aşağıdakileri içeren çok sayıda değişiklik içerir:

  • Modern internet çalışmasının ihtiyaçlarını yansıtan NFSv4, güvenlik konusuna daha fazla önem vermektedir.
  • NFSv4, birkaç basit prosedürün bir client’den sunucuya grup olarak gönderilmesine izin veren bir Bileşik prosedür kavramını sunar.
  • NFSv4, clientden NFS sunucusundaki bir dosyaya erişirken kullanabileceği bireysel prosedürlerin sayısını neredeyse iki katına çıkarır.
  • Sürüm 4 ayrıca, NFS için aktarım protokolü olarak TCP’nin belirtilmesi ile mesajlaşmada önemli bir değişiklik yapar.
  • Son olarak, NFS, mount protokolünün işlevlerini temel NFS protokolüne entegre eder ve 2. ve 3. sürümlerde olduğu gibi ayrı bir protokol olarak ortadan kaldırır.

Alt  versiyon  olarak  çıkan  NFSv4.1  sürümüyle  birlikte  paralellik  özelliği (pNFS) gelmiştir. Böylece uzaktaki veriye paralel erişim imkanı getirilmiştir.

NFS Mimarisi

Bir bütün olarak TCP/IP protokol paketi açısından bakıldığında, Network File System (NFS), TCP / IP (DOD) modelinin application katmanında bulunan tek bir protokoldür. Bu TCP / IP katmanı, OSI Referans Modelinin session, presentation ve application katmanlarını kapsar.

NFS’nin çalışması, TCP / IP application katmanına karşılık gelen üç OSI model katmanının her birinde mantıksal olarak görülebilecek üç ana bileşen şeklinde tanımlanır.

  • Remote Procedure Call (RPC):RPC, client/server ağ çalışması işlevselliğini uygulamak için kullanılan genel bir session katmanı hizmetidir. Belirli bir ana bilgisayarda yerel bir prosedürü çağıran bir program nosyonunu, bir ağdaki uzak cihazdaki prosedür çağıracak şekilde genişletir.
  • External Data Representation (XDR): XDR, veri türlerinin tutarlı bir şekilde tanımlanmasını sağlayan açıklayıcı bir dildir. XDR kavramsal olarak presentation katmanında bulunur; evrensel gösterimleri, verilerin depolanmasında çok farklı dahili yöntemler kullanabilecek bilgisayarlar arasında NFS kullanılarak değiştirilmesine izin verir.
  • NFS Procedures and Operations:NFS’nin gerçek işlevselliği, OSI modelinin yedinci katında kavramsal olarak çalışan prosedürler ve işlemler şeklinde gerçekleştirilir. Bu prosedürler, ağ üzerinden dosyalarda gerçekleştirilecek, görevleri temsil etmek için XDR ve komutları bir internet ağında taşımak için RPC kullanan belirli görevleri belirtir.

NFS 1 - OSI Model

Bu üç bileşenin yanı sıra, bir bütün olarak NFS protokolü, bahsetmeye değer olduğunu düşündüğüm bir dizi başka işlevi içermektedir:

  • Mount Protocol:NFS’nin yazanlar, NFS’nin dosya açma ve kapama ile ilgili detaylarıyla ilgilenmemesi konusunda özel bir karar aldı. Bunun yerine, Mount protokolü adı verilen ayrı bir protokol bu amaç için kullanılır. Ağ üzerinden bir dosyaya veya başka bir kaynağa erişmek, önce bu protokolü kullanarak onu bağlamayı içerir. Mount Protokolü mimari olarak farklıdır, ancak açıkça NFS ile yakından ilgilidir ve hatta NFS standardının bir ekinde tanımlanmıştır.
  • NFS File System Model: NFS, onu kullanan sistemlerin dizin ve dosya yapısını uygulamak için belirli bir model kullanır. Bu model, UNIX’in dosya sistemi modeline yakından dayanmaktadır, ancak yalnızca bu işletim sistemine özgü değildir. Mount Protokolünün açıklaması ile birlikte ele alınmıştır.
  • Security: NFS’nin 2. ve 3. sürümleri yalnızca sınırlı güvenlik hükümleri içermektedir. Çeşitli işlemlerin izinlerini kontrol etmek için UNIX stili kimlik doğrulamasını kullanırlar. NFS sürüm 4, NFS uygulamaları için kullanılabilen güvenlik seçeneklerini büyük ölçüde artırır. Bu, hem çoklu kimlik doğrulama(multiple authentication) hem de şifreleme algoritmaları seçeneğini ve protokolü daha “güvenlik anlayışı içinde” yapmak için bir bütün olarak yapılan birçok değişikliği içerir.

Diğer TCP / IP protokolleri gibi, NFS de yukarıdaki işlevleri uygulayan client ve server yazılımı biçiminde uygulanır. NFS standartları, özellikle sürüm 3 ve 4 için, sunucular ve clientler arasındaki etkileşim, dosya kilitleme(lock), izin sorunları(permission issues), önbellekleme(caching), yeniden iletme politikaları, uluslararası destek ve daha fazlası dahil olmak üzere uygun NFS client / server uygulamasına ilişkin sayısız konuyu tartışır

NFS Data Storage and Data Types, and the External Data Representation (XDR) Standard

NFS’nin arkasındaki genel fikir, bilgisayardaki birinin yerel bir makinede olduğu gibi kolayca başka bir bilgisayardaki bir dosyayı okumasını veya yazmasını sağlamaktır. Elbette, yerel makinenizdeki dosyaların hepsi aynı dosya sisteminde, aynı dosya yapısını ve farklı veri türlerini temsil etmek için aynı araçları kullanarak depolanır. Uzak bir cihaza erişirken durumun böyle olacağından emin olamazsınız ve bu NFS ile ilgilenmesi gereken bir parça “Tower of Babel” problemi yaratır.

Universal Data Exchange: XDR

Representation consistenc yaklaşımlardan biri, sadece aynı işletim sistemini kullanan makinelerdeki uzak dosyalara erişimi kısıtlamak olacaktır. Bununla birlikte, bu NFS’nin etkinliğinin çoğunu ortadan kaldıracaktır. Ayrıca, her bilgisayarın diğerlerinin içsel temsilini anlamalarını istemek de oldukça pratik olacaktır. Çok farklı makinelerin bile veri paylaşmasını sağlamak için daha genel bir metoda ihtiyaç vardı. Bu amaçla, NFS yazanlar onu universal data description language kullanan verilerle ilgilenecek şekilde tanımlamışlardır.

XDR’nin arkasındaki fikir basit ve bir analoji şeklinde kolayca anlaşılabilir. Bir kongrede 50 farklı dil konuşan delegeleriniz olsaydı, iletişim kurmakta zorlanırlardı. Kolaylaştırmak için tercüman kiralayabilirsiniz, ancak dillerin olası tüm farklı kombinasyonlarını idare edecek tercümanlar asla bulamazsınız. Daha pratik bir çözüm, İngilizce gibi bir dili ortak bir dil olarak ilan etmektir. O zaman sadece 49 tercümana ihtiyacınız var: İngilizce’den İngilizce olmayan dillerin her birine tercüme edip tekrar çevirmek. İsveççe’den Portekizce’ye çeviri yapmak için İsveççe’den İngilizceye, ardından İngilizce’den Portekizce’ye çeviriyorsunuz. Ortak dil, tüm diğer dillerden bu ortak dile çevirmen bulunabildiği sürece, Fransızca veya İspanyolca veya başka bir şey olabilir.

XDR aynı şekilde çalışır. Bir dosyaya nasıl erişileceği hakkındaki bilgiler cihaz A’dan cihaz B’ye aktarılacaksa, cihaz A önce A’yı iç temsilinden bu veri türlerinin XDR sunumuna dönüştürür. Bilgi XDR kodlaması kullanılarak ağ üzerinden iletilir. Daha sonra, B cihazı, XDR’den kendi dahili temsiline geri döner, böylece kullanıcıya yerel dosya sistemindeymiş gibi sunulabilir. Her cihazın sadece kendi “dilinden” XDR’ye nasıl dönüştüğünü ve tekrar nasıl döneceğini bilmesi gerekir; A cihazının B cihazının iç detaylarını ve tam tersini bilmesi gerekmez. Elbette bu tür bir çeviri, XDR’nin OSI Referans Modeli’nde bulunduğu presentation katmanının klasik bir işidir. XDR, Abstract Syntax Notation adlı bir ISO standardına dayanmaktadır.

NOT : Bu arada, burada açıklanan fikir, altta yatan sistemlerin doğasından bağımsız olarak veri alışverişine izin vermek için diğer protokollerde de kullanılır. Örneğin, benzer bir fikir, Simple Network Management Protocol (SNMP) kullanılarak yönetim bilgilerinin değiş tokuşunun arkasındadır. Aynı temel fikir, Telnet protokolünde kullanılan önemli Network Virtual Terminal  (NVT) paradigmasının altındadır.

XDR’nin evrensel olması için, bilgisayarlarda kullanılan tüm yaygın veri türlerinin tanımlanmasına izin vermesi gerekir. Örneğin, tamsayıların, floating point numbers, dizelerin ve diğer veri yapılarının değiş tokuş edilmesine izin vermesi gerekir.

NFS 2 - Veri Yapıları

Remote Procedure Calls (RPCs)

Belirli bir bilgisayardaki bir yazılım programı bir dosyayı okumak, bir dosya yazmak veya ilgili görevleri gerçekleştirmek istediğinde, bu amaç için doğru yazılım talimatlarını kullanması gerekir. Her yazılım programından bu talimatların bir kopyasını içermesini istemek verimsiz olacaktır, bu yüzden bunlar yerine prosedür olarak adlandırılan standart yazılım modülleri olarak kodlanırlar. Bir eylemi gerçekleştirmek için, bir yazılım parçası prosedürü çağırır; prosedür, ana program için geçici olarak devralınır ve veri okuma veya yazma gibi bir görevi yerine getirir. Daha sonra prosedür, programın kontrolünü, onu çağıran yazılıma geri döndürür ve isteğe bağlı olarak verileri de döndürür.

NFS’nin ana konsepti, uzaktan dosya erişiminin yerel dosya erişimi gibi görünmesini sağlamak olduğundan, daha önce açıklanan prosedür çağırma yönteminin ağ tabanlı bir versiyonunun kullanımı etrafında tasarlanmıştır. Bir dosya ile bir şey yapmak isteyen bir yazılım uygulaması hala bir prosedür çağrısı yapar, ancak yerel bir arama yerine farklı bir bilgisayarda bir prosedürü çağırır. Çağrının şebeke üzerinden iletilmesini, çağrıyı yapan yazılıma büyük ölçüde görünmeyecek şekilde yönetmek için özel bir prosedür kümesi kullanılır.

Bu işlevsellik doğrudan NFS’de uygulanabilirdi, ancak Sun bunun yerine Remote Procedure Call (RPC) belirtimi adı verilen ve bunun nasıl çalıştığını tanımlayan ayrı bir session katmanı protokol bileşeni oluşturdu.

RPC, NFS’de iletişim kurmanın gerçek süreci olduğundan, NFS’nin kendisi diğer TCP / IP protokollerinden farklıdır. İşlemi, belirli mesaj değişimleri ve durum diyagramları ile tanımlanamaz, çünkü HTTP veya DHCP, hatta TCP gibi bir protokolün yapabileceği şekli, RPC bunların hepsini yapar. NFS aslında, bir NFS sunucusunun NFS client için sunduğu bir dizi RPC sunucusu prosedürü ve işlemi olarak tanımlanmaktadır. Bu prosedür ve işlemlerin her biri, dosyadan okumak, dosyaya yazmak veya silmek gibi bir dosya üzerinde belirli bir işlem yapılmasını sağlar.

Bir client belirli bir makinedeki bir dosyada bir tür eylem yapmak istediğinde, bu makinedeki NFS sunucusuna çağrı yapmak için RPC’yi kullanır. Sunucu isteği kabul eder ve gerekli eylemi gerçekleştirir, ardından isteğe bağlı olarak bir sonuç kodu ve muhtemelen verileri müşteriye geri döndürür. Sonuç kodu, eylemin başarılı olup olmadığını gösterir. Öyleyse, müşteri ne yapılması istendiyse tamamlandığını varsayabilir. Örneğin, veri yazma durumunda, müşteri verilerin uzun süreli depolamaya başarıyla yazıldığını varsayabilir.

NFS, session katmanında geçerli bir RPC uygulaması olan tüm taşıma mekanizmaları üzerinde çalışabilir. Tabii ki TCP / IP’de UDP ve TCP olmak üzere iki taşıma protokolümüz var. NFS’nin ulaşım protokolünü kullanırken bir çeşit evrim geçirdiğini görmek ilginç. NFSv2 standardı, UDP kullanarak “normal” çalıştığını söylüyor ve bu hala NFS bilgilerinin taşınması için yaygın bir yöntem. NFSv3, UDP veya TCP’nin kullanılabileceğini, ancak NFSv4’ün veri taşımak için TCP’yi belirttiğini söylüyor. NFS tarafından kullanılmak üzere nominal kayıtlı port numarası 2049’dur, ancak aslında RPC’nin “port mapper” özelliği kullanılarak NFS için başka port numaraları da kullanılmaktadır.

UDP güvenilir olmadığından, bu protokolün önemli bilgileri aktarmak için kullanılması garip görünebilir. Örneğin, aktarım sırasında kaybedilecek bir dosyaya yazmaya çalıştığımız verileri açık bir şekilde istemiyoruz. Bununla birlikte, UDP’nin güvenilir iletişimi sağlamak için önlemlerin kullanılmasını engellemediğini, sadece bu yetenekleri sağlamadığını unutmayın. UDP NFS tarafından kullanılabilir çünkü protokolün kendisi aktarılan veri kaybını tolere etmek ve ondan kurtarmak için tasarlanmıştır.

Bu konsepte uygun olarak, NFS’nin genel tasarımı, protokolün sunucuya değil client uygulanması sorumluluğunun çoğunu getirir. NFSv3 standardının dediği gibi, “NFS sunucuları aptaldır ve NFS clientleri akıllıdır.” Bunun anlamı, sunucuların yalnızca isteklere yanıt vermeye odaklanırken, client protokolün “nitty-gritty” ayrıntılarının çoğuna dikkat etmek zorundadır. , başarısız iletişimden kurtarma da dahil olmak üzere. Aslında bu, UDP kullanıldığında sık karşılaşılan bir gerekliliktir, çünkü bir müşteri talebi transfer yolunda kaybedilirse, sunucunun gönderildiğini bilmenin hiçbir yolu yoktur.

NFS sunucuları “stateless” olacak şekilde tasarlanmıştır. Basitleştirilmiş terimlerle, NFS sunucusunun bir istemden diğerine kullanan istemcilerin durumunu takip etmediği anlamına gelir. Her istek öncekinden bağımsızdır ve esasen sunucu, bir müşteriden yeni bir komut aldığında daha önce yaptıklarından “hafızasına” sahip değildir. Bu yine clientlere daha fazla “akıllı” olmasını gerektirir, ancak sunucunun çökmesi durumunda kurtarmayı basitleştirme konusunda önemli bir avantaja sahiptir. Sunucunun müşteri için takip ettiği hiçbir şey olmadığından, kaybedilecek hiçbir şey yoktur. Bu, ağ sorunları veya tıkanıklığı nedeniyle dosyaların zarar görmemesini sağlamanın önemli bir parçasıdır.

Hem NFS clientleri hem de sunucular, performansı artırmak için önbelleklemeyi(caching) kullanabilir. Sunucular, tekrar gerekli olması durumunda, en son istenen bilgileri saklamak için önbelleği kullanabilir. Ayrıca bazen predictive caching(tahmini caching) olarak da adlandırılan önbelleğe alma özelliğini kullanabilirler. Bu teknikte, bir dosyadan bir veri bloğunu okuma isteği alan bir sunucu, bir sonraki bloğun belleğe yüklenebileceği teorisine göre bir sonraki bloğa yüklenebilir. Client tarafında önbellekleme, ek RPC çağrılarını engellerken uygulamalardan gelen NFS isteklerini tekrarlamak için kullanılır. NFS ile ilgili hemen hemen her şey gibi, önbellekleme de NFS sürüm 4’te önceki sürümlerde olduğundan çok daha ayrıntılı bir şekilde uygulanır.

NFS Sunucu Prosedürleri ve İşlemleri

Bir NFS client ile sunucu arasındaki gerçek bilgi alışverişi, Remote Procedure Call (RPC) protokolü ile gerçekleştirilir. Bu nedenle NFS işlevselliği, belirli protokol işlemleri açısından değil, bir müşterinin bir sunucuda bulunan dosyalar üzerinde gerçekleştirebileceği farklı eylemleri tanımlayarak açıklanmaktadır. NFS’nin orijinal sürümünde, NFSv2, bunlara NFS sunucusu prosedürleri denir.

Her prosedür, bir müşteriden dosyadan okuma, bir dosyaya yazma veya bir dizin oluşturma veya kaldırma gibi gerçekleştirebileceği belirli bir işlemi temsil eder. Dosya üzerinde gerçekleştirilen işlemler, dosyanın dosya tanıtıcısı(file handle) adı verilen bir veri yapısı kullanılarak referans alınmasını gerektirir. Adından da anlaşılacağı gibi, dosya tanıtıcısı, gerçek bir nesnenin tanıtıcısı gibi, istemcinin ve sunucunun dosyayı “kavramasını” sağlar. Mount protokolü, bir dosya sistemini bağlamak için, bir dosya tanıtıcısının NFS prosedürleri tarafından kullanılmak üzere erişilmesini sağlamak için kullanılır.

NFS’nin 2. ve 3. sürümlerinde tanımlanan sunucu prosedürlerini gösterir. Tabloda hem NFSv2 hem de NFSv3 için işlem numaralarının yanı sıra her işlemin adı ve ne olduğu ile ilgili bir açıklama gösterilmektedir.

NFS 3 - Veri yapıları

Bir müşterinin bir dosya üzerinde birden fazla işlem yapmak istemesi yaygındır: örneğin, birkaç ardışık okuma. NFSv2 ve NFSv3’teki sunucu prosedürü sistemindeki sorunlardan biri, her client işleminin ayrı bir prosedür çağrısı gerektirmesidir. Bu, özellikle NFS yüksek gecikmeli(high-latency) bir bağlantı üzerinden kullanıldığında, verimsizdi.

Sunucu prosedürlerinin etkinliğini artırmak için, NFS sürüm 4 sunucu prosedürlerinin uygulanma biçiminde önemli bir değişiklik yapar. Her müşteri eyleminin ayrı bir prosedür yerine, bileşik (compound) adı verilen tek bir prosedür tanımlanmaktadır. Bu “bileşik” prosedürde, çok sayıda sunucu işlemi kapsüllenir. Bunların hepsi tek bir birim olarak gönderilir ve sunucu her bir işlemdeki talimatları sırayla yorumlar ve izler.

Bu değişiklik aslında aşağıda gösterildiği gibi NFSv4’te yalnızca iki RPC prosedürü olduğu anlamına gelir.

NFS 4

Aşağıdaki resimden de anlaşılacağı gibi NFSv4 işlemlerinin sayısının, NFSv2 ve NFSv3’teki işlem sayısından çok daha büyük olduğunu fark edeceksiniz. Bunun nedeni hem sürüm 4’teki özellikler hem de NFSv4’ün daha önce ayrı Mount protokolü tarafından gerçekleştirilen işlevleri NFS’nin kendisine dahil etmesidir.

NFS 5 arka plan

NFS Dosya Sistemi Modeli ve Mount Protokolü

NFS, client tarafından uzaktaki dizin dosyalarına erişimi yerelmiş gibi taklit etmek için kullanıldığından, protokol uzaktaki sistemden yerel kullanıcıya dosyaları “sunmalıdır”. Yerel bir depolama cihazındaki dosyalar belirli bir dosya sistemi kullanılarak düzenlenirken, NFS de dosyaların bir kullanıcıya nasıl gösterildiğini göstermek için bir dosya sistemi modeli kullanır.

NFS tarafından kullanılan dosya sistemi modeli, çoğumuzun aşina olduğu yöntemle aynıdır: dosyaları ve alt dizinleri içeren dizinlerin hiyerarşik bir dizilimi. Hiyerarşinin tepesi, herhangi bir sayıda dosyayı ve birinci seviye dizinleri içeren köktür. Her dizin, isteğe bağlı bir ağaç yapısının oluşturulmasına izin vererek daha fazla dosya veya başka dizinler içerebilir.

Bir dosya, dosya adını ve dosyayı bulmak için kökten geçmesi gereken dizinlerin sırasını gösteren bir yol adı kullanılarak benzersiz bir şekilde belirtilebilir. NFS, UNIX ile ilişkilendirildiğinden, NFS tartışmalarındaki dosyalar genellikle UNIX notasyonunda gösterilir; örneğin “/etc/hosts”, aynı temel ağaç fikri, Microsoft işletim sistemleri tarafından izlenen yöntem kullanılarak da ifade edilebilir: “C:WINDOWSHOSTS”

NFS, bir clientin uzak sunucudaki bir dosyaya erişmesine izin vermek için kullanılmadan önce, cliente dosyaya erişmesi için bir yol verilmelidir. Bu, uzak dosya sisteminin bir kısmının cliente sunulması gerektiği ve dosyanın erişim için açıldığı anlamına gelir. NFS’nin dosya erişimini engelleme, işlevleri açma ve kapatma işlevlerini NFS’ye uygun hale getirmek için belirli bir karar verildi. Bunun yerine, NFS ile çalışmak için ayrı bir protokol oluşturuldu; gelecekte dosya erişimi sağlama yönteminin değiştirilmesi gerekiyorsa, NFS’de değişiklik yapılması gerekmeyecekti. Bu ayrı mekanizmaya Mount Protokolü denir. İşlevsel olarak farklı olsa da, Mount’ın genel NFS paketinin bir parçası olarak kabul edildiğini unutmayın.

“Mount” terimi aslında fiziksel bir depolama hacminin kullanılabilir hale getirilmesi anlamına gelen bir donanım terimine benzer. “Olden dayse” ‘da depolama aygıtları genellikle çıkarılabilir disk paketleridir ve onu kullanmak için sürücü ünitesine monte ettiler. Benzer şekilde, NFS kaynakları, paylaşılan dosya sistemini istemciye uygun kılan Mount protokolü kullanılarak mantıksal olarak bağlanır. Daha sonra bir dosya açılabilir ve bir dosya tanıtıcısı NFS istemcisine geri gönderilebilir, böylece dosyaya okuma ve yazma gibi işlemler için başvuruda bulunabilir.

Mount ve NFS arasındaki temel fark, basitçe Mount’un dosya erişim işlemleri yerine dosya sistemlerini açma ve kapama ile ilgili prosedürleri tanımlamasıdır.

NOT : NFS sürüm 4, dosya bağlama işlemlerini doğrudan NFS’ye dahil eden ayrı bir Mount protokolü kavramını ortadan kaldırır.

Örnek NFS sunucu ve Client yapılandırması

  • NFS Server IP : 192.168.100.10
  • NFS Client IP : 192.168.100.11

Aşağıdakiler nfs-utils paketinden bulunan önemli NFS servisleridir.

  • rpcbind : RPC program numaralarını universal adreslere dönüştürür.
  • nfs-server : Clientlerin NFS paylaşımlarına erişmesini sağlar.
  • nfs-lock / rpc-statd : NFS file locking. Bir NFS sunucusu çöktüğünde ve yeniden başlatıldığında file lock recovery yapılmasını sağlar.Sadece sunucuda çalıştırılması yeterlidir.
  • nfs-idmap : Kullanıcı ve grup kimliklerini isimlere, kullanıcı ve grup adlarını idlere(kimliklere) çevirir.

NFS sunucusunu ve clientleri ayarlamak için çoğunlukla aşağıdaki yapılandırma dosyaları üzerinde çalışıyor olacaksınız.

  • /etc/exports : Ana yapılandırma dosyasıdır, hangi dosya sistemlerinin uzak ana bilgisayarlara(clientlara) verileceğini kontrol eder ve seçenekleri belirtir.
  • /etc/fstab : Bu dosya, sistem önyüklenirken NFS dizinleri dahil olmak üzere hangi dosya sistemlerinin mount edildiğini kontrol etmek için kullanılır.
  • /etc/sysconfig/nfs : Bu dosya, gerekli RPC hizmetlerinin hangi portlarda çalıştığını kontrol etmek için kullanılır.
  • /etc/hosts.allow ve /etc/hosts.deny : Bu dosyalara TCP wrappers denir, NFS sunucusuna erişimi kontrol eder. NFS tarafından başka bir IP adresinden gelen bir bağlantının kabul edilip edilmeyeceğine karar vermek için kullanılır.
  1. NFS paketlerini NFS sunucusuna kurmamız için aşağıdaki komutu kullanabiliriz.

yum install nfs-utils libnfsidmap
  1. Paketler yüklendikten sonra NFS hizmetlerini etkinleştirin ve başlatın.

systemctl enable rpcbind
systemctl enable nfs-server

systemctl start rpcbind
systemctl start nfs-server
systemctl start rpc-statd
systemctl start nfs-idmapd
  1. Şimdi, clientlerle paylaşmak için sunucuda bir dizin oluşturalım. Burada “/” bölümünde “nfsfileshare” isimli yeni bir dizin oluşturacağım.

Not: Mevcut dizinizide NFS ile de paylaşabilirsiniz.


mkdir /nfsfileshare
  1. Oluşturulan dizine herkes için okuma ve yazma izni verin.

chmod 777 /nfsfileshare/
  1. /etc/exports dosyasına paylaşmak istediğimiz dosya ile ilgili bilgileri yazıyoruz.

(root@localhost ~)# cat /etc/exports
/nfsfileshare 192.168.100.11(rw,sync,no_root_squash)
  • /nfsfileshare : paylaşılan dizin
  • 168.100. 11 : Client makinesinin IP adresi. IP adresi yerine hostname adını da kullanabiliriz. Ayrıca 192.168.12.0/24 gibi alt ağa sahip istemciler aralığını tanımlamak da mümkündür. * koyarak herekesede izin verebiliriz.
  • rw : Paylaşılan klasöre yazma izni
  • ro: sadece okuma..
  • sync : Senkron dosya paylaşımı gerçekleştirileceğini belirtir. Senkron kullanımında istemcinin yazma işleminin bitmesi beklendikten sonra veriler sunucunun diskine yazılır (işlenir). Bu sebeple kontrollü ve yavaş olmasına rağmen daha güvenilir ve veri kaybını azaltıcı bir seçenektir. Varsayılan senkronizasyon seçeneğidir.
  • async : Asenkron dosya paylaşımı gerçekleştirileceğini belirtir.
  • root_squash : Bağlantı kuracak istemci üzerinden, paylaşılan dizinlerde (“rw” yetkisi etkinleştirilmişse) “root” izni ile dosya oluşturulamaması/erişilememesi sağlanır. Bu parametrenin etkinleştirilmesi sayesinde, istemci tarafında paylaşıma “root” yetkisi ile bağlanıldığında, NFS kurulu sunucuda bu kullanıcı “nobody” adlı kullanıcıya çevrir yani istemcinin “root” kullanıcısının yetkisini ezerek, hedef NFS paylaşımına en az yetkili kullanıcı ile bağlanılmasını sağlar. Varsayılan istemci kullanıcı yetkisini ezme seçeneğidir.
  • no_root_squash : nfs client’ların export edilen dizinlere, root yetkisi ile erişmesini sağlamaktadır. Bu nedenle, NFS sunucunuzu public bir ortamda kullanmak istiyorsanız güvenlik nedenlerinden ötürü bu parametreyi kullanmanız önerilmez. Yukarıda değinilen sebeplerle, no_root_squash parametresini kullanmak istememeniz durumunda, export ettiğiniz dizine rw (read-write) yetkisi vermiş olsanız bile, clientlar okuma işlemini yapabilecek ama yazamayacaklardır.  Bunun nedeni ise, clientların kullanıcılarının, server tarafından default olarak nfsnobody isimli yetkisiz kullanıcıya set edilmesidir. Bu durumda, nfs üzerinden erişilen dizinlere direk olarak yazma işlemi yapılamaz.
    Eğer no_root_squash parametresini kullanmak istemiyor ama bir yandan da NFS clientların paylaşımdaki dizinlere yazabilmesini istiyorsanız izleyebileceğiniz iki yol var; Birincisi exports edilmiş dizinin permission’ını 777 olarak belirlemek. u şekilde ilgili dizine herkes yazabileceğinden nfsnobody kullanıcısı da yazabilecektir. İkinci yöntem ise ilgili dizinin owner’ını nfsnobody olarak set etmektir.
  • all_squash : Bağlantı kuracak istemci üzerinden, paylaşılan dizinlerde (“rw” yetkisi etkinleştirilmişse) hangi kullanıcı ile bağlanılırsa bağlanılsın, ilgili kullanıcının (“root” dahil) izni ile dosya oluşturulamaması/erişilememesi sağlanır. Yani, istemciden bağlanan tüm kullanıcılar sunucu tarafında anonim kullanıcı olarak değerlendirilir.
  • squash_uids 0,10-30,1000-2000, squash_gids 0,50,200-220 : Bağlantı kuracak istemci üzerinden, paylaşılan dizinlerde (“rw” yetkisi etkinleştirilmişse) belirtilen kullanıcıların kendi izinleri ile dosya oluşturulamaması/erişilememesi sağlanır. Yani, istemciden bağlanan belirli kullanıcı veya grup ID’leri/ID aralıkları sunucu tarafında anonim kullanıcı olarak değerlendirilir.
  1. Aşağıdaki komutu kullanarak paylaşılan dizinleri listeleyebiliriz.

exportfs –r
  • exportfs -v : Sunucudaki paylaşım dosyalarının bir listesini ve opsiyonları görüntüler
  • exportfs -a : Paylaşılan tüm dizinleri gösterir
  • exportfs -u : Tüm paylaşılan dizinleri serbest bırakır. tüm NFS görevlerini tutarken NFS dosya paylaşımını askıya alır. NFS paylaşımını yeniden etkinleştirmek için exportfs -r yazın.
  • exportfs -r : /etc/exports dosyası yeniden okunarak tüm değişiklikleri listeler
  1. Clientlerin NFS paylaşımlarına erişmesine izin vermek için güvenlik duvarını NFS sunucusunda yapılandırmamız gerekir. Bunu yapmak için, NFS sunucusunda aşağıdaki komutları çalıştırın.

firewall-cmd --permanent --zone public --add-service mountd
firewall-cmd --permanent --zone public --add-service rpc-bind
firewall-cmd --permanent --zone public --add-service nfs
firewall-cmd --reload

Firewall’u kapatmak istersek


systemctl stop firewalld
systemctl disable firewalld
  1. Uzak dosya sistemini bağlamak için NFS cliente NFS paketleri kurmalıyız, aşağıdaki komutu kullanarak NFS paketleri kurmalıyız.

yum -y install nfs-utils libnfsidmap

Paketler yüklendikten sonra NFS servisini etkinleştirin ve başlatın.


systemctl enable rpcbind
systemctl start rpcbind
  1. NFS paylaşımını bağlamadan önce, NFS sunucusundaki kullanılabilir paylaşımları kontrol etmemiz gerekir. Bunu yapmak için, cliente aşağıdaki komutu çalıştırın.

showmount -e 192.168.100.11
Export list for 192.168.100.11:
/nfsfileshare 192.168.100.10

NOT : “showmount –e” komutu yerel makinenizdeki mevcut paylaşımları gösterir. “showmount -e <server-ip or hostname>” komutu ise uzak sunucudaki kullanılabilir paylaşımları listeler

  1. Şimdi, daha önce sunucuda yarattığımız ‘/nfsfileshare’ paylaşılan klasörünü bağlamak için bir bağlama dizini oluşturun.

mkdir /mnt/nfsfileshare
  1. Aşağıdaki komutla paylaşılan dizini mount edelim.

mount 192.168.12.5:/nfsfileshare /mnt/nfsfileshare
  1. Mount edilen dizini aşağıdakiler gibi sorgulayabiliriz.

mount | grep nfsfileshare
192.168.100.10:/nfsfileshare on /mnt/nfsfileshare type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.100.11,local_lock=none,addr=192.168.100.10)

df -hT | grep nfsfileshare
192.168.100.10:/nfsfileshare nfs4 50G 858M 50G 2% /mnt/nfsfileshare
  1. Paylaşılan dizinleri makine reboot sonrası otomatik olarak mount etmek için /ets/fstab dosyasına aşağıdaki satırı eklyoruz.

cat /etc/fstab | grep nfsfileshare
192.168.100.10:/nfsfileshare/ /mnt/nfsfileshare nfs rw,sync,hard,intr 0 0
  1. Dosya paylaşımını yaptıktan sonra bu paylaşılan dizini istemci sunucunuzdan çıkarmak istiyorsanız, “umount” komutunu kullanarak söz konusu dizinin bağlantısını kaldırabilirsiniz.

umount /mnt/nfsfileshare

Mustafa Bektaş Tepe
İyi Çalışmalar

1,609 total views, 6 views today


systemctl


systemd, Linux için bir sistem ve servis yöneticisidir ve SystemV ve Upstart’ın yerini almaktadır. systemd, servis yapılandırmasını ve davranışını Linux dağıtımları arasında birleştirmeyi amaçlar.
Systemd’nin amacı; bilgisayardaki sistem ve servislerin çalışmasını organize etmektir. Yani modern linux işletim sisteminde başlama (startup) ve sunucu (server) proseslerini yöneten sistem olarak systemd sistem kaynaklarının, arkaplan (daemon) ve diğer süreçlerin (process) etkinleştirilmesi için bir mekanizma sağlar. Bu yönetimi, systemctl, journalctl, notify, analyze, cgls, cgtop, loginctl ve nspawn olarak adlandırılan araçlar sayesinde gerçekleştirir.

Arkaplan süreçleri (daemons) adından da anlaşılabileceği gibi başlatıldıklarında görevlerini yürütmek üzere arka planda bekler veya çalışırlar. Bu süreçler tipik olarak işletim sistemi yüklenirken (boot) başlatılırlar ve sistem kapatılana ya da manuel olarak durdurulana kadar arkaplanda (background) çalışmayı sürdürürler. Genel bir ilke olarak arkaplan süreç adları genellikle d harfi ile sonlanır (sshd – ssd deamon gibi).

Systemd ortamında aşağıdaki kavramlar yaygın olarak kullanılır:
• Daemon: başlatıldıklarında görevlerini yürütmek üzere arka planda bekleyen veya çalışan süreçler.
• Socket: Bağlantıları dinlemek için arkaplan süreçleri tarafından kullanılır. Yerel ve uzak istemciler için ana iletişim kanalıdır. Süreçler tarafından yaratılırlar.
• Service: Genellikle bir ya da daha çok sayıda arkapan sürecine işaret eder Servisi başlatma/durdurma işlemi genellikle sistem durumunda (state) kalıcı bir değişikliğe neden olur.

Eskiden init dediğmiz ve işletim sistemi kernel yüklemesinden sonra çalışan ve PID (Process ID) 1 olan süreçlerle yönetilmekte idi. Çekirdek kendini başlattığı (belleğe yüklendiği, çalışmaya başladığı ve aygıt dosyaları, veri yapıları ve benzeri şeyleri başlattığı zaman) ve kullanıcı seviyeli bir program olan initsürecini başlattığında, kendi üstüne düşen açılış işlemlerini bitirmiş olur. Bundan dolayı init her zaman için ilk süreçtir ve süreç numarası da daima 1’dir. init süreci /etc/inittab dosyasını okuyup sistemin hangi Run Level’dan başlayacağına karar verirdi. Aşağıda /etc/inittab dosyasından bir kesit sunulmaktadır.


# Default runlevel. The runlevels used by RHS are:
# 0 – halt (Do NOT set initdefault to this)
# 1 – Single user mode
# 2 – Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 – Full multiuser mode
# 4 – unused
# 5 – X11
# 6 – reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

Buradaki id:3:initdefault: satırı bizim işletim sistemimizin RunLevel 3 ‘den başlayacağını göstermektedir. Red Hat sistemlerde RunLevel’lar

• 0 – halt (Sistemi kapatmak –poweroff veya halt- için kullanılan runlevel)
• 1 – Single user mode (Sistemi kurtarmak için kullanılan ve network ayarlarının aktive edilmediği tekli kullanıcı mode’u. Bazı yerlerde S veya s olarak da adlandırılır.
• 2 – Multiuser NFS olmadan çoklu kullanıcı mode’u (Bu runlevel 3. Runlevel ile genel olarak aynıdır. Tek fark network ayarlarını içermemesidir.)
• 3 – multiuser mode (Network ayarlarını nda aktive edildiği ve genellikle kullanılan RunLevel’dır.
• 4 – kullanılmıyor.
• 5 – X11 (Runlevel 3 e ek olarak görsel ekranın- ki biz buna X veya X11 de deriz- da başlatıldığı runlevel. Runlevel 3’den sonra en çok tercih edilen runlevel’dır.)
• 6 – reboot (Sistemin kapatılıp tekrar açıldığında kullanılan RunLevel’dır.

İnit süreci ön tanımlı runlevel’ı ayarladıktan sonra sistemde /etc/rc.d/init.d/ altında bulunan ve rpm paketleri içinde gelen servis scriptlerini (bunlar bir shell scripttir!) çalıştırır. Örnek olarak eğer runlevel 3 de isek ve sshd servisi çalışacaksa bunun başlangıç scripti /etc/rc.d/init.d/sshdaltında yer almakta. Bunun runlevel 3 de çalışmasını da /etc/rc.d/rc3.d/S55sshd scripti sağlamakta idi. Buradaki S harfi bunun start edilleceği, 55 ise başlangıç sırasını belirtmektedir.


# ls -la /etc/rc.d/rc3.d/S55sshd lrwxrwxrwx 1 root root 14 Jun  6  2011 /etc/rc.d/rc3.d/S55sshd -> ../init.d/sshd


Linux sistemlerde yaygın olarak kullanılmaya başlayan systemd 30 Mart 2010’da Lennart Poettering ve Kay Sievers tarafından init sisteminin alternatifi olarak yazıldı. Bu yapı yeni Linux sistemleri ile (RedHat tabanlı sistemlerde RHEL 7 ile, SLES’de SLES 12 de, Debian da Debian 8 ile) yerini systemd ye bıraktı. Her ne kadar systemd üzerinde tartışmalar devam etse ve bazıları UNIX felsefesine aykırı da bulsa systemd’nin önümüzdeki yıllarda daha fazla kabul göreceği de düşünürsek systemd’yi önyargısız olarak inceleyip,öğrenmekte fayda var.

systemd, işlemlerini derlenmiş binary programlarla yapar. Kullanıcının müdahalesine pek müsaade etmez. Bir takım parametreleri kontrol etmenize izin verilse de genelde işlemler önceden ayarlanmıştır. systemd öncesinde kullanılan hizmet programları (Upstart veya sysvinit), uyguladıkları prosedürleri kabuk -shell- aracılığıyla yaparlar. Bu sebeple, kullanıcıların, kabuk -shell- kullanarak kişisel ayarlamalar yapabilme imkanı vardır. systemd ise kabuk üzerinden işlem yapmaz. Bu nedenle, fayda ve mahzurları üzerinde çok tartışılmaktadır. Açık kaynak kodlu, özgür yazılım mantığına ters olduğu için kabul etmeyenler, systemd programının, windows svchost.exe olmaya aday olduğu belirtmektedir. Kullanılabilir bularak, tercihli veya varsayılan olarak dağıtımlara dahil edenler de bulunmaktadır.

Servis Yönetimi

Systemd için gerçekleştirilecek işlemlerin çoğu unit adı verilen elemanlarla ilgilidir. Unit elemanları, systemd nin anlayacağı şekilde yapılandırılmış dosyalardır. Her bir unit elemanı, sonuna . nokta işaretinden sonra verilen uzantı kullanılarak gruplandırılır. Bu sayede bir unit elemanının hangi işlev ile ilgili olduğu temsil edilir.

Unit file default olarak “/etc/systemd/system/” dizini altında bulunur. Bu dizinlerde birbirinden farklı uzantılara sahip bir çok dosya vardır. Bu uzantılar birbirinden farklı unit tiplerini gösterir. .service uzantısına sahip dosyalar servislere ait unit dosyaları tutar. .target uzantılı dosyalar site bir çok service unit’nin gruplanmış halini gösterir. .mount uzantılı dosyalar sisteme mount edilmesi istenilen disk bölümlerini için tanımlanmış configleri gösterirken. .swap uzantılı dosyalar ise swap alanları için yapılandırma dosyalarını içerir.

Örneğin, mysqld.service unit elemanı MySQL hizmeti ile ilgilidir. tmp.mount unite elemanı ise tmp disk bölümünün mount edilmesi ile ilgili bir elemandır. Komutları kullanırken sonu .service ile biten elemanların .service kısmını yazmasanız da systemd bunu anlayacaktır. Ancak .mount veya .path vb. unit elemanların uzantısını mutlaka yazmanız gerekir. Konvansiyonu takip etme açısından her zaman .service kısmını da yazmanızı tavsiye ediyoruz. TAB otomatik tamamlama işlevi zaten baş kısmını yazdığınız unit elemanının gerisini kendisi tamamlayacaktır.


(root@localhost ~)# systemctl -t help
Available unit types:
service
socket
busname
target
snapshot
device
mount
automount
swap
timer
path
slice
scope

Mevcut unit tiplerini listelemek için aşağıdaki komutu kullanın:

Servisleri Başlatma ve Durdurma

• Bir systemd servisini başlatmak ve o servise ait unit dosyasında bulunan kuralları çalıştırmak için start komutunu kullanıyoruz. Verdiğimiz komut sistemin çalışma durumunu etkileyeceğinden başına sudo eklemek gerekecektir. Zaten root kulanıcısı ile oturum açtıysanız sudo ifadesine gerek yoktur.


sudo systemctl start application.service

Yukarıda bahsettiğimiz konuyu tekrar hatırlatalım. Buradaki örnekte görülen application.serviceifadesindeki .service kısmını yazmasanızda komut çalışacaktır.


sudo systemctl start application

• Sisteminizde mevcut durumda halen çalışan bir servisi durdurmak için stop komutunu kullanıyoruz.


sudo systemctl stop application.service

• Bir servis mevcut durumda çalışıyorsa ve tekrar başlatmak istersek restart komutunu kullanabilirsiniz.


sudo systemctl restart application.service

Çalışan bir servis ile ilgili ayar dosyalarında bir değişiklik yaptınız ancak servisi tamamen yeniden başlatmaya gerek kalmadan, ayarların etkin olmasını isterseniz reload komutunu kulanabilirsiniz.


sudo systemctl reload application.service

• Yeniden başlatacağınız servisin reload kabiliyeti olmayabilir. Reload işe yaramaz ve restart yapmanız gerekebilir. Bu durumdan emin değilseniz reload-or-restart komutunu da kullanabilirsiniz. Bu durumda servis reload yapabiliyorsa yapar. Böyle bir durum yoksa o zaman otomatik olarak restart yapar.


sudo systemctl reload-or-restart application.service

• Bir servisin durumunu, çalışıp çalışmadığını status komutunu kullanarak kontrol edebilirsiniz.


systemctl status application.service

Bu komut size servisle ilgili durum bilgisi ve en son olay log bilgilerini verecektir. Herhangi bir problem varsa, yine bu çıktı sayesinde görebilirsiniz.

• Şu an çalışılan oturumda, bir servisin çalışıp çalışmadığını is-active parametresini kullanarak görebilirsiniz. Yukarıdaki status komutu kadar detaylı bilgi vermez.


systemctl is-active application.service

• Bir servisin hata verip vermediğini anlamak için is-failed parametresini de kullanmanız mümkündür.


systemctl is-failed application.service

Servisi Aktif ve Pasif Duruma Getirme

• Öncelikle, bir servisin sisteminiz açılırken başlamamaya ayarlandığını farz edelim. Bu servisi, bilgisayar her açıldığında başlayacak şekilde ayarlamak için enable komutu kullanabiliriz. Yani aktif hale getiririz. Aktif hale getirmek, her sistem açıldığında başlaması anlamına gelmektedir. Aşağıda bu duruma örnek verilmiştir.


sudo systemctl enable application.service

• Bir servisi, bilgisayar başlangıcında çalışmaması için ayarlamak istediğimizde ise disable komutunu kullanırız.


sudo systemctl disable application.service

NOT : Bu komut, enable komutu ile oluşturulan symbolic link dosyasını silecek ve servisi pasif hale getirecektir.
• Bir servisin, bilgisayar açılırken başlayıp başlamadığını öğrenmek isterseniz is-enabled parametresini kullanabilirsiniz.


systemctl is-enabled application.service

Sistem Genel Durumunu Gözden Geçirme

• Sistemimizde şu an için çalışan ve yüklenmiş servisleri görmek için aşağıdaki komutu kullanabilirsiniz.


systemctl list-units

Bu komut ile, systemd tarafından başlatılmış olan hizmetlerin özet bilgisini görebilirsiniz. Aşağıda örnek çıktı ve sütun açıklamaları bulunmaktadır.


UNIT                                      LOAD   ACTIVE SUB     DESCRIPTION
atd.service                               loaded active running ATD daemon
avahi-daemon.service                      loaded active running Avahi mDNS/DNS-SD Stack
dbus.service                              loaded active running D-Bus System Message Bus
dcron.service                             loaded active running Periodic Command Scheduler
dkms.service                              loaded active exited  Dynamic Kernel Modules System
getty@tty1.service                        loaded active running Getty on tty1
. . .
Sütunlar Açıklamalar
UNIT: Systemd unit elemanının adını belirtir.
LOAD: Unit elemanının sistem hafızasına yüklenip yüklenmediğini gösterir.
ACTIVE: Bir unit elemanının başarıyla başlatılıp başlatılmadığını gösterir.
SUB: Alt seviye durum bilgisidir. Bazı servisler bilgisayar başlangıçında çalışıp otomatik kapanabilirler. Bu tür servisleri exited (çalıştı ve çıkış yapıldı) olarak görebilirsiniz. Halen çalışıyorsa running ifadesiyle gösterilirler.
DESCRIPTION: Durumu gösterilen ünitenin kısaca ne işe yaradığını özetler.

 

NOT : Yukarıdaki komut (systemctl list-units) sadece aktif halde olan servisleri gösterdiğinden doğal olarak LOAD sütunu daima loaded bilgisini gösterecektir. Loaded yani yüklenmiş servisler haricinde diğer servisleri görmek için demek ki ayrıca bir takım parametreler daha belirtmemiz gerekmektedir. Bunun için ayrı parametre belirtmek gerektiğinden aslında varsayılan durum list-units parametresini kullanmaya gerek bile yoktur. Sadece systemctl komutunu vermek ile systemctl list-units komutunu vermek aynı işe yarar.

• systemctl komutuna sistemimizde bulunan, ister çalışsın ister çalışmasın, systemd tarafından işlem yapılan tüm ünite elemanlarını listelemesini söylemek için –all parametresini verebiliriz.


systemctl list-units --all

Karşımıza gelecek çıktıyı filtrelemek için bir kaç parametre daha kullanabiliriz. Bunlardan bir tanesi –state filtresidir. Aşağıdaki örnekte, state yani durum bilgisi inactive (pasif) olan tüm elemanlar gösterilmektedir. –state parametresine, LOAD, ACTIVE ve SUB sütunlarının alabildiği durumları kriter olarak girebilirsiniz. Burada –all kriterinin daima var olduğuna dikkat edin. Önce hepsi ele alınıp bu liste üzerinden filtreleme yapılmaktadır.


systemctl list-units --all --state=inactive
systemctl list-units --all --state=active
systemctl list-units --all --state=running
systemctl list-units --all --state=exited

• Başka bir filtreleme yöntemi ise –type filtresidir. Tipi service olan ünite elemanları listelemek için –type=service kriteri girilebilir.


systemctl list-units --type=service

• Bir servise bağlı bağımlılıkları görmek isterseniz aşağıdaki komutu kullanabilirsiniz.


root# systemctl list-dependencies sshd
 
sshd.service
├─sshd-keygen.service
├─system.slice
└─basic.target
  ├─firewalld.service
  ├─microcode.service
  ├─rhel-autorelabel-mark.service
  ├─rhel-autorelabel.service
  ├─rhel-configure.service
  ├─rhel-dmesg.service
  ├─rhel-loadmodules.service
  ├─paths.target
  ├─slices.target
  │ ├─-.slice  

• Aşağıdaki komut kullanarak bir servise ait konfigurasyon dosyasının içeriğinin bir listesini görebilirsiniz. Bir başka seçenek ise konfigurasyon dosyalarını bulup cat komutu ile bakabilirsiniz.


root# systemctl show sshd.service

Id=sshd.service
Names=sshd.service
Requires=basic.target
Wants=sshd-keygen.service system.slice
WantedBy=multi-user.target
ConsistsOf=sshd-keygen.service
Conflicts=shutdown.target
ConflictedBy=sshd.socket
Before=shutdown.target multi-user.target 

NOT 1: Sistem servislerini yönetmek için kullanılan komutlar eskiden (RHEL 7 öncesi) chkconfig ve service komutları idi. Chkconfig bir servisi enable/disable etmek için kullanılırken, service komutu ilgili servisi start/stop/restart işlemleri için kullanılırdi. Yani ilgili runlevel’da bir servisi açıp,kapamak için chkconfig komutu kullanılırken ayrıca bir de service komutu ile servisi start etmek gerekiyordu. Systemd ile gelen tek bir komutla yanı systemctl komutu ile artık bu iki işlev birleştirildi. Yani artık servislerin enable,disable edilmesi ve stop/start işlemleri systemctl komutu ile yapılabilir hale geldi.
Eski yapı ile yenisini karşılaştırırsak benim gibi eskiyi bilenler için anlaması daha kolay olacaktır.

service systemctl Açıklama
service name start systemctl start name.service Servisi başlatır.
service name stop systemctl stop name.service Servisi durdurur.
service name restart systemctl restart name.service Servisi restart eder.
service name condrestart systemctl try-restartname.service Servis eğer başlatılmışsa restart eder.
service name reload systemctl reload name.service Servisi reload eder (-1 sinyali)
service name status systemctl status name.service  veya systemctl is-activename.service Servis çalışıyor mu diye kontrol eder.
service –status-all systemctl list-units –type service –all Bütün servisleri (her bir servisin bir unit dosyası olduğunu unutmayalım) listeler.

 

chkconfig systemctl Açıklama
chkconfig name on systemctl enablename.service Servisi enable eder.
chkconfig name off systemctl disablename.service Servisi disable eder.
chkconfig –list name systemctl statusname.service  veya systemctl is-enabledname.service Bir servis enable edilmiş mi sorgular.
chkconfig –list systemctl list-unit-files –type service Bütün servisleri listeler.

 

NOT 2 : System yapısı ile artık runlevel’lar yeni bir isim aldı. Değişik servislerin birleşmesi ile oluşan runlevel’lara artık target ismi verilmektedir. Bu runlevel’ların geriye dönük isimlendirilmeler korunsa da uzun vadede bu takma adlar (aliaslar) kaldırılacaktır. Eskiden 0-6 arası runlevel’lar varken yeni yapıdaki target’lar şu şekildedir.

Runlevel Target Unit Açıklama
0 runlevel0.target,poweroff.target Poweroff target
1 runlevel1.target, rescue.target Rescue yani kurtarma target’ı
2 runlevel2.target, multi-user.target Çoklu kullanıcı target’ı (runlevel2,runlevel 3 ve 4 aynı).
3 runlevel3.target, multi-user.target Çoklu kullanıcı target’ı (runlevel2,runlevel 3 ve 4 aynı).
4 runlevel4.target, multi-user.target Çoklu kullanıcı target’ı (runlevel2,runlevel 3 ve 4 aynı).
5 runlevel5.target,graphical.target Grafik ekranın başlatıldığı target.
6 runlevel6.target, reboot.target Reboot target.

Öntanımlı sistemin çalıştığı target’I sorgulamak için:


# systemctl get-default
graphical.target

Reboot sırasında sistemin sıfırdan açıldığı target değiştirmek için (aslında yapılan bir link işlemi)
systemctl set-default multi-user.target

Sistem çalışırken bir anda farklı bir target’a geçmel için ( eskiden init 3 ile yapılan işlem)
systemctl isolate multi-user.target
Ayrıca bunlara ek olarak systemctl poweroff, systemctl reboot , systemctl halt komutları da kullanılmaktadır. Zaten bu 3 komutta artık systemctl komutuna bir linktir.

Referanslar
https://www.freedesktop.org/wiki/Software/systemd/
http://linux.yorenet.com/?hn=668
https://sudo.ubuntu-tr.net/systemd-kilavuzu-1
https://www.cozumpark.com/linux-sistemlerde-systemd-nedir/

Yazar : Mustafa Bektaş Tepe
Java & Oracle

977 total views, 9 views today


  • Copyright © 1996-2010 Bilgisayar Mühendisinin Notları. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress