RHCSA Serisi: Bir Web ve FTP Sunucusunun Kurulumu, Yapılandırılması ve Güvenliğinin Sağlanması - Bölüm 9


Web sunucusu (HTTP sunucusu olarak da bilinir), içeriği (çoğunlukla web sayfaları, ancak diğer belge türleri de) ağdaki bir istemciye aktaran bir hizmettir.

FTP sunucusu, FTP kullanıcı adı ve kullandığından kimlik doğrulamanın gerekli olmadığı durumlarda dosyaları ağdaki istemcilerin kullanımına sunan en eski ve en yaygın kullanılan kaynaklardan biridir (bugün bile) şifreleme olmadan şifre.

RHEL 7'de bulunan web sunucusu, Apache HTTP Sunucusunun 2.4 sürümüdür. FTP sunucusuna gelince, TLS tarafından güvenliği sağlanan bağlantılar kurmak için Çok Güvenli Ftp Arka Plan Programını (namı diğer vsftpd) kullanacağız.

Bu makalede RHEL 7'de bir web sunucusunun ve bir FTP sunucusunun nasıl kurulacağını, yapılandırılacağını ve güvenliğinin nasıl sağlanacağını açıklayacağız.

Apache ve FTP Sunucusunun Kurulumu

Bu kılavuzda statik IP adresi 192.168.0.18/24 olan bir RHEL 7 sunucusu kullanacağız. Apache ve VSFTPD'yi yüklemek için aşağıdaki komutu çalıştırın:


yum update && yum install httpd vsftpd

Kurulum tamamlandığında, her iki hizmet de başlangıçta devre dışı bırakılacaktır, bu nedenle bunları şimdilik manuel olarak başlatmamız ve bir sonraki önyüklemeden başlayarak otomatik olarak başlamalarını sağlamamız gerekir:


systemctl start httpd
systemctl enable httpd
systemctl start vsftpd
systemctl enable vsftpd

Ek olarak, bu hizmetlere dışarıdan erişime izin vermek için sırasıyla web ve ftp arka plan programlarının dinlediği 80 ve 21 bağlantı noktalarını açmamız gerekir:


firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

Web sunucusunun düzgün çalıştığını doğrulamak için tarayıcınızı açın ve sunucunun IP'sini girin. Test sayfasını görmelisiniz:

FTP sunucusuna gelince, beklendiği gibi çalıştığını doğrulamadan önce onu daha fazla yapılandırmamız gerekecek ve bunu bir dakika içinde yapacağız.

Apache Web Sunucusunu Yapılandırma ve Güvenliğini Sağlama

Apache'in ana yapılandırma dosyası /etc/httpd/conf/httpd.conf konumunda bulunur, ancak /etc/httpd içinde bulunan diğer dosyalara bağlı olabilir /conf.d.

Varsayılan yapılandırma çoğu durumda yeterli olsa da, resmi belgelerde açıklandığı gibi mevcut tüm seçeneklere aşina olmak iyi bir fikirdir.

Her zaman olduğu gibi, ana yapılandırma dosyasını düzenlemeden önce yedek kopyasını alın:


cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

Ardından tercih ettiğiniz metin düzenleyiciyle açın ve aşağıdaki değişkenleri arayın:

  1. ServerRoot: sunucunun yapılandırma, hata ve günlük dosyalarının tutulduğu dizin.
  2. Dinle: Apache'ye belirli IP adreslerini ve/veya bağlantı noktalarını dinlemesi talimatını verir.
  3. Dahil Et: Var olması gereken diğer yapılandırma dosyalarının eklenmesine olanak tanır. Aksi takdirde, belirtilen yapılandırma dosyaları mevcut değilse sessizce yok sayılan IncludeOptional yönergesinin aksine sunucu başarısız olur.
  4. Kullanıcı ve Grup: httpd hizmetinin çalıştırılacağı kullanıcının/grubun adı.
  5. DocumentRoot: Apache'nin belgelerinizi sunacağı dizin. Varsayılan olarak tüm istekler bu dizinden alınır, ancak sembolik bağlantılar ve takma adlar başka konumlara işaret etmek için kullanılabilir.
  6. SunucuAdı: bu yönerge, sunucunun kendisini tanımlamak için kullandığı ana bilgisayar adını (veya IP adresini) ve bağlantı noktasını ayarlar.

