ps 将我的 httpd 进程显示为
apache 29561 15186 0 15:30 ? 00:00:00 /usr/sbin/httpd
Run Code Online (Sandbox Code Playgroud)
我正在运行 Centos 5.3
/var/log/httpd 中的所有日志文件都归 root 所有。
怎么来的?
新上岗,小地方,保安人员刚刚放在我的桌子上。我被聘为前端开发人员。乐于学习新事物,但以前从未做过系统管理员的工作。
我开始挖掘,看来 apache、站点和一切都在 root 上运行。没有其他组或用户。确认!
我应该采取什么步骤来改变这种情况?我知道这是一个很大的禁忌...
如果有人可以加分,请指点我一个很好的关于 apache/php 安全性的基本 101 教程。
我已经安装了 apache 网络服务器,我需要用别名(www.someaddress.lan)将 127.1.1.1 指向本地 apache。什么是正确的方法呢?如何将 someaddress.lan 指向默认的 apache 页面并将 www.someaddress.lan 指向 /var/www/wordpress/?
我的网站被谷歌网络蜘蛛 DoS 攻击。欢迎 Google 为我的网站编制索引,但有时它在我的网站上查询标签云的速度比我的网络服务器产生结果的速度要快,从而使我的网络服务器资源耗尽。
如何以不影响普通访问者的方式限制对我的网络服务器的访问?
robots.txt 不是选项,因为它会阻止整个站点被索引。
iptables -m recent 很棘手,因为有些页面有很多图像或其他数据文件,并且“最近”也触发了这些文件(通常是我的 RSS 聚合器,加载图像和提要)。
iptables -m limit 有同样的缺点,最重要的是,我无法对每个 IP 源地址进行选择性。
如何限制导致服务器负载过高的访问者?
我在 VirtualBox VM 的 Ubuntu 服务器上运行 apache2。
我的 Apache 服务器 IP 地址是 192.168.1.100,域名是test.local.
我怎样才能做到这一点?
什么会导致httpd停止后自动启动?
在 bash 脚本中,我需要先停止 apache Web 服务器。这是脚本:
apachectl stop;
while pgrep httpd; do sleep 1; done
echo "[Apache server stopped]"
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,它会打印正在运行的 apache 进程,直到没有任何正在运行的进程并打印[Apache 服务器停止]
然后运行该命令pgrep httpd不会打印任何内容,但是如果我进入服务器托管的网站,则会pgrep httpd打印一些 httpd 进程。
这是停止 apache 的正确方法吗?为什么运行后会自动启动apachectl stop?如果它与KeepAliveTime相关,我如何强制正在运行的子进程停止?
编辑:这对于在命令行中运行service httpd stop或apachectl stop命令也是如此。
我很困惑为什么 Apache 在端口 80 上没有响应......
$ wget http://localhost:80
--2014-05-06 15:32:44-- http://localhost/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:80... failed: Connection refused.
Run Code Online (Sandbox Code Playgroud)
......而是在 8080 后......
$ wget http://localhost:8080
--2014-05-06 15:32:38-- http://localhost:8080/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 177 [text/html]
Saving to: ‘index.html’
100%[=================================================>] 177 --.-K/s in 0s
2014-05-06 15:32:38 (16,4 MB/s) - ‘index.html’ saved [177/177]
Run Code Online (Sandbox Code Playgroud)
在apache2ctl的输出中看不到太多:
$ apache2ctl -t -D DUMP_VHOSTS
VirtualHost configuration:
*:80 is …Run Code Online (Sandbox Code Playgroud) 我已经阅读了这个问题的答案:
它帮助我了解如何不对某些用户进行身份验证(根据 IP):
<Directory /var/www/files/>
Require valid-user
Allow from 192.168.1.2
Satisfy Any
AuthUserFile /etc/apache2/basic.pwd
AuthName "Please enter username and password"
AuthType Basic
</Directory>
Run Code Online (Sandbox Code Playgroud)
想象一下我有这个数据库(不同于用于身份验证的数据库):
User IP
Mark 192.168.1.2
Mike 192.168.1.3
Karl 192.168.1.4
Run Code Online (Sandbox Code Playgroud)
1- 我可以使用 Apache 中的配置允许存储在数据库中的所有 IP 地址吗?我不想要静态解决方案(数据库正在动态变化)?
2-另一个问题是允许IP的授权丢失,Apache可以使用这个DB进行授权,如果允许用户未经身份验证获取页面?详细信息:我们知道Apache在对用户进行身份验证时,它知道用户名来自身份验证凭据,但是使用允许,用户名将丢失,我希望 Apache 从它提取 IP 地址的同一个表中提取其允许的 IP 的用户名?
更新:
注意:我认为Tony 的回答可能会有所帮助,但我也想要其他答案(这并不要求我构建模块)。
我这个问题的目标是“单点登录”:
我使用freeradius对内部(内部网络)用户进行身份验证,因此我不希望 Apache 重新对他们进行身份验证。
我希望 Apache 使用 LDAP 对外部用户进行身份验证。
Allow指令让内部用户无需身份验证,但我需要允许他们使用数据库(第一个问题)?并尝试将 Apache 配置为授权内部用户(我没有进行身份验证)(第二个问题)?注意:使用LDAP授权外部用户非常容易(因为 Apache 知道它从身份验证凭据处理的用户的名称)。
我建议的解决方案是否有资格做我想做的事情,如果不是,您建议什么作为解决方案?
当服务器重新启动时,我无法让 systemd 服务单元文件正确运行。该服务器是全新的 CentOS 7.0.1406 安装。我正在尝试使用多个 Apache httpd 实例进行设置。在较旧的 CentOS 安装中,我的 httpd 实例运行良好,因此现在我尝试将这些配置移植到使用 systemd 的新 CentOS。
我可以启用该服务,启动它,重新启动它并停止它,没有任何问题。当我重新启动时,它说“没有这样的文件或目录”。如果我重新启用该服务,一切都会恢复正常,直到下次重新启动。
[Unit]
Description=Apache web server instance apache01
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/data/apacheinstances/apache01/logs/httpd.pid
ExecStart=/data/apacheinstances/apache01/bin/apachectl start
ExecStop=/data/apacheinstances/apache01/bin/apachectl stop
ExecReload=/data/apacheinstances/apache01/bin/apachectl reload
PrivateTmp=true
LimitNOFILE=infinity
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
$ sudo systemctl enable /data/apacheinstances/apache01/bin/apache01.service
ln -s '/data/apacheinstances/apache01/bin/apache01.service' '/etc/systemd/system/multi-user.target.wants/apache01.service'
ln -s '/data/apacheinstances/apache01/bin/apache01.service' '/etc/systemd/system/apache01.service'
$ sudo systemctl status apache01
apache01.service - Apache web server instance apache01
Loaded: loaded (/data/apacheinstances/apache01/bin/apache01.service; enabled)
Active: inactive (dead)
Run Code Online (Sandbox Code Playgroud)
$ sudo systemctl start apache01
$ …Run Code Online (Sandbox Code Playgroud) 我想安装mod_http2. 我目前有 Debian 8 和 Apache 2.4.10。
我知道尝试手动安装更高版本的 Apache 可能不是一个好主意。因此,出于这个原因,我正在考虑升级到 Debian 9。这是否允许我使用 HTTP/2?
我还读到对 Debian 8 的全面支持将于 5 月结束,因此我也想出于这个原因进行升级。升级有什么缺点吗?
apache-httpd ×10
centos ×2
hosts ×1
limit ×1
load ×1
performance ×1
permissions ×1
reboot ×1
root ×1
systemd ×1
users ×1
vhost ×1