Aydan Taşdemir Yılmaz

Linux Notları

Recent News

Perşembe, Haziran 28, 2012

Vsftpd 2.3.5 Ayarlar ve Chroot Çözümleri


 Vsftpd 2.3.4 sürümüyle birlikte aşağıda belirtildiği üzere chroot konusunda bazı sınırlamalar getirilmiş. Bu nedenle ayarlar birazcık değişmiş.
- Add stronger checks for the configuration error of running with a writeable
root directory inside a chroot(). This may bite people who carelessly turned
on chroot_local_user but such is life.

Daha önce vsftpd ayarlaması yapmıştım ve ftp sorunsuz çalışıyordu. Fakat yeni kurduğumuz sunucuda benzer ayarları yapmama rağmen sürüm farklılıkları sebebiyle maalesef bir takım zorluklarla karşılaştım. Bu nedenle bir blog yazayımda her şey derli toplu bir yerde bulunsun istedim.
Kurulum ve ayarlar
Kurulumu Ubuntu 12.04 üzerinde yaptığım için onun üzerinden anlatayım.
vsftpd paketini kuruyoruz
#apt-get install vsftpd
Ayar dosyasını düzenliyoruz. Ayarlar şu şekilde
listen=YES 
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
use_localtime=YES
connect_from_port_20=YES
xferlog_enable=YES
chown_uploads=YES
chown_username=www-data
chroot_local_user=YES
user_config_dir=/usr/local/etc/vsftpd_users 
secure_chroot_dir=/var/run/vsftpd/empty 
pam_service_name=vsftpd 
rsa_cert_file=/etc/ssl/private/vsftpd.pem
Ayarları bu şekilde yapma sebebimiz sistemde belirsiz bir kullanıcı girişini engellemek ve bir kullanıcı oluşturup bu kulanıcının kendi home dizini dışında başka yerlere erişimlerini kısıtlamaktır.
Sisteme yeni bir ftp kullanıcısı ekliyoruz.
#adduser ftpuser
Parola belirliyoruz
#passwd ftpuser
Kullanıcının home dizini olarak istediğiniz yeri ayarlayabilmek için /etc/passwd dosyasını düzenleyebilirsiniz.
ftp kullanıcını oluşturup gerekli düzenlemeleri yaptıktan sonra config_dir olarak ayarladığımız dizin altına aşağıdaki dosyayı oluşturuyoruz.
#touch /usr/local/etc/vsftpd_users/ftpuser
Dosyaya aşağıdakileri ekleyerek kullanıcıya gerekli izinleri vermiş oluyoruz.
local_root=/home/ftpuser
dirlist_enable=YES
download_enable=YES
write_enable=YES
Böylece ftpuser kullanıcısı kendi home dizinine erişebilecek , dizin listeleyebilecek , dosya indirip yazma hakkına sahip olacak. Bu ayarları kendi ihtiyaç ve güvenlik önlemlerinize yönelik düzenleyebilirsiniz.
Buraya kadar her şey güzel gittiyse bile iki sıkıntıyla karşılaşabilirsiniz.Dizini bütün kullanıcılar için yazılabilir hale getirdiyseniz eğer vsftpd güvenlik sebebiyle login olmaya izin vermeyecektir. Dizine sadece root kullanıcısı yazabilir derseniz de her ne kadar ayarlarda dizine yazabilsin deseniz bile ftp kullanıcısı dizin içerisinde bir değişiklik (dosya ekleme , çıkarma vb ) yapamayacaktır.
Bunun için biraz googleda araştırdıktan sonra dizin izinlerini ( çok kafiyeli oldu:) aşağıdaki gibi düzenlemem gerektiğini buldum.
#chmod a-w -R /home/ftpuser   --Bütün kullanıcıların yazma hakkını alıyoruz
#chmod g+w -R /home/ftpuser --Sadece gruba yazma hakkı veriyoruz
Fakat hala ftp kullanıcısı dizin içerisinde değişiklik yapma konusunda sıkıntı yaşıyordu. Bu nedenle kullanıcıya da yazma hakkı verdiğimde sorun çözüldü.
#chmod u+w -R /home/ftpuser    --Kullanıcıya yazma hakkı veriyoruz.
Bağlantı kurup kuramadığımızı
#ftp ftp.sunucu.ipsi
sisteme eklediğiniz kullanıcı adı ve parola bilgileri ile test edebilirsiniz.
Bir de bu yazının önemli kısmını öğrendiğim kaynağı belirtelim.
[1]http://rockstar.dyndns.tv/freebsd/vsftpd.html


Çarşamba, Haziran 06, 2012

Ssh tünel kurarak dosya aktarımı

     Diyelim ayrı networkte iki sunucunuz var, bu makinaların ortak haberleştiği bir sunucu var fakat aralarında bağlantı yok ve sizde birinden diğerine dosya aktarımında bulunmak istiyorsunuz, bunun için tünel kurarak ssh bağlantısı yapabilirsiniz.
