mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-22 23:04:43 +00:00
Introduce a sysctl that modifies the value of PROT_SOCK.
Add net.ipv4.ip_unprivileged_port_start, which is a per namespace sysctl that denotes the first unprivileged inet port in the namespace. To disable all privileged ports set this to zero. It also checks for overlap with the local port range. The privileged and local range may not overlap. The use case for this change is to allow containerized processes to bind to priviliged ports, but prevent them from ever being allowed to modify their container's network configuration. The latter is accomplished by ensuring that the network namespace is not a child of the user namespace. This modification was needed to allow the container manager to disable a namespace's priviliged port restrictions without exposing control of the network namespace to processes in the user namespace. Signed-off-by: Krister Johansen <kjlx@templeofstupid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d140199af5
commit
4548b683b7
9 changed files with 86 additions and 12 deletions
|
@ -360,7 +360,7 @@ static int sctp_do_bind(struct sock *sk, union sctp_addr *addr, int len)
|
|||
}
|
||||
}
|
||||
|
||||
if (snum && snum < PROT_SOCK &&
|
||||
if (snum && snum < inet_prot_sock(net) &&
|
||||
!ns_capable(net->user_ns, CAP_NET_BIND_SERVICE))
|
||||
return -EACCES;
|
||||
|
||||
|
@ -1152,8 +1152,10 @@ static int __sctp_connect(struct sock *sk,
|
|||
* accept new associations, but it SHOULD NOT
|
||||
* be permitted to open new associations.
|
||||
*/
|
||||
if (ep->base.bind_addr.port < PROT_SOCK &&
|
||||
!ns_capable(net->user_ns, CAP_NET_BIND_SERVICE)) {
|
||||
if (ep->base.bind_addr.port <
|
||||
inet_prot_sock(net) &&
|
||||
!ns_capable(net->user_ns,
|
||||
CAP_NET_BIND_SERVICE)) {
|
||||
err = -EACCES;
|
||||
goto out_free;
|
||||
}
|
||||
|
@ -1818,7 +1820,7 @@ static int sctp_sendmsg(struct sock *sk, struct msghdr *msg, size_t msg_len)
|
|||
* but it SHOULD NOT be permitted to open new
|
||||
* associations.
|
||||
*/
|
||||
if (ep->base.bind_addr.port < PROT_SOCK &&
|
||||
if (ep->base.bind_addr.port < inet_prot_sock(net) &&
|
||||
!ns_capable(net->user_ns, CAP_NET_BIND_SERVICE)) {
|
||||
err = -EACCES;
|
||||
goto out_unlock;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue