Mfululizo wa RHCSA: Kusakinisha, Kusanidi na Kulinda Wavuti na Seva ya FTP - Sehemu ya 9


Seva ya wavuti (pia inajulikana kama seva ya HTTP) ni huduma inayoshughulikia maudhui (mara nyingi kurasa za wavuti, lakini aina nyingine za hati pia) kwa mteja katika mtandao.

Seva ya FTP ni mojawapo ya rasilimali za zamani na zinazotumiwa sana (hata hadi leo) ili kufanya faili zipatikane kwa wateja kwenye mtandao katika hali ambapo hakuna uthibitishaji unaohitajika kwa kuwa FTP hutumia jina la mtumiaji na nenosiri bila usimbaji fiche.

Seva ya wavuti inayopatikana katika RHEL 7 ni toleo la 2.4 la Seva ya Apache HTTP. Kwa ajili ya seva ya FTP, tutatumia Daemon ya Fetp Salama Sana (aka vsftpd) kuanzisha miunganisho inayolindwa na TLS.

Katika makala haya tutaeleza jinsi ya kusakinisha, kusanidi na kulinda seva ya wavuti na seva ya FTP katika RHEL 7.

Kufunga Apache na Seva ya FTP

Katika mwongozo huu tutatumia seva ya RHEL 7 yenye anwani ya IP tuli ya 192.168.0.18/24. Ili kusakinisha Apache na VSFTPD, endesha amri ifuatayo:

# yum update && yum install httpd vsftpd

Usakinishaji utakapokamilika, huduma zote mbili zitazimwa mwanzoni, kwa hivyo tunahitaji kuzianzisha kwa mikono kwa wakati huu na kuziwezesha kuanza kiatomati kwa kuanza na buti inayofuata:

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

Kwa kuongeza, tunapaswa kufungua bandari 80 na 21, ambapo daemons za mtandao na ftp zinasikiliza, mtawalia, ili kuruhusu ufikiaji wa huduma hizo kutoka nje:

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

Ili kuthibitisha kuwa seva ya wavuti inafanya kazi vizuri, washa kivinjari chako na uweke IP ya seva. Unapaswa kuona ukurasa wa jaribio:

Kuhusu seva ya ftp, tutalazimika kuisanidi zaidi, ambayo tutafanya kwa dakika moja, kabla ya kudhibitisha kuwa inafanya kazi kama inavyotarajiwa.

Kusanidi na Kulinda Seva ya Wavuti ya Apache

Faili kuu ya usanidi ya Apache iko katika /etc/httpd/conf/httpd.conf, lakini inaweza kutegemea faili zingine zilizopo ndani ya /etc/httpd/conf.d.

Ingawa usanidi chaguo-msingi unapaswa kutosha kwa hali nyingi, ni wazo nzuri kufahamiana na chaguo zote zinazopatikana kama ilivyofafanuliwa katika hati rasmi.

Kama kawaida, fanya nakala ya nakala ya faili kuu ya usanidi kabla ya kuihariri:

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

Kisha uifungue na kihariri chako cha maandishi unachopendelea na utafute anuwai zifuatazo:

  1. ServerRoot: saraka ambapo usanidi, hitilafu na faili za kumbukumbu za seva huwekwa.
  2. Sikiliza: inaelekeza Apache kusikiliza kwenye anwani maalum ya IP na/au bandari.
  3. Jumuisha: inaruhusu kujumuishwa kwa faili zingine za usanidi, ambazo lazima ziwepo. Vinginevyo, seva itashindwa, kinyume na maagizo ya IncludeOptional, ambayo yatapuuzwa kimya kama faili za usanidi zilizobainishwa hazipo.
  4. Mtumiaji na Kikundi: jina la mtumiaji/kikundi cha kuendesha huduma ya httpd kama.
  5. DocumentRoot: Saraka ambayo Apache itatumia hati zako. Kwa chaguo-msingi, maombi yote yanachukuliwa kutoka kwenye saraka hii, lakini viungo vya ishara na lakabu zinaweza kutumika kuashiria maeneo mengine.
  6. ServerName: agizo hili linaweka jina la mpangishaji (au anwani ya IP) na mlango ambao seva hutumia kujitambulisha.

