教你用SELinux来保护你的Apache
你的Web服务器【fú wù qì】确实有可能遭受攻击,但是👺SELinux可以用来确保【lái què bǎo】你的网站不用承受真👜正的伤【zhèng de shāng】🤤害【hài】👲。
你可以运用【yùn yòng】SELinux类型来【lèi xíng lái】📙创建一个确切🥊定义🔥:一个服务🚉可以做什么和它在哪里完成要做的【yào zuò de】事情。默认情况下,httpd_sys_content类型被🕹设为【shè wéi】/var/www,它规定【tā guī dìng】httpd进程可📞以在该🀄目录中【mù lù zhōng】工作【gōng zuò】。如果攻🍧击者破坏了🎠Apache Web服务🚉器并尝【qì bìng cháng】试🎎在别处写入,就像红【jiù xiàng hóng】帽和Fedora以及【yǐ jí】🏄CentOS等相似Linux版本的【bǎn běn de】默认/tmp,你需要【nǐ xū yào】知道你正在处🐣理什么【lǐ shí me】。如果你🐶配置【pèi zhì】👖Apache来为/data目录中【mù lù zhōng】的内容【de nèi róng】服务🚉,SELinux也会默认地防👴止这种【zhǐ zhè zhǒng】情况。
由于这些默认【xiē mò rèn】设置可【shè zhì kě】能造成复杂的【fù zá de】情况【qíng kuàng】😜,很多Linux管理员关闭【bì】SELinux。虽然关闭【bì】SELinux的确让你的服🕐务器提【wù qì tí】🎸供服务时更容🤔易👭,但是它还是增【hái shì zēng】加了安🚡全风险🐉。
为Apache管理SELinux设置
为Apache等服务【děng fú wù】管理【guǎn lǐ】SELinux设置并【shè zhì bìng】📟不难。问题是并没有📴简单的图形工【tú xíng gōng】👓具可以让你快⛴速安装【sù ān zhuāng】。但只要用三条命令【mìng lìng】💬,你就可以配置✂它。
为了在你想让🎇服务访问到的【wèn dào de】💼目录上🍜设置文件类型【jiàn lèi xíng】🎵,你首先必须决定要使【dìng yào shǐ】用的文件系统类型🎵。要这么【yào zhè me】做,只需在【zhī xū zài】服务使用的默🌹认目录【rèn mù lù】🏽上输入ls –ldZ。
对于Apache,你会使【nǐ huì shǐ】用ls –ldZ /var/www。你会注意到在这种情📫况下【kuàng xià】,–Z选项给出了额外的文件属性【jiàn shǔ xìng】,而–t选项才【xuǎn xiàng cái】是🚹最关键【zuì guān jiàn】的一个。这个进🔤程规定🏢现有的🤰文件系【wén jiàn xì】统类型【tǒng lèi xíng】🐾,这个系【zhè gè xì】统类型【tǒng lèi xíng】🐾是🚹Apache设置的【shè zhì de】🔏(httpd_sys_content_t)。这也是🗽你需要按照新文件根【wén jiàn gēn】🛠设置的【shè zhì de】🔏文件类🥢型🐾。
你可以【nǐ kě yǐ】🎒用两条命令设置你的【zhì nǐ de】内容形【nèi róng xíng】式【shì】:用chcon你可以【nǐ kě yǐ】🎒做一次暂时的【de】⛷变更🦄,它在重启后消👆失【shī】🌝;用followed by紧跟着的【de】semanage,你可以【nǐ kě yǐ】🎒做永久的【de】变更🦄。
semanage命令似乎有些复杂🎗,但它实【dàn tā shí】🍶际上非常简单,因为你💹只需要【zhī xū yào】改变你想要用❎的类型⭐和目标【hé mù biāo】目录【mù lù】🌋。在下面的例子中,你只需【nǐ zhī xū】要改变【yào gǎi biàn】两个参数。
semanage fcontext -a -t httpd_sys_content_t /web(/.*)/?
在运用【zài yùn yòng】📱semanage设置默【shè zhì mò】认文件🌝类型之后,运用🚾restorecon命令来确保它【què bǎo tā】得到应😊用了【yòng le】。在上面的例子【de lì zǐ】中,针对目录【lù】/web的文件类型被😱变更来🕙允许到【yǔn xǔ dào】👨那个目💓录【lù】上服🏽务器文件的Apache,运行以下命令来应用【lái yīng yòng】该变更【gāi biàn gèng】:
restorecon -R -v /web
在这一【zài zhè yī】🚷点上【diǎn shàng】🈶,Apache将能服务于新【wù yú xīn】的非默认文件根目录上的文👁件。
为SELinux管理布尔值
你需要【nǐ xū yào】🕴管理的SELinux的另一【de lìng yī】📶个方面【gè fāng miàn】是【shì】SELinux布尔值。这些都【zhè xiē dōu】♉是开启【shì kāi qǐ】或关闭某些功能的二进制值【jìn zhì zhí】⛎。布尔值可以在【kě yǐ zài】多种服📉务中获【wù zhōng huò】得🌔。运用getsebool –a命令来🏿概观整♉个现有的布尔【de bù ěr】值。该命令通常会🤔将你能应用的设置列💂成一个长长的列表。
要为你【yào wéi nǐ】想配置的服务【de fú wù】找到所🦋有布尔【yǒu bù ěr】值【zhí】🥒,通过✊grep传输所有getsebool –a的输出。举例来说,运用【yùn yòng】getsebool –a | grep http来找到所🦋有与行http匹配的【pǐ pèi de】📙布尔值【zhí】🥒。即使你并不是🌯对所有⛏布尔值【zhí】🥒都有明【dōu yǒu míng】👷确认识【què rèn shí】,你通常还是可以通过✊观察它【guān chá tā】💸们的名字和它【zì hé tā】们可能【men kě néng】做的事💉情查明⛷白👝。
使用【shǐ yòng】getsebool -a来找出【lái zhǎo chū】🔬哪个SELinux可以用来修改【lái xiū gǎi】服务行💬为📫:
[root@bia Desktop]# getsebool -a | grep http allow_httpd_anon_write --> off allow_httpd_mod_auth_ntlm_winbind --> off allow_httpd_mod_auth_pam --> off allow_httpd_sys_script_anon_write --> off httpd_builtin_scripting --> on httpd_can_check_spam --> off httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off httpd_can_network_relay --> off httpd_can_sendmail --> off httpd_dbus_avahi --> on httpd_enable_cgi --> on httpd_enable_ftp_server --> off httpd_enable_homedirs --> off httpd_execmem --> off httpd_read_user_content --> off httpd_setrlimit --> off httpd_ssi_exec --> off httpd_tmp_exec --> off httpd_tty_comm --> on httpd_unified --> on httpd_use_cifs --> off httpd_use_gpg --> off httpd_use_nfs --> off
学会了【xué huì le】你想用哪个布尔值后🚷,运用【yùn yòng】👑setsebool -P来应用它们。如果你💜想允许【xiǎng yǔn xǔ】Apache运用【yùn yòng】👑nfs,在上面运用【yùn yòng】👑setsebool -P http_use_nfs。想要得🍟到所有【dào suǒ yǒu】可用布【kě yòng bù】尔值💇的完整列表,咨询一下🚘httpd_selinux页面,这个页🗿面解释【miàn jiě shì】🌒了【le】Apache特有的【tè yǒu de】🚿文件标【wén jiàn biāo】签和布尔值💇。
关键词:SELinux,Apache
阅读本文后您有什么感想? 已有 人给出评价!
- 0
- 0
- 0
- 0
- 0
- 0