#!/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."
6 Aralık 2024 Cuma
Ev atölyesi için alan adı sunucusu ayarlanması
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
[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]#
2 Kasım 2024 Cumartesi
sonatype nexus kurulumu + nginx proxy ayarlanması
container uygulamaları için yerel repoya ihtiyacınız olursa nexus kullanabilirsiniz.
Aşağıdaki linkteki script rhel9 tabanlı sistemlerde test edilmiştir.
https://github.com/remziakyuz/linux_sistem_yonetim_araclari/tree/main/bash_scriptleri/nexus_kurulumu
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";
-
Systemd ile Linux Sistem Kaynak Yönetimi: RHEL 7/8/9/10 Kapsamlı Rehberi Giriş Modern Linux dağıtımlarının neredeyse tamamı systemd servis...
-
🔒 SSH Servisini OOM Killer'dan Koruma Rehberi 📑 İçerik 1. Giriş 2. OOM Killer Nedir? 3. SSH ve OOM Killer İlişkisi 4. Çözü...
-
RHEL tabanlı her hangi bir sistemde felaket durumunda kurtarma modunda açtığımızda chroot yapmadan önce aşağıdaki bağlantı işlemlerini yapma...