Apache服务器的保护
apache|服务器
作者:nixe0n
一. 综述
本文将讨论UNIX平台下,Apache WEB服务器安装和配置的安全问题。我们假定阅读本文的系统管理员已经针对自己站点的情况选择了相关的模块,并且能够进行配置、创建和排除故障。本文的主要目的是帮助你简历一个安全的Apache歪脖(web :P)服务器。
在众多的Web服务器产品中,Apache是应用最为广泛的一个产品,同时也是一个设计上非常安全的程序。但是,同其它应用程序一样,Apache也存在安全缺陷。本文主要针对三个安全缺陷进行讨论,包括:使用HTTP协议进行的拒绝服务攻击(denial of service)、3缓冲区溢出攻击以及被攻击者获得root权限。注意:合理的配置能够保护Apache免遭多种攻击,但是在网络层上的拒绝服务攻击则不是调整Apache的配置所能够防止的。本文所涉及的是使用HTTP(应用层)协议进行的拒绝服务攻击。
二. Apache的主要缺陷
· HTTP拒绝服务
攻击者通过某些手段使服务器拒绝对HTTP应答。这会使Apache对系统资源(CPU时间和内存)需求的剧增,最终造成系统变慢甚至完全瘫痪。
· 缓冲区溢出
攻击者利用程序编写的一些缺陷,使程序偏离正常的流程。程序使用静态分配的内存保存请求数据,攻击者就可以发送一个超长请求使缓冲区溢出。比如一些Perl编写的处理用户请求的网关脚本。一旦缓冲区溢出,攻击者可以执行其恶意指令或者使系统宕机。
· 被攻击者获得root权限
Apache一般以root权限运行(父进程),攻击者通过它获得root权限,进而控制整个系统。
三. 获得最新的Apache
使用最安全版本对于加强Apache Web服务器的安全是至关重要的。
你可以从Apache的官方网站http://www.apache.org获得Apache的最新版本。
配置文件的保护
Apache Web服务器有三个主要的配置文件,它们一般位于/usr/local/apache/conf目录。这三个文件是:httpd.con、srm.conf和access.conf。这些文件是整个Apache的控制中心,因此需要对三个配置文件有所了解。httpd.conf文件是主配置文件;srm.conf允许你填加资源文件;access.conf设置文件的访问权限。这些文件的配置可以参考http://httpd.apache.org/docs/mod/core.html。
服务器访问控制
access.conf文件包含一些指令控制允许什么用户访问Apache目录。应该把deny from all作为初始化指令,然后使用allow from指令打开访问权限。你可以允许来自某个域、IP地址或者IP段的访问。例如:
order deny,allow
deny from all
allow from sans.org
密码保护
使用.htaccess文件,可以把某个目录的访问权限赋予某个用户。系统管理员需要在httpd.conf或者srm.conf文件中使用AccessFileName指令打开目录的访问控制。以下是一个.htaccess示例文件:
AuthName PrivateFiles
AuthType Basic
AuthUserFile /path/to/httpd/users
require foo
然后,使用如下命令填加一个用户:
# htpasswd -c /path/to/httpd/users foo
Apache日志文件
系统管理员可以使用日志格式指令来控制日志文件的信息。使用LogFormat "%a %l"指令,可以把发出HTTP请求浏览器的IP地址和主机名记录到日志文件。出于安全的考虑,你至少应该那些验证失败的WEB用户,在http.conf文件中加入LogFormat "%401u"指令可以实现这个目的。这个指令还有其它的许多参数,用户可以参考Apache的文档。另外,Apache的错误日志文件对于系统管理员来说也是非常重要的,错误日志文件中包括服务器的启动、停止以及CGI执行失败等信息。
安全相关的指令
在Apache配置文件中,有一些安全相关的指令可以使用。这些指令的详细用法可以参考http://httpd.apache.org/docs/mod/directives.html。
使用以下指令可以帮助你减小拒绝服务的威胁:
LimitRequestbody: 数字参数,控制HTTP请求的大小。
LimitRequestFields: 数字参数,控制请求头的数目。
KeepAlive: 设置连接的生存期。
KeepAliveTimeout: 限制等待请求的时间。
使用以下指令可以帮助你叫嚣缓冲区溢出的危险:
LimitRequestFieldSize: 限制每个请求头的大小。
LimitRequestLine: 限制每个请求行的大小。
CGI(ommon Gateway Interface,通用网关接口)的安全威胁
CGI的安全性非常重要,攻击者可以利用CGI的缺陷获得系统信息、执行系统命令、占用系统资源。如果一个CGI程序使用静态分配的内存,就可能为缓冲区溢出攻击提供机会。为了减少这种风险,程序员应该在CGI代码中使用动态分配内存。除了CGI编写人员应该注意外,系统管理员可以采取对CGI进行封装(例如:suEXEC或者CGI Wrap)的办法加强CGI的安全性。通过这种方式可以使CGI程序以某个独立的用户权限运行,即使发生缓冲区溢出,也只影响那个用户的目录/文件。
perl是一种功能非常强大的脚本语言。主要用于文本的处理,程序员还可以通过perl脚本使用系统调用。如果程序编写的不好,就会为攻击者闯入服务器大开方便之门。因此,使用perl脚本一定要小心,以免出现此类漏洞。在perl脚本中,处理请求数据之前,最好能够调用专门的检查例程对输入的合法性进行检查。除此之外,还要确保Apache不是以root的权限运行的,Perl脚本被限制在某个特定的目录下运行。
SSI(Server-Side Includes)的安全
使用SSI,程序员可以建立一些常用的例程,在需要时把这些例程包含进他们的代码中。SSI还允许有条件地执行外部程序,攻击者可能利用这个条件让服务器执行他们的恶意程序。在access.conf文件中使用IncludesNoEXEC指令,可以关闭执行SSI文件的功能。不过这条指令会造成服务器不执行CGI脚本或者程序。
其它安全工具
使用TCP Wrappers和Tripwire可以为你的系统提供额外的保护。你可以使用TCP Wrappers来控制Telnet或者FTP的访问权限。Tripwire是一个数据完整性检测工具,可以帮助系统管理员监视系统是否被改动过,你可以在Tripwire的配置文件中编制特定的策略,监视Web服务器的配置文件、数据和CGI文件是否被修改。
总结
Apache是一个优秀的歪脖服务器,虽然Apache的开发者非常注重其安全性,但是由于Apache非常庞大,难免会存在安全隐患。Apache的安装维护中需要注意以下问题:
· 检查文件和目录的权限是否恰当。
· httpd.conf、srm.conf和access.conf的设置是否适当
· 使服务器日志文件能够记录尽可能详细的信息。
· 对某些需要特别保护的目录使用密码保护(.htaccess)。
· 对CGI脚本或者程序进行封装。
· 如果CGI使用Perl编写,要详细检查其安全性
· 检查SSI指令
· 使用TCP Wrappers和Tripwire。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Laut Benchmarks zeichnet sich Laravel durch Seitenladegeschwindigkeit und Datenbankabfragen aus, während CodeIgniter sich durch Datenverarbeitung auszeichnet. Bei der Auswahl eines PHP-Frameworks sollten Sie die Anwendungsgröße, die Verkehrsmuster und die Fähigkeiten des Entwicklungsteams berücksichtigen.

