proxy_fcgi error Connection reset by peer: Error dispatching request to hatası ve çözümü

Web sitenizde Service Unavailable hatası alıp loglarda aşağıdaki durumu görüyor iseniz,

[Thu Sep 07 15:00:55.194125 2016] [proxy_fcgi:error] [pid 3073:tid 139922543388416] (104)Connection reset by peer: [client x.x.x.x:47400] AH01075: Error dispatching request to :, referer: http://xxx.xxx/odeme/
[Thu Sep 07 15:01:04.991963 2016] [proxy_fcgi:error] [pid 3158:tid 139922526603008] (104)Connection reset by peer: [client x.x.x.x:47436] AH01075: Error dispatching request to :, referer: http://xxx.xxx/odeme/
[Thu Sep 07 15:05:34.736200 2016] [proxy_fcgi:error] [pid 3072:tid 139922694457088] (104)Connection reset by peer: [client x.x.x.x:48660] AH01075: Error dispatching request to :, referer: http://xxx.xxx/odeme/

Audit loglarınızda da loglar aşağıdaki gibi ise,

type=ANOM_ABEND msg=audit(1504783865.871:28198): auid=4294967295 uid=10160 gid=1004 ses=4294967295 pid=65221 comm=”php-fpm” reason=”memory violation” sig=11
type=ANOM_ABEND msg=audit(1504784074.897:28941): auid=4294967295 uid=10266 gid=1004 ses=4294967295 pid=66368 comm=”php-fpm” reason=”memory violation” sig=11
type=ANOM_ABEND msg=audit(1504784147.758:29233): auid=4294967295 uid=10266 gid=1004 ses=4294967295 pid=66823 comm=”php-fpm” reason=”memory violation” sig=11

bir ImageMagick bug ı ile karşı karşıyasınız demektir.

Sunucuzda aşağıdaki komutu çalıştırarak sorunu giderebilirsiniz.

rpm -e ImageMagick

Eğer bu yöntem işe yaramaz ise ,örneği Plesk kullandığınızı düşünelim , Ayarlar ve Php ayarları bölümünden Imagick in tikini kaldırıp tekrar deneyebilirsiniz. Sorun giderilmiş olacaktır. Multiphp kullanabiliyor iseniz php versiyon değiştirmeyi de deneyebilirsiniz.

Ayhan ARDA

Vesta panel kurulu sunucunun dns çözümleyememesi sorunu ve çözümü

Sunucunuz herhangi bir ip yi pingleyebiliyor ama isim çözemiyor durumda ise , /etc/resolv.conf dosyanızda ki dns serverlar erişilebilir durumda ise , iptables kullanıyor iseniz muhtemelen resolv.conf dosyanızda yazan ip lere doğru 53 portunun gidişine izin vermeniz gerekecektir.

Vesta iptables kural dizisini aşağıdaki şekilde görebilirsiniz.

nano $VESTA/data/firewall/rules.conf

Kural değiştirdikten sonra update etmek için aşağıdaki komutu kullanabilirsiniz.

vupdatefirewall

Örneğin resolv.conf dosyanızda google ın 8.8.8.8 ve 8.8.4.4 dns leri var , bu durumda aşağıdaki komutlar çalıştırabilirsiniz.

/sbin/iptables A OUTPUT p udp d 8.8.8.8 dport 53 m state state NEW,ESTABLISHED j ACCEPT

/sbin/iptables A INPUT  p udp s 8.8.8.8 sport 53 m state state ESTABLISHED     j ACCEPT

/sbin/iptables A OUTPUT p tcp d 8.8.4.4 dport 53 m state state NEW,ESTABLISHED j ACCEPT

/sbin/iptables A INPUT  p tcp s 8.8.4.4 sport 53 m state state ESTABLISHED     j ACCEPT

Bunu her seferinde tek tek yapmamak için küçük bir bash script kullanabilirsiniz. Örneği aşağıdaki gibidir.

#!/bin/bash
Firewall="/sbin/iptables"
 
# Ayhan ARDA - http://www.ayhanarda.com
DNS_SUNUCU=$(cat /etc/resolv.conf  | grep -v '^#' | grep nameserver | awk '{print $2}')
 
for ip in $DNS_SUNUCU
do
        echo "(tcp, udp port 53) '$ip' adresleri için izinler veriliyor"
        $Firewall -A OUTPUT -p udp -d $ip --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
        $Firewall -A INPUT  -p udp -s $ip --sport 53 -m state --state ESTABLISHED     -j ACCEPT
        $Firewall -A OUTPUT -p tcp -d $ip --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
        $Firewall -A INPUT  -p tcp -s $ip --sport 53 -m state --state ESTABLISHED     -j ACCEPT
