Serija RHCSA: Namestitev, konfiguracija in zaščita spletnega in FTP strežnika - 9. del


Spletni strežnik (znan tudi kot strežnik HTTP) je storitev, ki obravnava vsebino (najpogosteje spletne strani, vendar tudi druge vrste dokumentov) do odjemalca v omrežju.

Strežnik FTP je eden najstarejših in najpogosteje uporabljenih virov (tudi do danes), ki omogoča dostop do datotek odjemalcem v omrežju v primerih, ko overjanje ni potrebno, saj FTP uporablja uporabniško ime in geslo brez šifriranja.

Spletni strežnik, ki je na voljo v RHEL 7, je različica 2.4 strežnika Apache HTTP. Kar zadeva strežnik FTP, bomo za vzpostavitev povezav, zaščitenih s TLS, uporabili zelo varen Ftp Daemon (alias vsftpd).

V tem članku bomo razložili, kako namestiti, konfigurirati in zaščititi spletni strežnik in strežnik FTP v RHEL 7.

Namestitev strežnika Apache in FTP

V tem priročniku bomo uporabili strežnik RHEL 7 s statičnim naslovom IP 192.168.0.18/24. Če želite namestiti Apache in VSFTPD, zaženite naslednji ukaz:

# yum update && yum install httpd vsftpd

Po končani namestitvi bosta obe storitvi na začetku onemogočeni, zato ju moramo zaenkrat zagnati ročno in jim omogočiti samodejni zagon z naslednjim zagonom:

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

Poleg tega moramo odpreti vrata 80 in 21, kjer poslušata demona splet in ftp, da omogočimo dostop do teh storitev od zunaj:

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

Če želite potrditi, da spletni strežnik deluje pravilno, zaženite brskalnik in vnesite IP strežnika. Morali bi videti preskusno stran:

Kar zadeva strežnik ftp, ga bomo morali dodatno konfigurirati, kar bomo storili čez minuto, preden bomo potrdili, da deluje po pričakovanjih.

Konfiguriranje in zaščita spletnega strežnika Apache

Glavna konfiguracijska datoteka za Apache se nahaja v /etc/httpd/conf/httpd.conf , vendar se lahko zanaša na druge datoteke, ki so znotraj /etc/httpd/conf.d.

Čeprav bi privzeta konfiguracija v večini primerov zadoščala, je dobro, da se seznanite z vsemi razpoložljivimi možnostmi, kot je opisano v uradni dokumentaciji.

Kot vedno naredite varnostno kopijo glavne konfiguracijske datoteke, preden jo uredite:

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

Nato ga odprite z želenim urejevalnikom besedil in poiščite naslednje spremenljivke:

  1. ServerRoot: imenik, v katerem so shranjene konfiguracijske datoteke strežnika, napake in dnevniške datoteke.
  2. Poslušaj: naroči Apacheju, naj posluša določen naslov IP in/ali vrata.
  3. Vključi: omogoča vključitev drugih konfiguracijskih datotek, ki morajo obstajati. V nasprotnem primeru strežnik ne bo uspel, v nasprotju z direktivo IncludeOptional, ki je tiho prezrta, če navedene konfiguracijske datoteke ne obstajajo.
  4. Uporabnik in skupina: ime uporabnika/skupine za zagon storitve httpd kot.
  5. DocumentRoot: Imenik, iz katerega bo Apache služil vašim dokumentom. Privzeto so vse zahteve vzete iz tega imenika, simbolične povezave in vzdevki pa se lahko uporabijo za usmerjanje na druge lokacije.
  6. ServerName: ta direktiva nastavi ime gostitelja (ali naslov IP) in vrata, ki jih strežnik uporablja za identifikacijo.

Prvi varnostni ukrep bo sestavljen iz ustvarjanja namenskega uporabnika in skupine (tj. Tecmint/tecmint) za zagon spletnega strežnika kot in spreminjanje privzetih vrat na višja (v tem primeru 9000):

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

Konfiguracijsko datoteko lahko preizkusite z.

# apachectl configtest

in če je vse v redu, znova zaženite spletni strežnik.

# systemctl restart httpd

in ne pozabite omogočiti novih vrat (in onemogočiti starih) v požarnem zidu:

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

Upoštevajte, da lahko zaradi pravilnikov SELinux uporabljate samo vrata, ki jih vrne

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

za spletni strežnik.

Če želite uporabiti druga vrata (tj. Vrata TCP 8100), jih boste morali dodati v kontekst vrat SELinux za storitev httpd:

# semanage port -a -t http_port_t -p tcp 8100

Če želite dodatno zaščititi namestitev Apache, sledite tem korakom:

1. Uporabnik Apache deluje, ker ne bi smel imeti dostopa do lupine:

# usermod -s /sbin/nologin tecmint

2. Onemogočite seznam imenikov, da brskalniku preprečite prikazovanje vsebine imenika, če v njem ni indeksa.html.

Uredite /etc/httpd/conf/httpd.conf (in konfiguracijske datoteke za navidezne gostitelje, če obstajajo) in se prepričajte, da je nastavljena direktiva Options, tako na vrhu kot na ravni blokov imenika. do Brez:

Options None

3. V odgovorih HTTP skrijte informacije o spletnem strežniku in operacijskem sistemu. Uredite /etc/httpd/conf/httpd.conf , kot sledi:

ServerTokens Prod 
ServerSignature Off

Zdaj ste pripravljeni začeti prikazovati vsebino iz vašega imenika/var/www/html.

Konfiguriranje in zaščita strežnika FTP

Kot v primeru Apache je tudi glavna konfiguracijska datoteka za Vsftpd (/etc/vsftpd/vsftpd.conf) dobro komentirana in čeprav bi privzeta konfiguracija zadostovala za večino aplikacij, se morate seznaniti z dokumentacijo in man stran (man vsftpd.conf) za učinkovitejše upravljanje strežnika ftp (tega ne morem dovolj poudariti!).

V našem primeru gre za naslednje smernice:

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

Z uporabo chroot_local_user = YES bodo lokalni uporabniki takoj po prijavi v privzeto zaprti zapor v svojem domačem imeniku. To pomeni, da lokalni uporabniki ne bodo mogli dostopati do datotek zunaj ustreznih domačih imenikov.

Nazadnje, če želite ftp omogočiti branje datotek v uporabnikovem domačem imeniku, nastavite naslednjo logično vrednost SELinux:

# setsebool -P ftp_home_dir on

Zdaj se lahko s strežnikom ftp povežete z odjemalcem, kot je Filezilla:

Upoštevajte, da dnevnik /var/log/xferlog beleži prenose in nalaganja, kar se ujema z zgornjim seznamom imenikov:

Povzetek

V tej vadnici smo razložili, kako nastaviti splet in strežnik ftp. Zaradi obsežnosti teme ni mogoče zajeti vseh vidikov teh tem (tj. Virtualnih spletnih gostiteljev). Zato vam priporočam, da na tem spletnem mestu preverite tudi druge odlične članke o Apacheju.