Parallelitätstests und Debugging Parallelitätstests und Debugging in der gleichzeitigen Java-Programmierung sind von entscheidender Bedeutung und die folgenden Techniken stehen zur Verfügung: Parallelitätstests: Unit-Tests: Isolieren und testen Sie eine einzelne gleichzeitige Aufgabe. Integrationstests: Testen der Interaktion zwischen mehreren gleichzeitigen Aufgaben. Lasttests: Bewerten Sie die Leistung und Skalierbarkeit einer Anwendung unter hoher Last. Parallelitäts-Debugging: Haltepunkte: Thread-Ausführung anhalten und Variablen überprüfen oder Code ausführen. Protokollierung: Thread-Ereignisse und -Status aufzeichnen. Stack-Trace: Identifizieren Sie die Quelle der Ausnahme. Visualisierungstools: Überwachen Sie die Thread-Aktivität und die Ressourcennutzung.

Wie implementiert man HTTP-Streaming in C++? Erstellen Sie einen SSL-Stream-Socket mit Boost.Asio und der asiohttps-Clientbibliothek. Stellen Sie eine Verbindung zum Server her und senden Sie eine HTTP-Anfrage. Empfangen Sie HTTP-Antwortheader und drucken Sie sie aus. Empfängt den HTTP-Antworttext und gibt ihn aus.

