Kategori arşivi: Linux

linux sistemler hakkında sistem yönetimi, sorunlar, görüşler, kurulum örnekleri, konfigürasyonlar, performans ayarları, güvenlik ipuçları ve yapılandırma örnekleri

Debian 11 Üzerine PHP 8.0 Kurulumu

Güncel PHP kullanmak ve yeniliklere hızlı adapte olmak isteyen arkadaşlar PHP sürümlerini 8.0 yapmak isterlerse Debian 11 için aşağıdaki işlemleri yapmaları yeterli olacaktır.

apt -y install lsb-release apt-transport-https ca-certificates 
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Güncel repo dahil edildikten sonra güncelleme komutu verilir.

apt update

Gerekli olan modüllerle birlikte sisteme kurulum gerçekleştirilir.

apt install php8.0
apt install php8.0-{bcmath,bz2,intl,gd,mbstring,mysql,zip,xml,fpm,redis}

Debian 11 Üzerine ConfigServer Security Firewall Nasıl Kurulur?

Genelde cPanel, Directpanel gibi sunucu yönetim araçları içerisinde yer alan firewall yönetimi için kullanılan bir eklentidir, iptables yönetimini basitleştirip işlevselleştirmesi ve yönetim arayüzü olmasıyla bilinir, ayrıca pek çok kendine has özelliği de bulunur. (Blacklist kontrolü ve özel listeler vs)

Unutmayın, yapacağınız yanlış bir yapılandırma sunucunuza erişimi kalıcı olarak kesecektir. Atacağınız adımları dikkatlice atınız.

Bağımlılıkların kurulması

apt-get install e2fsprogs dnsutils libwww-perl libio-socket-ssl-perl libcrypt-ssleay-perl libnet-libidn-perl libio-socket-inet6-perl libsocket6-perl

ConfigServer dosyalarının indirilmesi ve kurulması

cd /opt/
wget http://download.configserver.com/csf.tgz
tar xzf csf.tgz
cd /opt/csf
sh install.sh

Her şey doğru bir şekilde çalıştığına emin olabilmemizi sağlayan perl /usr/local/csf/bin/csftest.pl test betiğini çalıştırıyoruz. Çıktısı aşağıdaki gibi olmalı

Testing ip_tables/iptable_filter...OK
Testing ipt_LOG...OK
Testing ipt_multiport/xt_multiport...OK
Testing ipt_REJECT...OK
Testing ipt_state/xt_state...OK
Testing ipt_limit/xt_limit...OK
Testing ipt_recent...OK
Testing xt_connlimit...OK
Testing ipt_owner/xt_owner...OK
Testing iptable_nat/ipt_REDIRECT...OK
Testing iptable_nat/ipt_DNAT...OK

RESULT: csf should function on this server

Yapılandırma dosyası içerisindeki bütün alarmların kapatılmasını şiddetle öneriyorum, yoksa durup dururken yaptığı her engelleme işleminde mail atacaktır.

sed -i 's/LF_EMAIL_ALERT = "1"/LF_EMAIL_ALERT = "0"/g' /etc/csf/csf.conf
sed -i 's/LF_PERMBLOCK_ALERT = "1"/LF_PERMBLOCK_ALERT = "0"/g' /etc/csf/csf.conf
sed -i 's/LF_NETBLOCK_ALERT = "1"/LF_NETBLOCK_ALERT = "0"/g' /etc/csf/csf.conf
sed -i 's/LF_DISTFTP_ALERT = "1"/LF_DISTFTP_ALERT = "0"/g' /etc/csf/csf.conf
sed -i 's/LF_DISTSMTP_ALERT = "1"/LF_DISTSMTP_ALERT = "0"/g' /etc/csf/csf.conf
sed -i 's/LT_EMAIL_ALERT = "1"/LT_EMAIL_ALERT = "0"/g' /etc/csf/csf.conf
sed -i 's/CT_EMAIL_ALERT = "1"/CT_EMAIL_ALERT = "0"/g' /etc/csf/csf.conf

Değişikliklerin geçerli olması amacıyla yeniden başlatma işlemini yapalım

systemctl restart csf
systemctl restart lfd

Web Arayüzünün Aktif Edilmesi

Yönetim arayüzü ön tanımlı olarak kapalı gelmektedir, aktif etmek amacıyla aşağıdaki işlemleri gerçekleştirin.

nano /etc/csf/csf.conf

dosyasının içerisinde 1995. satırın hemen altında yer alan aşağıdaki ayarları kendinize göre değiştiriniz.

###############################################################################
# SECTION:Integrated User Interface
###############################################################################
# Integrated User Interface. This feature provides a HTML UI to csf and lfd,
# without requiring a control panel or web server. The UI runs as a sub process
# to the lfd daemon
#
# As it runs under the root account and successful login provides root access
# to the server, great care should be taken when configuring and using this
# feature. There are additional restrictions to enhance secure access to the UI
#
# See readme.txt for more information about using this feature BEFORE enabling
# it for security and access reasons
# 
# 1 to enable, 0 to disable
UI = "1"

# Set this to the port that want to bind this service to. You should configure
# this port to be >1023 and different from any other port already being used
#
# Do NOT enable access to this port in TCP_IN, instead only allow trusted IP's
# to the port using Advanced Allow Filters (see readme.txt)
UI_PORT = "7156"

