有人提示我将 PHP 可执行文件的权限开放给网络服务器以外的其他用户。PHP 可执行文件的含义/usr/bin/php
或/usr/bin/php-cli
它在您系统上的任何位置。
我不确定这是否会引起安全方面的担忧。我最初的反应是,它将允许这些附加配置文件能够编写自己的 PHP 脚本并不受限制地运行它们。但后来我意识到,无论这些脚本做什么,它们仍然会受到其权限的约束。所以我开始认为它没有太大的危害。
授予其他配置文件访问权限以调用 PHP 可执行文件相对常见吗?还是建议反对?
有人提示我将 PHP 可执行文件的权限开放给网络服务器以外的其他用户。PHP 可执行文件的含义/usr/bin/php
或/usr/bin/php-cli
它在您系统上的任何位置。
我不确定这是否会引起安全方面的担忧。我最初的反应是,它将允许这些附加配置文件能够编写自己的 PHP 脚本并不受限制地运行它们。但后来我意识到,无论这些脚本做什么,它们仍然会受到其权限的约束。所以我开始认为它没有太大的危害。
授予其他配置文件访问权限以调用 PHP 可执行文件相对常见吗?还是建议反对?
我正在按照与此答案类似的步骤来创建本地 CA。
尽管default_days
在我的配置文件中将选项设置为 1825(天),但生成的 CA 证书始终设置为在创建后 30 天过期。
我通过查看生成的 PEM 文件来确认这一点
openssl x509 -in ./cacert.pem -text -noout
这是我用来创建 CA 证书的配置文件:
HOME = .
RANDFILE = $ENV::HOME/.rnd
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
[ CA_default ]
default_days = 1825 # how long to certify for
default_crl_days = 30 # how long before next CRL
default_md = sha256 # use public key default MD
preserve = no # keep passed DN ordering
x509_extensions = ca_extensions # The extensions to add to the cert
email_in_dn = no # Don't concat the email in the DN
copy_extensions = copy # Required to copy SANs from CSR to cert
base_dir = ./CA
certificate = $base_dir/cacert.pem # The CA certifcate
private_key = $base_dir/private/cakey.pem # The CA private key
new_certs_dir = $base_dir/newcerts # Location for new certs after signing
database = $base_dir/index.txt # Database index file
serial = $base_dir/serial # The current serial number
unique_subject = no # Set to 'no' to allow creation of
# several certificates with same subject.
####################################################################
[ req ]
default_bits = 4096
default_keyfile = cakey.pem
distinguished_name = ca_distinguished_name
x509_extensions = ca_extensions
string_mask = utf8only
####################################################################
[ ca_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = US
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = CA
localityName = Locality Name (eg, city)
localityName_default = Bakersfield
organizationName = Organization Name (eg, company)
organizationName_default = Some Company
organizationalUnitName = Organizational Unit (eg, division)
organizationalUnitName_default = Some Org Unit
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = some-local-CA
emailAddress = Email Address
emailAddress_default = [email protected]
####################################################################
[ ca_extensions ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer
basicConstraints = critical, CA:true
keyUsage = keyCertSign, cRLSign
####################################################################
[ signing_policy ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ signing_req ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
然后我使用此命令(同一目录)创建本地 CA:
openssl req -x509 -config ./openssl-ca.cnf -newkey rsa:4096 -sha256 -nodes -out cacert.pem -outform PEM
我尝试将default_crl_days
选项设置为 30 以外的值,但似乎没有任何效果。
如何指定本地 CA 的到期日期(或到期前的天数)?
我有几个域都指向同一个服务器。这些域中只有一个域(主要域)实际上在我的 SSL 证书上。我在httpd.conf
文件中包含以下内容已有一段时间了,因此它们都永久重定向到单个域。
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com$1 [R=301,L]
目的是所有域都必须 301 重定向到www.example.com
HTTPS。但是,我最近注意到这些重定向正在发生 - 但作为 302 重定向。我在这里尝试了健全性检查,它似乎按我预期的那样工作。
回顾一下:
会发生什么:http://sub1.example.com
导致 302 重定向到https://www.example.com
.
应该发生什么:http://sub1.example.com
导致 301 重定向到https://www.example.com
.
我的问题是,是否必须在 SSL 证书上列出所有域才能使这种重定向以 301 的形式发生?我只是在这里拉稻草。
为了完整起见,这里是发生这种情况时初始页面和目标页面的请求/响应标头。
初始页面的请求标头 ( sub1.example.com
):
GET / HTTP/1.1
Host: sub1.example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
初始页面 ( sub1.example.com
) 的响应标头:
HTTP/1.1 302 Found
Date: Wed, 04 Oct 2017 21:05:16 GMT
Server: Apache
Location: https://www.example.com/
Cache-Control: max-age=1
Expires: Wed, 04 Oct 2017 21:05:18 GMT
Content-Length: 212
Keep-Alive: timeout=5, max=150
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
目标页面的请求标头 ( www.example.com
):
GET / HTTP/1.1
Host: www.example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8
Cookie: <redacted>
目标页面 ( www.example.com
) 的响应标头:
HTTP/1.1 200 OK
Date: Wed, 04 Oct 2017 21:05:16 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=5, max=150
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
我正在尝试根据 Web 请求是否包含任何一组字符串来阻止它们。据我所知,在我自己的知识和网上搜索之间,我所拥有的是正确的。但是,我仍然在访问日志中看到这些类型的请求。
如果请求在 Apache 配置中被阻止,是否仍会创建访问日志条目?还是我在 VHOST 定义中的定义有误?
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTP_USER_AGENT} ^.*(icevikatam|AhrefsBot|spbot|MJ12|majestic12|Ahrefs).*$ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(Semrush|SISTRIX|80legs|HTTrack|Xenu|dataprovider).*$ [NC]
RewriteRule .* - [F,L]
我的 Web 服务器是用于 IBM i 的 Apache 2.4。
我最近遇到了一种情况,我正在运行的 Web 服务器无法再提供 HTTPS 流量(由于某些 SSL 证书问题)。由于服务器无法处理此流量,我无法使用 Apache 重定向规则重定向到非 https。然后,我尝试在我的防火墙/NAT 设备上将 XXXX:443 重定向到 XXXX:80,但似乎无法正常工作。
我不是在问如何做到这一点,因为它特定于我的基础设施和设备。但有可能做到这一点吗?一位同事建议这可能是不可能的,因为客户端正在请求安全连接,并且它失败了,因为我们以不安全的连接响应。这与使用 302 响应并强制客户端使用 apache 重定向对非 https 发出新请求不同。
我的公司最近购买了用于 IBMi V7R2 的多域 SSL 证书。我对 IBMi 世界比较陌生,但我感觉 DSM 不支持多域 SSL 证书。每当我尝试创建 CSR 时,它只要求我提供一个域(在Common name
现场)。我相信这会在每次连续尝试时生成特定于所提供域的 CSR,而不会生成其他域。由于 CA 重新生成了密钥,因此最终会使以前的域无效。
我的 Apache 日志文件的名称中包含日期,我无法更改它。有没有办法LogFile
使用 Windows CMD 提示更改 AWSTATS 的配置参数?更好的批处理脚本?当然,我可以尝试查找和替换我需要的内容,但我不确定 AWSTATS 中是否有类似以下的简单 CLI 命令:
awstats.pl -config LogFile="C:\path\to\log\file"
我打算编写一个批处理脚本来更改选项,然后在一天结束处理期间更新 AWSTATS 数据库。