For example:
log:
level: debug
- It is now possible to specify the address to bind the DNS Proxy Server to.
- Fixed a bug where domains with blocked connections were not being logged.
bouheki no longer modifies /etc/resolv.conf
. If you use bouheki's DNS proxy server, you must manually modify /etc/resolv.conf
.
DNS Proxy #24
Listen to DNS Proxy servers to address a bug (#17) that allows bypassing the limit when the TTL reaches 0.
Fix TTL-based DNS Resolver #19
Logs can contain arbitrary labels in key/value format.
For example:
log:
labels:
environment: produdction
role: app
{
"Action": "BLOCKED",
"Addr": "52.219.1.53",
"Comm": "curl",
...
"environment": "production",
"role": "app",
"time": "2022-03-27T13:33:17Z"
}
TTL-based name resolution instead of periodically #18
Workarounds for #17.
Log context was not set correctly.
bouheki's binary is now statically complaied.
Support for mount restrictions #10
Added new restriction for mount event. This prevents file mounts such as /var/run/docker.sock
.
mount:
mode: block
target: host
deny:
- /var/run/docker.sock
network:
enable: true
...
files:
enable: false # File access restrictions do not apply
Support for file access restrictions #6
File open can now be restricted by attaching lsm/open.
For example, Access to /etc/passwd
and /etc/test
can be disabled with the following configuration:
network:
mode: block
target: host
cidr:
allow:
- 0.0.0.0/0
files:
mode: block
target: container
allow:
- '/'
deny:
- '/etc/passwd'
- '/etc/test'
log:
format: json
update libbpfgo and static link #9
libbpfgo updated to v0.2.4-libbpf-0.6.1
. With this change, libbpf is managed a a submodule.
Also, libbpf is now statically linked.
$ ldd bouheki
linux-vdso.so.1 (0x00007fff9a8ae000)
libelf.so.1 => /lib/x86_64-linux-gnu/libelf.so.1 (0x00007fc5e2761000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc5e2745000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc5e251d000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc5e2788000)
Support for restrictions by domain name #5
Restrictions by domain name are now possible.
Since it is difficult to hook domain name resolution in eBPF, we will resolve it in the userspace program.
Periodically perform name resolution in the userspace programs to update the eBPF Map.
This will support the following settings:
network:
mode: block
target: host
cidr:
allow:
- 0.0.0.0/0
deny: []
domain:
deny:
# Connection to example.com will be blocked
- example.com
This is an initiative by GMO Pepabo, Inc. through its internship program for students.
Thanks @n01e0
Support for IPv6 communication. #2
It can monitor and block the communication of specified IPv6 address with the following settings:
network:
mode: block
target: host
cidr:
allow:
- 0.0.0.0/0
- ::/0
deny:
- 2001:3984:3989::3/128
log:
format: json
This is an initiative by GMO Pepabo, Inc. through its internship program for students.
Thanks @n01e0
Output the command name of the parent process to the log.
If the destination port is 0
, it will not be audited.
In some cases, such as getaddrinfo(), sin_port is set to 0
. Not audited because no communication actually occurs.
Initial Release 🎉