Weboldal keresés

RHCSA sorozat: Web- és FTP-kiszolgáló telepítése, konfigurálása és biztonsága – 9. rész


A webszerver (más néven HTTP szerver) egy olyan szolgáltatás, amely tartalmat (leggyakrabban weboldalakat, de más típusú dokumentumokat is) kezel a hálózaton lévő kliensnek.

Az FTP-szerver az egyik legrégebbi és leggyakrabban használt erőforrás (még a mai napig is), amely lehetővé teszi a fájlok elérhetővé tételét a hálózaton lévő ügyfelek számára olyan esetekben, amikor nincs szükség hitelesítésre, mivel az FTP felhasználónév és jelszót titkosítás nélkül.

Az RHEL 7 verzióban elérhető webszerver az Apache HTTP Server 2.4 verziója. Ami az FTP szervert illeti, a Very Secure Ftp Daemont (más néven vsftpd) fogjuk használni a TLS által védett kapcsolatok létrehozásához.

Ebben a cikkben elmagyarázzuk, hogyan telepíthet, konfigurálhat és biztosíthat egy webszervert és egy FTP-kiszolgálót az RHEL 7-ben.

Apache és FTP szerver telepítése

Ebben az útmutatóban egy RHEL 7 szervert fogunk használni, amelynek statikus IP-címe 192.168.0.18/24. Az Apache és a VSFTPD telepítéséhez futtassa a következő parancsot:


yum update && yum install httpd vsftpd

Amikor a telepítés befejeződik, kezdetben mindkét szolgáltatás le lesz tiltva, ezért egyelőre manuálisan kell elindítanunk őket, és engedélyeznünk kell, hogy a következő rendszerindításkor automatikusan elinduljanak:


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

Ezenkívül meg kell nyitnunk a 80 és a 21 portokat, ahol a web és ftp démonok figyelnek, hogy lehetővé tegyük ezekhez a szolgáltatásokhoz kívülről való hozzáférést:


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

A webszerver megfelelő működésének ellenőrzéséhez indítsa el a böngészőt, és adja meg a szerver IP-címét. Látnod kell a tesztoldalt:

Ami az ftp szervert illeti, tovább kell konfigurálnunk, amit egy percen belül meg is teszünk, mielőtt megbizonyosodnánk arról, hogy a várt módon működik.

Az Apache webszerver konfigurálása és biztonsága

Az Apache fő konfigurációs fájlja a /etc/httpd/conf/httpd.conf fájlban található, de támaszkodhat az /etc/httpd fájlban található egyéb fájlokra is. /conf.d.

Bár az alapértelmezett konfigurációnak elegendőnek kell lennie a legtöbb esetben, jó ötlet, hogy megismerkedjen a hivatalos dokumentációban leírt összes elérhető lehetőséggel.

Mint mindig, szerkesztés előtt készítsen biztonsági másolatot a fő konfigurációs fájlról:


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

Ezután nyissa meg a kívánt szövegszerkesztővel, és keresse meg a következő változókat:

  1. ServerRoot: az a könyvtár, ahol a szerver konfigurációs, hiba- és naplófájljait tárolják.
  2. Listen: utasítja az Apache-t, hogy figyeljen adott IP-címen és/vagy portokon.
  3. Include: lehetővé teszi más konfigurációs fájlok felvételét, amelyeknek létezniük kell. Ellenkező esetben a kiszolgáló meghibásodik, ellentétben az IncludeOptional direktívával, amely csendben figyelmen kívül marad, ha a megadott konfigurációs fájlok nem léteznek.
  4. Felhasználó és csoport: annak a felhasználónak/csoportnak a neve, amelyen a httpd szolgáltatás fut.
  5. DocumentRoot: Az a könyvtár, amelyből az Apache kiszolgálja a dokumentumait. Alapértelmezés szerint minden kérés ebből a könyvtárból származik, de a szimbolikus hivatkozások és álnevek más helyekre mutathatnak.
  6. ServerName: ez a direktíva beállítja azt a gazdagépnevet (vagy IP-címet) és portot, amelyet a szerver az önazonosítására használ.

