Web 服務(wù)器(也被稱為 HTTP 服務(wù)器)是在網(wǎng)絡(luò)中將內(nèi)容(最為常見的是網(wǎng)頁,但也支持其他類型的文件)進(jìn)行處理并傳遞給客戶端的服務(wù)。
FTP 服務(wù)器是最為古老且最常使用的資源之一(即便到今天也是這樣),在身份認(rèn)證不是必須的情況下,它可通過客戶端在一個網(wǎng)絡(luò)訪問文件,因?yàn)?FTP 使用沒有加密的用戶名和密碼,所以有些情況下不需要驗(yàn)證也行。
在 RHEL 7 中可用的 web 服務(wù)器是版本號為 2.4 的 Apache HTTP 服務(wù)器。至于 FTP 服務(wù)器,我們將使用 Very Secure Ftp Daemon (又名 vsftpd) 來建立用 TLS 加固的連接。
在這篇文章中,我們將解釋如何在 RHEL 7 中安裝、配置和加固 web 和 FTP 服務(wù)器。
在本指導(dǎo)中,我們將使用一個靜態(tài) IP 地址為 192.168.0.18/24 的 RHEL 7 服務(wù)器。為了安裝 Apache 和 VSFTPD,運(yùn)行下面的命令:
# yum update && yum install httpd vsftpd
當(dāng)安裝完成后,這兩個服務(wù)在開始時是默認(rèn)被禁用的,所以我們需要暫時手動開啟它們并讓它們在下一次啟動時自動地開啟它們:
# systemctl start httpd
# systemctl enable httpd
# systemctl start vsftpd
# systemctl enable vsftpd
另外,我們必須打開 80 和 21 端口,它們分別是 web 和 ftp 守護(hù)進(jìn)程監(jiān)聽的端口,為的是允許從外面訪問這些服務(wù):
# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --zone=public --add-service=ftp --permanent
# firewall-cmd --reload
為了確認(rèn) web 服務(wù)工作正常,打開你的瀏覽器并輸入服務(wù)器的 IP,則你應(yīng)該可以看到如下的測試頁面:
確認(rèn) Apache Web 服務(wù)器
對于 ftp 服務(wù)器,在確保它如期望中的那樣工作之前,我們必須進(jìn)一步地配置它,我們將在幾分鐘后來做這件事。
Apache 的主要配置文件位于 /etc/httpd/conf/httpd.conf
中,但它可能依賴 /etc/httpd/conf.d
中的其他文件。
盡管默認(rèn)的配置對于大多數(shù)的情形都夠用了,但熟悉在 官方文檔 中介紹的所有可用選項(xiàng)是一個不錯的主意。
同往常一樣,在編輯主配置文件前先做一個備份:
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)
然后用你鐘愛的文本編輯器打開它,并查找下面這些變量:
ServerRoot
: 服務(wù)器的配置,錯誤和日志文件保存的目錄。
Listen
: 通知 Apache 去監(jiān)聽特定的 IP 地址或端口。
Include
: 允許包含其他配置文件,要包含的文件必須存在,否則,服務(wù)器將會失敗。它恰好與 IncludeOptional 相反,假如特定的配置文件不存在,它將靜默地忽略掉它們。
User
和 Group
: 運(yùn)行 httpd 服務(wù)的用戶/組的名稱。
DocumentRoot
: Apache 為你的文檔所服務(wù)的目錄。默認(rèn)情況下,所有的請求將在這個目錄中被獲取,但符號鏈接和別名可能會被用于指向其他位置。
ServerName
: 這個指令將設(shè)定用于識別它自身的主機(jī)名(或 IP 地址)和端口。
安全措施的第一步將包含創(chuàng)建一個特定的用戶和組(如 tecmint/tecmint)來運(yùn)行 web 服務(wù)器,以及更改默認(rèn)的端口為一個更高的端口(在這個例子中為 9000) (LCTT 譯注:如果你的 Web 服務(wù)器對外公開提供服務(wù),則不建議修改為非默認(rèn)端口。):
ServerRoot '/etc/httpd'
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot '/var/www/html'
ServerName 192.168.0.18:9000
你可以使用下面的命令來測試配置文件:
# apachectl configtest
假如一切 OK,接著重啟 web 服務(wù)器。
# systemctl restart httpd
并別忘了在防火墻中開啟新的端口(并禁用舊的端口):
# firewall-cmd --zone=public --remove-port=80/tcp --permanent
# firewall-cmd --zone=public --add-port=9000/tcp --permanent
# firewall-cmd --reload
請注意,由于 SELinux 策略,你只能給給 web 服務(wù)器使用如下命令所返回的端口。
# semanage port -l | grep -w '^http_port_t'
假如你想讓 httpd 服務(wù)使用另一個端口(如 TCP 端口 8100),你必須將它加到 SELinux 的端口上下文:
# semanage port -a -t http_port_t -p tcp 8100
添加 Apache 端口到 SELinux 策略
為了進(jìn)一步加固你安裝的 Apache,請遵循以下步驟:
運(yùn)行 Apache 的用戶不應(yīng)該擁有訪問 shell 的能力:
# usermod -s /sbin/nologin tecmint
禁用目錄列表功能,這是為了阻止瀏覽器展示一個未包含 index.html 文件的目錄里的內(nèi)容。
編輯 /etc/httpd/conf/httpd.conf
(以及虛擬主機(jī)的配置文件,假如有的話),并確保出現(xiàn)在頂層的和Directory 塊中的 Options 指令都被設(shè)置為 None:
Options None
在 HTTP 響應(yīng)中隱藏有關(guān) web 服務(wù)器和操作系統(tǒng)的信息。像下面這樣編輯文件 /etc/httpd/conf/httpd.conf
:
ServerTokens Prod
ServerSignature Off
現(xiàn)在,你已經(jīng)做好了從 /var/www/html
目錄開始服務(wù)內(nèi)容的準(zhǔn)備了。
和 Apache 的情形類似, Vsftpd 的主配置文件 /etc/vsftpd/vsftpd.conf
帶有詳細(xì)的注釋,且雖然對于大多數(shù)的應(yīng)用實(shí)例,默認(rèn)的配置應(yīng)該足夠了,但為了更有效率地操作 ftp 服務(wù)器,你應(yīng)該開始熟悉相關(guān)的文檔和 man 頁 man vsftpd.conf
(對于這點(diǎn),再多的強(qiáng)調(diào)也不為過?。?。
在我們的示例中,使用了這些指令:
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
通過使用 chroot_local_user=YES
,(默認(rèn)情況下)本地用戶在登錄之后,將被限制在以用戶的家目錄為 chroot 監(jiān)獄的環(huán)境中。這意味著本地用戶將不能訪問除其家目錄之外的任何文件。
最后,為了讓 ftp 能夠在用戶的家目錄中讀取文件,設(shè)置如下的 SELinux 布爾值:
# setsebool -P ftp_home_dir on
現(xiàn)在,你可以使用一個客戶端例如 Filezilla 來連接一個 ftp 服務(wù)器:
查看 FTP 連接
注意, /var/log/xferlog
日志將會記錄下載和上傳的情況,這與上圖的目錄列表一致:
監(jiān)視 FTP 的下載和上傳情況
另外請參考: 在 Linux 系統(tǒng)中使用 Trickle 來限制應(yīng)用使用的 FTP 網(wǎng)絡(luò)帶寬
在本教程中,我們解釋了如何設(shè)置 web 和 ftp 服務(wù)器。由于這個主題的廣泛性,涵蓋這些話題的所有方面是不可能的(如虛擬主機(jī))。因此,我推薦你也閱讀這個網(wǎng)站中有關(guān) Apache 的其他卓越的文章。
via: http://www.tecmint.com/rhcsa-series-install-and-secure-apache-web-server-and-ftp-in-rhel/
作者:Gabriel Cánepa 譯者:FSSlc 校對:wxy
本文由 LCTT 原創(chuàng)翻譯,Linux中國 榮譽(yù)推出