Re: nginx: sandboxing

2021-05-12 Пенетрантность Maxim Konovalov
On 12.05.2021 20:26, Илья Шипицин wrote:
> На примере nginx, раз уж про него речь.
> 
> Штука выглядит прикольной, но не могу придумать, когда она полезна и в чём
> 
Допустим, известно, что в дикой природе программа X ни при каких случаях
не должна делать execve(2).  Отличная идея исключить этот вызов из
списка разрешенных на тот случай, если вдруг в программе X найдут RCE.

Видимо, лучше начать с

https://en.wikipedia.org/wiki/Sandbox_(computer_security)

Вряд ли я доступнее и нагляднее расскажу.

Вот это еще можно поизучать в кач-ве старта:

https://wiki.freebsd.org/Capsicum

> On Wed, May 12, 2021, 10:12 PM Maxim Konovalov  > wrote:
> 
> Привет.
> 
> On 12.05.2021 19:54, Илья Шипицин wrote:
> > какие преимущества и в каких сценариях может дать такая настройка?
> >
> Илья, вы спрашиваете про sandboxing как технологию вообще или
> применительно к nginx/systemd?
> 
> -- 
> Maxim Konovalov
> 


-- 
Maxim Konovalov
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx: sandboxing

2021-05-12 Пенетрантность izorkin
Title: Re: nginx: sandboxing


Здравствуйте, Илья.

Например, грубый пример, если взломают web-сайт, то не смогут выйти за пределы песочницы.

Вы писали 12 мая 2021 г., 20:26:58:





На примере nginx, раз уж про него речь.

Штука выглядит прикольной, но не могу придумать, когда она полезна и в чём






--
С уважением,
 Izorkin                          mailto:izor...@gmail.com

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx: sandboxing

2021-05-12 Пенетрантность Илья Шипицин
На примере nginx, раз уж про него речь.

Штука выглядит прикольной, но не могу придумать, когда она полезна и в чём

On Wed, May 12, 2021, 10:12 PM Maxim Konovalov  wrote:

> Привет.
>
> On 12.05.2021 19:54, Илья Шипицин wrote:
> > какие преимущества и в каких сценариях может дать такая настройка?
> >
> Илья, вы спрашиваете про sandboxing как технологию вообще или
> применительно к nginx/systemd?
>
> --
> Maxim Konovalov
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx: sandboxing

2021-05-12 Пенетрантность Maxim Konovalov
Привет.

On 12.05.2021 19:54, Илья Шипицин wrote:
> какие преимущества и в каких сценариях может дать такая настройка?
> 
Илья, вы спрашиваете про sandboxing как технологию вообще или
применительно к nginx/systemd?

-- 
Maxim Konovalov
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx: sandboxing

2021-05-12 Пенетрантность Илья Шипицин
какие преимущества и в каких сценариях может дать такая настройка?

ср, 12 мая 2021 г. в 21:44, :

> Здравствуйте, Илья.
>
> Если nginx использует эти вызовы, то в конфигурацию сервиса добавить
> строки, которые разрешают эти вызовы:
> ```
> SystemCallFilter=pipe
> SystemCallFilter=pipe2
> ```
>
> Хотелось немного повысить безопасность службы и изолировать от других
> сервисов, запущенных в системе. С большинство параметров
> изоляции nginx работает нормально, а вот с системными вызовами уже сложнее
> маленько разобраться.
>
> Вы писали 12 мая 2021 г., 18:39:33:
>
>
> а как предполагается, это должно работать ?
>
> типа, программа использует эти вызовы, а мы такие бац, и запретили.
> и что должно произойти ? всё сломается ?
>
> какая модель угроз ? есть какие-нибудь примеры ?
>
>
>
>
> *-- С уважением,  Izorkin  *
> mailto:izor...@gmail.com 
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx: sandboxing

2021-05-12 Пенетрантность izorkin
Title: Re: nginx: sandboxing


Здравствуйте, Илья.

Если nginx использует эти вызовы, то в конфигурацию сервиса добавить строки, которые разрешают эти вызовы:
```
SystemCallFilter=pipe
SystemCallFilter=pipe2
```

Хотелось немного повысить безопасность службы и изолировать от других сервисов, запущенных в системе. С большинство параметров
изоляции nginx работает нормально, а вот с системными вызовами уже сложнее маленько разобраться.

Вы писали 12 мая 2021 г., 18:39:33:





а как предполагается, это должно работать ?

типа, программа использует эти вызовы, а мы такие бац, и запретили.
и что должно произойти ? всё сломается ?

какая модель угроз ? есть какие-нибудь примеры ?





--
С уважением,
 Izorkin                          mailto:izor...@gmail.com

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx: sandboxing

2021-05-12 Пенетрантность Илья Шипицин
а как предполагается, это должно работать ?

типа, программа использует эти вызовы, а мы такие бац, и запретили.
и что должно произойти ? всё сломается ?

какая модель угроз ? есть какие-нибудь примеры ?

ср, 12 мая 2021 г. в 17:43, :