Es gibt eine Vielzahl von Angriffsmethoden, die eine Website offline schalten können. Die komplexeren Methoden erfordern technische Kenntnisse in Datenbanken und Programmierung. Eine einfachere Methode wird als „DenialOfService“-Angriff (DOS) bezeichnet. Der Name dieser Angriffsmethode leitet sich von ihrer Absicht ab, normale Serviceanfragen von normalen Kunden oder Website-Besuchern abzulehnen. Im Allgemeinen gibt es zwei Formen von DOS-Angriffen: die dritte und vierte Schicht des OSI-Modells, d. h. den Netzwerkschicht-Angriff. Die siebte Schicht des OSI-Modells, d. h. den Anwendungsschicht-Angriff Angriff – die Netzwerkschicht, tritt auf, wenn eine große Menge Junk-Datenverkehr zum Webserver fließt. Wenn der Spam-Verkehr die Fähigkeit des Netzwerks übersteigt, ihn zu verarbeiten, stürzt die Website ab. Die zweite Art von DOS-Angriff erfolgt auf der Anwendungsebene und nutzt kombinierte Angriffe

Um einen Server zu Eclipse hinzuzufügen, führen Sie die folgenden Schritte aus: Erstellen Sie eine Serverlaufzeitumgebung. Konfigurieren Sie den Server. Erstellen Sie eine Serverinstanz. Wählen Sie die Serverlaufzeitumgebung aus. Konfigurieren Sie die Serverinstanz. Starten Sie das Serverbereitstellungsprojekt

1. Hintergrund des Baus der 58-Portrait-Plattform Zunächst möchte ich Ihnen den Hintergrund des Baus der 58-Portrait-Plattform mitteilen. 1. Das traditionelle Denken der traditionellen Profiling-Plattform reicht nicht mehr aus. Der Aufbau einer Benutzer-Profiling-Plattform basiert auf Data-Warehouse-Modellierungsfunktionen, um Daten aus mehreren Geschäftsbereichen zu integrieren, um genaue Benutzerporträts zu erstellen Und schließlich muss es über Datenplattformfunktionen verfügen, um Benutzerprofildaten effizient zu speichern, abzufragen und zu teilen sowie Profildienste bereitzustellen. Der Hauptunterschied zwischen einer selbst erstellten Business-Profiling-Plattform und einer Middle-Office-Profiling-Plattform besteht darin, dass die selbst erstellte Profiling-Plattform einen einzelnen Geschäftsbereich bedient und bei Bedarf angepasst werden kann. Die Mid-Office-Plattform bedient mehrere Geschäftsbereiche und ist komplex Modellierung und bietet allgemeinere Funktionen. 2.58 Benutzerporträts vom Hintergrund der Porträtkonstruktion im Mittelbahnsteig 58

Um eine PHP-Website erfolgreich bereitzustellen und zu warten, müssen Sie die folgenden Schritte ausführen: Wählen Sie einen Webserver (z. B. Apache oder Nginx). Installieren Sie PHP. Erstellen Sie eine Datenbank und verbinden Sie PHP. Laden Sie Code auf den Server hoch. Richten Sie den Domänennamen und die DNS-Überwachung der Website-Wartung ein Zu den Schritten gehören die Aktualisierung von PHP und Webservern sowie die Sicherung der Website, die Überwachung von Fehlerprotokollen und die Aktualisierung von Inhalten.

So implementieren Sie Best Practices für die PHP-Sicherheit PHP ist eine der beliebtesten Backend-Webprogrammiersprachen, die zum Erstellen dynamischer und interaktiver Websites verwendet wird. Allerdings kann PHP-Code verschiedene Sicherheitslücken aufweisen. Um Ihre Webanwendungen vor diesen Bedrohungen zu schützen, ist die Implementierung bewährter Sicherheitspraktiken von entscheidender Bedeutung. Eingabevalidierung Die Eingabevalidierung ist ein wichtiger erster Schritt zur Validierung von Benutzereingaben und zur Verhinderung böswilliger Eingaben wie SQL-Injection. PHP bietet eine Vielzahl von Eingabevalidierungsfunktionen, wie zum Beispiel filter_var() und preg_match(). Beispiel: $username=filter_var($_POST['username'],FILTER_SANIT
