Documentation ¶
Index ¶
- Constants
- Variables
- type FileAccessCtrl
- func (fa *FileAccessCtrl) AddBlackListOnTheFly(id string, list []string) bool
- func (fa *FileAccessCtrl) AddContainerControlByPolicyOrder(id, setting string, rootpid int, process []*share.CLUSProcessProfileEntry) bool
- func (fa *FileAccessCtrl) Close()
- func (fa *FileAccessCtrl) GetProbeData() *FileAccessProbeData
- func (fa *FileAccessCtrl) RemoveContainerControl(id string) bool
- type FileAccessProbeData
- type FileNotificationCtr
- func (fsn *FileNotificationCtr) AddContainer(id, cPath string, pid int) (bool, map[string]*fileInfo)
- func (fsn *FileNotificationCtr) Close()
- func (fsn *FileNotificationCtr) GetUpperFileInfo(id, file string) (*fileInfo, bool)
- func (fsn *FileNotificationCtr) IsNotExistingImageFile(id, file string) (*fileInfo, bool)
- func (fsn *FileNotificationCtr) RemoveContainer(id, cPath string) bool
- type Probe
- func (p *Probe) BuildProcessFamilyGroups(id string, rootPid int)
- func (p *Probe) CheckDNSTunneling(ids []string, clientPort share.CLUSProtoPort, locIp, remIp net.IP, ...) bool
- func (p *Probe) Close()
- func (p *Probe) FsnExecFileChanged(id, file string, bNewFile bool, finfo fileInfo)
- func (p *Probe) GetContainerAppPorts(id string) (utils.Set, map[share.CLUSProtoPort]*share.CLUSApp)
- func (p *Probe) GetContainerMap() []*share.CLUSProbeContainer
- func (p *Probe) GetContainerProcHistory(id string) []*share.CLUSProcess
- func (p *Probe) GetContainerProcs(id string) []*share.CLUSProcess
- func (p *Probe) GetHostModeSessions(ids utils.Set) []*share.CLUSSession
- func (p *Probe) GetProbeSummary() *share.CLUSProbeSummary
- func (p *Probe) GetProcessInfo(pid int) (*procInternal, bool)
- func (p *Probe) GetProcessMap() []*share.CLUSProbeProcess
- func (p *Probe) HandleAnchorModeChange(bAdd bool, id, cPath string, rootPid int)
- func (p *Probe) HandleProcessPolicyChange(id string, pid int, pg *share.CLUSProcessProfile, ...)
- func (p *Probe) IsAllowedShieldProcess(id, mode string, proc *procInternal, ppe *share.CLUSProcessProfileEntry, ...) bool
- func (p *Probe) IsConnectionMonitored() bool
- func (p *Probe) NotifyPolicyChange(containerSet utils.Set)
- func (p *Probe) PatchContainerProcess(pid int, bEval bool) bool
- func (p *Probe) ProcessLookup(pid int) *fsmon.ProcInfo
- func (p *Probe) PutBeginningProcEventsBackToWork(id string) int
- func (p *Probe) RemoveProcessControl(id string)
- func (p *Probe) ReportDockerCp(id, containerName string, toContainer bool)
- func (p *Probe) SendAggregateFsMonReport(pmsg *fsmon.MonitorMessage) bool
- func (p *Probe) SendAggregateProbeReport(pmsg *ProbeMessage, bExtOp bool) bool
- func (p *Probe) SetFileMonitor(fm *fsmon.FileWatch)
- func (p *Probe) SetMonitorTrace(bEnable bool)
- func (p *Probe) SetNvProtect(bDisable bool)
- func (p *Probe) StartMonitorConnection()
- func (p *Probe) StartMonitorInterface(id string, pid int, timeout time.Duration)
- func (p *Probe) StopMonitorInterface(id string)
- func (p *Probe) UpdateFromAllowRule(id, path string)
- type ProbeConfig
- type ProbeEscalation
- type ProbeMessage
- type ProbeProcess
Constants ¶
View Source
const ( RTMGRP_LINK uint32 = 0x1 RTMGRP_IPV4_IFADDR uint32 = 0x10 RTMGRP_IPV6_IFADDR uint32 = 0x100 )
View Source
const ( PROBE_PROCESS_CHANGE = iota PROBE_CONTAINER_START PROBE_CONTAINER_STOP PROBE_CONTAINER_NEW_IP PROBE_REPORT_ESCALATION PROBE_REPORT_SUSPICIOUS PROBE_REPORT_TUNNEL PROBE_REPORT_FILE_MODIFIED PROBE_REPORT_PROCESS_VIOLATION PROBE_REPORT_PROCESS_DENIED )
View Source
const INET_DIAG_INFO = 2
Variables ¶
View Source
var ProbeMsgName = []string{ PROBE_PROCESS_CHANGE: "process_change", PROBE_CONTAINER_START: "container_start", PROBE_CONTAINER_STOP: "container_stop", PROBE_CONTAINER_NEW_IP: "container_new_ip", PROBE_REPORT_ESCALATION: "escalation", PROBE_REPORT_SUSPICIOUS: "suspicious_process", PROBE_REPORT_TUNNEL: "tunnel_connection", PROBE_REPORT_FILE_MODIFIED: "file_modified", PROBE_REPORT_PROCESS_VIOLATION: "process_profile_violation", PROBE_REPORT_PROCESS_DENIED: "process_profile_denied", }
View Source
var ProcFilters = []bpf.Instruction{ bpf.LoadAbsolute{Off: posProcEventWhat, Size: 4}, bpf.JumpIf{Val: utils.Htonl(netlink.PROC_EVENT_FORK), SkipFalse: 7}, bpf.LoadAbsolute{Off: posForkChildPid, Size: 4}, bpf.StoreScratch{Src: bpf.RegA, N: 0}, bpf.LoadScratch{Dst: bpf.RegX, N: 0}, bpf.LoadAbsolute{Off: posForkChildTgid, Size: 4}, bpf.JumpIfX{SkipFalse: 1}, bpf.RetConstant{Val: 0xffffffff}, bpf.RetConstant{Val: 0x0}, bpf.JumpIf{Val: utils.Htonl(netlink.PROC_EVENT_EXIT), SkipFalse: 7}, bpf.LoadAbsolute{Off: posExitProcessPid, Size: 4}, bpf.StoreScratch{Src: bpf.RegA, N: 0}, bpf.LoadScratch{Dst: bpf.RegX, N: 0}, bpf.LoadAbsolute{Off: posExitProcessTgid, Size: 4}, bpf.JumpIfX{SkipFalse: 1}, bpf.RetConstant{Val: 0xffffffff}, bpf.RetConstant{Val: 0x0}, bpf.RetConstant{Val: 0xfffffff}, }
berkeley packet filter (BPF) Filter out unused fork/exit thread's packets
Functions ¶
This section is empty.
Types ¶
type FileAccessCtrl ¶
type FileAccessCtrl struct {
// contains filtered or unexported fields
}
global control data
func (*FileAccessCtrl) AddBlackListOnTheFly ¶
func (fa *FileAccessCtrl) AddBlackListOnTheFly(id string, list []string) bool
///
func (*FileAccessCtrl) AddContainerControlByPolicyOrder ¶
func (fa *FileAccessCtrl) AddContainerControlByPolicyOrder(id, setting string, rootpid int, process []*share.CLUSProcessProfileEntry) bool
///
func (*FileAccessCtrl) GetProbeData ¶
func (fa *FileAccessCtrl) GetProbeData() *FileAccessProbeData
///
func (*FileAccessCtrl) RemoveContainerControl ¶
func (fa *FileAccessCtrl) RemoveContainerControl(id string) bool
type FileAccessProbeData ¶
type FileAccessProbeData struct {
// contains filtered or unexported fields
}
type FileNotificationCtr ¶
type FileNotificationCtr struct {
// contains filtered or unexported fields
}
global control data
func NewFsnCenter ¶
func NewFsnCenter(p *Probe, rtStorageDriver string) (*FileNotificationCtr, bool)
//////////
func (*FileNotificationCtr) AddContainer ¶
func (fsn *FileNotificationCtr) AddContainer(id, cPath string, pid int) (bool, map[string]*fileInfo)
func (*FileNotificationCtr) Close ¶
func (fsn *FileNotificationCtr) Close()
func (*FileNotificationCtr) GetUpperFileInfo ¶
func (fsn *FileNotificationCtr) GetUpperFileInfo(id, file string) (*fileInfo, bool)
must be valid as a new file
func (*FileNotificationCtr) IsNotExistingImageFile ¶
func (fsn *FileNotificationCtr) IsNotExistingImageFile(id, file string) (*fileInfo, bool)
func (*FileNotificationCtr) RemoveContainer ¶
func (fsn *FileNotificationCtr) RemoveContainer(id, cPath string) bool
type Probe ¶
type Probe struct { FaEndChan chan bool // contains filtered or unexported fields }
func New ¶
func New(pc *ProbeConfig) (*Probe, error)
func (*Probe) BuildProcessFamilyGroups ¶
func (*Probe) CheckDNSTunneling ¶
func (*Probe) FsnExecFileChanged ¶
func (*Probe) GetContainerAppPorts ¶
get a container's listen ports and application map
func (*Probe) GetContainerMap ¶
func (p *Probe) GetContainerMap() []*share.CLUSProbeContainer
func (*Probe) GetContainerProcHistory ¶
func (p *Probe) GetContainerProcHistory(id string) []*share.CLUSProcess
func (*Probe) GetContainerProcs ¶
func (p *Probe) GetContainerProcs(id string) []*share.CLUSProcess
func (*Probe) GetHostModeSessions ¶
func (p *Probe) GetHostModeSessions(ids utils.Set) []*share.CLUSSession
func (*Probe) GetProbeSummary ¶
func (p *Probe) GetProbeSummary() *share.CLUSProbeSummary
func (*Probe) GetProcessInfo ¶
func (*Probe) GetProcessMap ¶
func (p *Probe) GetProcessMap() []*share.CLUSProbeProcess
func (*Probe) HandleAnchorModeChange ¶
func (*Probe) HandleProcessPolicyChange ¶
func (p *Probe) HandleProcessPolicyChange(id string, pid int, pg *share.CLUSProcessProfile, bAddContainer, bBlocking bool)
////
func (*Probe) IsAllowedShieldProcess ¶
func (*Probe) IsConnectionMonitored ¶
func (*Probe) NotifyPolicyChange ¶
func (*Probe) PatchContainerProcess ¶
PatchContainerProcess() Fixed the missing process table, caused by the netlink recv errors, no process record is available. Current patch is only for important init-process of a container
func (*Probe) PutBeginningProcEventsBackToWork ¶
Patch for newly created conatiners, not for host
func (*Probe) ReportDockerCp ¶
func (*Probe) SendAggregateFsMonReport ¶
func (p *Probe) SendAggregateFsMonReport(pmsg *fsmon.MonitorMessage) bool
///
func (*Probe) SendAggregateProbeReport ¶
func (p *Probe) SendAggregateProbeReport(pmsg *ProbeMessage, bExtOp bool) bool
func (*Probe) SetFileMonitor ¶
func (*Probe) SetMonitorTrace ¶
func (*Probe) SetNvProtect ¶
func (*Probe) StartMonitorConnection ¶
func (p *Probe) StartMonitorConnection()
func (*Probe) StartMonitorInterface ¶
func (*Probe) StopMonitorInterface ¶
func (*Probe) UpdateFromAllowRule ¶
type ProbeConfig ¶
type ProbeConfig struct { Pid int PidMode string DpTaskCallback dp.DPTaskCallback NotifyTaskChan chan *ProbeMessage NotifyFsTaskChan chan *fsmon.MonitorMessage PolicyLookupFunc func(conn *dp.Connection) (uint32, uint8, bool) ProcPolicyLookupFunc func(id, riskType, pname, ppath string, pid, pgid, shellCmd int, proc *share.CLUSProcessProfileEntry) (string, string, string, string, bool, error) ReportLearnProc func(svcGroup string, proc *share.CLUSProcessProfileEntry) ContainerInContainer bool GetContainerPid func(id string) int GetAllContainerList func() utils.Set RerunKubeBench func(string, string) GetEstimateProcGroup func(id, name, path string) (string, string) GetServiceGroupName func(id string) (string, bool, bool) CapKubeBench bool FAEndChan chan bool EnableTrace bool DeferContStartRpt bool KubePlatform bool WalkHelper *workerlet.Tasker }
type ProbeEscalation ¶
type ProbeMessage ¶
type ProbeMessage struct { Type int Count int StartAt time.Time Connections []*dp.Connection ContainerIDs utils.Set Escalation *ProbeEscalation Process *ProbeProcess }
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
package ringbuffer implements a sequential compact FIFO and LILO.
|
package ringbuffer implements a sequential compact FIFO and LILO. |
Click to show internal directories.
Click to hide internal directories.