Debian Tabanlı Sistemlerde Paket Sorgulama İşlemleri
Debian tabanlı dağıtımlarda sistemde kurulu paketlerle ilgili sorgulama işlemleri dpkg üzerinden yapılabilmektedir.
Sistemde kurulu tüm paketleri listelemek için -l paramtresi kullanılabilir:
# dpkg -l
Çıktı şuna benzer olacaktır:
ii 0trace 0.01-3 amd64 A traceroute tool that can run within an existing TCP connection. ii acccheck 0.2.1-1kali3 amd64 Password dictionary attack tool for SMB ii accountsservice 0.6.21-8 amd64 query and manipulate user account information
Kurulu bir paketle ilgili detaylı bilgi almak için ise -s paramtresi kullanılabilmektedir:
# dpkg -s hping3 Package: hping3 Status: install ok installed Priority: extra Section: net Installed-Size: 249 Maintainer: Guillaume Delacour <[email protected]> Architecture: amd64 Version: 3.a2.ds2-6kali3 Depends: libc6 (>= 2.7), libpcap0.8 (>= 0.9.8), tcl8.4 (>= 8.4.16) Description: Active Network Smashing Tool hping3 is a network tool able to send custom ICMP/UDP/TCP packets and to display target replies like ping does with ICMP replies. It handles fragmentation and arbitrary packet body and size, and can be used to transfer files under supported protocols. Using hping3, you can test firewall rules, perform (spoofed) port scanning, test network performance using different protocols, do path MTU discovery, perform traceroute-like actions under different protocols, fingerprint remote operating systems, audit TCP/IP stacks, etc. hping3 is scriptable using the Tcl language. Homepage: http://www.hping.org/
İlgili pakete ait sistem dosyalarını listelemek için ise -L parametresi kullanılabilmektedir:
# dpkg -L hping3 /. /usr /usr/sbin /usr/sbin/hping3 /usr/share /usr/share/doc /usr/share/doc/hping3 /usr/share/doc/hping3/SPOOFED_SCAN.txt.gz /usr/share/doc/hping3/changelog.gz /usr/share/doc/hping3/BUGS /usr/share/doc/hping3/MORE-FUN-WITH-IPID /usr/share/doc/hping3/API.txt.gz /usr/share/doc/hping3/README ...
Bir .deb paketinin içeriğini görüntülemek için ise -c parametresi kullanılmaktadır.
# dpkg -c rsync_3.1.0-3_amd64.deb drwxr-xr-x root/root 0 2014-04-16 10:38 ./ drwxr-xr-x root/root 0 2014-04-16 10:38 ./lib/ drwxr-xr-x root/root 0 2014-04-16 10:38 ./lib/systemd/ drwxr-xr-x root/root 0 2014-04-16 10:38 ./lib/systemd/system/ -rw-r--r-- root/root 188 2013-09-30 10:54 ./lib/systemd/system/rsync.service drwxr-xr-x root/root 0 2014-04-16 10:38 ./usr/ drwxr-xr-x root/root 0 2014-04-16 10:38 ./usr/bin/ -rwxr-xr-x root/root 390704 2014-04-16 10:38 ./usr/bin/rsync drwxr-xr-x root/root 0 2014-04-16 10:38 ./usr/share/ drwxr-xr-x root/root 0 2014-04-16 10:38 ./usr/share/man/ drwxr-xr-x root/root 0 2014-04-16 10:38 ./usr/share/man/man5/ -rw-r--r-- root/root 15833 2014-04-16 10:38 ./usr/share/man/man5/rsyncd.conf.5.gz drwxr-xr-x root/root 0 2014-04-16 10:38 ./usr/share/man/man1/ -rw-r--r-- root/root 56207 2014-04-16 10:38 ./usr/share/man/man1/rsync.1.gz drwxr-xr-x root/root 0 2014-04-16 10:38 ./usr/share/doc/ ...
dpkg ile ilgili daha fazla bilgi için ayrıca dpkg’nin sayfasına gözatmanızı tavsiye ederim.
mailsend – Komut Satırından Posta Göndermek
https://github.com/muquit/mailsend adresinde, komut satırından (ve SMTP) üzerinden email göndermeye yarayan küçük bir uygulama var. Normalde, nix sistemlerde default mail komutunu kullanarak iletmek istediğiniz postayı, sunucu üzerinde bulunan default MTA’ya vererek gönderilmesini sağlayabiliyorsunuz. Ancak bu işlemi yaptığınız sunucu bir posta sunucusu değilse muhtemelen giden mail, alıcı tarafında Sarı Çizmeli Mehmet Ağa’dan gelen ne idüğü belirsiz bir email muamelesi görüp junk’a iletilecektir. İşte bu gibi bir probleminiz varsa mailsend kullanmak akıllıca olabilir. Zira, mailsend ile komut satırından örneğin gmail hesabınız üzerinden smtp ya da submission portundan mail gönderebiliyorsunuz.
Elbette bu yöntemi kullanmak için -mail komutu gibi sistemde default bulunan bir uygulama olmadığından dolayı- mailsend’i sisteminize kurmanız gerekiyor. Aşağıda bu kurulumu ve uzaktaki bir posta sunucusuna oturum açıp (örnek olarak gmail üzerinden) nasıl posta gönderilebileceğine değineceğim.
Advanced Copy – CP Komutu ve Progress Bar
http://mylinuxbook.com/advanced-copy-cp-command/ adresinde cp ve mv komutunun, kopyalama ya da taşıma işlemine ait gidişatı gösteren bir progress bar’a sahip patch’li bir versiyonu var. Aşağıda örnek bir çıktısı olan araç özellikle büyük dosya ve dizin kopyalama işlerinde durumu, ekstra bir araç ya da komuta ihtiyaç duymadan takip edebilmek açısından epey kullanışlı.
1469 files copied so far... 130.2 MiB / 298.7 MiB [|||||||||||||||||||||||||||||------------------------------------] 43.6 % Copying at 23.4 MiB/s (about 0h 0m 31s remaining) BigFolder/automation/delegates/class-list.jpeg 1.5 MiB / 2.0 MiB [|||||||||||||||||||||||||||||||||||||||||||||||------------------] 75.0 %
Aşağıda advanced-copy’nin nasıl kurulup kullanılabileceği ile ilgili notlar mevcut.
Nmap ile Networkteki Sahte Gateway’lerin Tespiti
Geçenlerde ISC‘de, networklerdeki rogue gatewaylerin nmap ile nasıl tespit edilebileceğini anlatan güzel bir yazı yayınlandı. [1] Buna göre, nmap’in ip-forwarding scriptini kullanarak networkteki cihazların her birine özel bir icmp-ehco requesti gönderip, dönen cevaplardan ip forwarding’i etkin olan yani üzerinden trafik geçirebilecek durumda olan cihazları bulabiliyorsunuz. Bir başka deyişle, böyle bir taramada default gateway’iniz dışında ip forwarding’i açık olan bir cihaz listelenirse, ağınızda kontrolünüz dışında bir çıkış kapısı daha var demek olabilir ki arp poisoning ile tüm trafik bu noktadan geçiyor ve bu şekilde networkünüz sniff ediliyor bile olabilir.
Yukarıdaki örnek bir senaryo olsa da özellikle raspberry pi gibi küçük bilgisayarların networklerde arka kapı oluşturmak için kolayca kullanılabileceği bilindiğinden aslında pek de hafife alınacak bir konu değildir.
Netwörküzde böyle bir tarama yapmak için ip-forwarding scriptini şu şekilde kullanabilirsiniz:
nmap -sn 10.0.0.0/24 --script ip-forwarding --script-args="target=www.google.com"
Bu komuta göre öncelikle 10.0.0.0/24 networkünde ping scan yapılacak ve up durumdaki hostlar tespit edilecektir. Sonrasında da bu hostlara ip-forwarding scripti kullanılarak www.google.com için özel bir icmp-echo paketi gönderilecek ve ip forwarding yapan host var ise aşağıdaki gibi listelenecektir:
Nmap scan report for 10.0.0.98 Host is up (0.047s latency). MAC Address: F4:6D:04:9D:92:ED (Asustek Computer) Host script results: | ip-forwarding: |_ The host has ip forwarding enabled, tried ping against (www.google.com)
Bu şekilde de default gateway’iniz dışında ip forwarding yapan makinaları tespit etmeniz mümkün olacaktır.
Yazının orjinali şurada mevcut; detaylar için gözatabilirsiniz:
htaccess combiner ile Apache Performance Tunning
Apache üzerinde performansa direk etkisi olan en önemli konulardan birisi de “AllowOverride” direktifi ile devreye alınan htaccess kullanımıdır. Directory ya da vhost bazlı yapılandırma işlerinde oldukça kolaylık sağlayan bir özellik olmasına rağmen, bilindiği gibi AllowOverride direktifi None dışındaki bir değere set edildiğinde, apache kök dizini ve tüm alt dizinlerde .htaccess dosyası arayıp genel yapılandırmayı override edecek herhangi bir yapılandırma direktifi olup olmadığını kontrol eder. Özellikle çok sayıda alt dizinden oluşan bir klasör yapısı olan durumlarda performansa doğrudan etkisi olur.
Yukarıda bahsettiğim bu nedenden ötürü apache ile ilgili performans tavsiyelerinde mümkünse htaccess kullanımından tamamen kaçınılması, bunun yerine .htaccess içerisinde tanımlanması gereken direktifleri doğrudan ana yapılandırma dosyasında Directory blokları içerisinde belirtilmesi önerilmektedir. Elbette ana yapılandırma dosyalarına erişemeyen vhost sahipleri için AllowOverride direktifini kullanmanız elzem olabilir ancak böyle bir ihtiyaç yoksa bu direktifi None yapabilir ve apache’nin bahsi geçen .htaccess arama işi ile uğraşmasının önüne geçebilirsiniz.
Yazının başlığında bahsettiğim htacess combiner da sunucunuzda halihazırda htaccess dosyaları olması durumunda (örnek olarak birden çok wordpress, drupal vs. gibi cms yayınlanıyorsa), tüm htaccess içeriklerini okuyarak hepsini kombine eden ve ana yapılandırma dosyanıza (httpd.conf vs.) ekleyebileceğiniz hale getiren bir shell script. https://gist.github.com/colinmollenhour/459311 adresinde yayınlanan bu scripti web sunucunuzun en üst dizininde çalıştırdığınızda aynı dizinde .htaccess-combined isimli bir dosya oluşturarak sunucudaki tüm .htaccess dosyalarının içeriğini doğru syntax ile bu dosyaya yazıyor. Bahsi geçen bu içeriği ana yapılandırma dosyanıza ekleyip, AllowOverride direktifini de None yaparsanız (apache restart sonrası) sunucu üzerinden yük almış oluyorsunuz.
MySQL Server Time Zone Değişikliği
MySQL sunucusu başladığı zaman time zone olarak sistem saatini kullanır ve system_time_zone değişkenine atar. Bir nedenden ötürü MySQL’in zaman bilgisini sisteminkinden farklı bir time zone’a atamanız gerekirse bu işlemi global ve per-connection olmak üzere iki farklı şekilde yapabilirsiniz.
Global time zone MySQL sunucusunun default zaman bilgisini set ederken, per-connection time zone ise sadece ilgili session için zaman bilgisinin atanmasını sağlar; yani per-connection time zone özelliğini kullanarak aynı MySQL sunucusu üzerinde birden fazla uygulama için farklı zone’lar tanımlanabilir.
FreeBSD – Pure-ftpd: [ERROR] Unable to find the ‘ftp’ account”
FreeBSD sistemlerde port üzerinden pure-ftpd kurulumu yaptıktan sonra pure-ftpd’yi start etmek istediğinizde aşağıdaki gibi bir hata ile karşılaşabilirsiniz:
[ERROR] Unable to find the 'ftp' account"
Bu durumun nedeni kurulum sırasında ftpgroup isimli bir grup oluşturulup bu gruba dahil edilmesi gereken ftp isimli hesabın oluşturulmuyor olmasıdır. Sistemde ftp isimli bir hesap bulunamadığı için pure-ftpd teorik olarak bu kullanıcıya ihtiyaç duymuyor olsa da servisin başlatılması sırasında sorun çıkarmaktadır.
Sonuç olarak bu kullanıcıyı sisteminize eklemeniz gerekir:
# pw useradd ftp -u 14 -g 14 -s /sbin/nologin -d /dev/null
Böylece servisi bir kez daha başlatmayı denediğinizde sorun çıkarmayacaktır.
Linux Sistemlerde Komut Satırından Timezone Değişikliği
Linux sistemlerde timezone değişikliği yapmanın bir kaç yolu var; bunlardan birisi de /usr/share/zoneinfo dizini altında bulunan timezone dosyalarına /etc altında localtime ismi ile bir sembolik link oluşturmaktır. (Zaten sistemin kurulumu aşamasında da belirttiğiniz timezone bu şekilde set edilir.) Elbette ntpd gibi bu işleri otomatik olarak yapmaktan sorumlu bir servis çalıştırmak da bir yöntemdir ancak ESXi gibi üzerine ntpd vs. kuramayacağınız özel linux dağıtımlarında bu manual yönetimi kullanmak icap edebilmektedir.