done

Ayhan ARDA

scp: .ssh/authorized_keys: No such file or directory hatası ve çözümü

bash: /home/user/.ssh/authorized_keys: No such file or directory hatası ve çözümü
scp: .ssh/authorized_keys: No such file or directory

Muhtemelen bu hatayı şifresiz erişmek istediğiniz sunucuya scp ile key gönderirken alıyorsunuz ya da key i bir şekilde o sunucuya aktardınız ve authorized_keys dosyasına yazmak istediğinizde karşılaştınız.

Şifresiz erişmek istediğiniz sunucuya ssh ile erişin ve aşağıdaki komutları sıra ile çalıştırın , böylece gerekli izin hakları verilmiş şekilde authorized_keys dosyanız oluşturulacaktır.

root@ayhanarda:~# mkdir ~/.ssh
root@ayhanarda:~# chmod 700 ~/.ssh
root@ayhanarda:~# touch ~/.ssh/authorized_keys
root@ayhanarda:~# chmod 600 ~/.ssh/authorized_keys

Ayhan ARDA

A start job is running for raise network interfaces timeout süresi değiştirme

Ubuntu’da karşılaşılan bu durum ile ilgili timeout süresini değiştirmek ister iseniz aşağıdaki dosyayı açınız.

nano/lib/systemd/system/networking.service

Default değeri 5 dakika olarak gelir.

TimeoutStartSec=5min

