Linux内核功能介绍及如何使用保护您的网页安全

在本文中,我们快速浏览了Linux内核的许可流程,并向您展示了如何使用它们来保护您的网页或应用安全

传统上,Linux内核通过以下两类来区分其进程:

  • 特权进程:这些进程使用户可以绕过所有内核权限检查。

  • 非特权进程:这些进程需要进行完全权限检查,例如有效的UID,GID和补充组列表。

授予对用户进程的完全特权访问权限可能会导致系统滥用,例如未经授权的数据更改,后门,更改的ACL等。Linux 2.2附带了一个称为功能的解决方案。功能使开发人员可以授予二进制文件/文件特定的权限。

假设我们要使用非特权用户在端口80上启动Python的Simple HTTP Server模块。如果我们尝试在不授予任何功能的情况下开始该过程,则会收到以下错误:

anshulp@dzone-vagrant-box:$ python -m SimpleHTTPServer 80
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/lib/python2.7/SimpleHTTPServer.py", line 235, in <module>
    test()
  File "/usr/lib/python2.7/SimpleHTTPServer.py", line 231, in test
    BaseHTTPServer.test(HandlerClass, ServerClass)
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 606, in test
    httpd = ServerClass(server_address, HandlerClass)
  File "/usr/lib/python2.7/SocketServer.py", line 417, in __init__
    self.server_bind()
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind
    SocketServer.TCPServer.server_bind(self)
  File "/usr/lib/python2.7/SocketServer.py", line 431, in server_bind
    self.socket.bind(self.server_address)
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 13] Permission denied

让我们将CAP_NET_BIND_SERVICE 功能添加到我们的Python二进制文件中。

sudo setcap CAP_NET_BIND_SERVICE+ep /usr/bin/python2.7

上面的命令指出我们正在向 文件添加   CAP_NET_BIND_SERVICE  功能  /usr/bin/python2.7。 +ep 表示文件有效且已允许(  "-"  将其删除)。

现在,让我们尝试再次在端口80上运行Python Simple HTTP Server模块:

anshulp@dzone-vagrant-box:$ python -m SimpleHTTPServer 80
Serving HTTP on 0.0.0.0 port 80 ...
172.28.128.1 - - [06/Jul/2017 11:30:13] "GET / HTTP/1.1" 200 -
172.28.128.1 - - [06/Jul/2017 11:30:13] code 404, message File not found
172.28.128.1 - - [06/Jul/2017 11:30:13] "GET /favicon.ico HTTP/1.1" 404 -
172.28.128.1 - - [06/Jul/2017 11:30:13] code 404, message File not found
172.28.128.1 - - [06/Jul/2017 11:30:13] "GET /favicon.ico HTTP/1.1" 404 -

现在,我们可以通过非特权用户通过特权端口80提供流量。

在撰写本文时,可以根据需求分配40多种功能。

有3种模式为功能

  •  e:有效-  表示该功能已“激活”。

  •  p:允许-  表示可以使用该功能。

  •  i:已继承-  表示此功能由子元素/子流程继承。

功能提供了一种简洁有效的方法,可以将特权权限分配给非特权用户。

好文推荐:

整整127页!这是一份阿里云内部超全K8s实战手册

大厂0距离:网易 Linux 运维工程师面试真题,内含答案

牛x公司有一群牛x的人,鹅厂大佬如何玩转技术?

Linux内核功能介绍及如何使用保护您的网页安全

上一篇:ava.lang.IllegalArgumentException: 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号


下一篇:ASP.NET Core Blazor Webassembly 之 数据绑定