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:
- ServerRoot: az a könyvtár, ahol a szerver konfigurációs, hiba- és naplófájljait tárolják.
- Listen: utasítja az Apache-t, hogy figyeljen adott IP-címen és/vagy portokon.
- 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.
- Felhasználó és csoport: annak a felhasználónak/csoportnak a neve, amelyen a httpd szolgáltatás fut.
- 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.
- 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.