Bu değeri örneğin 10 saniyeye çekelim. (Ki zaten cloud-init ten veri alabilir durumda ise hiç beklemeyecektir.

TimeoutStartSec=10sec

Ayhan ARDA

Ova’dan Vmdk’ya , Vmdk’dan Qcow2 ye dönüştürme işlemi

Elimizde bir .ova imajı olduğunu düşünelim , amacımız bu imajı proxmox , nutanix ya da herhangi qcow2 kullanabilen sanallaştırma platformlarında çalıştırmak olsun.

Önce .ova imajını genelde testler için kullandığım kali linux sunucuma indirdim.

root@kali-ayhanarda:/home/ayhanarda/test# ls -al
total 526960
drwxr-xr-x 2 root root 4096 Dec 9 04:41 .
drwxr-xr-x 3 root root 4096 Dec 9 04:40 ..
-rw-r–r– 1 root root 539592704 Dec 9 04:54 ayhanarda.ova

Sonra açıyorum ve vmdk dosyasını çıkartıyorum.

root@kali-ayhanarda:/home/ayhanarda/test# tar -xvf ayhanarda.ova
ayhanarda.ova.ovf
ayhanarda.ova.mf
ayhanarda.ova.vmdk

Vmdk yı elde ettik , şimdi bunu qcow2 ye çevireceğiz.

root@kali-ayhanarda:/home/ayhanarda/test#qemu-img convert -O qcow2 ayhanarda.vmdk ayhanarda.qcow2

İşlem sonunda dosyanın oluşup oluşmadığını doğrulayabiliriz.

root@kali-ayhanarda:/home/ayhanarda/test#ls -al | grep qcow2
-rw-r–r– 1 root root 1678835712 Dec 9 04:59 ayhanarda.qcow2

Ayhan ARDA

Fcrackzip ile .zip ve .7z Uzantılı Arşiv Dosyası Şifrelerini Kırma

http://www.ayhanarda.com/blog/2016/11/rarcrack-ile-rar-uzantili-arsiv-dosyasi-sifrelerini-kirma/ adresinde yöntemin esasına değinmiştim , bu sefer fcrackzip isimli tool u kullanacağız , bu tool kali linux te kurulu geliyor , dolayısı ile kurmakla uğraşmıyoruz.

Elimde .zip olarak şifrelenmiş bir dosya var , yine hızlı bulması için 3 karakterli büyük küçük harf ve sayı içeren bir şifre verdim test için. Komut aşağıdaki gibi.

root@kali-ayhanarda:~# fcrackzip -l3 -u upload.zip
PASSWORD FOUND!!!!: pw == a7B

Burda bulması 1 sn bile sürmedi , sanıyorum sadece 3 karakterli olanları dene dediğimiz ve şifremizin a harfi ile başlamasından dolayı bu kadar hızlı oldu.

Gördüğünüz üzere biz bir şifre dosyası belirtmedik , kendi türetip denedi , ancak elinizde bir password list var ise onuda kullandırabiirsiniz.

Bu kez komutumuz aşağıdaki gibi olacaktı.

root@kali-ayhanarda:~# fcrackzip -D -p ayhanarda-sifrelistesi.txt -u upload.zip

Ayhan ARDA

Rarcrack ile .rar Uzantılı Arşiv Dosyası Şifrelerini Kırma

Yöntem esasen bruteforce a dayanıyor , test için bir klasörü .rar olarak şifreledim , çabuk bulabilmesi için 3 haneli içinde büyük küçük harf olan bir şifre verdim. Bu rar dosyasını kali linux e yükledim. Kali linux te rarcrack default olarak kurulu gelmiyor , o yüzden önce kurmalıyız , aşağıdaki komut ile kurabilirsiniz , bildiğiniz debian , ubuntu tarzı..

root@kali-ayhanarda:~# apt-get install rarcrack
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following NEW packages will be installed:
rarcrack
0 upgraded, 1 newly installed, 0 to remove and 18 not upgraded.
Need to get 17.0 kB of archives.
After this operation, 65.5 kB of additional disk space will be used.
Get:1 http://http.kali.org/kali/ sana/main rarcrack amd64 0.2-1 [17.0 kB]
Fetched 17.0 kB in 1s (15.5 kB/s)
Selecting previously unselected package rarcrack.
(Reading database … 323141 files and directories currently installed.)
Preparing to unpack …/rarcrack_0.2-1_amd64.deb …
Unpacking rarcrack (0.2-1) …
Setting up rarcrack (0.2-1) …

Kuruldu , rarcrack yazıp doğrulayabilirsiniz.

root@kali-ayhanarda:~# rarcrack
RarCrack! 0.2 by David Zoltan Kedves (kedazo@gmail.com)

USAGE: rarcrack encrypted_archive.ext [–threads NUM] [–type rar|zip|7z]
For more information please run “rarcrack –help”

Şimdi dosyamız ile aynı dizinde olduğumuzu varsayıyorum , dosyamın adı upload.rar şeklinde , komutum aşağıdaki gibi.

root@kali-ayhanarda:~# rarcrack upload.rar –type rar

tabi burda extra thread verebilirsiniz , benim kali bir sanal makina , saniyede 80-90 şifre deneyebiliyor , buna 4 thread verince 140-150 ye kadar hızlanıyor. Sonuç olarak uzun bir şifreniz var ise bir kaç gün sürebilir 🙂

root@kali-ayhanarda:~# rarcrack upload.rar –type rar –threads 4
RarCrack! 0.2 by David Zoltan Kedves (kedazo@gmail.com)

INFO: the specified archive type: rar
INFO: cracking upload.rar, status file: upload.rar.xml
Probing: ‘6S’ [161 pwds/sec]
Probing: ‘eG’ [161 pwds/sec]
Probing: ‘ml’ [158 pwds/sec]
..

.
Probing: ‘2Nu’ [142 pwds/sec]
Probing: ‘2Ut’ [144 pwds/sec]
Probing: ’31z’ [146 pwds/sec]

..

.
Probing: ‘9SZ’ [145 pwds/sec]
Probing: ‘a04’ [146 pwds/sec]
Probing: ‘a7a’ [146 pwds/sec]
GOOD: password cracked: ‘a7B

Evet , şifremiz a7B imiş.

Ayhan ARDA

/bin/bash^M: bad interpreter: No such file or directory hatası ve çözümü

Bazı bash scriptleri çalıştırmak isterken /bin/bash^M: bad interpreter: No such file or directory hatası alabilirsiniz , benim başıma gelme sebebi scripti windows ortamında hazırlayıp linux e indirerek çalıştırma denemem sonucunda oluştu. Çözüm için bash scriptinizi vi editörü ile açınız , aşağıdaki satırı yapıştırıp yine esc ve :wq ile kaydedip çıkınız  i şimdi bash scriptiniz çalışacaktır

:set fileformat=unix

Linux’te en çok dosya barındıran 10 klasörün tespiti (inode)

Aşağıdaki bash scripti kullanabiliriz.

Kullanımı aşağıdaki bash scripti bir dosyaya yazın , örneğin   nano inode.sh  , içeriği yapıştırın , ctrl +x ile kaydedin , chmod +x inode.sh ile çalıştırma izni verin , sonra ./inode.sh /home şeklinde kullanabilirsiniz.

#!/bin/bash
 
if [ $# -ne 1 ];then
  echo "Usage: `basename $0` DIRECTORY"
  exit 1
fi
 
echo "Lutfen sonucu gormek icin biraz bekleyin... Ayhan ARDA..."
 
find "$@" -type d -print0 2>/dev/null | while IFS= read -r -d '' file; do 
    echo -e `ls -A "$file" 2>/dev/null | wc -l` "files in:\t $file"
done | sort -nr | head | awk '{print NR".", "\t", $0}'
 
exit 0

 

Sonuç aşağıdaki gibi gözükecektir.

root@ayhanarda:~# ./inode-arda.sh /home
Lutfen sonucu gormek icin biraz bekleyin… Ayhan ARDA…
1. 18507 files in: /home/orneksite/httpdocs/resimler/urun
2. 9370 files in: /home/orneksite2/httpdocs/images/resimler201203
3. 8729 files in: /home/orneksite3/httpdocs/urunler
4. 4828 files in: /home/orneksite4/httpdocs/wp-content/uploads
5. 4699 files in: /home/orneksite5/httpdocs/testi/images
6. 3162 files in: /home/orneksite6/httpdocs/Galeri/Foto
7. 2715 files in: /home/orneksite7/httpdocs/media/k2/users
8. 2250 files in: /home/orneksite8/httpdocs/deneme/par
9. 2230 files in: /home/orneksite9/tmp
10. 2039 files in: /home/orneksite10/tmp

 

Ayhan ARDA

Plesk 8447 Update portu çalışmama sorunu

Hosting sunucularımızdan birinde Plesk i güncellemek için panelden ilgili alana gittiğimizde açılan sayfa yanıt vermiyordu , netstat ile kontrol ettiğimizde sunucunun 8447 nolu portu dinlemediğini gördük.

[root@ayhanarda ~]# netstat -an | grep 8447

cevap dönmüyordu.

Bu durumda aşağıdaki komutu kullanabilirsiniz.

[root@ayhanarda ~]# plesk installer –all-versions –select-product-id plesk –select-release-latest –show-components >/dev/null && plesk installer –version

Eğer yukarıdaki komut “Doing restart of Plesk Installer…” hatası verir ise aşağıdaki komutu kullanıp sonrasında tekrar çalıştırınız.

[root@ayhanarda ~]# rm /tmp/psa-installer.lock

Şimdi tekrar kontrol edelim.

[root@ayhanarda ~]# netstat -an | grep 8447
tcp 0 0 :::8447 :::* LISTEN

Şimdi Plesk i güncelleme sayfasına tekrar erişip update çalıştırabilirsiniz.

Ayhan ARDA

docker compose

Centos 7 ‘de Docker ve Docker Compose Kurulumu ile Kullanımı

Docker Compose, multi-container uygulamalarınızı gereksinimleri ile birlikte tek bir dosyaya tanımlayarak akabinde tek bir komut ile reçetesini yazdığınız container ı ayağa kaldırmanızı sağlamaktadır.

Şimdi elimizde sıfır kurulu ve updateleri yapılmış bir centos 7 var , bir public ip verdim ( burada bolca var 🙂 ) , siz private ip de verebilirsiniz , sonuç olarak ssh erişimim de var ve makina bir şekilde internete çıkıyor, buraya kadar tamam ise konuya girebiliriz.

Bu arada docker compose eski fig in yerini aldı , fig duyar iseniz artık o deprecated oldu ve resmi olarak docker compose diye anılıyor.

Öncelikle Docker imajları hakkında bilgi verelim , Her bir docker container ı , bir docker imajının yerel bir kopyasıdır. Docker imajlarını bir linux işletim sistemi gibi düşünebilirsiniz ancak şöşnde sadece minimal gereksinimler bulunmaktadır ve bu imajlar ana host un kernel ini kullanırlar fakat çalışan bir container ın içine girerseniz sadece o container ın dosya sistemini görürsünüz.

En çok kullanılan imaj ları docker hub da bulabilirsiniz , Bunlar docker team tarafından kontrol edilir ve bazı imajların altında official ibaresini görür iseniz bu imajlara güvenebilirsiniz çünkü docker team bunları test etmiştir.

Şimdi docker kurarak başlayalım , bu iş için yine docker team ın hazırladığı bir shell script i çağırıp çalıştıracağız.

Centos 7 de wget öntanımlı gelmiyor , aşağıdaki komut ile indirebilirsiniz.

yum install wget

Şimdi scriptimizi çekiyor ve çalıştırıyoruz.

[root@ayhanarda-containers ~]# wget -qO- https://get.docker.com/ | sh

Yaklaşık 30 sn içinde kurulum tamamlandı , şimdi kurulup kurulmadığını aşağıdaki şekilde doğrulayabiliriz.

[root@ayhanarda-containers ~]# docker version
Client:
Version: 1.10.3
API version: 1.22
Go version: go1.5.3
Git commit: 20f81dd
Built: Thu Mar 10 15:39:25 2016
OS/Arch: linux/amd64

Eğer docker ı root olmayan bir kullanıcı ile kullanacak iseniz aşağıdaki komutla kendinizi docker grubuna dahil edebilirsiniz.

usermod -aG docker $(whoami)

Eğer root iseniz yukarıdaki komutu kullanmanıza gerek yok , şimdi docker ı başlatalım ve bundan sonraki rebootlar sonunda tekrar çalışacak hale getirelim , aşağıdaki 2 komutu kullanabilirsiniz.

[root@ayhanarda-containers ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@ayhanarda-containers ~]# systemctl start docker.service

Artık docker çalışır durumda. Şimdi docker compose kurulumuna geçebiliriz.

Öncelikle python-pip kuruyorum çünkü docker compose u pip ile kuracağım.

[root@ayhanarda-containers ~]# yum install epel-release

[root@ayhanarda-containers ~]# yum install -y python-pip

Şimdi docker compose u kuruyoruz.

[root@ayhanarda-containers ~]# pip install docker-compose

Kurulum tamamlandı.Şimdi hemen docker compose ile bir container ayağa kaldıralım.

Şimdi yaml dosyamız için bir klasör açıp içine giriyorum.

[root@ayhanarda-containers ~]# mkdir hello-world
[root@ayhanarda-containers ~]# cd hello-world

docker-compose.yml isimli dosyamızı oluşturup içine reçetemizi yazacağız. Ben favori editör olarak nano kullanıyorum , Siz farklı bir editor kullanabilirsiniz.

[root@ayhanarda-containers hello-world]# nano docker-compose.yml

içine aşağıdaki satırları yazabilir ve kaydedebilirsiniz.

ayhanarda-test:
image: hello-world

Yani aşağıdaki gibi gözükmeli.

[root@ayhanarda-containers hello-world]# cat docker-compose.yml
ayhanarda-test:
image: hello-world

Şimdi yapmamız gereken tek bir hareket kaldı , bu prospektüsün yazılı olduğu containerı up etmek , hala hello-world klasörümüzün içinde iken aşağıdaki komutu kullanabilirsiniz.

[root@ayhanarda-containers hello-world]# docker-compose up
Pulling ayhanarda-test (hello-world:latest)…
latest: Pulling from library/hello-world
03f4658f8b78: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7
Status: Downloaded newer image for hello-world:latest
Creating helloworld_ayhanarda-test_1
Attaching to helloworld_ayhanarda-test_1
ayhanarda-test_1 |
ayhanarda-test_1 | Hello from Docker.

..

Şimdi belirttiğimiz image ı indirdik , hadi bunu doğrulayalım.

[root@ayhanarda-containers hello-world]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 690ed74de00f 5 months ago 960 B

Şimdi aynı yöntemle bir de nginx kuruyorum , bunu yazmayacağım , şimdi docker hub da offical nginx i bulup adını doğrulayıp aynı yöntem ile oluşturabilirsiniz. Docker ps ile çalıştığını görebilirsiniz.

[root@ayhanarda-containers ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e37b79df162b nginx “nginx -g ‘daemon off” About a minute ago Up About a minute 80/tcp, 443/tcp nginx_nginx_1

Yukarıda bir Container id göreceksiniz , her çalışan container ın bir id si vardır, yani eğer biz bu container ın dosya sistemine girmek ister isek aşağıdaki gibi o makinanın içine erişebiliriz , hatta nginx in conf dosyasında değişiklik yapabiliriz , işimiz bitince exit yazarak çıkabiliriz.

[root@ayhanarda-containers ~]# docker exec -it e37b79df162b /bin/bash
root@e37b79df162b:/# cd etc/nginx/conf.d/
root@e37b79df162b:/etc/nginx/conf.d# ls
default.conf

Farklı docker-compose ve multi-container örnekleri ile yakında görüşmek üzere..

Ayhan ARDA