2023-03-28 10:56:49    18    0    0

非root用户使用1024以下端口(Linux的Capabilities)

1. 问题背景

曾经的一个项目中用到需要Modbus TCP协议的502端口,但是我们使用的时候是非root用户,没有权限访问1024以下的端口。最简单的方法是将通讯的端口自定义为大于502的端口,但凑巧的是对方没有将自定义端口的功能调出来(就是懒的),就只能通过修改用户权限达到访问1024以下端口的目的。

2. 解决方法

2.1 进入root用户

在命令终端中输入 su root

  1. $ su root
  2. password:
  3. $

分配用户权限,可以进入需要访问1024以内端口的程序所在的文件夹,输入以下指令,输入后该文件就可以调用1024以内端口了。

  1. /*filename为可执行程序的文件名, path为文件路径*/
  2. # setcap cap_net_bind_service=+ep /path/filename

3. 附

3.1 Capabilities介绍

Capabilities是从 Linux2.2 内核之后开始引入的,旨在打破了系统中超级用户与普通用户的概念,由普通用户也可以做只有超级用户可以完成的工作。

Capabilites 作为线程(Linux 并不真正区分进程和线程)的属性存在,每个功能组都可以独立启用和禁用。其本质上就是将内核调用分门别类,具有相似功能的内核调用被分到同一组中。

在执行特权操作时,如果线程的有效身份不是 root,就去检查其是否具有该特权操作所对应的 capabilities,并以此为依据,决定是否可以执行特权操作。Capabilities 可以在进程执行时赋予,也可以直接从父进程继承。

3.2 Capabilities其他功能名称

capability 名称 capability 描述
CAP_AUDIT_CONTROL 启用和禁用内核审计;改变审计过滤规则;检索审计状态和过滤规则
CAP_AUDIT_READ 允许通过 multicast netlink 套接字读取审计日志
CAP_AUDIT_WRITE 将记
2023-03-28 10:28:04    57    0    0

OpenSSL 自签发证书

1. SSL 认证方式

  • 无认证:双方都不校验对方合法性,通信过程加密
  • 单向认证:客户端验证服务器的合法性,服务器不验证客户端
  • 双向认证:客户端验证服务器合法性、服务器也会验证客户端合法性

2. SSL 秘钥

  • 私钥: 不对外开放,持有端用于解密通信内容
  • 公钥:对外开放,对方用公钥加密数据和自己通信
  • CA证书:在公钥的基础上增加签名,由权威机构签发,保证公钥的合法性

3. 创建证书

生成私钥:

  1. openssl genrsa -out server.key 2048 //算法生成私钥
  2. openssl rsa -text -in server.key //查看私钥内容

创建公钥:

  1. openssl req -new -key server.key -out server.csr //创建公钥
  2. openssl req -text -in server.csr -noout //查看公钥

创建公钥时输入内容说明:

  1. Country Name (2 letter code) []:CN // 输入国家代码,中国填写 CN
  2. State or Province Name (full name) []:Tianjin // 输入省份
  3. Locality Name (eg, city) []:Tianjin // 输入城市
  4. Organization Name (eg, company) []:company // 输入组织机构(或公司名)
  5. Organizational Unit Name (eg, section) []:section // 输入机构部门
  6. Common Name (eg, fully qualified host name) []:*.abc.com // 输入域名
  7. Email Address []:emai
3/3