RHCSA sērija: Tīmekļa un FTP servera instalēšana, konfigurēšana un drošība - 9. daļa


Tīmekļa serveris (pazīstams arī kā HTTP serveris) ir pakalpojums, kas tīklā esošam klientam pārvalda saturu (visbiežāk tīmekļa lapas, bet arī cita veida dokumentus).

FTP serveris ir viens no vecākajiem un visbiežāk izmantotajiem resursiem (pat līdz šai dienai), lai failus padarītu pieejamus klientiem tīklā gadījumos, kad autentifikācija nav nepieciešama, jo FTP izmanto lietotājvārdu un paroli bez šifrēšanas.

RHEL 7 pieejamais tīmekļa serveris ir Apache HTTP servera 2.4 versija. Attiecībā uz FTP serveri mēs izmantosim ļoti drošu Ftp dēmonu (aka vsftpd), lai izveidotu savienojumus, kurus nodrošina TLS.

Šajā rakstā mēs izskaidrosim, kā instalēt, konfigurēt un aizsargāt tīmekļa serveri un FTP serveri RHEL 7.

Apache un FTP servera instalēšana

Šajā ceļvedī mēs izmantosim RHEL 7 serveri ar statisko IP adresi 192.168.0.18/24. Lai instalētu Apache un VSFTPD, palaidiet šādu komandu:

# yum update && yum install httpd vsftpd

Kad instalēšana būs pabeigta, abi pakalpojumi sākotnēji tiks atspējoti, tāpēc mums pagaidām tie jāsāk manuāli un jāļauj automātiski sākt ar nākamo sāknēšanu:

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

Turklāt mums jāatver 80. un 21. ports, kur attiecīgi klausās tīmekļa un ftp dēmoni, lai ļautu piekļūt šiem pakalpojumiem no ārpuses:

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

Lai apstiprinātu, ka tīmekļa serveris darbojas pareizi, aktivizējiet pārlūkprogrammu un ievadiet servera IP. Jums vajadzētu redzēt testa lapu:

Runājot par ftp serveri, mums tas būs jākonfigurē tālāk, ko mēs izdarīsim pēc minūtes, pirms apstiprināsim, ka tas darbojas, kā paredzēts.

Apache tīmekļa servera konfigurēšana un drošība

Apache galvenais konfigurācijas fails atrodas /etc/httpd/conf/httpd.conf , taču tas var paļauties uz citiem failiem, kas atrodas /etc/httpd/conf.d.

Lai gan pēc noklusējuma konfigurācijas vairumam gadījumu vajadzētu būt pietiekamai, ieteicams iepazīties ar visām pieejamajām opcijām, kas aprakstītas oficiālajā dokumentācijā.

Kā vienmēr, pirms rediģēšanas izveidojiet galvenā konfigurācijas faila dublējumkopiju:

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

Pēc tam atveriet to ar vēlamo teksta redaktoru un meklējiet šādus mainīgos:

  1. ServerRoot: direktorija, kurā tiek glabāti servera konfigurācijas, kļūdu un žurnāla faili.
  2. Klausīties: uzdod Apache klausīties noteiktu IP adresi un/vai portus.
  3. Iekļaut: ļauj iekļaut citus konfigurācijas failus, kuriem jābūt. Pretējā gadījumā serveris neizdosies, pretstatā direktīvai IncludeOptional, kuru klusībā ignorē, ja norādīto konfigurācijas failu nav.
  4. Lietotājs un grupa: tā lietotāja/grupas nosaukums, kas darbojas kā httpd pakalpojums.
  5. DocumentRoot: direktorija, no kuras Apache apkalpos jūsu dokumentus. Pēc noklusējuma visi pieprasījumi tiek ņemti no šī direktorija, taču, lai norādītu uz citām vietām, var izmantot simboliskas saites un aizstājvārdus.
  6. ServerName: šī direktīva nosaka resursdatora nosaukumu (vai IP adresi) un portu, kuru serveris izmanto, lai sevi identificētu.

Pirmais drošības pasākums sastāv no īpaša lietotāja un grupas (t.i., tecmint/tecmint) izveidošanas, lai palaistu tīmekļa serveri kā, un noklusējuma porta mainīšana uz augstāku (šajā gadījumā 9000):

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

Jūs varat pārbaudīt konfigurācijas failu ar.

# apachectl configtest

un, ja viss ir kārtībā, restartējiet tīmekļa serveri.

# systemctl restart httpd

un neaizmirstiet ugunsmūrī iespējot jauno portu (un atspējot veco):

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

Ņemiet vērā, ka SELinux politikas dēļ jūs varat izmantot tikai tos portus, kurus ir atgriezusi

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

tīmekļa serverim.

Ja vēlaties izmantot citu portu (t.i., TCP portu 8100), tas būs jāpievieno SELinux porta kontekstam pakalpojumā httpd:

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

Lai vēl vairāk aizsargātu Apache instalāciju, rīkojieties šādi:

1. Lietotājs Apache darbojas, jo tam nevajadzētu piekļūt čaulai:

# usermod -s /sbin/nologin tecmint

2. Atspējojiet direktoriju sarakstu, lai pārlūkprogrammā netiktu rādīts direktorija saturs, ja šajā direktorijā nav index.html.

Rediģējiet /etc/httpd/conf/httpd.conf (un virtuālo resursdatoru konfigurācijas failus, ja tādi ir) un pārliecinieties, vai ir iestatīta opciju direktīva gan augšdaļā, gan direktoriju bloku līmenī uz Neviens:

Options None

3. HTTP atbildēs paslēpiet informāciju par tīmekļa serveri un operētājsistēmu. Rediģējiet /etc/httpd/conf/httpd.conf šādi:

ServerTokens Prod 
ServerSignature Off

Tagad esat gatavs sākt apkalpot saturu no direktorija/var/www/html.

FTP servera konfigurēšana un drošība

Tāpat kā Apache gadījumā, arī Vsftpd (/etc/vsftpd/vsftpd.conf) galvenais konfigurācijas fails ir labi komentēts, un, lai gan lielākajai daļai lietojumprogrammu vajadzētu pietikt ar noklusējuma konfigurāciju, jums jāiepazīstas ar dokumentācija un man lapa (man vsftpd.conf) , lai efektīvāk darbotos ar ftp serveri (es to nevaru pietiekami uzsvērt!).

Mūsu gadījumā šīs ir izmantotās direktīvas:

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

Izmantojot chroot_local_user = YES , vietējie lietotāji (pēc noklusējuma) tūlīt pēc pieteikšanās tiks ievietoti chroot’ed cietumā viņu mājas direktorijā. Tas nozīmē, ka vietējie lietotāji nevarēs piekļūt failiem ārpus viņu attiecīgajiem mājas direktorijiem.

Visbeidzot, lai ļautu ftp lasīt failus lietotāja mājas direktorijā, iestatiet šādu SELinux boolean:

# setsebool -P ftp_home_dir on

Tagad varat izveidot savienojumu ar ftp serveri, izmantojot tādu klientu kā Filezilla:

Ņemiet vērā, ka žurnāls /var/log/xferlog reģistrē lejupielādes un augšupielādes, kas atbilst iepriekšējam direktoriju sarakstam:

Kopsavilkums

Šajā apmācībā mēs esam paskaidrojuši, kā iestatīt tīmekli un ftp serveri. Tēmas plašuma dēļ nav iespējams aptvert visus šo tēmu aspektus (t.i. virtuālos tīmekļa mitinātājus). Tāpēc es iesaku jums pārbaudīt arī citus izcilus rakstus šajā vietnē par Apache.