I guess CGI scripting is convenient and necessarry for most of us (just like bash itself), and SELinux did not prevent Heartbleed either. But that does not mean I will make coloring jokes about its inefficacy.
I'd rather a simpler, file and user based approach. I know that's not role based, but since the `myapp` user matches 1:1 with the role of my app, it seems reasonable:
chown /proc/ports/tcp/80 myapp
Yes, that file doesn't exist yet, it's a proposal. Yes this breaks the `all-or-nothing` approach to root special privileges. But `all-or-nothing` is broken, and SELinux just seems to be working around it.Off-topic: 'avc denied' is still one of the worst error messages in Unix. Nobody cares/knows that the access vector cache is part of SELinux. Making it 'SELinux denies' would have made people a lot happier with the system and lost Google a small amount of search engine revenue.
So to run a web server as the user myapp (with UID 1234 in this example), you simply load the mac_portacl kernel module and then:
sysctl security.mac.portacl.rules=uid:1234:tcp:80,uid:1234:tcp:443
In Linux it seems I can only assign the right to bind to all privileged ports (with cap_net_bind_service), but once every user has that right, that's essentially the same thing as not having privileged ports at all, and we're back to where we started. O_o[0] http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ma...
If no MAC system is in place and a user facing process gets owned, it will get free pass to $HOME and lots of other user accessible areas, where lots of juicy information are already available.
Additionally, downloading and running additionally scripts via the exploit path is quite easy. Who needs root afterwards....
On the systems UNIX/Windows I use all of them have MAC enforced, even if it might be a pain to configure sometimes.
Lets look at what it can read.
... It can read apache static content, like web page data.
Well what can't it read?
user_home_t - This is where I keep my credit card data
*db_t - No database data.
So, it can't read database data directly, but presumably your website can already connect to the database. Which means it can read out your database credentials, and just connect to the database?https://www.reddit.com/r/linux/comments/1xdokz/selinux_saved...
I myself have had several SELinux saves. It's definitely proven itself valuable as an additional security control.
Of course not. The exploit doesn't come in coloring book form.
Not as easy to color the unabbreviated quote, since understanding the omitted text would require reading the article.
A production server would have strong confinement of domains, tailored to the production workload.