sav*_*zen 45 redhat selinux redis apache-2.2
我的系统运行 CentOS 6.4 和 apache2.2.15。SElinux 正在执行,我正在尝试通过我的 python/wsgi 应用程序连接到 redis 的本地实例。我收到错误 13,权限被拒绝。我可以通过以下命令解决这个问题:
setsebool -P httpd_can_network_connect
但是,我并不完全希望 httpd 能够连接到所有 tcp 端口。如何指定允许 httpd 连接的端口/网络?如果我可以制作一个模块来允许 httpd 连接到端口 6379 ( redis ) 或 127.0.0.1 上的任何 tcp,那将是可取的。不知道为什么我的偏执如此强烈,但是嘿...
有人知道吗?
HTF*_*HTF 57
默认情况下,SELinux 策略将只允许服务访问与这些服务关联的已识别端口:
# semanage port -l | egrep '(^http_port_t|6379)'
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
# curl http://localhost/redis.php
Cannot connect to redis server.
Run Code Online (Sandbox Code Playgroud)
- 将 Redis 端口 (6379) 添加到 SELinux 策略
# semanage port -a -t http_port_t -p tcp 6379
# semanage port -l | egrep '(^http_port_t|6379)'
http_port_t tcp 6379, 80, 81, 443, 488, 8008, 8009, 8443, 9000
# curl http://localhost/redis.php
Connected successfully.
Run Code Online (Sandbox Code Playgroud)
你也可以安装setroubleshoot-serverRPM 并运行:sealert -a /var/log/audit/audit.log- 它会给你一个很好的报告和有用的建议(包括上面的命令)。
用于测试连接的 PHP 脚本:
# cat redis.php
<?php
$redis=new Redis();
$connected= $redis->connect('127.0.0.1', 6379);
if(!$connected) {
die( "Cannot connect to redis server.\n" );
}
echo "Connected successfully.\n";
?>
Run Code Online (Sandbox Code Playgroud)
Tom*_*lam 20
您可能需要使用
semanage port -m -t http_port_t -p tcp 6379
Run Code Online (Sandbox Code Playgroud)
如果缺少 semanage,则添加包 policycoreutils-python
yum install policycoreutils-python
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100113 次 |
| 最近记录: |