# Optionally set the IP address to bind to. Normally this should be left blank
# to bind to all IP addresses on the server.
#
# If the server is configured for IPv6 but the IP to bind to is IPv4, then the
# IP address MUST use the IPv6 representation. For example 1.2.3.4 must use
# ::ffff:1.2.3.4
#
# Leave blank to bind to all IP addresses on the server
UI_IP = "::ffff:94.130.96.165"

# This should be a secure, hard to guess username
# 
# This must be changed from the default
UI_USER = "mertcan"

# This should be a secure, hard to guess password. That is, at least 8
# characters long with a mixture of upper and lowercase characters plus 
# numbers and non-alphanumeric characters
#
# This must be changed from the default
UI_PASS = "Str0n9_PasSw0rD"

Ardından giriş yapabilmek için IP adresinizi sisteme kayıt edin.

sudo echo "" >> /etc/csf/ui/ui.allow

sudo systemctl restart lfd komutu ile yeniden başlatıp web arayüzüne giriş yapabilirsiniz.

csf web ui giris gorsel

Debian 9 Üzerinde IPv6 Tunnel Oluşturma

Türkiye\’de IPv6 kullanım imkanı olmadığı için Tunnel oluşturmamız gerekmektedir. Mevcut verilen yapılandırma ile bu iş çalışmadığı için aşağıdaki adımları yapmamız gerekiyor.

Ön tanımlı olarak tunnel tanımı

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
        address 2001:470:1f0a:355::2
        netmask 64
        endpoint 216.66.80.30
        local 94.55.144.200
        ttl 255
        gateway 2001:470:1f0a:355::1

Ipv6 Tunnel\’in çalıştırılacağı IPv6 to IPv4 için sit0 ağ ara yüzünü açıyoruz.

ifconfig sit0 up
ifconfig sit0 inet6 tunnel ::216.66.80.30
ifconfig sit1 up
ifconfig sit1 inet6 add 2001:470:1f0a:355::2/64
route -A inet6 add ::/0 dev sit1

Ardından network üzerinde diğer makinelerin IPv6\’dan çıkış yapabilmesi için aşağıdaki adımlar takip edilir. İlk önce radvd kurulumu yapılır.

apt install radvd

IP dağıtımı ve RA işlemleri için aşağıdaki yapılandırma yapılır.

root@debian:~# nano /etc/radvd.conf
interface eth0
{
        AdvSendAdvert on;
        MinRtrAdvInterval 3;
        MaxRtrAdvInterval 10;
        AdvLinkMTU 1480;
        prefix 2001:470:1f0b:358::/64 {
                AdvOnLink on;
                AdvAutonomous on;
        };

        route ::/0 {
        };

        RDNSS 2001:470:20::2 {};

        DNSSL horus.local {
                FlushDNSSL on;
                AdvDNSSLLifetime 10;
        };

};

Mevcut ağ kartımızın üzerine sabit bir IPv6 tanımlaması yapmayı unutmuyoruz.

#IPv6
iface eth0 inet6 static
        address 2001:470:1f0b:358::1
        netmask 64

IPv6 için Türkiye\’de mevcut sağlayıcı bulunmadığı için tunelleme hizmeti Hurricane Electric LLC tarafından sağlanmaktadır.

OpenVPN’de AEAD Decrypt error: bad packet ID Hatası Nasıl Çözülür?

OpenVPN ile VPN işlemi yaptığınızda karşınıza pek çok hata ve uyarı mesajı gelebilir, bunlardan en önemlisi aşağıdaki hatadır, bu hata neticesinde VPN güvenliğiniz olumsuz etkilenebilir. Bu hata özellikle VPN bağlantılarınıza yapılan bir saldırı girişimini de gösterebilir.

AEAD Decrypt error: bad packet ID (may be a replay)

Bu hata yalnızca tünelinizi UDP protokolünde çalıştırırken ortaya çıkar. Elbette, mesajları sessize almak için hem istemci hem de sunucu tarafında aşağıdaki parametreyi kullanabilirsiniz.

--mute-replay-warning

Üşenen biriyseniz bunu yapıp geçersiniz ama VPN\’i kullanan kullanıcılar başınızı ağrıtır. Çünkü bu hata neticesinde VPN\’de aşırı şekilde yavaşlamalar meydana gelir. Ayrıca yapılandırdığınız VPN sunucusu MITM ataklarına karşıda savunmasız olur.

openvpn

Çözüm olarak VPN bağlantısında MTU(Maximum İletim Birimi)ni değiştirmeniz gerekir. paketin internetten geçebileceği değeri belirleyeceğiz, boyutları biraz düşüreceğiz ve sorun ortadan kalkacak ama bu değeri tespit etmemizde gerekiyor. O yüzden önce tespit işlemini yapalım networkümüzde bakalım minimum ve/veya maximum ne kadar yapabiliyoruz. Testini şu şekilde yapabiliriz.

Windows için

ping -n 1 -l 1500 -f 1.1.1.1

Linux için

ping -M do -s 1500 -c 1 1.1.1.1

Ayarlayacağımız MTU için hesaplama yapalım, OpenVPN\’de güvenlik için 41 bayt, tünelleme için 28 bayt yani toplam 69 bayt gerekecek bize. Yukarıdaki komutu çalıştırdığınızda karşınıza çıkacak olan sonuç bu noktada önem arz ediyor ve aşağıdaki gibi bir uyarı ile karşılaşabilirsiniz.

Your packets needs to be fragmented but DF set

Bunu görüyorsanız direk olarak MTU değerini düşürmeye başlayın, ne zaman karşı sunucudan cevap gelirse işte o zaman durun çünkü o MTU değerini kullanacaksınız tabii burada MSS(Maks Segment Boyutu) işin içine girecek ve tespit ettiğimiz MTU değerinden mecburi olarak 40 çıkaracağız.

vpn

Örnek vermem gerekirse ben yaptığım testler sonucunda yanıt aldığım ve sıkıntısız olduğunu gözlemlediğim MTU değeri olarak 1431 kullanacağım. Yukarıda bahsettiğim gibi bu değerden 40 çıkartacağım ve gerçek MTU değeri elime geçmiş olacak.

1431-49=1382 Benim gerçek MTU değerimi oluşturuyor.

En başta ne demiştik, OpenVPN için toplamda 69 bayt gerekiyor bulduğumuz 1382 değerinden 69 çıkartıyoruz. OpenVPN tarafında kullanacağımız değer 1313 oldu.

Şimdi hem istemci hem de sunucuda aşağıdaki değişikliği yapacağız;

mssfix 1313

Kullanıcılara yeni yapılandırma göndermeniz gerekebilir bunu göz önüne alarak değişiklikleri tamamladıktan sonra OpenVPN sunucusunu yeniden başlatın. Ardından en başta bahsettiğimiz hatayı alabilmek amacıyla internet üzerinden büyük dosyaları indirmeye başlayın ve konsoldan OpenVPN olay günlüklerini izleyin, eğer yük altında hala yukarıdaki AEAD Decrypt error: bad packet ID (may be a replay) hatasını gözlemliyorsanız mssfix değerini daha da düşürmeniz gerekecektir.

Son olarak bütün bu işlemleri yaptınız ancak hatalar hala devam ediyorsa, VPN bağlantınızı UDP olarak kullanmayı bırakıp TCP protokolüne geçirin.

Froxlor Sunucu Yönetim Paneli Nasıl Kurulur?

Froxlor çoklu-kullanıcı hizmetlerini yönetmek için kullanılan bir sunucu yönetim paneli. Alan adı hizmetleri, e-posta hesapları ve web sunucusu vb işler için cpanel veya webmine iyi bir alternatiftir.

Özellikleri

  • Oluşturulan alan adları başına SSL tanımlayabilme ve buna bağlı olarak kullanılacak portu seçme imkanı
  • Oluşturulan alan adları başına İP adresi atama ve buna bağlı olarak kullanılacak domaini seçebilme
  • Tüm yönetim işlevleri yanında sisteme Ticket sistemi entegre edilmiştir böylelikle bir sorun oluştuğunda direk olarak sistem yöneticisine kullanıcılar ulaşabilmektedir.
  • Özelleştirilebilir temalar ile kendi temalarınızı oluşturabilirsiniz.
  • Farklı php.ini dosyaları oluşturabilirsiniz. Böylelikle istediğiniz zaman php.ini değiştirerek ayarları hemen aktif edebilirsiniz.
  • Tüm http, e-posta ve ftp trafik logları saklanır ve interaktif grafikler aracılığıyla ile takip edilebilir.
  • web-ftp sayesinde dosya indirme ve gönderme işlemlerini tarayıcı üzerinden kolaylıkla yapabilirsiniz.

Froxlor Nasıl Kurulur?

Froxlor debian sistemler üzerinde sorunsuz çalıştığı bilinmektedir ayrıca test edilmiştir. Sisteminizde Mysql, Apache ve python paketlerinin kurulu olması gerekmektedir.

apt-get -y install apt-transport-https lsb-release ca-certificates gnupg
wget -O - https://deb.froxlor.org/froxlor.gpg | apt-key add -
echo deb https://deb.froxlor.org/debian $(lsb_release -sc) main > /etc/apt/sources.list.d/froxlor.list
apt-get update && apt-get upgrade

Sisteme froxlorun kurulumunu gerçekleştirmemizi sağlayacak paketleri dahil ettik aşağıdaki komut aracılığı ile de yönetim panelini kolay bir şekilde kurabilirsiniz. Gerekli olan paketleri kendisi kuracağını hatırlatırım.

apt-get install froxlor

Sonrasında postfix ayarına geliyor burada Internet Site seçin böylelikle ayarları otomatik olarak yapacak SMTP kurulumları

postfixconfigure1/

Sizden hostname isteyebilir ayarlamasını yapınız türkçe karakter kullanmamaya özen gösterin ardından FTP ayarlamalarını yapmanız için bir ekran gelir. Bu ekrandan standalone yi seçip onaylayın.

proftpdconfiguration1/

Ardından kurulu olan apache üzerinde 000-default.conf dosyasının içini düzenleyelim. Çünkü ön tanımlı olarak /var/www rotasını takip etmiyor olacak.


        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with a2disconf.
        #Include conf-available/serve-cgi-bin.conf