> Здравствуйте.
> SystemD поддерживает возможность запуска сервисов в режиме песочницы. В
> параметрах есть опция RemoveIPC -
> https://www.freedesktop.org/software/systemd/man/systemd.exec.html#RemoveIPC=
> Приложение nginx использует IPC вызовы? Можно ли фильтровать эти события,
> а так же системные вызовы @ipc -
> https://www.freedesktop.org/software/systemd/man/systemd.exec.html#SystemCallFilter=
> Набор фильтров @ipc фильруется такие системные вызовы:
> ```
> # SysV IPC, POSIX Message Queues or other IPC
> ipc
> memfd_create
> mq_getsetattr
> mq_notify
> mq_open
> mq_timedreceive
> mq_timedreceive_time64
> mq_timedsend
> mq_timedsend_time64
> mq_unlink
> msgctl
> msgget
> msgrcv
> msgsnd
> pipe
> pipe2
> process_vm_readv
> process_vm_writev
> semctl
> semget
> semop
> semtimedop
> semtimedop_time64
> shmat
> shmctl
> shmdt
> shmget
> ```
> В коде nginx используются эти вызовы?
> Тут -
> https://github.com/nginx/nginx/blob/master/src/event/ngx_event_pipe.c#L119
> вроде используется вызов pipe. Или это разные вещи?
>
> nginx.service:
> ```
> AmbientCapabilities=CAP_NET_BIND_SERVICE
> AmbientCapabilities=CAP_SYS_RESOURCE
> CapabilityBoundingSet=CAP_NET_BIND_SERVICE
> CapabilityBoundingSet=CAP_SYS_RESOURCE
> LockPersonality=true
> MemoryDenyWriteExecute=true
> NoNewPrivileges=true
> PrivateDevices=true
> PrivateMounts=true
> PrivateTmp=true
> ProcSubset=pid
> ProtectClock=true
> ProtectControlGroups=true
> ProtectHome=true
> ProtectHostname=true
> ProtectKernelLogs=true
> ProtectKernelModules=true
> ProtectKernelTunables=true
> ProtectProc=invisible
> ProtectSystem=strict
> RemoveIPC=true
> RestrictAddressFamilies=AF_UNIX
> RestrictAddressFamilies=AF_INET
> RestrictAddressFamilies=AF_INET6
> RestrictNamespaces=true
> RestrictRealtime=true
> RestrictSUIDSGID=true
> SystemCallArchitectures=native
> SystemCallFilter=~@cpu-emulation @debug @keyring @ipc @mount @obsolete
> @privileged @setuid
> UMask=0027
> ```
>
>
> --
> С уважением,
>  Izorkin  mailto:izor...@gmail.com
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

nginx: sandboxing

2021-05-12 Пенетрантность izorkin
Здравствуйте.
SystemD поддерживает возможность запуска сервисов в режиме песочницы. В 
параметрах есть опция RemoveIPC - 
https://www.freedesktop.org/software/systemd/man/systemd.exec.html#RemoveIPC=
Приложение nginx использует IPC вызовы? Можно ли фильтровать эти события, а так 
же системные вызовы @ipc - 
https://www.freedesktop.org/software/systemd/man/systemd.exec.html#SystemCallFilter=
Набор фильтров @ipc фильруется такие системные вызовы:
```
# SysV IPC, POSIX Message Queues or other IPC
ipc
memfd_create
mq_getsetattr
mq_notify
mq_open
mq_timedreceive
mq_timedreceive_time64
mq_timedsend
mq_timedsend_time64
mq_unlink
msgctl
msgget
msgrcv
msgsnd
pipe
pipe2
process_vm_readv
process_vm_writev
semctl
semget
semop
semtimedop
semtimedop_time64
shmat
shmctl
shmdt
shmget
```
В коде nginx используются эти вызовы?
Тут - 
https://github.com/nginx/nginx/blob/master/src/event/ngx_event_pipe.c#L119 
вроде используется вызов pipe. Или это разные вещи?

nginx.service:
```
AmbientCapabilities=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_SYS_RESOURCE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_SYS_RESOURCE
LockPersonality=true
MemoryDenyWriteExecute=true
NoNewPrivileges=true
PrivateDevices=true
PrivateMounts=true
PrivateTmp=true
ProcSubset=pid
ProtectClock=true
ProtectControlGroups=true
ProtectHome=true
ProtectHostname=true
ProtectKernelLogs=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectProc=invisible
ProtectSystem=strict
RemoveIPC=true
RestrictAddressFamilies=AF_UNIX
RestrictAddressFamilies=AF_INET
RestrictAddressFamilies=AF_INET6
RestrictNamespaces=true
RestrictRealtime=true
RestrictSUIDSGID=true
SystemCallArchitectures=native
SystemCallFilter=~@cpu-emulation @debug @keyring @ipc @mount @obsolete 
@privileged @setuid
UMask=0027
```


-- 
С уважением,
 Izorkin  mailto:izor...@gmail.com

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru