6 Aralık 2024 Cuma

Ev atölyesi için alan adı sunucusu ayarlanması

 #!/bin/bash

# Check if the script is run as root
if [[ $EUID -ne 0 ]]; then
    echo "Bu scripti çalıştırmak için root kullanıcısı olmalısınız." >&2
    exit 1
fi

# Update system and install BIND
echo "BIND yükleniyor..."
dnf update -y
dnf install -y bind bind-utils

# Configure firewall for DNS
echo "Firewall ayarları yapılıyor..."
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload

# Configure SELinux
echo "SELinux ayarları kontrol ediliyor..."
setsebool -P named_write_master_zones 1
setsebool -P named_tcp_bind_http_port 1

# Configure named.conf
echo "named.conf dosyası yapılandırılıyor..."
cat > /etc/named.conf <<EOF
options {
    listen-on port 53 { 127.0.0.1; 192.168.251.80; };
    listen-on-v6 port 53 { ::1; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query     { any; };

    recursion no;

    dnssec-enable yes;
    dnssec-validation yes;

    bindkeys-file "/etc/named.root.key";
    managed-keys-directory "/var/named/dynamic";
    session-keyfile "/run/named/session.key";
};

zone "example.lab" IN {
    type master;
    file "example.lab.db";
};

zone "." IN {
    type hint;
    file "named.ca";
};
EOF

# Configure zone file for example.lab
echo "DNS zone dosyası oluşturuluyor..."
cat > /var/named/example.lab.db <<EOF
\$TTL 86400
@   IN  SOA ns1.example.lab. root.example.lab. (
        2023120601  ; Serial
        3600        ; Refresh
        1800        ; Retry
        604800      ; Expire
        86400       ; Minimum TTL
)
    IN  NS  ns1.example.lab.

ns1         IN  A   192.168.251.80
bmc         IN  A   192.168.251.80
san         IN  A   192.168.251.85
san         IN  A   10.255.255.85
san         IN  A   172.16.255.85
node1       IN  A   192.168.251.81
node2       IN  A   192.168.251.82
node3       IN  A   192.168.251.83
node4       IN  A   192.168.251.84
EOF

# Set proper permissions
echo "Dosya izinleri ayarlanıyor..."
chown root:named /etc/named.conf /var/named/example.lab.db
chmod 640 /etc/named.conf /var/named/example.lab.db

# Enable and start the named service
echo "BIND servisi başlatılıyor..."
systemctl enable named
systemctl start named

# Verify service status
systemctl status named --no-pager

echo "BIND yapılandırması tamamlandı. DNS sunucusu çalışıyor."

7 Kasım 2024 Perşembe

quay ile eğlence

 

postgreql de quayadmin parola değişimi

quaydb=# CREATE EXTENSION pgcrypto;
CREATE EXTENSION
quaydb=# UPDATE "user"
quaydb-# SET password_hash = crypt('quayadmin', gen_salt('bf')), verified = true
quaydb-# WHERE username = 'quayadmin';
UPDATE 1
quaydb=#
 

config.yml

DISTRIBUTED_STORAGE_PREFERENCE: ["local_storage"]
DISTRIBUTED_STORAGE_CONFIG:
  local_storage:
    - LocalStorage
    - storage_path: /opt/quay/storage
DB_URI: "postgresql://quayuser:quaypass@192.168.251.94:5432/quaydb"
DB_CONNECTION_ARGS:
  autorollback: true
DATABASE_SECRET_KEY: quaypasssevretpak
SERVER_HOSTNAME: "quay.local.lab"
BUILDLOGS_REDIS:
  host: "192.168.251.94"
  password: "redispass"
  port: 6379
USER_EVENTS_REDIS:
  host: "192.168.251.94"
  port: 6379
  password: "redispass"
HOSTNAME: "quay.local.lab"
PREFERRED_URL_SCHEME: https
SSL_CERTIFICATE: /conf/stack/ssl/ssl.cert
SSL_PRIVATE_KEY: /conf/stack/ssl/ssl.key
SETUP_COMPLETE: true
CREATE_NAMESPACE_ON_PUSH: true
SUPER_USERS:
  - "quayadmin"
FEATURE_MAILING: false

 

 

quay-olustur
¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
#!/bin/bash
REDHAT_USERNAME="redhat@paycore.com"  # Set your Red Hat username
REDHAT_PASSWORD='0Wp#ELCNFc=x!0Bg'  # Set your Red Hat password
QUAY_USERNAME="redhat@paycore.com"  # Set your Quay username
QUAY_PASSWORD='0Wp#ELCNFc=x!0Bg'  # Set your Quay password

LOG_FILE="/var/log/quay-install.log"
QUAY_DIR="/opt/quay"
QUAY_IMAGE="registry.redhat.io/quay/quay-rhel8:v3.12.4-6"
POSTGRES_IMAGE="registry.redhat.io/rhel8/postgresql-13:latest"
REDIS_IMAGE="registry.redhat.io/rhel8/redis-6:latest"

# Log yazma fonksiyonu
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a $LOG_FILE
}

deploy_quay() {
    remove_existing_pod "quay"
    log "Deploying Quay..."
    podman run -d \
        --name quay \
        --restart=always \
        -v ${QUAY_DIR}/config:/conf/stack:Z \
        -v ${QUAY_DIR}/storage:/datastorage:Z \
        -v ${QUAY_DIR}/config:/opt/quay/config:Z \
        -e CONFIG_APP_PASSWORD=quaypass \
        -e DATABASE_SECRET_KEY=quaydatasecret \
        -e SERVER_HOSTNAME="quay.local.lab" \
        -e DB_URI="postgresql://quayuser:quaypass@192.168.251.94:5432/quaydb" \
        -e REDIS_HOST="192.168.251.94" \
        -e REDIS_PASSWORD="redispass" \
        -e SUPER_USERS="quayadmin" \
        -p 80:8080 -p 443:8443 \
        ${QUAY_IMAGE} || {
        log "ERROR: Failed to deploy Quay."
        exit 1
    }
    log "Quay deployed successfully."
}


deploy_quay
exit 0





----------------------------------------------------------------------------------------------
quay için ssl sertifikası üretmek

[root@bastion quay]# cat ssl.sh 

#!/bin/bash


DOMAIN="bastion.local.lab"

CERT_DIR="/quay/config/ssl"

DAYS_VALID=3650


mkdir -p "$CERT_DIR"


# Geçici openssl config dosyası oluşturuluyor

OPENSSL_CNF=$(mktemp)


cat > "$OPENSSL_CNF" <<EOF

[req]

default_bits       = 4096

prompt             = no

default_md         = sha256

req_extensions     = req_ext

distinguished_name = dn


[dn]

C = TR

ST = Malatya

L = Hekimhan

O = MyLab

OU = Dev

CN = $DOMAIN


[req_ext]

subjectAltName = @alt_names


[alt_names]

DNS.1 = $DOMAIN

IP.1 = 10.253.10.10

IP.2 = 10.88.0.1

EOF



# Sertifika ve anahtar oluşturuluyor

openssl req -x509 -nodes -days "$DAYS_VALID" -newkey rsa:4096 \

  -keyout "$CERT_DIR/ssl.key" \

  -out "$CERT_DIR/ssl.cert" \

  -config "$OPENSSL_CNF" -extensions req_ext


# Geçici dosya siliniyor

rm -f "$OPENSSL_CNF"


# Sonuç

if [[ -f "$CERT_DIR/ssl.cert" && -f "$CERT_DIR/ssl.key" ]]; then

    echo "✅ SAN içeren SSL sertifikası başarıyla oluşturuldu:"

    echo "  - $CERT_DIR/ssl.cert"

    echo "  - $CERT_DIR/ssl.key"