Srdından yeniden başlatmanız yeterli olacak ve panele erişiminiz gelecek. Hata ile karşılaşmayacaksınız.

sudo /etc/init.d/apache2 restart

Artık ip adresinden erişebilirsiniz. Panelinizi kullanmak için /froxlor girmeniz yeterli

froxlor

Start install butonuna basıyoruz kurulum ekranı geliyor ve kurulumu otomatik olarak gerçekleştiriyor.

froxlor

Kurulumun 2.aşamasına geçiş yapıyoruz burada froxlor için mysql ayarlarını vermemiz gerekiyor. Bu aşamada mysql_secure_installation komutu ile SSH üzerinden mysql kurulumu isteyebilir.

froxlor

Bu aşamadan sonra kurulum tamamen bitmiş olacak artık panelinize giriş yapabilirsiniz.

froxlor

Ayarlamış olduğunu kullanıcı adı ile giriş yapıyorsunuz ve artık istediğiniz her şeyi yapabilirsiniz. Kullanıcı tanımlayıp sunucunuzda müşterilerinizi barındırabilirsiniz.

loginscreen/

Giriş yaptınız karşınızda aşağıdaki gibi bir panel karşılayacak sizi oldukça güzel ve grafiksel olarak iyi tasarlanmış kullanımı da oldukça kolay sitenizi bu panelden yönetebilirsiniz.

froxlor

Froxlor yönetim paneli konusunda bilmeniz gereken bir noktada dosyaların /var/www/froxlor yada /var/www/html/froxlor bulunabilecek olması iki dizini de kontrol etmeniz önerilir tanımlanan ayarları kullanırsanız /var/www/html/froxlor dizininde olduğunu göreceksiniz.

2038 Yılı Sorunu için EXT4 Dosya Sistemi Nasıl Güncellenir?

Sistemin bize verdiği uyarı aşağıdaki gibi yani 1 Ocak 1970’de 00:00:00 UTC’den bu yana geçen saniye sayısı 2038’de dolacak ve 19 Ocak 2038 UTC 03:14:07’den sonraki saatlerde sistem bize boş boş bakacak.(Sistem o zamana kadar aynı kalıp kullanılır mı? orasını kimse garanti edemez.)

ext4 filesystem being mounted at /boot supports timestamps until 2038 (0x7fffffff)

Bu sorun aslında 32bit kullanımından kaynaklı geçerlilik süresi 2038’de doluyor hal böyle olunca da bir takım alanlarda hata görebiliyoruz. İlk olarak dosya sistemi bizi uyarıyor bu uyarıdan sonra uygulamalar uyarmaya başlayacak. 2038 yıl sorunu hakkında daha fazla bilgi almak isteyenler tıklayın

Bu durumu kontrol etmek için sistemde aşağıdaki komutu çalıştırmanız yeterlidir.

tune2fs -l /dev/sda1 | grep "Inode size:"

Bu direk olarak size Inode boyutunu dönecek boyut olarak 128 yazıyorsa sıkıntı çünkü 2038 yıl sorunu dosya sisteminizde var demektir.

2038 yıl sorunu olmayan Inode size’ı 256 olan tune2fs çıktımız.

root@ankara:~# tune2fs -l /dev/sda1
tune2fs 1.44.5 (15-Dec-2018)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          b015ad21-ff3e-48a3-95e6-6d5890429dd9
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              9760000
Block count:              39968763
Reserved block count:     1604208
Free blocks:              37358012
Free inodes:              9628366
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      277
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8000
Inode blocks per group:   500
Flex block group size:    16
Filesystem created:       Tue Aug 18 14:43:20 2020
Last mount time:          Thu Jun 24 15:13:17 2021
Last write time:          Thu Jun 24 15:13:16 2021
Mount count:              57
Maximum mount count:      -1
Last checked:             Tue Aug 18 14:43:20 2020
Check interval:           0 (<none>)
Lifetime writes:          1198 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
First orphan inode:       1034301
Default directory hash:   half_md4
Directory Hash Seed:      1c09ee01-778c-40d7-bf12-aa05891586a9
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0x8e360349
root@ankara:~#

Çözüm için öncelikli olarak /boot alanını yedekleyelim.

cp -a /boot /mnt/backup-boot/

ve ardından doğru Inode boyutuyla yeniden biçimlendirelim.

umount /boot
mkfs.ext4 -I 256 /dev/sda1

en basit yolu seçmek istiyorum derseniz `e2fsck -f /dev/sda1 tune2fs -I 256 /dev/sda1`

sonrasında ise yedeklediğimiz her şeyi geri eski yerine atalım.