Sunucularımız A, B ve C olsun almak istediğimiz dosya da C makinasındaki deneme.dump dosyası olsun.
Şekildeki gibi A sunucusu B sunucusu ile B de C ile haberleşebiliyor olsun.
A sunucusu (00.00.00.01)
B sunucusu (00.00.00.02)
C sunucusu (00.00.00.03) ipsine sahip olsun


A sunucusundan
**ssh -L 7075:00.00.00.03:22 root@00.00.00.02 
                 |              |             |                      |         
Boş bir port  C nin IPsi ssh portu       Bnin IPsi
ile tüneli kuruyoruz.
Daha sonra A sunucusuna bağlanıp
**scp -P 7075 root@localhost:/root/deneme.dump .
ile C makinasındaki almak istediğimiz dosyayı alabiliriz.

Cuma, Haziran 01, 2012

LVM (Logical Volume Manager)

      Yazının başlığı her ne kadar sadece LVM gibi görünse de bu yazıda VMware üzerinde bulunan sanal makinaya disk ekleme ve linux makinada bu diski bir logical volume içerisinde tanımlayıp kullanmak istediğimiz şekilde formatlama hakkında öğrendiğim kadarını anlatacağım. 
VMware Disk Ekleme
VMware üzerinde Inventory/Hosts and Clusters kısmına geliyoruz. Disk eklemek istediğimiz sanal makinanın üzerine sağ tıklayıp Edit Settings kısmına geliyoruz.
Sırasıyla Add / Hard Disk / Create a new virtual disk kısmına geliyoruz.
Disk kapasitesini gerekli miktarda ayarlayıp thin provision olarak ayarlıyoruz ( Bunun nedeni eklediğimiz miktarın direk değil ihtiyaç duyuldukça kullanılmasını sağlamak)
Store with the virtual machine kısmını işaretleyerek yeni eklediğimiz hard disk ile sanal makinanın aynı datastore da bulunmasını sağlıyoruz. Bu şekilde sanal makinamıza diski eklemiş oluyoruz.
Fiziksel Volume , Logical Volume ,Volume Group ekleme
VM üzerinde eklediğimiz diski öncelikle fiziksel olarak bölmek isteyip istemediğimize karar veriyoruz. Eklediğimiz diski ikiye bölüp farklı formatlarda farklı amaçlar için kullanabiliriz. 
**Eklediğimiz disk sistem tarafından görünüyor mu kontrol ediyoruz.
#fdisk -l | grep Disk
ile makina üzerinde bulunan diskleri ve boyutlarını görebiliriz. Eklediğimiz bölüm /dev/sdb olarak sistem tarafından görünüyor. 
#fdisk /dev/sdb
gelen seçeneklerden sırasıyla yeni bir disk bölümü yarat (n) ve partitonın sırası (1-4) seçerek yeni bir disk bölümü oluşturabiliriz. 1 seçiyoruz
**Öncelikle /dev/sdb bölümünü fiziksel disk bölümü olarak taratıyoruz
#pvcreate /dev/sdb1
**Sistemde bulunan volume groupları aşağıdaki gibi görüntülüyoruz.
#vgdisplay
**/dev/sdb üzerinde server_data isimli bir volume group yaratıyoruz.
#vgcreate server_data /dev/sdb1
**Volume group hakkındaki bilgileri görüntülüyor eklenip eklenmediğini kontrol ediyoruz.
#vgdisplay
**Total PE diskin fiziksel kapsamının tamamını gösterir. Volume group içerisinde bulunan fiziksel birimlerin kapsamlarının ortalamasını gösterir.
Total PE              76799
**server_data ismiyle oluşturduğumuz volume group üzerinde lv_data isimli bir logical volume yaratıyoruz.
#lvcreate -l 76799 -n lv_data server_data

**Yarattığımız logical volume bilgilerini görüntülüyoruz.


#lvdisplay
**ext4 olarak formatlıyoruz.
#mkfs.ext4 /dev/server_data/lv_data
**Daha sonra /data isimli bir dizin oluşturuyoruz.
#mkdir /data
**Ve lv_data olarak oluşturduğumuz yeni birimi yeni dizinimize mount ediyoruz.
#mount /dev/server_data/lv_data /data
Böylece VM üzerinde eklediğimiz yeni alan /data pathi ile erişilebilir, /dev/sdb fiziksel birimi olarak /dev/server_data volume group altında ve /dev/server_data/lv_data logical volume olarak kullanılmaya hazır durumdadır. 
**En son mount ettiğimiz alanı /etc/fstab dosyasına ekleyerek sistem açılışı sırasında otomatik mount edilmesini sağlamamız gerekiyor.

Hatalı yanlış eksik gördüğünüz kısımlar var ise söylemekten çekinmeyin, konuyu yeni öğrendiğim için anlatımda sıkıntı olabilir fakat aşamalar deneyerek yapılmıştır.

Bu süper bilgiler için İlker Erek Duran' a kocaman teşekkürler :))