else

    echo "❌ Sertifika oluşturulamadı!"

    exit 1

fi


[root@bastion quay]# 


----------------------------------------------------------------------------------------------

 

 

27 Ekim 2024 Pazar

Satellite da ürünleri yansılamak

 Satellite kendi özelliğinde zamanlanmış ürünlerin yansılaması olduğu gibi kendimiz cronjob ilede bunu yapabiliriz. Aşağıdaki scripti oluşturup crona eklememiz yeterli.

¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
#!/bin/bash

KNT=/var/run/reposync.pid
RPLST="/root/bin/reposync.txt"
rm -rf $RPLST

rm -f /root/bin/reposync.txt

hammer  repository list | awk '{print $1}' | sort -n  | grep -v '|' | grep -v 'ID' | tee -a /root/bin/reposync.txt

hammer repository list  | awk '{print $1}' | sort -n | grep -E '[0-9]+$' |  tee $RPLST
if [ ! -f $KNT ]
then
        echo $$ > ${KNT}

        for rn in $(cat $RPLST)
                do
                        echo hammer repository synchronize --id ${rn}
                        hammer repository synchronize --id ${rn}
                        sleep 41
                done


        rm -f ${KNT}
else
        echo baslamis bir islem var
        echo ${KNT} dosyanini kontol edin
fi

¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

 

Bu scripti kullanmamanı nedeni docker repolarını yansılarken limitlere takıldığımdan böyle bir yöntem izledim. Sizlerinde benzer durumunuz varsa sleep 41 kendi ihtiyacınıza göre ayarlamanız gerekiyor. Bu rakamı burada örnek olarak verdim. :=)

30 Eylül 2024 Pazartesi

freeipa ve freeipa-client sertifika problemi RHEL 9

 RHEL 9 güncellemelerinden sonra sssd servisi kullanıcı bilgilerini alamamaktır.

Bunun esas nedeni python3-cryptography paketinin güncellenmesi.
rhel 9 güncellemeleri ile gelen güncel python3-cryptography paket içindeki bazı  özellikler kaldırılmış, bundan dolayı sssd servisi ile ipa-server arasındaki haberleşme sağlanamıyor. Gecici çözüm olarak ipa-client ve python3-cryptography paketinin downgrade edilip, sürümünün kilitlenmesi.
Şayet bir sunucusunuz varsa elle aşağıdaki gibi yapabilirsiniz.

# yum -y install python3-dnf-plugin-versionlock.noarch

# yum -y downgrade ipa-client-4.9.8  python3-cryptography-36.0.1

# dnf versionlock add ipa-client  python3-cryptography


Fakat 10 larce sunucunuz varsa tek tek elle bunları yapmak sıkıcı olacaktır.

Aşağıdaki playbook ile yapabilirsiniz, veya kendinize özel playbook yazabilirsiniz.


---
- name: Manage packages and restart sssd service on RHEL 9
  hosts: all
  become: yes
  vars:
    ipa_client_version: "4.9.8"
    python3_cryptography_version: "36.0.1"

  tasks:

    - name: Check if the system is RHEL 9 or Oracle Linux 9
      ansible.builtin.debug:
        msg: "This playbook only runs on RHEL 9 or Oracle Linux 9 systems."
      when: ansible_distribution_major_version != "9"
      ignore_errors: true

    - name: Exit if not RHEL 9 or Oracle Linux 9
      ansible.builtin.meta: end_play
      when: ansible_distribution_major_version != "9"

    - name: Install python3-dnf-plugin-versionlock
      ansible.builtin.yum:
        name: python3-dnf-plugin-versionlock.noarch
        state: present

    - name: Downgrade ipa-client to version {{ ipa_client_version }}
      ansible.builtin.yum:
        name: ipa-client-{{ ipa_client_version }}
        state: present
        allow_downgrade: yes

    - name: Downgrade python3-cryptography to version {{ python3_cryptography_version }}
      ansible.builtin.yum:
        name: python3-cryptography-{{ python3_cryptography_version }}
        state: present
        allow_downgrade: yes

    - name: Version-lock ipa-client
      ansible.builtin.command:
        cmd: dnf versionlock add ipa-client
        creates: /etc/dnf/plugins/versionlock.list

    - name: Version-lock python3-cryptography
      ansible.builtin.command:
        cmd: dnf versionlock add python3-cryptography
        creates: /etc/dnf/plugins/versionlock.list

    - name: Restart sssd service
      ansible.builtin.service:
        name: sssd
        state: restarted

