Konsolda çok satırlı dosyayı tek satıra dönüştürmek.
Aşağıdaki komutla birden fazla satır veri olan dosyanızı tek satır haline çevirebilirsiniz.
tr -d ‘\n’ < dosyaniz.txt
Aşağıdaki komutla birden fazla satır veri olan dosyanızı tek satır haline çevirebilirsiniz.
tr -d ‘\n’ < dosyaniz.txt
Belli bir ülkeden gelen ip trafiğini kısıtlamak veya engellemek için kullanabileceğiniz bir iptables eklentisidir.Eklenti standart Linux distrolarında eklenmiş,hazır halde değildir.Ayrıca bu eklentiyi kullanabilmeniz için güncel bir geoip veritabanına ihtiyaç duyarsınız.Bu veritabanını da maxmind.com’a üyelik yaparak ücretsiz kullanabileceksiniz.
Debian veya Ubuntu türevleri için öncelikle gerekli paketleri sisteminize kurun.
apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config
Redhat ve Centos için ise;
yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS
Daha sonrasında addons paketini proje sitesinden indirelim.(Not: Dkms modulu olarak veya src paketi olarak da debian/ubuntu depolarından indirebilirsiniz.)
Örneğin (sizin için uygun versiyon işletim sisteminizin kerneline göre farklılık gösterebilir.)
wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.3.tar.xz
Sıkıştırılmaz paketi açıp paketi derliyoruz.
# tar xf xtables-addons-2.3.tar.xz
# cd xtables-addons-2.3
# ./configure
# make
# make install
Kullanacağımız eklenti maxmind’ın eski yapıdaki (Geoip Legacy Databases) veritabanını destekliyor.Öyle görünüyor ki maxmind eski yapıdaki veritabanın da indirme linkini kaldırmış.Yine de Geoip2 veritabanını bir script yazarak eski yapıya dönüştürmek mümkün görünüyor.Nette biraz araştırınca şöyle bir websitesiyle karşılaşıyoruz.
https://mailfud.org/geoip-legacy/
Websitesin sahibi, güncel v2 db yi alıp eski tip db ye sadece çevirmekle kalmamış aynı zamanda bunu sık sık güncelliyor da.
Iptables için uygun olan geoip db linki aşağıdadır.
https://mailfud.org/geoip-legacy/GeoIP-legacy.csv.gz
Linkten dosyayı download ettikten sonra sunucunzda bir yere gz dosyayı açın.
Açılan dosyayı önceden derlenmiş kodda hazır halde olan xt_geoip_build aracı ile iptables’a uygun hale getiriyoruz.
./xt_geoip_build GeoIP-legacy.csv
Ardından gerekli klasörü oluşturup bu db yi içine kopyalıyoruz.
mkdir -p /usr/share/xt_geoip/
cp -r {BE,LE} /usr/share/xt_geoip/
Artık dilediğimiz geoip tabanlı iptables kurallarını yazabiliriz.Son olarak dilerseniz ülke kodlarına https://en.wikipedia.org/wiki/ISO_3166-1 sayfasından bakabilirsiniz.
Örnek olarak Hindistan ve USA ‘dan gelen tüm istekleri engelleyebiliriz.
iptables -I INPUT -m geoip –src-cc IN,US -j DROP
Veya sadece TR dışındaki tüm talepleri engelleyebiliriz.
iptables -I INPUT -m geoip ! –src-cc TR -j DROP
Bir başka örnek ise sadece tcp port 587 e gelen istekleri Türkiye içi ağlarla sınırlandırabiliriz.
iptables -A INPUT -p tcp -m geoip ! –src-cc TR –dport 587 -j DROP
Bu eklentilerin kurulumunu Ubuntu 16.04 ve Ubuntu 14.04 de gerçekleştirdim.Esasen 14.04 de gerekliydi ve hem kaynaktan derleme hem de dkms şeklinde linux çekirdeğine ilavede sorun yaşadım.Sorun yaşamamın sebebini xtables-addons paketindeki başka eklentilerin kullanmakta olduğum kernel ile uyumsuz olduğunu (daha açık olarak belirtmek gerekirse Linux 3.16 da bu bazı eklentilerin desteğinin yeni başladığını) okudum.O yüzden bazı eklentileri mconfig dosyasından iptal ettip.Çünkü bana özellikle geoip modulu gerekiyordu.
Örnek mconfig dosyam aşağıdadır.Karşılıkları boş olanlar sistemde derlenemedi malesef.
# -*- Makefile -*-
#
build_ACCOUNT=m
build_CHAOS=
build_DELUDE=m
build_DHCPMAC=m
build_DNETMAP=m
build_ECHO=m
build_IPMARK=m
build_LOGMARK=m
build_RAWNAT=m
build_STEAL=m
build_SYSRQ=m
build_TARPIT=
build_condition=m
build_fuzzy=m
build_geoip=m
build_gradm=m
build_iface=m
build_ipp2p=m
build_ipv4options=m
build_length2=m
build_lscan=m
build_pknock=
build_psd=m
build_quota2=m
Ancak Ubuntu 16.04 de bunlara hiç gerek duymadan dkms ile tümünü kernele eklemeyi başardım.
Geoip & Iptables kullanmaktaki amacım,mail sunucunun (postfix) email kullanıcı şifre doğrulaması yapılan portlarını kısıtlamak idi.
Tcp Port 25 i sadece email sunucularından gelen isteklere yanıt verir hale getirirken port 587 (submission) ve port 465’i (smtps) sadece TR içinde izin vermek amaç..
Her ne kadar “en mantıklı/iyi çözüm” olmasa da sunucuları brute force ataklarından ve şifresini çaldıran eposta kullanıcılarının başıma açtığı dertlerden kurtardı.
Pcnizde kullanmak istediğiniz 3 monitor var ve bunu ekran kartınıza bağlayıp kullanmak istiyorsunuz.O iş kadar kolay değil.Neden mi?Açıklayalım.
Piyasada satılan ucuz veya orta karar ekran kartları en fazla 2 monitor destekler.Nvidia veya Amd Ati olması önemli değil.Örneğin Ekran kartınızda 1 tane vga 1 tane hdmi ve 1 tane de dvi bağlantısı var.Bunların ikisi aktiftir.Üçüncüsünde güç bulunmaz,monitor taksanız da görüntü alamazsınız.Neticede 3 ekran girişinin olması çeşitlilik yaratmak için. (BKZ Active Power)
Elbette 3 monitor bağlayabileceğiniz ekran kartları da var.Bunlar iki grup.Genelde daha üst seviye,daha yeni veya özellikle bu iş için yapılmış bazı serilen var.Mesela Amd Ati’nin 5770 – 5780 serisi.Bu kartlarda özellikle DP (Display Port) bağlantısı dikkat çekiyor.Sizin anlayacağınız eğer bir ekran kartında DP varsa ikiden fazla monitor desteklemesi büyük olasılıkla mümkün.
Diğer grup ise profesyonel kartlar.CAD uygulamalarıi,mimari,3D işleriyle uğraşanların bir pc parası kadar para saydıkları ekran kartlarından bahsediyorum.Gpro,Firepro,Quadro bunlara örnek.Bunlar 500,600 dolardan 3000-4000 dolara kadar değişen fiyatlarda bulunabiliyor.
Bizim senaryomuzda ise o kadar bütçe yok.Hatta yakınından bile geçmez.Konfigurasyon aşağıda;
1 Viewsonic 2349 23″ monitor.1920x1080px,Viewsonic 2245 22″ 1680×1050,Viewsonic 2035 20″ 1680×1050
2 Zotac 8400GS 512M Pci-E 16x Ekran Kartı,Zotac 7200GS 256M Pci-E 16x Ekran Kartı ve şu bitcoin minerların kullandığı pci-e x16 -x1 pc dönüştürücü.Başta bu dönüştürüc cihaz ile ilgili kuşkularım vardı ama aldıktan sonra bunların yersiz olduğunu anladım.Göreceğiniz gibi kullanılan malzemenin normal anakart-ekran kartı parçalarından pek bir farkı yok.Türkiyedeki alışveriş sitelerinde 80-90 TL civarında.Çinde çok daha ucuz tabi.Aşağıda fotoğrafta görebilirsiniz.
Yaklaşık beş gün cebelleştikten sonra sonunda bir X configurasyonu çıkardım.Bu kadar uzun sürmesinin sebebi elbette konu hakkında pek bir fikrimin olmayışı (oyun fian hiç ilgim yoktur ekran kartlarına) ve Nvidia konfigurasyon aracının salaklıklarını geç farketmiş olmam.Üçüncü sebep de bu X (Xorg) ile uğraşmayı sevmiyor(dum)um.Eski günlerden (Mandrake,Redhat 9 vs zamanları ) kalma bir antipatim var.
Benim amacım 3 monitorü 3 ayrı alan olarak tanımlayıp,hepsini tek bir masaüstünde birleştirmekti.İşte bu da final conf dosyası içeriği.Mantık olarak 3 monitoru de 3 ayrı Xscreen’e tanımladım ve Xineramayı aktif ettim.
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 361.42 (buildd@lgw01-18) Tue Apr 5 14:33:28 UTC 2016
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 304.131 (buildmeister@swio-display-x64-rhel04-16) Sun Nov 8 22:48:17 PST 2015
Section “ServerLayout”
# Removed Option “Xinerama” “0”
# Removed Option “Xinerama” “0”
Identifier “Layout0”
Screen 0 “Screen0” 0 0
Screen 1 “Screen1” RightOf “Screen0”
Screen 2 “Screen2” LeftOf “Screen0”
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “Mouse0” “CorePointer”
Option “Xinerama” “1”
EndSection
Section “Files”
EndSection
Section “InputDevice”
# generated from default
Identifier “Mouse0”
Driver “mouse”
Option “Protocol” “auto”
Option “Device” “/dev/psaux”
Option “Emulate3Buttons” “no”
Option “ZAxisMapping” “4 5”
EndSection
Section “InputDevice”
# generated from default
Identifier “Keyboard0”
Driver “kbd”
EndSection
Section “Monitor”
Identifier “Monitor0”
VendorName “Unknown”
ModelName “ViewSonic VA2349 Series”
HorizSync 24.0 – 82.0
VertRefresh 50.0 – 75.0
Option “DPMS”
EndSection
Section “Monitor”
Identifier “Monitor1”
VendorName “Unknown”
ModelName “ViewSonic VX2035wm”
HorizSync 30.0 – 82.0
VertRefresh 50.0 – 75.0
EndSection
Section “Monitor”
Identifier “Monitor2”
VendorName “Unknown”
ModelName “ViewSonic VX2245wm”
HorizSync 30.0 – 82.0
VertRefresh 50.0 – 75.0
EndSection
Section “Device”
Identifier “Device0”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 8400 GS”
BusID “PCI:1:0:0”
Screen 0
EndSection
Section “Device”
Identifier “Device1”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 7300 SE/7200 GS”
BusID “PCI:2:0:0”
EndSection
Section “Device”
Identifier “Device2”
Driver “nvidia”
VendorName “NVIDIA Corporation”
BoardName “GeForce 8400 GS”
BusID “PCI:1:0:0”
Screen 1
EndSection
Section “Screen”
# Removed Option “MetaModes” “GPU-0.DFP-1: 1680×1050+0+0, GPU-0.DFP-0: 1920×1080+1680+0, GPU-1.DFP-0: 1680×1050+3600+0”
# Removed Option “MultiGPU” “On”
# Removed Option “BaseMosaic” “On”
# Removed Option “nvidiaXineramaInfoOrder” “DFP-1”
# Removed Option “metamodes” “DVI-I-0: nvidia-auto-select +3600+0, DVI-I-1: nvidia-auto-select +1680+0, HDMI-0: nvidia-auto-select +0+0”
# Removed Option “MultiGPU” “On”
# Removed Option “metamodes” “nvidia-auto-select +0+0”
# Removed Option “metamodes” “DVI-I-1: nvidia-auto-select +1680+0, HDMI-0: nvidia-auto-select +0+0”
Identifier “Screen0”
Device “Device0”
Monitor “Monitor0”
DefaultDepth 24
Option “Stereo” “0”
# Option “nvidiaXineramaInfoOrder” “DFP-0”
Option “metamodes” “DVI-I-1: nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection
Section “Screen”
# Removed Option “metamodes” “1680×1050 +0+0”
Identifier “Screen1”
Device “Device1”
Monitor “Monitor1”
DefaultDepth 24
Option “Stereo” “0”
Option “metamodes” “nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection
Section “Screen”
# Removed Option “metamodes” “1680×1050 +0+0”
# Removed Option “metamodes” “nvidia-auto-select +0+0”
Identifier “Screen2”
Device “Device2”
Monitor “Monitor2”
DefaultDepth 24
Option “Stereo” “0”
Option “metamodes” “HDMI-0: nvidia-auto-select +0+0”
Option “SLI” “Off”
Option “MultiGPU” “Off”
Option “BaseMosaic” “off”
SubSection “Display”
Depth 24
EndSubSection
EndSection
Section “Extensions”
Option “Composite” “Disable”
EndSection
Eğer işi nvidia aracına bırakırsanız twinview + Xinerema gibi bir konfigurasyon yaparak çileden çıkartıyor.Twinview Nvidia’nın geliştirdiği bir çoklu monitor destekleyen bir özellik.Tek bir cümleyle özetleyeyim.İlk iki monitorunuzu tek masaüstü (tek x screen) yaparak 3.monitorunuze yeni bir x screen’e atıyor.Bu durumda iki monitorunuz de tastamam çalışıp tek masaüstü görüntüsü verirken,3.monitor üvey evlat muamelesi görerek kapkara bir şekilde öylecene duruyor.yor.Aslında bu şekilde de bir şekilde 3 aktif monitorunuz var.Ancak programları çalıştırırken Screen 1 yani 0.1 de çalışmasının gerektiğini belirtmelisiniz vs vs.Pek kullanışlı sayılmaz.
Önemli Notlar;
Bu işi sadece bir tek nvidia driver versiyonunda (nvidia-304) yapabildim.Diğerlerinde ya işlere ters gitti ya da doğru driver değildi.Aşağıdaki ekran görüntüsünde detaylarını görebilirsiniz.
Son not; Bu çalışmayı Ubuntu 16.04 de yaptım ama sonuç olarak bu X (Xorg) ve nvidia driver meselesi.O yüzden diğer centos,fedora,debian gibi dağıtımlarda bunun çalışacağını düşünüyorum.
Yukarıdaki konfigurasyonda malesef compizi çalıştıramadım.Nette okuduğum onlarca makalede benzer şeyler yazıyor.gnome-flashback paketini kurup eski metacity-gnome-masaüstünü kullanabiliyorsunuz.Çok keyifsiz bir durum.Unitye alıştıktan sonra eskiye dönmek hayli sıkıcı.En azından durum şimdilik böyle.
Xinerama nispeten eski ve performans kayıplarına sebep oluyor.Donanımların getirdiği twinview gibi çözümler performansta fark yaratıyor.
Her SMTP sunucusu alıcısına iletemediği epostaları (bounce ) bir başka bildirimle göndericiye iletmek zorundadır.Bu bir standarttır.Gönderici gönderdiği epostayı alıcısına ulaşmadığını bu bildirim mesajıyla farkeder.Bu bildirimin adı non delivery reports veya kısa ndr,diğer başka bir tanımı da DSN yani Delivery Status Notification ‘dur.
Bu tasarlanan,iyiye hizmet eden bilişimin eskide kalmış bir hikayesi.Gerçek dünyada ise durum şöyle;
Bu raporlama sisteminin kötü amaçla kullanılabileceğini farkeden aşırı zeki spamcı milleti çaktırmadan milyonlarca spam gönderebilmekte.Nasıl mı?
Bilindiği gibi epostada bir envelope sender aynı zamanda authenticated sender olmak zorunda değil.Yani eski mektup gönderdiğimiz günlere dönecek olursak.Göndereceğim zarfın üzerine kendi adımı yazmak zorunluluğum yok.
Backscatter epostanın envelope sender bölümüne istenilen email adresini yazılır.Alıcı kısmında da karşı tarafta bulunmayan bir eposta adresi belirtildiğinde gönderilen epostayı alıcı smtp sunucusu red edecektir.Peki bu durumda NDR nereye gönderilecek?Elbette envelope sender kısmındaki kurbanımızın eposta adresine.Karda yürü ama izini belli etme.
Sanıyorum ki binlerce dolar ödenen o pek gözde,pek güzide eposta sistemleri kendi içinde bir mekanizmayla bu işi çözmüşlerdir.
Ama binlerce dolarım yok,aynı zamanda hosting işindeyim diyorsanız hayat size biraz daha zor.Zira elimizde kullanabildiğimiz en modern,gelişmiş ve güvenli smtp postfix.Postfixin resmi sayfasında backscatter engelleme ile ilgili bir takım çözüm önerileri var.Tembellik etmedim okudum.Neticede sunucunuzda bir veya birkaç hosting koşuyorsa kabul edilebilir bir çözüm sunulmuş.Ancak bu çözüm,paylaşımlı bir hosting sunucusu yönetiyorsanız ve şöyle 50-100 ve üzeri hosting barındırılıyorsa hiçbir işe yaramaz.
Yine gerçek dünyadan bir örnek vermek gerekirse;zaten yukarda sözünü ettiğimiz raporlama sistemi kanımca pek bir işe yaramıyor.Çünkü kimse pc başında karşısına çıkan hata mesajlarını okumuyor.O yüzden kökten çözüm olarak NDR’ı komple kapatma yolunu seçebilirsiniz.
Bunun için postfix’in master.cf dosyasını açın.
ve aşağıdaki satırı;
bounce unix – – n – 0 bounce
şu şekilde değiştirin;
bounce unix – – n – 0 discard
dosyayı kaydedip kapattıktan sonra postfix servisini restart edin.Hepsi bu kadar.
Call to undefined function get_failure_redirect_url() in /usr/local/psa/admin/auto_prepend/auth.php3 on line 179
Tarayıcınızdan Linux Plesk 9.5 web sunucunuza 8443 veya 8880 portundan panele giriş esnasında yukarıdaki gibi bir hata mesajı ile karşılaşmanız durumunda yapmanız gereken mikro güncellemeleri ( MU Micro Updates ) çalıştırmak olacaktır.
Favori ssh istemcinizle sunucuya root olarak ssh bağlantısı kurun.Komut satırında;
/usr/local/psa/admin/bin/autoinstaller –select-product-id plesk –select-release-current –reinstall-patch –install-component base
komutunu çalıştırın.Script biraz bekleyip sistemde kurulu paket bilgisini aldıktan sonra mikro güncellemeleri uygulayacak,ve sorunsuz olarak plesk arayüzüne giriş yapabiliyor olacaksınız.
Plesk 9.5 ‘in kurulabildiği her Linux distrosunda bu script bu path de olmayabilir.Sizin ihtiyacınız olan uygun versiyonda bir plesk autoinstaller dır.Bu sebeple bu scripti /root/parallels klasörü altında da bulmanız olasıdır.
27 Ocakta haberi duyurulan ve ciddi risk taşıyan GNU C Library (glibc) zaafiyetinden faydalanarak sunucunun kontrolü kötü niyetli kişiler tarafından ele geçirilebiliyor.
Söz konusu açık, glibc 2.18 öncesi versiyonları etkiliyor.2.18 ve sonrasında şu anda böyle bir risk bulunmadığı ifade ediliyor.
Pek çok linux dağıtımı var ancak genel olarak hepsi ya Redhat ya da Debian türevi.Ubuntu’ya da sayacak olursak hemen hemen her linux sunucu bu tehdit altında.
Aşağıdaki adreslerde ,konuyla ilgili açıklama ve güncelleme için gerekli bilgiler yer alıyor.
Ubuntu
http://www.ubuntu.com/usn/usn-2485-1/
Debian
https://www.debian.org/security/2015/dsa-3142
Redhat
https://access.redhat.com/security/cve/CVE-2015-0235
Php destekli bir apache web sunucunda kapatılması gerekli php fonksiyonları
mail,system, dl, array_compare, array_user_key_compare, passthru, cat, popen, proc_close, proc_get_status, proc_nice, proc_open,escapeshellcmd,escapeshellarg, show_source, posix_mkfifo, ini_restore, mysql_list_dbs, get_current_user, getmyuid,pconnect, link, symlink, fin, exec, fileread, shell_exec, pcntl_exec, leak, apache_child_terminate, chown, posix_kill, posix_setpgid, posix_setsid, posix_setuid, proc_terminate, syslog, fpassthru, execute, shell, chgrp, stream_select, passthru, socket_select, socket_create, socket_create_listen, socket_create_pair, socket_listen, socket_accept, socket_bind, socket_strerror, pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, openlog, apache_get_modules, apache_get_version, apache_getenv, apache_note, apache_setenv, virtual, eval, allow_url_fopen, pconnect, p_connect,posix_getpwuid,fileowner,symlink,readlink
Debian tabanlı sistemlerde kullanılan açılış yöneticisi olan grub’ı kullanarak root şifresini resetleme
sunucunuza ssh üzerinden login olun.psa-horde paketinin kurulu olduğu dizine geçin;
cd /usr/share/psa-horde/
Bu dizine afterlogic webmail lite uygulamasını indirin;
wget http://www.afterlogic.com/download/webmail_php.zip
Sıkıştırılmış dosyayı açın;
unzip webmail_php.zip
dizinin içine girin;
cd webmail
bu aşamada webmail için gerekli mysql veritabanını oluşturuyoruz;
mysqladmin -uadmin create alwebmaildb -p$(cat /etc/psa/.psa.shadow)
mysql -uadmin -p$(cat /etc/psa/.psa.shadow)
bu komutla mysql konsola girdikten sonra aşağıdaki cümleleri sırasıyla yazın.
CREATE USER ‘afterlogic’@’localhost’ IDENTIFIED BY ‘sizinşifreniz’;
GRANT USAGE ON * . * TO ‘afterlogic’@’localhost’ IDENTIFIED BY ‘sizinşifreniz’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
GRANT ALL PRIVILEGES ON `afterlogic` . * TO ‘afterlogic’@’localhost’;
FLUSH PRIVILEGES;
mysqlden çıktıktan sonra (quit yazarak veya ctrl+c),kurulumda sorun çıkmaması için ufak bir dosya hatasını gideriyoruz;
cd /usr/share/psa-horde/webmail/install/steps/
chmod 644 root compatibility.php
diğer gerekli yazma izinleri (webmailin bulunduğu alanda php scriptlerini Apache çalıştırıyorsa;
cd /usr/share/psa-horde/webmail/
chown apache.apache data/ -R
Browserınızın adres satırına kurulum url adresi olarak aşağıdaki satıra kendi alanadınızın adını yazın.
http://webmail.sizinalanadiniz.com/webmail/install/
web tabanlı kurulum.sırasıyla aşağıdaki aşamaları geçin;
aşamaları tamamladıktan sonra kurulum sizden install dizinini silmenizi isteyecektir;
cd /usr/share/psa-horde/webmail/
rm -rf install/
artık horde webmaili kullanmayacaksanız index.php nin adını değiştirip,yeni index.php nizi oluşturun.
cd /usr/share/psa-horde/
mv index.php index.old.horde
içine şunları yazın.
nano index.php
<?php
header(‘Location: ./webmail/index.php’);
?>