mount /boot
cp -a /mnt/backup-boot/boot/* /boot/

Bunlarla uğraşmak istemiyorsanız, sistemlerinizi hem donanımsal hem de yazılımsal olarak güncel tutmayı ihmal etmeyiniz.

AlmaLinux 8 Nasıl İndirilir Ve Kurulur?

Red Hat tabanlı bir işletim sistemi olan Almalinux direk olarak CloudLinux tarafından geliştirilen ve desteklenen bir işletim sistemidir. Amazon AWS, Cpanel ve Plesk dahil pek çok köklü kuruluş direk olarak desteklemekte ve bünyesinde kullanmaktadır.

AlmaLinux ISO’su Nasıl İndirilir?

Resmi web sitesi dışında hiç bir yerden hiç bir zaman ISO indirmemeniz gerekli eğer farklı yerlerden indirirseniz içerisinden botnet çıkabilir, kötü bir yazılım olabilir.

Bütün indirme bağlantılarını buradan bulabilirsiniz.

Nasıl Kurulur?

Anlatımı sanal makine üzerinden yapacağım, kuracağınız yerler için hiç bir sorun teşkil etmeyeceğini bilin.

almalinux sürüm seçimi ve kurulum

“Install AlmaLinux 8” diyoruz ve işletim sisteminin kurulum yapabilmemiz amacıyla gerekli olan dosyaları sistemimize geçirmesini izliyoruz.

almalinux sistem dosyaları yükleniyor, almalinux nasıl kurulur, almalinux kurulum aşamaları

Dil seçimimizi yaparak kurulum aşamamıza devam ediyoruz.

almalinux kurulumu dil seçimi, almalinux dil nasıl seçilir

Kurulum yapılacak diskimizi tanımlıyoruz.

almalinux disk tanımlama, almalinux disk alanı tanımlama, almalinux disk takma

Disk seçiminden hemen sonra sisteme kurulacak paketleri seçmemiz gerekiyor burada “Standart” ve “Security Tools” dışında seçmenize gerek yok.

almalinux security tools, almalinux nasıl kurulur, almalinux kurulum adımları

Sistem genelinde kullanılacak zaman dilimini “Europe/Istanbul” olarak belirliyoruz.

almalinux nedir, almalinux 8 nasıl kurulur, almalinux kurulum adımları, almalinux basit kurulum, almalinux zaman dilimi ayarları

İnternet ayarlarını yapmaya geldi sıra, hemen “on” konumuna getiriyoruz DHCP üzerinden ip adresi otomatik olarak alıyor.

almalinux internet ayarları nasıl yapılır, almalinux internet ayarları, linux internet ayarları, almalinux network ayarları

Klavyemizin dilini seçiyoruz, ben haliyle türkçe seçtim.

almalinux klavye ayarları, almalinux dil ayarları, almalinux'de klavye nasıl ayarlanır, almalinux 8 nasıl kurulur

Kurulumunu yapmış olduğumuz “Security Tools” için politika ayarı yapmamız gerekiyor, bu noktada referans olabilmesi adına aşağıdaki gibi seçip bırakıyorum ben.

almalinux 8 nasıl kurulur, almalinux 8 güvenlik ayarları, almalinux security tools, almalinux 8 security policy, pci-dss ayarları

Hemen ardından root için parolamızı oluşturuyoruz, güvenliğiniz için lütfen bilinen parolalardan ve kısa parolalardan uzak durunuz.

almalinux root parolası nasıl ayarlanır, almalinux 8 root parola ayarlama, almalinux şifre tanımlama, almalinux root ayarları

Bütün işlemleri başarıyla tamamladıysanız ana ekranda şu şekilde görünmeli, ek kullanıcı oluşturma aşaması tamamen size ait o konuda bir işlem ben genelde yapmıyorum.

almalinux nasıl ayarlanır, almalinux ayarları, almalinux sistem nasıl kurulur, almalinux kurulum adımları

“Begin Installation” diyoruz ve artık kurulum başlıyor. Sistem özelliklerinize göre kurulum süresi değişmekle birlikte genellikle 8-10 dk arasında sürmektedir.

almalinux kurulum görseli, almalinux kurulum adımları, almalinux sistem görsel

Başarılar Almalinux işletim sistemini başarılı bir şekilde kurdunuz, artık üzerinde istediğiniz işlemleri yapabilirsiniz.

Raspberry Pi Üzerine Rocket.Chat Nasıl Kurulur?

Ücretsiz sesli ve görüntülü konuşma imkanı sağlayan, ekran ve dosya paylaşımı yapabileceğiniz, açık kaynak kodlu bir uygulamadır. Üstelik bütün bunları yaparken uçtan uca her şeyi şifreler. Bizde bu güzelim uygulamayı Raspberry Pi üzerine kuracağız.

Kurduğumuz sistemi güncelleyerek işe başlıyoruz.

apt update && apt dist-upgrade -y

Ardından sistemimize gerekli olan bağımlılıkları kuralım bunlar içerisinde mongodb ve nodejs bulunuyor.

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get -y update && sudo apt-get install -y curl && curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt-get update
sudo apt-get install -y build-essential mongodb-org nodejs graphicsmagick

Bağımlılıklarımızı böylelikle kurmuş oluyoruz, sistemimiz artık hazır. Rocket.Chat uygulamasını kurmaya geldi sıra

curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
tar -xzf /tmp/rocket.chat.tgz -C /tmp
rm -r /tmp/bundle/programs/server/npm/node_modules/sharp/vendor 
cd /tmp/bundle/programs/server && npm install
sudo mv /tmp/bundle /opt/Rocket.Chat
sudo useradd -M rocketchat && sudo usermod -L rocketchat
sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat

Rocket.Chat için servis dosyasını oluşturuyoruz.

cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target
[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000
PORT=3000
[Install]
WantedBy=multi-user.target
EOF

İşlemler tamamlandı Rocket.Chat artık çalıştırılmak için hazır, ama işlemlerimiz tamamlanmadan mongodb’mizi yapılandıralım.

sed -i "s/^#replication:/replication:\n  replSetName: rs01/" /etc/mongod.conf
sed -i "s/bindIp/#bindIp/"  /etc/mongod.conf
systemctl enable mongod && systemctl start mongod
mongo --eval "printjson(rs.initiate())" 
systemctl enable rocketchat && systemctl start rocketchat

Artık hazırız, Rocket.Chat kullanıma hazır 3000 portu üzerinden hizmet vermeye başlayacak. İsterseniz bunu Nginx arkasına alarak servis edebilirsiniz.


Bu işlemleri yapmam ben hazırı seviyorum diyenler aşağıdaki betiği kullanabilirler.

bash -c "$(curl https://install.rocket.chat)"

Kurulum tamamlandığında rocketchatctl install komutunu verip işlemi sonlandırabilirsiniz.

Raspberry Pi 4 Model B İle WiFi Ethernet Köprüleme

Burada yapılacak olan işlem Wifi kartı bulunmayan bir masaüstü bilgisayarı bir Raspberry Pi aracılığıyla bir wifi ağına bağlamaktır. Wifi olmayan bilgisayar ile Wifiağı arasında bir köprü olarak bir Raspberry Pi 4 Model B kullanacağız.

Raspberry Pi 4, Wifi’ye bağlanacak ve bağlantısını Ethernet kullanarak diğer bilgisayara aktaracak. Raspberry Pi 4 Model B ac Wifi’ye sahip olduğu için hız açısından da sıkıntı çekmeyeceksiniz 100mbitleri görmek mümkün.

raspberry pi 4, raspberry pi ile wifi ye bağlanma

Ben kurulum için raspbian kullanacağım ama isteyen olursa dietpi kullanabilir. Her ikisi de Debian zaten sorun yaşamazsınız.

Öncesinde Wifi’ye bağlayalım cihazı, boot aşamasında bir işlem yapmamışsanız aşağıdaki şekilde ayarlayabilirsiniz.(bu işlemi dietpi üzerinde boot yapılandırması ile çözebilirsiniz.)

cat > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
country=TR
ctrl_interface=DIR=/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="changeme"
    psk="changeme"
}
EOF

chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
systemctl disable wpa_supplicant.service
systemctl enable wpa_supplicant@wlan0.service
rfkill unblock 0

Servisi düzenlememiz gerekiyor ip dağıtma işlemi için sudo systemctl edit wpa_supplicant@wlan0.service varsa içindeki her şeyi silip aşağıdakini ekleyin.

[Service]
ExecStartPre=/sbin/ip link set %i promisc on
ExecStopPost=/sbin/ip link set %i promisc off

Gelelim ip dağıtma işlemine kablolu için ayrı wifi için ayrı yapılandırma aşağıdaki gibi olmalı

cat > /etc/systemd/network/04-wired.network <<EOF
[Match]
Name=e*

[Network]
Address=192.168.88.253/30
DHCPServer=yes

[DHCPServer]
DNS=1.1.1.1 1.0.0.1
EOF

cat > /etc/systemd/network/08-wifi.network <<EOF
[Match]
Name=wl*

[Network]
DHCP=yes
IPForward=ipv4
IPv4ProxyARP=yes
EOF

Köprüleme işleminin yapılması

Kuracağımız paketlerimiz

apt update && apt install -y parprouted dhcp-helper

Kullanacağınız bridge.sh dosyamız.

#!/usr/bin/env bash

set -e

[ $EUID -ne 0 ] && echo "run as root" >&2 && exit 1

systemctl stop dhcp-helper
systemctl enable dhcp-helper

# Enable ipv4 forwarding.
sed -i'' s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/ /etc/sysctl.conf

# Service configuration for standard WiFi connection. Connectivity will
# be lost if the username and password are incorrect.
systemctl restart wpa_supplicant.service

# Enable IP forwarding for wlan0 if it's not already enabled.
grep '^option ip-forwarding 1$' /etc/dhcpcd.conf || printf "option ip-forwarding 1\n" >> /etc/dhcpcd.conf

# Disable dhcpcd control of eth0.
grep '^denyinterfaces eth0$' /etc/dhcpcd.conf || printf "denyinterfaces eth0\n" >> /etc/dhcpcd.conf

# Configure dhcp-helper.
cat > /etc/default/dhcp-helper <<EOF
DHCPHELPER_OPTS="-b wlan0"
EOF

# Enable avahi reflector if it's not already enabled.
sed -i'' 's/#enable-reflector=no/enable-reflector=yes/' /etc/avahi/avahi-daemon.conf
grep '^enable-reflector=yes$' /etc/avahi/avahi-daemon.conf || {
  printf "something went wrong...\n\n"
  printf "Manually set 'enable-reflector=yes in /etc/avahi/avahi-daemon.conf'\n"
}

# I have to admit, I do not understand ARP and IP forwarding enough to explain
# exactly what is happening here. I am building off the work of others. In short
# this is a service to forward traffic from WiFi to Ethernet.
cat <<'EOF' >/usr/lib/systemd/system/parprouted.service
[Unit]
Description=proxy arp routing service
Documentation=https://raspberrypi.stackexchange.com/q/88954/79866
Requires=sys-subsystem-net-devices-wlan0.device dhcpcd.service
After=sys-subsystem-net-devices-wlan0.device dhcpcd.service

[Service]
Type=forking
# Restart until wlan0 gained carrier
Restart=on-failure
RestartSec=5
TimeoutStartSec=30
# clone the dhcp-allocated IP to eth0 so dhcp-helper will relay for the correct subnet
ExecStartPre=/bin/bash -c '/sbin/ip addr add $(/sbin/ip -4 -br addr show wlan0 | /bin/grep -Po "\\d+\\.\\d+\\.\\d+\\.\\d+")/32 dev eth0'
ExecStartPre=/sbin/ip link set dev eth0 up
ExecStartPre=/sbin/ip link set wlan0 promisc on
ExecStart=-/usr/sbin/parprouted eth0 wlan0
ExecStopPost=/sbin/ip link set wlan0 promisc off
ExecStopPost=/sbin/ip link set dev eth0 down
ExecStopPost=/bin/bash -c '/sbin/ip addr del $(/sbin/ip -4 -br addr show wlan0 | /bin/grep -Po "\\d+\\.\\d+\\.\\d+\\.\\d+")/32 dev eth0'

[Install]
WantedBy=wpa_supplicant.service
EOF

systemctl daemon-reload
systemctl enable parprouted
systemctl start parprouted dhcp-helper

Ardından dosyası çalıştırın.

sudo chmod +x bridge.sh
sudo ./bridge.sh

Ardından isteğe bağlı olarak raspberrypi cihazınızı yeniden başlatın. Artık Raspberry Pi’de yer alan ethernet portuna cihazınızı bağlayın direk olarak ip adresi alıp internete çıkması lazım. Olmuyorsa yanlış veya bir yerlerde eksiklik vardır.

Debian 10 Üzerine IPsec VPN Nasıl Kurulur?

Bir IPsec VPN, ağ trafiğinizi şifreler ve VPN sunucusu ile sizin bağlantınız arasındaki trafiği kimse göremez. Bu özellikle güvenli olmayan ağlarda, ağ trafiğinizi dinleyerek işlem yapan hükumetlere karşı çıkmada, hedef odaklı reklamları engellemede etkilidir.

IPsec/L2TP, Cisco IPsec ve IKEv2 protokollerini aşağıdaki betik ile birkaç dakika içinde kuracağız. Yeni açtığınız sanal sunucu üzerinde önce apt update && apt upgrade komutunu çalıştırıyoruz ve sistemi güncelleyelim.

Hemen ardından ise otomatik kurulum betiğimizi çalıştırıyoruz;

wget https://git.io/vpnsetup -O vpn.sh && sudo sh vpn.sh

Bu betik libreswan ve xl2tpd gibi uygulamaları indirip kuracak ve size kullanmanız için gerekli bilgileri verecek. Libreswan, RSA imzalarını kullanarak X.509 sertifikalarını kullanarak IKEv2 istemcilerinin kimliğini doğrulayabilir. Bu sebeple kullanıcı adı ve parola gerektirmez.

ipsec nasıl kurulur, ipsec otomatik kurulum betiği, ipsec nedir

İsterseniz herhangi bir IPSec desteği veren uygulamadan isterseniz de Windows’un kendi clienti ile giriş yapabilirsiniz.

Libreswan Uygulamasının Güncellenmesi

Geliştirilmeye devam eden IPSec uygulamasının güncel sürümlerini kurmak için ise aşağıdaki betiği çalıştırmanız yeterlidir. Gerekli olan indirme, kurma ve yapılandırma işlemlerini kendisi otomatik olarak yapacaktır.

wget https://git.io/vpnupgrade -O vpnup.sh && sudo sh vpnup.sh

PostgreSQL’de Nasıl Sürüm Yükseltilir?

Debian bir işletim sisteminde öncelikli olarak kurulacak güncel postgresql sürümü belirlenir, ben bu makaleyi kaleme alırken en güncel sürüm 13.2 olduğu için Postgresql repolarını direk sisteme dahil edeceğim.

Eğer Debian repolarını kullanırsam maksimum 12 sürümünü kullanabileceğim ki bu istediğim bir şey değil çünkü 13 sürümündeki bir takım özellikler gerekiyor ve bu özellikler hayat kurtaracak.

sudo sh -c 'echo "deb <http://apt.postgresql.org/pub/repos/apt> $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - <https://www.postgresql.org/media/keys/ACCC4CF8.asc> | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql-13

Bağımlılık kontrolü yapalım eksik bir şey kalmasını istemeyiz.

apt list --installed | grep postgresql

Hemen sonrasında eski sürüm yapılandırmalar’da yer alan değişikliklere göz atıyoruz.

diff /etc/postgresql/11/main/postgresql.conf /etc/postgresql/13/main/postgresql.conf
diff /etc/postgresql/11/main/pg_hba.conf /etc/postgresql/13/main/pg_hba.conf

Postgresql’in tüm servislerini durduruyoruz, sistem üzerinde kurulu olan her iki sürümüde kapatmalıyız.

sudo systemctl stop postgresql.service

Postgresql kullanıcısı ile giriş yapmalıyız

sudo su postgres

Postgresql migration işlemini gerçekleştirebilmemiz için pg_upgrade uygulamasını çalıştırmalıyız. Bunuda aşağıdaki gibi yapabilirsiniz.

/usr/lib/postgresql/13/bin/pg_upgrade \\
  --old-datadir=/var/lib/postgresql/11/main \\
  --new-datadir=/var/lib/postgresql/13/main \\
  --old-bindir=/usr/lib/postgresql/11/bin \\
  --new-bindir=/usr/lib/postgresql/13/bin \\
  --old-options '-c config_file=/etc/postgresql/11/main/postgresql.conf' \\
  --new-options '-c config_file=/etc/postgresql/13/main/postgresql.conf' \\
  --check

Kontrolleri sağlanacak biraz sürebilir, kontroller tamamlandıysa ve hiç bir hata yoksa aşağıdaki gibi bir çıktı sizi karşılar

Performing Consistency Checks
-----------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for tables WITH OIDS                               ok
Checking for invalid "sql_identifier" user columns          ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok
Checking for new cluster tablespace directories             ok

*Clusters are compatible*

Ardından --check parametresini kaldırıp işlemi başlatıyoruz.

/usr/lib/postgresql/13/bin/pg_upgrade \\
  --old-datadir=/var/lib/postgresql/11/main \\
  --new-datadir=/var/lib/postgresql/13/main \\
  --old-bindir=/usr/lib/postgresql/11/bin \\
  --new-bindir=/usr/lib/postgresql/13/bin \\
  --old-options '-c config_file=/etc/postgresql/11/main/postgresql.conf' \\
  --new-options '-c config_file=/etc/postgresql/13/main/postgresql.conf'

Bu işlem veritabanı boyutunuza göre değişebilir. Indexlerin alınmayacağını unutmayın. Tamamlandığında aşağıdaki gibi bir çıktı gene sizi bekliyor.

Performing Consistency Checks
-----------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for tables WITH OIDS                               ok
Checking for invalid "sql_identifier" user columns          ok
Creating dump of global objects                             ok
Creating dump of database schemas
                                                            ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok
Checking for new cluster tablespace directories             ok

If pg_upgrade fails after this point, you must re-initdb the
new cluster before continuing.

Performing Upgrade
------------------
Analyzing all rows in the new cluster                       ok
Freezing all rows in the new cluster                        ok
Deleting files from new pg_xact                             ok
Copying old pg_xact to new server                           ok
Setting next transaction ID and epoch for new cluster       ok
Deleting files from new pg_multixact/offsets                ok
Copying old pg_multixact/offsets to new server              ok
Deleting files from new pg_multixact/members                ok
Copying old pg_multixact/members to new server              ok
Setting next multixact ID and offset for new cluster        ok
Resetting WAL archives                                      ok
Setting frozenxid and minmxid counters in new cluster       ok
Restoring global objects in the new cluster                 ok
Restoring database schemas in the new cluster
                                                            ok
Copying user relation files
                                                            ok
Setting next OID for new cluster                            ok
Sync data directory to disk                                 ok
Creating script to analyze new cluster                      ok
Creating script to delete old cluster                       ok

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh

Ardından servisleri root kullanıcısı ile başlatıyoruz.

systemctl start postgresql@13-main.service

Her şey olması gerektiği gibi mi diye postgresql üzerinde analiz için vacuum işlemini tetikliyoruz. Bu işlemi postgres kullanıcısı ile yapmayı unutmayın.

./analyze_new_cluster.sh

Çıktısı şu şekilde olmalı

This script will generate minimal optimizer statistics rapidly
so your system is usable, and then gather statistics twice more
with increasing accuracy.  When it is done, your system will
have the default level of optimizer statistics.

If you have used ALTER TABLE to modify the statistics target for
any tables, you might want to remove them and restore them after
running this script because they will delay fast statistics generation.

If you would like default statistics as quickly as possible, cancel
this script and run:
    "/usr/lib/postgresql/13/bin/vacuumdb" --all --analyze-only

vacuumdb: processing database "project_x": Generating minimal optimizer statistics (1 target)
vacuumdb: processing database "postgres": Generating minimal optimizer statistics (1 target)
vacuumdb: processing database "template1": Generating minimal optimizer statistics (1 target)
vacuumdb: processing database "project_x": Generating medium optimizer statistics (10 targets)
vacuumdb: processing database "postgres": Generating medium optimizer statistics (10 targets)
vacuumdb: processing database "template1": Generating medium optimizer statistics (10 targets)
vacuumdb: processing database "project_x": Generating default (full) optimizer statistics
vacuumdb: processing database "postgres": Generating default (full) optimizer statistics
vacuumdb: processing database "template1": Generating default (full) optimizer statistics

Done

Ardından eski data klasörünü kaldıralım.

./delete_old_cluster.sh

Bu işlemler sorunucunda sistemde çift veritabanı sürümü olacağını unutmayın kullanmadığınız sürümü kalıcı olarak kaldırmanızı şiddetle öneririm.

sudo apt-get remove postgresql-11
sudo rm -rf /etc/postgresql/11/