19 Eylül 2024 Perşembe

Birden fazla ip kullanılan sunucuda çıkış ip adresini değiştirmek

 Bu işlem için bir servis yazıyoruz.

/etc/systemd/system/set-route.service 

--------------------------------------------------------

# cat /etc/systemd/system/set-route.service
[Unit]
Description=Set Default Route with IP 10.62.150.120
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/set-default-route.sh start
ExecStop=/usr/local/sbin/set-default-route.sh stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

--------------------------------------------------------------



# cat /usr/local/sbin/set-default-route.sh

----------------------------------------------------------------------------------------------------------------------------------


#!/bin/bash

# Rota ile ilgili değişkenler
ROUTE_IP="192.168.234.254"
SRC_IP="192.168.234.123"
INTERFACE="eno13"

start_route() {
    # Rota olup olmadığını daha güvenilir bir şekilde kontrol et
    EXISTING_ROUTE=$(ip route show default | grep "via $ROUTE_IP dev $INTERFACE src $SRC_IP")

    if [ -n "$EXISTING_ROUTE" ]; then
        echo "Rota zaten eklenmiş: default via $ROUTE_IP src $SRC_IP dev $INTERFACE"
        exit 0
    else
        echo "Rota ekleniyor: default via $ROUTE_IP src $SRC_IP dev $INTERFACE"
        ip route add default via $ROUTE_IP src $SRC_IP dev $INTERFACE
        if [ $? -eq 0 ]; then
            echo "Rota başarıyla eklendi."
            exit 0
        else
            echo "Rota eklenirken bir hata oluştu."
            exit 1
        fi
    fi
}

stop_route() {
    # Rota var mı kontrol et
    EXISTING_ROUTE=$(ip route show default | grep "via $ROUTE_IP dev $INTERFACE src $SRC_IP")

    if [ -n "$EXISTING_ROUTE" ]; then
        echo "Rota kaldırılıyor: default via $ROUTE_IP src $SRC_IP dev $INTERFACE"
        ip route del default via $ROUTE_IP src $SRC_IP dev $INTERFACE
        if [ $? -eq 0 ]; then
            echo "Rota başarıyla kaldırıldı."
            exit 0
        else
            echo "Rota kaldırılırken bir hata oluştu."
            exit 1
        fi
    else
        echo "Rota zaten yok."
        exit 0
    fi
}

# Betiğin hangi parametreyle çağrıldığını kontrol et
case "$1" in
    start)
        start_route
        ;;
    stop)
        stop_route
        ;;
    *)
        echo "Kullanım: $0 {start|stop}"
        exit 1
        ;;
esac

----------------------------------------------------------------------------------------------------------------------------------



6 Eylül 2024 Cuma

squid kuralları - kali yansılarına izin

 kali siteleri için squid e aşağıdaki kurallar eklenirse kali yansılarına erişim verilmiş olur. Yansıların değişebileceğini unutmayalım.



# Kali sunucumumuz ip adresini belirleyelim. iki tane sunucumuz var
acl kali_sunucularım  src 172.17.1.44  172.44.1.44


# Ubuntu ve Ubuntu depolarına erişim - ubuntu repolarında her şeye izin veriyoruz
acl ubuntu_repos dstdomain archive.ubuntu.com
acl ubuntu_repos dstdomain security.ubuntu.com

