Linux内核功能介绍及如何使用保护您的网页安全
2024-10-09 10:04:19
在本文中,我们快速浏览了Linux内核的许可流程,并向您展示了如何使用它们来保护您的网页或应用安全
传统上,Linux内核通过以下两类来区分其进程:
特权进程:这些进程使用户可以绕过所有内核权限检查。
非特权进程:这些进程需要进行完全权限检查,例如有效的UID,GID和补充组列表。
授予对用户进程的完全特权访问权限可能会导致系统滥用,例如未经授权的数据更改,后门,更改的ACL等。Linux 2.2附带了一个称为功能的解决方案。功能使开发人员可以授予二进制文件/文件特定的权限。
假设我们要使用非特权用户在端口80上启动Python的Simple HTTP Server模块。如果我们尝试在不授予任何功能的情况下开始该过程,则会收到以下错误:
anshulp@dzone-vagrant-box:$ python -m SimpleHTTPServer
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line , in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line , in _run_code
exec code in run_globals
File "/usr/lib/python2.7/SimpleHTTPServer.py", line , in <module>
test()
File "/usr/lib/python2.7/SimpleHTTPServer.py", line , in test
BaseHTTPServer.test(HandlerClass, ServerClass)
File "/usr/lib/python2.7/BaseHTTPServer.py", line , in test
httpd = ServerClass(server_address, HandlerClass)
File "/usr/lib/python2.7/SocketServer.py", line , in __init__
self.server_bind()
File "/usr/lib/python2.7/BaseHTTPServer.py", line , in server_bind
SocketServer.TCPServer.server_bind(self)
File "/usr/lib/python2.7/SocketServer.py", line , in server_bind
self.socket.bind(self.server_address)
File "/usr/lib/python2.7/socket.py", line , in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno ] Permission denied
让我们将CAP_NET_BIND_SERVICE
功能添加到我们的Python二进制文件中。
sudo setcap 'CAP_NET_BIND_SERVICE+ep' /usr/bin/python2.
上面的命令指出我们正在向 文件添加 CAP_NET_BIND_SERVICE
功能 /usr/bin/python2.7
。 +ep
表示文件有效且已允许( "-"
将其删除)。
现在,让我们尝试再次在端口80上运行Python Simple HTTP Server模块:
anshulp@dzone-vagrant-box:$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port ...
172.28.128.1 - - [/Jul/ ::] "GET / HTTP/1.1" -
172.28.128.1 - - [/Jul/ ::] code , message File not found
172.28.128.1 - - [/Jul/ ::] "GET /favicon.ico HTTP/1.1" -
172.28.128.1 - - [/Jul/ ::] code , message File not found
172.28.128.1 - - [/Jul/ ::] "GET /favicon.ico HTTP/1.1" -
现在,我们可以通过非特权用户通过特权端口80提供流量。
在撰写本文时,可以根据需求分配40多种功能。
有3种模式为功能:
e:有效- 表示该功能已“激活”。
p:允许- 表示可以使用该功能。
i:已继承- 表示此功能由子元素/子流程继承。
功能提供了一种简洁有效的方法,可以将特权权限分配给非特权用户。
好文推荐:
最新文章
- wamp集成环境开启rewrite伪静态支持
- Redis 对比 Memcached 并在 CentOS 下进行安装配置
- C语言指针类型
- Spring Boot快速开发Web项目
- 1 Spring MVC 原理
- 一些sql语句的常用总结(重要)
- JS-定时器换背景
- maven的安装与配置
- .net HttpClient类(System.Net.Http) c#并发使用测试、压测
- 编译QT时出现lib/libQtGui.so: undefined reference to `ts_read_raw&#39;的解决办法
- 【转】【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)
- 原生js 实现的瀑布流
- [Bootstrap] 2. class &#39;row&#39; &; &#39;col-md-x&#39; &; &#39;col-md-offset-x&#39;
- CIFS与NFS(转)
- hdu 2101
- Zookeeper笔记3——原理及其安装使用
- MySQL数据库安装与配置详解(图文)
- <;Android基础>;(四) Fragment Part 1
- 【python】带图片验证码的登录自动化实战
- Bootstrap之网格类
热门文章
- 【vue】axios二次封装,更好的管理api接口和使用
- Spark3.0分布,Structured Streaming UI登场
- idea安装docker插件
- 傻瓜式教学--win10 + frp + rdpwrap + 阿里云服务器 --实现win10 多用户同时远程登录内网机
- python的一些基础知识
- MongoDB快速入门教程 (4.2)
- 一.2.序列化使用之用户资源功能app
- Docker环境下Java应用的最大内存和堆内存的设置
- Java 从入门到进阶之路(二十八)
- redis-cli连接redis服务器操作