İlk güvenlik önlemi, web sunucusunu bu şekilde çalıştırmak için özel bir kullanıcı ve grup (ör. tecmint/tecmint) oluşturmak ve varsayılan bağlantı noktasını daha yüksek bir bağlantı noktasıyla değiştirmekten (tecmint/tecmint) oluşacaktır. Strong>9000 bu durumda):


ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

Yapılandırma dosyasını kullanarak test edebilirsiniz.


apachectl configtest

ve her şey tamam ise web sunucusunu yeniden başlatın.


systemctl restart httpd

ve güvenlik duvarında yeni bağlantı noktasını etkinleştirmeyi (ve eskisini devre dışı bırakmayı) unutmayın:


firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload

SELinux politikaları nedeniyle yalnızca tarafından döndürülen bağlantı noktalarını kullanabileceğinizi unutmayın.


semanage port -l | grep -w '^http_port_t'

web sunucusu için.

Başka bir bağlantı noktası (ör. TCP bağlantı noktası 8100) kullanmak istiyorsanız, bunu httpd hizmeti için SELinux bağlantı noktası bağlamına eklemeniz gerekir:


semanage port -a -t http_port_t -p tcp 8100

Apache kurulumunuzu daha da güvenli hale getirmek için şu adımları izleyin:

1. Apache kullanıcısı bir kabuğa erişimi olmaması gerektiği gibi çalışıyor:


usermod -s /sbin/nologin tecmint

2. Bir dizinde index.html yoksa, tarayıcının o dizinin içeriğini görüntülemesini önlemek için dizin listelemeyi devre dışı bırakın.

/etc/httpd/conf/httpd.conf dosyasını (ve varsa sanal ana bilgisayarlar için yapılandırma dosyalarını) düzenleyin ve hem üstte hem de üstte Options yönergesinin yer aldığından emin olun. Dizin blok düzeylerinde Yok olarak ayarlanır:


Options None

3. HTTP yanıtlarında web sunucusu ve işletim sistemi hakkındaki bilgileri gizleyin. /etc/httpd/conf/httpd.conf dosyasını aşağıdaki gibi düzenleyin:


ServerTokens Prod 
ServerSignature Off

Artık /var/www/html dizininizden içerik sunmaya hazırsınız.

FTP Sunucusunu Yapılandırma ve Güvenliğini Sağlama

Apache'de olduğu gibi, Vsftpd (/etc/vsftpd/vsftpd.conf) için ana yapılandırma dosyası iyi yorumlanmıştır ve varsayılan yapılandırma çoğu uygulama için yeterli olsa da ftp sunucusunu daha verimli bir şekilde çalıştırmak için dokümantasyon ve (man vsftpd.conf) kılavuz sayfası hakkında bilgi sahibi olmalısınız (bunu yeterince vurgulayamıyorum!).

Bizim durumumuzda bunlar kullanılan direktiflerdir:


anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

chroot_local_user=YES kullanıldığında, yerel kullanıcılar (varsayılan olarak) giriş yaptıktan hemen sonra ana dizinlerindeki chroot'lanmış bir hapishaneye yerleştirilecektir. Bu, yerel kullanıcıların ilgili ana dizinleri dışındaki hiçbir dosyaya erişemeyeceği anlamına gelir.

Son olarak, ftp'nin kullanıcının ana dizinindeki dosyaları okumasına izin vermek için aşağıdaki SELinux boolean'ını ayarlayın:


setsebool -P ftp_home_dir on

Artık ftp sunucusuna Filezilla gibi bir istemci kullanarak bağlanabilirsiniz:

Yukarıdaki dizin listesiyle uyumlu olarak /var/log/xferlog günlüğünün indirme ve yükleme işlemlerini kaydettiğini unutmayın:

Ayrıca Okuyun: Linux Sistemindeki Uygulamalar Tarafından Kullanılan FTP Ağ Bant Genişliğini Damlamayla Sınırlama

Özet

Bu dersimizde web ve ftp sunucusunun nasıl kurulacağını anlattık. Konunun genişliğinden dolayı bu konuların (yani sanal web sunucularının) tüm yönlerini kapsamak mümkün değildir. Bu nedenle, bu web sitesinde Apache ile ilgili diğer mükemmel makalelere de göz atmanızı öneririm.