Door Anoniem: Door Anoniem: Door Anoniem: Door karma4: Door Anoniem: Hoezo draait een CMS onder windows met admin rechten?
Standaard benadering op http access want de open standaard eist dat poorten onder 1024 met root/admin draaien.
en het is je al 100x uitgelegd dat je er gene ene donder van gesnapt hebt... httpd draait niet als root en ook nog eens een afgeschermde SELinux context op RHEL.
Jullie zitten beide fout. de crux zit hem in Linux capabilties.
Apache draait wel degelijk als root maar gebruikt de setuid en setgid Linux capabilities voor haar threads. Dus in die zin heeft karma4 gelijk. Het meester process draait als root omdat het sockets bind aan reserved ports.
Maarrr... karma4 zit ook fout. Je hebt geen root nodig om sockets te binden aan reserved ports. In Linux zijn privileges opgedeeld in capabilities. Root is in essentie uid=0/gid=0 plus alle Linux capabilities. Apache gebrulkt setuid en setgid capabilities maar start nog steeds met uid=0/gid=0 plus alle Linux capabilities.
Tegenwoordig hoeft dat niet meer en je kunt prima een webserver draaien zonder uid=0/gid=0 en met *alleen* de net_bind_service Linux capabilty.
systemd-run -p User=joe -p DynamicUser=yes -p AmbientCapabilities=CAP_NET_BIND_SERVICE --working-directory=/tmp /usr/bin/python3 -m http.server 80
https://man7.org/linux/man-pages/man7/capabilities.7.html
really?
ss -antp:
LISTEN 0 128 *:80 *:* users:(("httpd",pid=1494731,fd=4),("httpd",pid=1365917,fd=4),("httpd",pid=1365916,fd=4),("httpd",pid=1365915,fd=4),("httpd",pid=1570,fd=4))
en ps -Zelf | grep httpd:
system_u:system_r:httpd_t:s0 5 S apache 1365914 1570 0 80 0 - 65454 - Jul10 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 5 S apache 1365915 1570 0 80 0 - 641106 - Jul10 ? 00:02:56 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 5 S apache 1365916 1570 0 80 0 - 690276 - Jul10 ? 00:02:47 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 5 S apache 1365917 1570 0 80 0 - 641106 - Jul10 ? 00:02:57 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0 5 S apache 1494731 1570 0 80 0 - 641106 - Jul10 ? 00:02:55 /usr/sbin/httpd -DFOREGROUND
alles wat een verbinding aanmaakt op poort 80 komt in een httpd process terrecht dat als user 'apache' draait en onder de httpd_t context...
even zo voor poort 443 dus...
Hier tenminste wel. Kunnen kleine verschillen zijn maar puntje bij paaltje heeft apache net_bind_service nodig en de compatible manier is om als root op te starten, sockets te binden en dan privileges te droppen door uid/gid te veranderen.
root@debian:~# ps -Zelf | grep apache
sys.id:sys.role:apache.server.subj:s0 1 S root 14216 1 0 80 0 - 3042 - Jul14 ? 00:00:07 /usr/sbin/apache2 -k start
sys.id:sys.role:apacheutils.rotatelogs.subj:s0 0 S root 14217 14216 0 80 0 - 699 - Jul14 ? 00:00:00 /usr/bin/rotatelogs -n 5 /var/log/apache2/error.log 1M
sys.id:sys.role:apacheutils.rotatelogs.subj:s0 0 S root 14218 14216 0 80 0 - 701 - Jul14 ? 00:00:00 /usr/bin/rotatelogs -n 5 /var/log/apache2/access.log 1M
sys.id:sys.role:apache.server.subj:s0 5 S www-data 14219 14216 0 80 0 - 2830 - Jul14 ? 00:00:00 /usr/sbin/apache2 -k start
sys.id:sys.role:apache.server.subj:s0 5 S www-data 14222 14216 0 80 0 - 501415 - Jul14 ? 00:00:03 /usr/sbin/apache2 -k start
sys.id:sys.role:apache.server.subj:s0 5 S www-data 14223 14216 0 80 0 - 501446 - Jul14 ? 00:00:06 /usr/sbin/apache2 -k start
sys.id:sys.role:sys.user.subj:s0 0 S root 24721 20725 0 80 0 - 1545 - 11:20 pts/0 00:00:00 grep apache
root@debian:~# ss -antlpZ | grep apache
LISTEN 0 511 *:443 *:* users:(("apache2",pid=14223,proc_ctx=sys.id:sys.role:apache.server.subj:s0,fd=6),("apache2",pid=14222,proc_ctx=sys.id:sys.role:apache.server.subj:s0,fd=6),("apache2",pid=14216,proc_ctx=sys.id:sys.role:apache.server.subj:s0,fd=6))
LISTEN 0 511 *:80 *:* users:(("apache2",pid=14223,proc_ctx=sys.id:sys.role:apache.server.subj:s0,fd=4),("apache2",pid=14222,proc_ctx=sys.id:sys.role:apache.server.subj:s0,fd=4),("apache2",pid=14216,proc_ctx=sys.id:sys.role:apache.server.subj:s0,fd=4))