AIX非root用户80端口运行Apache

在端口80上的非root用户下在AIX中运行Apache

UrbanBiel | 201289 游览(21507 

最近,有人问我,如果Apache以非特权(非root)帐户运行,是否可以绑定到端口80。当然,任何过程都可以使用RBAC

HTTP服务器

Apache HTTP Server在其配置文件中有一个指令,该进程应在​​该指令下运行用户帐户。但是,如果希望它在默认端口TCP / 80上侦听,则父进程必须在root用户下运行。Apacheroot身份打开端口80,然后派生子进程,这些子进程根据httpd.conf删除其有效的uidgid。有一些缺点:

  • 有些人只是觉得不够安全
  • 它还要求Apache必须由root用户控制

一种解决方案是在非特权端口(例如8080)上运行它并使用端口转发,或者使用负载平衡器/代理服务器。专业人员使用RBAC

首先,我们将Apache配置为在用户www下运行

aix71@/# mkgroup id=10000 www

aix71@/# mkuser id=10000 home=/var/www shell=/bin/ksh login=false pgrp=www groups=www www

aix71@/# mkdir -p /var/www

aix71@/# chown www.www /var/www

aix71@/# grep -E "^User|^Group" /etc/opt/freeware/apache/httpd.conf

User www

Group www

aix71@/# grep "^Listen" /etc/opt/freeware/apache/httpd.conf

Listen 80

一些勿忘的:

  • 更改启动脚本,以便Apache在用户www下启动
  • 将所有者和权限更改为DocumentRoot,日志文件,httpd.conf文件,pid目录等。请对其进行三次检查。尤其要确保错误日志文件可由用户www写入。
  • 验证Apache是​​否在root用户下运行。停止它(自由端口80)。

这就是关于Apache配置的全部内容。

RBAC

基于角色的访问控制使您可以比传统的root / nonroot方法更好地控制用户对系统资源的访问。使用RBAC,您可以指定某个非root用户可以对通常需要root访问权限的对象执行任务。例如,使用LVM,创建备份或打开小于1024TCP端口。让我们为方案配置RBAC

  1. 一点点RBAC黑客攻击。我们需要知道,httpd程序需要绑定到端口80哪些特权。您已验证,您的Apache将成功以root用户身份启动和运行,对吗?以root用户运行tracepriv命令:

aix71:/# tracepriv -f /opt/freeware/apache/sbin/httpd

 

12255428: Used privileges for /opt/freeware/apache/sbin/httpd:

  PV_DAC_W                           PV_NET_CNTL

  PV_NET_PORT

要获取基于AIX 7.1信息中心或更高版本的特权描述,请下载PDFIT直觉表明我们需要PV_NET_PORT特权。

  1. 使用aix71@/# mkdom命令创建域。

mkdom "id=1" dfltmsg="TCP Port 80" apache_80

我们刚刚创建了一个名称为apache_80ID = 1的域以及您的自定义标识字符串。使用lsdom ALL列出系统中的所有定义的域。

  1. 设置域对象的安全属性。我们希望将TCP端口80设置为可被属于我们域的进程访问。

aix71@/# setsecattr -o domains=apache_80 \

objtype=netport secflags=FSF_DOM_ANY TCP_80

  1. 设置域对象的访问属性。我们希望将Apache二进制文件设置为在命令运行时对其网络端口及其子进程具有特权。

aix71@/# setsecattr -c accessauths=ALLOW_ALL \

innateprivs=PV_NET_PORT inheritprivs=PV_NET_PORT \

secflags=FSF_EPS  /opt/freeware/apache/sbin/httpd

  1. 设置用户www属于域apache_80

aix71@/# chuser "domains=apache_80" www

  1. 而且总是总是,在更改域设置中的任何内容后,运行setkst命令来设置内核安全性表。

现在怎么办。啊,可以,运行apachectl命令来启动Apache。检查并确保所有apache进程都在www用户下运行。不行吗 

故障排除

如果遵循了所有步骤,并且您正在运行AIX 7.1(我的测试系统),那么很难相信它不会起作用。很可能与Apache配置有关。

  • 您的Apache首先是否在root用户下运行?
  • 检查用户www是否有权访问所有必需的目录:配置目录,DocumentRoot目录,日志文件...。
  • 80端口免费吗?
  • Apache是​​否在用户www上的非特权端口(例如8080)上运行?如果是,则可能是RBAC问题。

感谢Viktor Vojtanik的审查和反馈以及独立测试。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值