Az első biztonsági intézkedés egy dedikált felhasználó és csoport (azaz tecmint/tecmint) létrehozása a webszerver másként való futtatásához, és az alapértelmezett port módosítása egy magasabbra (9000 ebben az esetben):


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

Ezzel tesztelheti a konfigurációs fájlt.


apachectl configtest

és ha minden OK, akkor indítsa újra a webszervert.


systemctl restart httpd

és ne felejtse el engedélyezni az új portot (és letiltani a régit) a tűzfalban:


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

Vegye figyelembe, hogy a SELinux házirendek miatt csak az általa visszaadott portokat használhatja


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

a webszerver számára.

Ha másik portot (azaz a 8100-as TCP-portot) szeretne használni, hozzá kell adnia a SELinux portkontextushoz a httpd szolgáltatáshoz:


semanage port -a -t http_port_t -p tcp 8100

Az Apache telepítésének további biztonsága érdekében kövesse az alábbi lépéseket:

1. Az Apache felhasználónak nem szabadna hozzáférnie a rendszerhéjhoz:


usermod -s /sbin/nologin tecmint

2. Tiltsa le a címtárlistát, hogy megakadályozza, hogy a böngésző megjelenítse egy könyvtár tartalmát, ha az adott könyvtárban nem található index.html.

Szerkessze a /etc/httpd/conf/httpd.conf elemet (és a virtuális gazdagépek konfigurációs fájljait, ha vannak ilyenek), és győződjön meg arról, hogy az Options direktíva felül és a címtárblokk szintjén Nincs értékre van állítva:


Options None

3. A webszerverrel és az operációs rendszerrel kapcsolatos információk elrejtése a HTTP-válaszokban. Szerkessze a /etc/httpd/conf/httpd.conf fájlt a következőképpen:


ServerTokens Prod 
ServerSignature Off

Most készen áll a tartalom megjelenítésére a /var/www/html könyvtárból.

Az FTP szerver konfigurálása és biztosítása

Akárcsak az Apache esetében, a Vsftpd (/etc/vsftpd/vsftpd.conf) fő konfigurációs fájlja jól meg van írva, és bár az alapértelmezett konfigurációnak elegendőnek kell lennie a legtöbb alkalmazás számára , meg kell ismerkedni a dokumentációval és a (man vsftpd.conf) kézikönyvvel, hogy hatékonyabban tudd működtetni az ftp szervert (ezt nem tudom eléggé hangsúlyozni!).

Esetünkben a következő direktívákat használjuk:


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

A chroot_local_user=YES használatával a helyi felhasználók (alapértelmezés szerint) közvetlenül bejelentkezés után egy chrootolt börtönbe kerülnek a saját könyvtárukban. Ez azt jelenti, hogy a helyi felhasználók nem férhetnek hozzá a megfelelő saját könyvtárakon kívüli fájlokhoz.

Végül, hogy az ftp beolvassa a fájlokat a felhasználó kezdőkönyvtárában, állítsa be a következő SELinux logikai értéket:


setsebool -P ftp_home_dir on

Most már csatlakozhat az ftp-szerverhez egy olyan kliens használatával, mint a Filezilla:

Vegye figyelembe, hogy a /var/log/xferlog napló rögzíti a letöltéseket és feltöltéseket, amelyek megegyeznek a fenti könyvtárlistával:

Olvassa el még: Korlátozza az alkalmazások által használt FTP hálózati sávszélességet Linux rendszerben a Trickle segítségével

Összegzés

Ebben az oktatóanyagban elmagyaráztuk, hogyan kell beállítani egy web- és egy ftp-kiszolgálót. A téma kiterjedtsége miatt nem lehetséges e témák (vagyis a virtuális webtárak) minden aspektusát lefedni. Ezért azt javaslom, hogy nézzen meg más kiváló cikkeket is ezen a webhelyen az Apache-ról.