我正在尝试解决客户的问题,但我有一个(坏的?)主意......
问题 :
客户有两个 Web 服务器在他的 wan 路由器后面运行。(他大楼里的物理服务器)
每台服务器都托管不同的 Web 服务,因此无法将两台服务器合并。
路由器将端口 80 上的请求转发到服务器 A(并且不能更改),并将端口 90 上的请求转发到服务器 B。
([[编辑]]:现在服务器 B 是通过客户端的 IP 和端口 90 直接从 Web 浏览器询问的......这太糟糕了......)
我需要通过来自 1and1 共享服务器的 PHP(代理)脚本来询问服务器 B。
托管公司 (1and1) 有一个防火墙,可以防止开发人员在 21、22 和 80 以外的其他端口上发送请求。
想法:
更改我的客户端路由器的端口转发规则,以便服务器 B 可以通过端口 22 访问,并通过端口 22 上的 php 发送请求。
问题:
将端口 22 用于 http 请求是一种可怕的做法吗?
有没有一种简单的方法可以首先通过向(任何)服务器的端口 22 发送 http 请求来测试我的 PHP 代理脚本?
是否有接口或其他东西提供网站和 Windows 服务器之间的连接,以通过网站向服务器发送命令并且服务器本身执行它?
我想在我的网页上生成一个上下文菜单。在菜单中,我希望能够指定服务器应该执行的一些参数。
例如,我在我的网页上执行右键单击,菜单打开,我选择在服务器上创建一个具有特定名称和路径的文件夹。然后服务器收到命令并完全按照我通过网页告诉他的方式执行。
我的网页是通过 IIS 发布的,我的服务器操作系统是 Windows Server2012。
当我尝试将用户重定向到 Paypal 进行结帐时,我在日志文件中收到以下 SELinux 拒绝行。您能帮助我理解它的含义以及我应该向 SELinux 添加哪些例外以允许这些情况吗?
type=AVC msg=audit(1591554743.559:10135): avc: denied { name_connect } for pid=3389 comm="httpd" dest=80 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(1591554743.559:10135): arch=c000003e syscall=42 success=no exit=-13 a0=19 a1=7f6a14077238 a2=10 a3=26 items=0 ppid=981 pid=3389 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)ARCH=x86_64 SYSCALL=connect AUID="unset" UID="apache" GID="apache" EUID="apache" SUID="apache" FSUID="apache" EGID="apache" SGID="apache" FSGID="apache"
type=PROCTITLE msg=audit(1591554743.559:10135): proctitle=2F7573722F7362696E2F6874747064002D44464F524547524F554E44
type=AVC msg=audit(1591554758.933:10140): avc: denied { name_connect } for pid=5728 comm="php-fpm" dest=80 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
type=SYSCALL msg=audit(1591554758.933:10140): …Run Code Online (Sandbox Code Playgroud) 我相信我已经非常安全地设置了我的代码,它验证和清理用户输入,因此它是安全的,等等。
那么我需要SuHosin吗?(这是 PHP 的安全添加/补丁)
如果我的代码已经安全,它对我有什么帮助?
例如,我读到 SuHosin 有助于防止远程包含,但如果我的代码首先不使用远程包含,那怎么会是威胁?
我在虚拟专用服务器上使用 CentOS。
当我以 root 身份进入并更改文件夹的 chmod 值时,它会起作用。但是,我放入该文件夹的任何文件都不会继承我设置的 chmod。
这是我使用的:
chmod -Rv 777 files
Run Code Online (Sandbox Code Playgroud)
回报是这样的:
mode of `files' retained as 0777 (rwxrwxrwx)
mode of `files/1344188366-f7cad6aa87685db775817d4168c329ef-AUTO_INSURANCE2.csv'
changed to 0777 (rwxrwxrwx)
Run Code Online (Sandbox Code Playgroud)
好的,所以一个文件改变了。但是,如果我将任何文件放入该文件夹中,它们将具有不同的 chmod 值。如何让 chmod 坚持该目录中的每个文件和文件夹?
我希望默认 chmod 设置的文件正在通过 XHR 上传。IE 从浏览器到服务器的文件上传过程。
如何在 PHP 中的应用程序代码上设置 chmod 级别?
编辑
我想我已经找到了解决问题的合理方法。下面的答案解决了文件权限问题。但是get_current_user()在 php 中运行后,我意识到运行脚本的用户与我正在尝试处理的文件的用户不同。文件用户是 apache,因为那是创建它的人。但是PHP脚本是不同的用户,默认用户。
可能的重复:
在哪里可以找到以及如何阻止列入黑名单的 IP 和代理?
某些程序会更改用户似乎来自的 IP。
我想知道是否有办法阻止这些用户,只允许他们使用他们的真实 IP 访问我的网站。
尝试了很多示例,但似乎没有任何效果。我不想使用 yum/apt-get 我想从源头做所有事情,这样我才能更好地理解。Yum/apt-get 只是欺骗系统,您必须等待版本,而且您没有配置控制。
我今天检查了error_log,发现这个可疑:
[Mon Nov 27 01:18:36 2011] [error] [client omitted]
File does not exist: /var/www/domain.com/htdocs/robots.txt
[Mon Nov 27 01:18:45 2011] [error] [client omitted]
File does not exist: /var/www/domain.com/htdocs/robots.txt
[Mon Nov 27 01:24:38 2011] [error] [client ommited]
script '/var/www/domain.com/htdocs/proxy-1.php'
not found or unable to stat
[Mon Nov 27 01:24:57 2011] [error] [client omitted]
script '/var/www/domain.com/htdocs/judge112233.php'
not found or unable to stat
Run Code Online (Sandbox Code Playgroud)
我说可疑,因为我是目前唯一使用该网站的人,所以我知道所有页面,我永远不会访问上面的那些页面。那么这是机器人攻击吗?
我有一个来自 Linode 的 VPS 帐户。
我已经安装了带有“LAMP Stack”(StackScript)的 Ubuntu 10.04 LTS。
如何从 PHP 5.3.2 升级到最新版本的 PHP 5.3.10?
我什至尝试过 apt-get 但它没有更新。
apt-get update
apt-get upgrade
Run Code Online (Sandbox Code Playgroud) 我想使用/etc/sudoers.d.
所以我做了以下事情:
visudo -f /etc/sudoers.d/99-php
Run Code Online (Sandbox Code Playgroud)
并输入此 sudo 规则:
www-data ALL = (root) NOPASSWD: /etc/my_script.sh
Run Code Online (Sandbox Code Playgroud)
在/etc/my_script.sh脚本中,我在/tmp再次删除它们之前创建了一个文件夹和几个文件。
去测试:
su www-data
/etc/my_script.sh
Run Code Online (Sandbox Code Playgroud)
这给了我很多这样的权限错误:
rm: cannot remove «/tmp/my_file.txt»: Access denied
Run Code Online (Sandbox Code Playgroud)
暗示我的脚本实际上根本没有以 root 身份运行。
那么我该怎么做才能让它发挥作用?