Hatua ya kwanza ya usalama itajumuisha kuunda mtumiaji aliyejitolea na kikundi (yaani tecmint/tecmint) ili kuendesha seva ya wavuti na kubadilisha mlango-msingi hadi wa juu zaidi (9000 katika hali hii):

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

Unaweza kujaribu faili ya usanidi na.

# apachectl configtest

na ikiwa kila kitu ni sawa, basi anzisha tena seva ya wavuti.

# systemctl restart httpd

na usisahau kuwezesha bandari mpya (na kuzima ile ya zamani) kwenye ngome:

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

Kumbuka kuwa, kwa sababu ya sera za SELinux, unaweza kutumia milango iliyorejeshwa pekee

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

kwa seva ya wavuti.

Ikiwa unataka kutumia bandari nyingine (yaani TCP port 8100), itabidi uiongeze kwa muktadha wa bandari wa SELinux kwa huduma ya httpd:

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

Ili kulinda zaidi usakinishaji wako wa Apache, fuata hatua hizi:

1. Apache ya mtumiaji anaendesha kwa vile hapaswi kupata ganda:

# usermod -s /sbin/nologin tecmint

2. Zima uorodheshaji wa saraka ili kuzuia kivinjari kuonyesha yaliyomo kwenye saraka ikiwa hakuna index.html iliyopo kwenye saraka hiyo.

Hariri /etc/httpd/conf/httpd.conf (na faili za usanidi za wapangishi pepe, ikiwa zipo) na uhakikishe kuwa maagizo ya Chaguzi, juu na katika viwango vya kuzuia Saraka, yamewekwa. kwa Hakuna:

Options None

3. Ficha taarifa kuhusu seva ya wavuti na mfumo wa uendeshaji katika majibu ya HTTP. Hariri /etc/httpd/conf/httpd.conf kama ifuatavyo:

ServerTokens Prod 
ServerSignature Off

Sasa uko tayari kuanza kutumikia yaliyomo kutoka /var/www/html saraka yako.

Kusanidi na Kulinda Seva ya FTP

Kama ilivyo kwa Apache, faili kuu ya usanidi ya Vsftpd (/etc/vsftpd/vsftpd.conf) imetolewa maoni vizuri na wakati usanidi chaguo-msingi unapaswa kutosha kwa programu nyingi, unapaswa kufahamiana na hati na ukurasa wa mtu (man vsftpd.conf) ili kuendesha seva ya ftp kwa ufanisi zaidi (siwezi kusisitiza hivyo vya kutosha!).

Kwa upande wetu, haya ndio maagizo yanayotumiwa:

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

Kwa kutumia chroot_local_user=YES, watumiaji wa ndani (kwa chaguo-msingi) watawekwa katika jela ya chroot’ed kwenye saraka yao ya nyumbani mara tu baada ya kuingia. Hii inamaanisha kuwa watumiaji wa ndani hawataweza kufikia faili zozote nje ya saraka zao za nyumbani zinazolingana.

Mwishowe, ili kuruhusu ftp kusoma faili kwenye saraka ya nyumbani ya mtumiaji, weka boolean ya SELinux ifuatayo:

# setsebool -P ftp_home_dir on

Sasa unaweza kuunganisha kwenye seva ya ftp kwa kutumia mteja kama vile Filezilla:

Kumbuka kuwa /var/log/xferlog hurekodi upakuaji na upakiaji, ambao unaambatana na uorodheshaji wa saraka hapo juu:

Muhtasari

Katika somo hili tumeelezea jinsi ya kusanidi mtandao na seva ya ftp. Kwa sababu ya ukubwa wa mada, haiwezekani kuangazia vipengele vyote vya mada hizi (yaani wapaji pepe wa mtandaoni). Kwa hivyo, ninapendekeza uangalie nakala zingine bora kwenye wavuti hii kuhusu Apache.