# yansılarda sadece kali ile ilgili url lere izin veriyoruz

acl kali_mirror_urls url_regex ^http://elmirror\.cl/kali/.*
acl kali_mirror_urls url_regex ^http://free\.nchc\.org\.tw/kali/.*
acl kali_mirror_urls url_regex ^http://ftp\.acc\.umu\.se/kali/.*
acl kali_mirror_urls url_regex ^http://ftp\.free\.fr/pub/kali/.*
acl kali_mirror_urls url_regex ^http://ftp\.halifax\.rwth-aachen\.de/kali/.*
acl kali_mirror_urls url_regex ^http://ftp\.jaist\.ac\.jp/pub/Linux/kali/.*
acl kali_mirror_urls url_regex ^http://ftp\.ne\.jp/Linux/packages/kali/.*
acl kali_mirror_urls url_regex ^http://ftp\.nluug\.nl/os/Linux/distr/kali/.*
acl kali_mirror_urls url_regex ^http://ftp\.riken\.jp/Linux/kali/.*
acl kali_mirror_urls url_regex ^http://ftp-srv2\.kddilabs\.jp/Linux/packages/kali/.*
acl kali_mirror_urls url_regex ^http://ftp\.yzu\.edu\.tw/Linux/kali/.*
acl kali_mirror_urls url_regex ^http://ftp\.yz\.yamagata-u\.ac\.jp/pub/linux/kali/.*
acl kali_mirror_urls url_regex ^http://http\.kali\.org/kali/.*
acl kali_mirror_urls url_regex ^http://kali\.cs\.nctu\.edu\.tw/kali/.*
acl kali_mirror_urls url_regex ^http://kali\.download/kali/.*
acl kali_mirror_urls url_regex ^http://kali\.mirror\.garr\.it/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.2degrees\.nz/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.accuris\.ca/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.cedia\.org\.ec/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.dkm\.cz/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.globo\.tech/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.kku\.ac\.th/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.neostrada\.nl/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.premi\.st/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.primelink\.net\.id/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.serverion\.com/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.siwoo\.org/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.sjc02\.svwh\.net/kali/.*
acl kali_mirror_urls url_regex ^http://mirrors\.neusoft\.edu\.cn/kali/.*
acl kali_mirror_urls url_regex ^http://mirrors\.ocf\.berkeley\.edu/kali/.*
acl kali_mirror_urls url_regex ^http://mirror\.ufro\.cl/kali/.*
acl kali_mirror_urls url_regex ^http://wlglam\.fsmg\.org\.nz/kali/.*
acl kali_mirror_urls url_regex ^http://xsrv\.moratelindo\.io/kali/.*
 

http_access allow kali_sunucularım  ubuntu_repos

http_access allow kali_sunucularım kali_mirror_urls

...

...
http_access deny all
 


Squid ayarlandıktan sonra Kali linux sistemlerinde aşağıdaki  proxy ayarları yapılması gerekir.


 /etc/environment
dosyasına aşağıdakiler ayarlanır

http_proxy="http://proxy_adresiniz:port"
https_proxy="http://proxy_adresiniz:port"
ftp_proxy="http://proxy_adresiniz:port"
no_proxy="localhost,127.0.0.1,::1"


ubuntu snap için proxy ayarı;
sudo snap set system proxy.http="http://proxy_adresiniz:port"
sudo snap set system proxy.https="http://proxy_adresiniz:port"

sudo snap get system proxy

ubuntu repoları için proxy ayarı

sudo nano /etc/apt/apt.conf.d/999proxies


Acquire::http::Proxy "http://proxy_adresiniz:port";
Acquire::https::Proxy "http://proxy_adresiniz:port";

Ne işe yarar; sar -n DEV

sar -n DEV|awk 'BEGIN{mak=0} !/txpck|x86|CPU|^[ \t]*$/{if (mak