เดฌเตเตผเดเตเดเตโเดฒเดฟ เดชเดพเดเตเดเดฑเตเดฑเต เดซเดฟเตฝเดเตเดเดฑเตเดเตพ (เดฌเดฟเดชเดฟเดเดซเต) เดเดฐเต เดฒเดฟเดจเดเตเดธเต เดเตเตผเดฃเตฝ เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดฏเดพเดฃเต, เด
เดคเต เดเดชเตเดชเตเตพ เดตเตผเดทเดเตเดเดณเดพเดฏเดฟ เดเดเดเตเดฒเตเดทเต เดญเดพเดทเดพ เดธเดพเดเตเดเตเดคเดฟเด เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฃเดเตเดเดณเตเดเต เดฎเตเตป เดชเตเดเตเดเดณเดฟเตฝ เดเดฃเตเดเต. เดฌเดฟเดชเดฟเดเดซเดฟเตปเตเดฑเต เดเดชเดฏเตเดเดคเตเดคเตเดฏเตเด เดตเดฟเดเดธเดจเดคเตเดคเตเดฏเตเด เดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเตพ เดเตเดฃเตเดเต เดเตเตบเดซเดฑเตปเดธเตเดเตพ เดจเดฟเดฑเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดฒเดฟเดจเดเตเดธเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดธเดฌเตเดธเดฟเดธเตเดฑเตเดฑเด เดฎเตเดฏเดฟเตปเตเดฑเดจเตผ เดกเตเดตเดฟเดกเต เดฎเดฟเดฒเตเดฒเตผ, เดฒเดฟเดจเดเตเดธเต เดชเตเดฒเดเดฌเตเดดเตเดธเต 2018-เตฝ เดคเตปเตเดฑเต เดชเตเดฐเดธเดเดเด เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต
เดนเดฌเตเดฐเตเดฏเดฟเตฝ เดฌเดฟเดชเดฟเดเดซเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดชเตเดชเตเดดเตเด เดเดฟเดเตเดเดฏเดพเดฏ เดตเดฟเดตเดฐเดฃเดฎเดฟเดฒเตเดฒ, เด
เดคเดฟเดจเดพเตฝ เดเดฐเต เดฒเตเดเดจ เดชเดฐเดฎเตเดชเดฐเดฏเดฟเตฝ เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดฏเตเดเต เดเดฐเดฟเดคเตเดฐเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดเตผเดเตเดเดฟเดเตเดเตเดเตผ, เดกเตเดตเดฒเดชเตโเดฎเตเตปเตเดฑเต เดเตเดณเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดตเดฟเดตเดฐเดฟเดเตเดเดพเดจเตเด เดฌเดฟเดชเดฟเดเดซเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเตปเตเดฑเต เดชเตเดฐเดฏเตเดเดคเตเดคเดฟเตปเตเดฑเตเดฏเตเด เดชเดฐเดฟเดถเตเดฒเดจเดคเตเดคเดฟเตปเตเดฑเตเดฏเตเด เดฎเตเดเดฒเดเตพ เดตเดฟเดตเดฐเดฟเดเตเดเดพเดจเตเด เดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเด. เดธเตเดฐเตเดธเดฟเดฒเต เดชเตเดเตเดฏเด เดเดจเตเดจ เด เดฒเตเดเดจเด เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเดฟเตปเตเดฑเต เดเดฐเดฟเดคเตเดฐเดตเตเด เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเตเด เดชเดฑเดฏเตเดจเตเดจเต, เดเตเดเดพเดคเต เด
เดคเดฟเตปเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดคเดคเตเดตเดเตเดเดณเตเดเต เดฐเดนเดธเตเดฏเดเตเดเดณเตเด เดตเตเดณเดฟเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเต. tcpdump
, seccomp
, strace
, เด
เดคเตเดพเดเตเดพเดชเตเดชเด เดคเดจเตเดจเต เดเตเดเตเดคเดฒเต.
BPF เตปเตเดฑเต เดตเดฟเดเดธเดจเด เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเตเดจเตเดจเดคเต Linux เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเดเดเต เดเดฎเตเดฎเตเดฏเตเดฃเดฟเดฑเตเดฑเดฟเดฏเดพเดฃเต, BPF-เตปเตเดฑเต เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดชเตเดฐเดงเดพเดจ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเตเดเดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเดเดคเดพเดฃเต, เด
เดคเดฟเดจเดพเตฝ เด
เดจเตเดฎเดคเดฟเดฏเตเดเต
เดฌเดฟเดชเดฟเดเดซเดฟเตปเตเดฑเต เดเดฐเดฟเดคเตเดฐเดคเตเดคเดฟเดฒเต เดเดฐเต เดเตเดฑเดฟเดฏ เดเตเดดเตเดธเต(c)
เดเดงเตเดจเดฟเด เดฌเดฟเดชเดฟเดเดซเต เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏ เดชเดดเดฏ เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดฏเตเดเต เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดคเตเด เดตเดฟเดชเตเดฒเตเดเดฐเดฟเดเตเดเดคเตเดฎเดพเดฏ เด
เดคเต เดชเตเดฐเดฟเดฒเตเดณเตเดณ เดชเดคเดฟเดชเตเดชเดพเดฃเต, เดเดถเดฏเดเตเดเตเดดเดชเตเดชเด เดเดดเดฟเดตเดพเดเตเดเดพเตป เดเดชเตเดชเตเตพ เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเต เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต. เดเตเดฒเดพเดธเดฟเดเต BPF เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ เดเดฐเต เด
เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดธเตเดทเตเดเดฟเดเตเดเต tcpdump
, เดฎเตเดเตเดเดพเดจเดฟเดธเด seccomp
, เด
เดคเตเดชเตเดฒเต เด
เดฑเดฟเดฏเดชเตเดชเตเดเดพเดคเตเดค เดฎเตเดกเตเดฏเตเดณเตเดเตพ xt_bpf
เดตเตเดฃเตเดเดฟ iptables
เดเตเดฒเดพเดธเดฟเดซเดฏเดฑเตเด cls_bpf
. เดเดงเตเดจเดฟเด เดฒเดฟเดจเดเตเดธเดฟเตฝ, เดเตเดฒเดพเดธเดฟเดเต BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดธเตเดตเดฏเดฎเตเดต เดชเตเดคเดฟเดฏ เดฐเตเดชเดคเตเดคเดฟเดฒเตเดเตเดเต เดตเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต, เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดฐเต เดเดชเดฏเตเดเตเดคเต เดเดพเดดเตเดเดชเตเดชเดพเดเดฟเตฝ, API เดจเดฟเดฒเดจเดฟเดจเตเดจเดฟเดฐเตเดจเตเดจเต, เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเตพ เดเดพเดฃเตเดจเตเดจเดคเต เดชเตเดฒเต, เดเตเดฒเดพเดธเดฟเดเต BPF-เดจเตเดณเตเดณ เดชเตเดคเดฟเดฏ เดเดชเดฏเตเดเดเตเดเตพ เดเดชเตเดชเตเดดเตเด เดเดฃเตเดเตเดคเตเดคเดฟ. เดเดเตเดเดพเดฐเดฃเดคเตเดคเดพเตฝ, เดเตเดเดพเดคเต เดฒเดฟเดจเดเตเดธเดฟเดฒเต เดเตเดฒเดพเดธเดฟเดเตเดเตฝ เดฌเดฟเดชเดฟเดเดซเดฟเตปเตเดฑเต เดตเดฟเดเดธเดจเดคเตเดคเดฟเตปเตเดฑเต เดเดฐเดฟเดคเตเดฐเด เดชเดฟเดจเตเดคเตเดเตผเดจเตเดจเต, เด
เดคเต เดเดเตเดเดจเต, เดเดจเตเดคเตเดเตเดฃเตเดเต เด
เดคเดฟเตปเตเดฑเต เดเดงเตเดจเดฟเด เดฐเตเดชเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเดฐเดฟเดฃเดฎเดฟเดเตเดเตเดตเตเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเด, เดเตเดฒเดพเดธเดฟเดเตเดเตฝ เดฌเดฟเดชเดฟเดเดซเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดฐเต เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเดเดญเดฟเดเตเดเดพเตป เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต.
เดเดดเดฟเดเตเด เดจเตเดฑเตเดฑเดพเดฃเตเดเดฟเตปเตเดฑเต เดเตบเดชเดคเตเดเดณเตเดเต เด เดตเดธเดพเดจเดคเตเดคเดฟเตฝ, เดชเตเดฐเดถเดธเตเดค เดฒเตเดฑเตปเดธเต เดฌเตเตผเดเตเดเตเดฒเดฟ เดฒเดฌเตเดฑเดเตเดเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดเตเดเดฟเดจเตเดฏเตผเดฎเดพเตผ เดเดดเดฟเดเตเด เดจเตเดฑเตเดฑเดพเดฃเตเดเดฟเตปเตเดฑเต เดเตบเดชเดคเตเดเดณเตเดเต เด เดตเดธเดพเดจเดคเตเดคเดฟเตฝ เดเดงเตเดจเดฟเดเดฎเดพเดฏ เดนเดพเตผเดกเตโเดตเตเดฏเดฑเดฟเตฝ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดชเดพเดเตเดเดฑเตเดฑเตเดเตพ เดเดเตเดเดจเต เดถเดฐเดฟเดฏเดพเดฏเดฟ เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตเดฏเดพเด เดเดจเตเดจ เดเตเดฆเตเดฏเดคเตเดคเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเด เดชเตเดฐเดเดเดฟเดชเตเดชเดฟเดเตเดเต. CSPF (CMU/Stanford Packet Filter) เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดฏเดฟเตฝ เดเดฆเตเดฏเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฟเดฏ เดซเดฟเตฝเดเตเดเดฑเดฟเดเดเดฟเตปเตเดฑเต เด เดเดฟเดธเตเดฅเดพเดจ เดเดถเดฏเด, เด เดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเดเตเดเดฑเตเดฑเตเดเตพ เดเดคเตเดฐเดฏเตเด เดตเตเดเด เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตเดฏเตเด เดเดจเตเดจเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด เดคเดพเดฏเดคเต. เดเตเตผเดฃเตฝ เดธเตโเดชเตเดฏเตโเดธเดฟเตฝ, เดเดคเต เด เดจเดพเดตเดถเตเดฏ เดกเดพเดฑเตเดฑ เดฏเตเดธเตผ เดธเตโเดชเตเดฏเตโเดธเดฟเดฒเตเดเตเดเต เดชเดเตผเดคเตเดคเตเดจเตเดจเดคเต เดเดดเดฟเดตเดพเดเตเดเตเดจเตเดจเต. เดเตเตผเดฃเตฝ เดธเตโเดชเตเดฏเตโเดธเดฟเตฝ เดฏเตเดธเตผ เดเตเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฑเตบเดเตเด เดธเตเดฐเดเตเดท เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต, เดเดฐเต เดธเดพเตปเดกเตโเดฌเตเดเตโเดธเต เดเตเดฏเตโเดค เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป เดเดชเดฏเตเดเดฟเดเตเดเต.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดซเดฟเตฝเดเตเดเดฑเตเดเตพเดเตเดเดพเดฏเตเดณเตเดณ เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเตพ เดธเตเดฑเตเดฑเดพเดเตเดเต เด
เดงเดฟเดทเตโเด เดฟเดค เดฎเตเดทเตเดจเตเดเดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดฐเตเดชเดเตฝเดชเตเดชเดจ เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดชเตเดคเดฟเดฏ RISC เดฎเตเดทเตเดจเตเดเดณเดฟเตฝ เดเดพเดฐเตเดฏเดเตเดทเดฎเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดฌเตเตผเดเตเดเตโเดฒเดฟ เดฒเดพเดฌเตโเดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดเตเดเดฟเดจเตเดฏเตผเดฎเดพเดฐเตเดเต เดชเดฐเดฟเดถเตเดฐเดฎเดคเตเดคเดฟเดฒเตเดเต, เดเดฐเต เดชเตเดคเดฟเดฏ เดฌเดฟเดชเดฟเดเดซเต (เดฌเตเตผเดเตเดเตโเดฒเดฟ เดชเดพเดเตเดเดฑเตเดฑเต เดซเดฟเตฝเดเตเดเดฑเตเดเตพ) เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏ เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดเตเดคเตเดคเต, เดเดคเดฟเตปเตเดฑเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป เดเตผเดเตเดเดฟเดเตเดเตเดเตผ เดฎเตเดเตเดเดฑเตเดณ 6502 เดชเตเดฐเตเดธเดธเดฑเดฟเดจเต เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ เดฐเตเดชเดเตฝเดชเตเดชเดจ เดเตเดฏเตโเดคเดคเดพเดฃเต - เด
เดคเตเดคเดฐเด เด
เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจ เดเตฝเดชเตเดชเดจเตเดจเดเตเดเดณเตเดเต เดตเตผเดเตเดเตโเดนเตเดดเตโเดธเต
เดฌเดฟเดชเดฟเดเดซเต เดฎเตเดทเตเตป เดเตผเดเตเดเดฟเดเตเดเตเดเตผ
เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดคเตเดเตเดฃเตเดเต เดเดเตเดเตพ เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเตเดคเดฟเดฏเดฟเตฝ เดชเดฐเดฟเดเดฏเดชเตเดชเตเดเตเด. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดฎเตเดทเตเดจเดฟเตฝ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดเดเตเดธเดธเต เดเตเดฏเตเดฏเดพเดตเตเดจเตเดจ เดฐเดฃเตเดเต 32-เดฌเดฟเดฑเตเดฑเต เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเดเตพ เดเดฃเตเดเตเดจเตเดจเต เดชเดฑเดฏเดพเด, เดเดฐเต เด
เดเตเดฏเตเดฎเตเดฒเตเดฑเตเดฑเตผ A
เดธเตเดเดฟเด เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเตเด X
, 64 เดฌเตเดฑเตเดฑเตเดเตพ เดฎเตเดฎเตเดฎเดฑเดฟ (16 เดตเดพเดเตเดเตเดเตพ), เดเดดเตเดคเตเดจเตเดจเดคเดฟเดจเตเด เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เดตเดพเดฏเดจเดฏเตเดเตเดเตเด เดฒเดญเตเดฏเดฎเดพเดฃเต, เดเตเดเดพเดคเต เด เดตเดธเตเดคเตเดเตเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเตเดฑเดฟเดฏ เดเดฎเดพเตปเดกเต เดธเดฟเดธเตเดฑเตเดฑเด. เดธเตเดชเดพเดงเดฟเดเดฎเดพเดฏ เดชเดฆเดชเตเดฐเดฏเตเดเดเตเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฎเตเดชเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเด เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดชเตเดฐเตเดเตเดฐเดพเด เดธเดฎเดฏเดฌเดจเตเดงเดฟเดคเดฎเดพเดฏเดฟ เดชเตเตผเดคเตเดคเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดฎเตเดชเตเดเตพ เดฎเตเดจเตเดจเตเดเตเดเต เดเตเดฃเตเดเตเดชเตเดเดพเตป เดฎเดพเดคเตเดฐเดฎเต เดเดดเดฟเดฏเต, เด
เดคเดพเดฏเดคเต, เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด, เดฒเตเดชเตเดชเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดจเดฟเดฐเตเดงเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดฎเตเดทเตเตป เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดคเต เดธเตเดเตเด เดเดชเตเดฐเดเดพเดฐเดฎเดพเดฃเต. เดเดชเดฏเตเดเตเดคเดพเดตเต เดฌเดฟเดชเดฟเดเดซเต เดเตผเดเตเดเดฟเดเตเดเตเดเดฑเดฟเดจเดพเดฏเดฟ เดเดฐเต เดชเตเดฐเตเดเตเดฐเดพเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต เดเดฟเดฒเดคเต เดเตเตผเดฃเตฝ เดฎเตเดเตเดเดพเดจเดฟเดธเด (เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดชเตเดฒเตเดณเตเดณเดต), เดชเตเดฐเตเดเตเดฐเดพเด เดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต เดเดฟเดฒเตผเดเตเดเต เดเตเตผเดฃเดฒเดฟเดฒเต เดเดตเตปเตเดฑเต เดเดจเดฑเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเดพเตผเดกเดฟเดฒเต เด เดเตเดคเตเดค เดชเดพเดเตเดเดฑเตเดฑเดฟเตปเตเดฑเต เดตเดฐเดตเดพเดฃเต เดเดตเตปเตเดฑเต). เดเดฐเต เดเดตเตปเตเดฑเต เดธเดเดญเดตเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดเตเตผเดฃเตฝ เดชเตเดฐเตเดเตเดฐเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เดเตปเตเดฑเตผเดชเตเดฐเตเดฑเตเดฑเดฑเดฟเตฝ), เดเตเดเดพเดคเต เดฎเตเดทเตเตป เดฎเตเดฎเตเดฎเดฑเดฟ เดธเดฎเดพเดจเดฎเดพเดฃเต เดเดฟเดฒเตผเดเตเดเต เดเตเตผเดฃเตฝ เดฎเตเดฎเตเดฎเดฑเดฟ เดฎเตเดเดฒ (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เดเตปเดเดฎเดฟเดเดเต เดชเดพเดเตเดเดฑเตเดฑเดฟเตปเตเดฑเต เดกเดพเดฑเตเดฑ).
เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดจเตเดเตเดเดพเตป เดคเตเดเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดเดณเดฟเตฝ เดชเดฑเดเตเดเดต เดฎเดคเดฟเดฏเดพเดเตเด: เดเดตเดถเตเดฏเดพเดจเตเดธเดฐเดฃเด เดธเดฟเดธเตเดฑเตเดฑเดตเตเด เดเดฎเดพเตปเดกเต เดซเตเตผเดฎเดพเดฑเตเดฑเตเด เดเดเตเดเตพ เดชเดฐเดฟเดเดฏเดชเตเดชเตเดเตเด. เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตปเตเดฑเต เดเดฎเดพเตปเดกเต เดธเดฟเดธเตเดฑเตเดฑเด เดเดเดจเดเดฟ เดชเด เดฟเดเตเดเดพเดจเตเด เด
เดคเดฟเตปเตเดฑเต เดเดฒเตเดฒเดพ เดเดดเดฟเดตเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเด เด
เดฑเดฟเดฏเดฃเดฎเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดฏเดฅเดพเตผเดคเตเดฅ เดฒเตเดเดจเด เดตเดพเดฏเดฟเดเตเดเดพเด libpcap
: เดชเดพเดเตเดเดฑเตเดฑเต เดเตเดฏเดพเดชเตเดเดฑเดฟเดจเตเดณเตเดณ เดเดฐเต เดเตผเดเตเดเดฟเดเตเดเตเดเดฑเตเด เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเตเดทเตป เดฐเตเดคเดฟเดฏเตเดlibpcap
.
เดฒเดฟเดจเดเตเดธเดฟเตฝ เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเตปเตเดฑเต เดเดฒเตเดฒเดพ เดชเตเดฐเดงเดพเดจ เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเตเด เดชเดฐเดฟเดเดฃเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดเดชเตเดชเตเตพ เดฎเตเดจเตเดจเตเดเตเดเต เดชเตเดเตเดจเตเดจเต: tcpdump
(libpcap
), seccomp, xt_bpf
, cls_bpf
.
tcpdump
เด
เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเดพเดฏ เดชเดพเดเตเดเดฑเตเดฑเต เดซเดฟเตฝเดเตเดเดฑเดฟเดเดเดฟเดจเตเดณเตเดณ เดฎเตเตปเดญเดพเดเดคเตเดคเดฟเตปเตเดฑเต เดตเดฟเดเดธเดจเดคเตเดคเดฟเดจเต เดธเดฎเดพเดจเตเดคเดฐเดฎเดพเดฏเดพเดฃเต เดฌเดฟเดชเดฟเดเดซเดฟเตปเตเดฑเต เดตเดฟเดเดธเดจเด เดจเดเดคเตเดคเดฟเดฏเดคเต. tcpdump
. เดเตเดเดพเดคเต, เดชเดฒ เดเดชเตเดชเดฑเตเดฑเตเดฑเดฟเดเดเต เดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเดฟเดฒเตเด เดฒเดญเตเดฏเดฎเดพเดฏ เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเตปเตเดฑเต เดเดฑเตเดฑเดตเตเด เดชเดดเดฏเดคเตเด เดชเตเดฐเดถเดธเตเดคเดตเตเดฎเดพเดฏ เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดคเดฟเดจเดพเตฝ, เดเดเตเดเตพ เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดฏเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดเตเดเดณเตเดเต เดชเด เดจเด เดเดฐเดเดญเดฟเดเตเดเตเด.
(เดฒเดฟเดจเดเตเดธเดฟเดฒเต เด เดฒเตเดเดจเดคเตเดคเดฟเดฒเต เดเดฒเตเดฒเดพ เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเตเด เดเดพเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเต 5.6.0-rc6
. เดฎเดฟเดเดเตเด เดตเดพเดฏเดจเดพเดเตเดทเดฎเดคเดฏเตเดเตเดเดพเดฏเดฟ เดเดฟเดฒ เดเดฎเดพเตปเดกเตเดเดณเตเดเต เดเดเตเดเตเดชเตเดเตเดเต เดเดกเดฟเดฑเตเดฑเต เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเต.)
เดเดฆเดพเดนเดฐเดฃเด: IPv6 เดชเดพเดเตเดเดฑเตเดฑเตเดเตพ เดจเดฟเดฐเตเดเตเดทเดฟเดเตเดเตฝ
เดเดฐเต เดเตปเตเดฑเตผเดซเตเดธเดฟเตฝ เดเดฒเตเดฒเดพ IPv6 เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเตเด เดจเตเดเตเดเดฃเดฎเตเดจเตเดจเต เดจเดฎเตเดเตเดเต เดธเดเตเดเตฝเดชเตเดชเดฟเดเตเดเดพเด eth0
. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเดเตเดเต เดชเตเดฐเตเดเตเดฐเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเด tcpdump
เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดซเดฟเตฝเดเตเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเต ip6
:
$ sudo tcpdump -i eth0 ip6
เดเดชเตเดฐเดเดพเดฐเด tcpdump
เดซเดฟเตฝเดเตเดเตผ เดเดเดชเตเตฝ เดเตเดฏเตเดฏเตเดจเตเดจเต ip6
เดฌเดฟเดชเดฟเดเดซเต เดเตผเดเตเดเดฟเดเตเดเตเดเตผ เดฌเตเดฑเตเดฑเตเดเตเดกเดฟเดฒเตเดเตเดเต เดเตเตผเดฃเดฒเดฟเดฒเตเดเตเดเต เด
เดฏเดฏเตเดเตเดเตเด (เดตเดฟเดญเดพเดเดคเตเดคเดฟเดฒเต เดตเดฟเดถเดฆเดพเดเดถเดเตเดเตพ เดเดพเดฃเตเด eth0
. เดซเดฟเตฝเดเตเดเตผ เดชเตเดเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดค เดเดฐเต เดฎเตเดฒเตเดฏเด เดจเตฝเดเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ n
, เดชเดฟเดจเตเดจเต เดตเดฐเต n
เดชเดพเดเตเดเดฑเตเดฑเดฟเตปเตเดฑเต เดฌเตเดฑเตเดฑเตเดเตพ เดฏเตเดธเตผ เดธเตโเดชเตเดฏเตโเดธเดฟเดฒเตเดเตเดเต เดชเดเตผเดคเตเดคเตเด, เด
เดคเต เดเดเตเดเตโเดชเตเดเตเดเดฟเตฝ เดจเดฎเตเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเด tcpdump
.
เดเดคเต เดฌเตเดฑเตเดฑเตเดเตเดกเดพเดฃเต เดเตเตผเดฃเดฒเดฟเดฒเตเดเตเดเต เด
เดฏเดเตเดเดคเตเดจเตเดจเต เดจเดฎเตเดเตเดเต เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด tcpdump
เดฏเตเดเต เดธเดนเดพเดฏเดคเตเดคเตเดเต tcpdump
, เดเดเตเดเตพ เด
เดคเต เดเดชเตโเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ -d
:
$ sudo tcpdump -i eth0 -d ip6
(000) ldh [12]
(001) jeq #0x86dd jt 2 jf 3
(002) ret #262144
(003) ret #0
เดตเดฐเดฟ เดชเตเดเตเดฏเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต ldh [12]
, เดเดคเต "เดฒเตเดกเต เดเตป เดฑเดเดฟเดธเตเดฑเตเดฑเตผ A
16" เดเดจเตเดจ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเตฝ เดชเดเตเดคเดฟ เดตเดพเดเตเดเต (12 เดฌเดฟเดฑเตเดฑเตเดเตพ) เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดฐเตเดฏเตเดฐเต เดเตเดฆเตเดฏเด เดจเดฎเตเดฎเตพ เดเดคเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดฎเตเดฎเตเดฎเดฑเดฟเดฏเตเดฏเดพเดฃเต เด
เดญเดฟเดธเดเดฌเตเดงเดจ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต? เด
เดคเดฟเดจเตเดณเตเดณ เดเดคเตเดคเดฐเด x
เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต (x+1)
เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดค เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดชเดพเดเตเดเดฑเตเดฑเดฟเตปเตเดฑเต เดฌเตเดฑเตเดฑเต. เดเดฅเตผเดจเตเดฑเตเดฑเต เดเตปเตเดฑเตผเดซเตเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเตพ เดชเดพเดเตเดเดฑเตเดฑเตเดเตพ เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเต eth0
, เดเดคเตเด
6 6 2
|Destination MAC|Source MAC|Ether Type|...|
เด
เดคเดฟเดจเดพเตฝ เดเดฎเดพเตปเดกเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดค เดถเตเดทเด ldh [12]
เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเตฝ A
เดเดฐเต เดตเดฏเตฝ เดเดฃเตเดเดพเดเตเด Ether Type
โ เด เดเดฅเตผเดจเตเดฑเตเดฑเต เดซเตเดฐเตเดฏเดฟเดฎเดฟเตฝ เดเตเดฐเดพเตปเดธเตเดฎเดฟเดฑเตเดฑเต เดเตเดฏเตเดค เดชเดพเดเตเดเดฑเตเดฑเดฟเตปเตเดฑเต เดคเดฐเด. 1 เดตเดฐเดฟเดฏเดฟเตฝ เดเดเตเดเตพ เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเตปเตเดฑเต เดเดณเตเดณเดเดเตเดเดเตเดเตพ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเต A
(เดชเดพเดเตเดเตเดเต เดคเดฐเด) เดธเดฟ 0x86dd
, เดเดคเตเด jt 2
ะธ jf 3
โ เดคเดพเดฐเดคเดฎเตเดฏเด เดตเดฟเดเดฏเดเดฐเดฎเดพเดฃเตเดเตเดเดฟเตฝ เดจเดฟเดเตเดเตพ เดชเตเดเตเดฃเตเด เดฎเดพเตผเดเตเดเตเดเตพ (A == 0x86dd
) เดตเดฟเดเดฏเดฟเดเตเดเดฟเดฒเตเดฒ. เด
เดคเดฟเดจเดพเตฝ, เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏ เดเดฐเต เดเตเดธเดฟเตฝ (IPv6) เดเดเตเดเตพ เดตเดฐเดฟ 2 เดฒเตเดเตเดเต เดชเตเดเตเดจเตเดจเต, เดตเดฟเดเดฏเดฟเดเตเดเดพเดคเตเดค เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ - เดตเดฐเดฟ 3 เดฒเตเดเตเดเต. เดฒเตเตป 3 เตฝ เดชเตเดฐเตเดเตเดฐเดพเด เดเตเดกเต 0 เดเดชเดฏเตเดเดฟเดเตเดเต เด
เดตเดธเดพเดจเดฟเดเตเดเตเดจเตเดจเต (เดชเดพเดเตเดเดฑเตเดฑเต เดชเดเตผเดคเตเดคเดฐเตเดคเต), เดตเดฐเดฟ 2 เตฝ เดชเตเดฐเตเดเตเดฐเดพเด เดเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เด
เดตเดธเดพเดจเดฟเดเตเดเตเดจเตเดจเต. 262144 (เดเดจเดฟเดเตเดเต เดชเดฐเดฎเดพเดตเดงเดฟ 256 เดเดฟเดฒเตเดฌเตเดฑเตเดฑเต เดชเดพเดเตเดเตเดเต เดชเดเตผเดคเตเดคเตเด).
เดเตเดเตเดคเตฝ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด: เดเดเตเดเตพ เดฒเดเตเดทเตเดฏเดธเตเดฅเดพเดจ เดชเตเตผเดเตเดเต เดตเดดเดฟ TCP เดชเดพเดเตเดเดฑเตเดฑเตเดเตพ เดจเตเดเตเดเตเดจเตเดจเต
เดกเตเดธเตเดฑเตเดฑเดฟเดจเตเดทเตป เดชเตเตผเดเตเดเต 666 เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฒเตเดฒเดพ TCP เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเตเด เดชเดเตผเดคเตเดคเตเดจเตเดจ เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดเดเตเดเดจเตเดฏเตเดฃเตเดเตเดจเตเดจเต เดจเตเดเตเดเดพเด. IPv4 เดเตเดธเต เดฒเดณเดฟเดคเดฎเดพเดฏเดคเดฟเดจเดพเตฝ เดเดเตเดเตพ IPv6 เดเตเดธเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเตเด. เด เดเดฆเดพเดนเดฐเดฃเด เดชเด เดฟเดเตเด เดถเตเดทเด, เดจเดฟเดเตเดเตพเดเตเดเต IPv6 เดซเดฟเตฝเดเตเดเตผ เดธเตเดตเดฏเด เดเดฐเต เดตเตเดฏเดพเดฏเดพเดฎเดฎเดพเดฏเดฟ เดชเดฐเตเดฏเดตเตเดเตเดทเดฃเด เดเตเดฏเตเดฏเดพเด (ip6 and tcp dst port 666
) เดเตเดเดพเดคเต เดชเตเดคเตเดตเดพเดฏ เดเตเดธเดฟเดจเดพเดฏเตเดณเตเดณ เดเดฐเต เดซเดฟเตฝเดเตเดเดฑเตเด (tcp dst port 666
). เด
เดคเดฟเดจเดพเตฝ, เดเดเตเดเตพเดเตเดเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ เดซเดฟเตฝเดเตเดเตผ เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
$ sudo tcpdump -i eth0 -d ip and tcp dst port 666
(000) ldh [12]
(001) jeq #0x800 jt 2 jf 10
(002) ldb [23]
(003) jeq #0x6 jt 4 jf 10
(004) ldh [20]
(005) jset #0x1fff jt 10 jf 6
(006) ldxb 4*([14]&0xf)
(007) ldh [x + 16]
(008) jeq #0x29a jt 9 jf 10
(009) ret #262144
(010) ret #0
0-เดเด 1-เดเด เดตเดฐเดฟเดเตพ เดเดจเตเดคเดพเดฃเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเตเดจเตเดจเต เดเดเตเดเตพเดเตเดเดฑเดฟเดฏเดพเด. เดฒเตเตป 2-เตฝ เดเดคเตเดฐเต IPv4 เดชเดพเดเตเดเดฑเตเดฑเดพเดฃเตเดจเตเดจเต เดเดเตเดเตพ เดเดคเดฟเดจเดเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเต (เดเดคเตผ เดคเดฐเด = 0x800
) เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดฒเตเดกเต เดเตเดฏเตเดฏเตเด A
เดชเดพเดเตเดเดฑเตเดฑเดฟเตปเตเดฑเต 24-เดพเดฎเดคเตเดคเต เดฌเตเดฑเตเดฑเต. เดเดเตเดเดณเตเดเต เดชเดพเดเตเดเตเดเต เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต
14 8 1 1
|ethernet header|ip fields|ttl|protocol|...|
เด
เดคเดพเดฏเดคเต เดเดเตเดเตพ เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต A
เดเดชเดฟ เดนเตเดกเดฑเดฟเตปเตเดฑเต เดชเตเดฐเตเดเตเดเตเดเตเดเตเตพ เดซเตเตฝเดกเต, เดเดคเต เดฒเตเดเดฟเดเตเดเตฝ เดเดฃเต, เดเดพเดฐเดฃเด เดเดเตเดเตพ TCP เดชเดพเดเตเดเดฑเตเดฑเตเดเตพ เดฎเดพเดคเตเดฐเด เดชเดเตผเดคเตเดคเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต. เดเดเตเดเตพ เดชเตเดฐเตเดเตเดเตเดเตเดเตเตพ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเต 0x6
(IPPROTO_TCP
4, 5 เดตเดฐเดฟเดเดณเดฟเตฝ เดเดเตเดเตพ เดตเดฟเดฒเดพเดธเด 20 เตฝ เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเตเดจเตเดจ เดนเดพเดซเต เดตเตเดกเตเดเตพ เดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต jset
เดฎเตเดจเตเดจเดฟเตฝ เดเดจเตเดจเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดฏเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด jset
เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดฎเตเดจเตเดจเต เดฌเดฟเดฑเตเดฑเตเดเตพ เดฎเดพเดฏเตเดเตเดเต. เดฎเตเดจเตเดจเต เดฌเดฟเดฑเตเดฑเตเดเดณเดฟเตฝ เดฐเดฃเตเดเตเดฃเตเดฃเด เดชเดพเดเตเดเดฑเตเดฑเต เดเดฐเต เดตเดฟเดเดเดฟเดเตเด เดเดชเดฟ เดชเดพเดเตเดเดฑเตเดฑเดฟเตปเตเดฑเต เดญเดพเดเดฎเดพเดฃเต เดเดจเตเดจเตเด เด
เดเตเดเดจเตเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เด
เดคเต เด
เดตเดธเดพเดจ เดถเดเดฒเดฎเดพเดฃเต เดเดจเตเดจเตเด เดจเดฎเตเดฎเตเดเต เดชเดฑเดฏเตเดจเตเดจเต. เดฎเตเดจเตเดจเดพเดฎเดคเตเดคเต เดฌเดฟเดฑเตเดฑเต เดฑเดฟเดธเตผเดตเต เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเต เดชเตเดเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เด
เดชเตเตผเดฃเตเดฃเดฎเต เดคเดเตผเดจเตเดจเดคเต เดเดฏ เดชเดพเดเตเดเดฑเตเดฑเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เด
เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เดฎเตเดจเตเดจเต เดฌเดฟเดฑเตเดฑเตเดเดณเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต.
เด เดฒเดฟเดธเตเดฑเตเดฑเดฟเดเดเดฟเดฒเต เดเดฑเตเดฑเดตเตเด เดฐเดธเดเดฐเดฎเดพเดฏเดคเต เดตเดฐเดฟ 6 เดเดฃเต. เดเดเตเดธเตเดชเตเดฐเดทเตป ldxb 4*([14]&0xf)
เดเดเตเดเตพ เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต เดเดจเตเดจเดพเดฃเต X
เดชเดพเดเตเดเดฑเตเดฑเดฟเตปเตเดฑเต เดชเดคเดฟเดจเดเตเดเดพเดฎเดคเตเดคเต เดฌเตเดฑเตเดฑเดฟเตปเตเดฑเต เดเดฑเตเดฑเดตเตเด เดเตเดฑเดเตเด เดชเตเดฐเดพเดงเดพเดจเตเดฏเดฎเตเดณเตเดณ เดจเดพเดฒเต เดฌเดฟเดฑเตเดฑเตเดเตพ 4 เดเตเดฃเตเดเต เดเตเดฃเดฟเดเตเดเดพเตฝ. เดชเดคเดฟเดจเดเตเดเดพเดฎเดคเตเดคเต เดฌเตเดฑเตเดฑเดฟเตปเตเดฑเต เดเดฑเตเดฑเดตเตเด เดเตเดฑเดเตเด เดจเดพเดฒเต เดฌเดฟเดฑเตเดฑเตเดเตพ เดซเตเตฝเดกเดพเดฃเต 4*([14]&0xf)
เด เดซเตเดฎเดฟเตฝ เดฎเดพเดคเตเดฐเด เดเดชเดฏเตเดเดฟเดเตเดเดพเดตเตเดจเตเดจ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เด
เดกเตเดฐเดธเตเดธเดฟเดเดเต เดธเตเดเตเดฎเดฟเดจเตเดณเตเดณ เดเดฐเต เดชเดฆเดตเดฟเดฏเดพเดฃเต เดเดฐเต เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเดจเต เดฎเดพเดคเตเดฐเด X
, เด
เดคเดพเดฏเดคเต. เดจเดฎเตเดเตเดเตเด เดชเดฑเดฏเดพเดจเดพเดตเดฟเดฒเตเดฒ ldb 4*([14]&0xf)
เดเดฒเตเดฒ ldxb 5*([14]&0xf)
(เดเดเตเดเตพเดเตเดเต เดฎเดฑเตเดฑเตเดฐเต เดเดซเตโเดธเตเดฑเตเดฑเต เดฎเดพเดคเตเดฐเดฎเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, ldxb 4*([16]&0xf)
). เด เด
เดกเตเดฐเดธเตเดธเดฟเดเดเต เดธเตเดเตเด เดเตเดคเตเดฏเดฎเดพเดฏเดฟ เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดตเตเดฃเตเดเดฟเดฏเดพเดฃเต เดฌเดฟเดชเดฟเดเดซเดฟเตฝ เดเตเตผเดคเตเดคเดคเตเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดฃเต X
(เดเตปเดกเดเตเดธเต เดฐเดเดฟเดธเตเดฑเตเดฑเตผ) IPv4 เดคเดฒเดเตเดเตเดเตเดเต เดจเตเดณเด.
เด
เดคเดฟเดจเดพเตฝ 7 เดตเดฐเดฟเดฏเดฟเตฝ เดเดเตเดเตพ เดชเดเตเดคเดฟ เดตเดพเดเตเดเต เดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจเต (X+16)
. เดเดฅเตผเดจเตเดฑเตเดฑเต เดคเดฒเดเตเดเตเดเตเดเต 14 เดฌเตเดฑเตเดฑเตเดเตพ เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเต, เดเดชเตเดชเด X
IPv4 เดคเดฒเดเตเดเตเดเตเดเดฟเตปเตเดฑเต เดฆเตเตผเดเตเดฏเด เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเดเตเดเตพ เด
เดคเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดจเตเดจเต A
TCP เดกเตเดธเตเดฑเตเดฑเดฟเดจเตเดทเตป เดชเตเตผเดเตเดเต เดฒเตเดกเต เดเตเดฏเตเดคเต:
14 X 2 2
|ethernet header|ip header|source port|destination port|
เด เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เดตเดฐเดฟ 8-เตฝ เดเดเตเดเตพ เดฒเดเตเดทเตเดฏเดธเตเดฅเดพเดจ เดชเตเตผเดเตเดเดฟเดจเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดฎเตเดฒเตเดฏเดตเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเตเดเดพเดคเต 9 เด เดฒเตเดฒเตเดเตเดเดฟเตฝ 10 เดตเดฐเดฟเดเดณเดฟเตฝ เดเดเตเดเตพ เดซเดฒเด เดจเตฝเดเตเดจเตเดจเต - เดชเดพเดเตเดเดฑเตเดฑเต เดชเดเตผเดคเตเดคเดฃเต เดตเตเดฃเตเดเดฏเต เดเดจเตเดจเต.
Tcpdump: เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต
เดฎเตเดฎเตเดชเดคเตเดคเต เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเดฟเตฝ, เดชเดพเดเตเดเดฑเตเดฑเต เดซเดฟเตฝเดเตเดเดฑเดฟเดเดเดฟเดจเดพเดฏเดฟ เดเตเตผเดฃเดฒเดฟเดฒเตเดเตเดเต BPF เดฌเตเดฑเตเดฑเตเดเตเดกเต เดเดเตเดเดจเต เดฒเตเดกเตเดเตเดฏเตเดฏเตเดจเตเดจเต เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดเตเดเตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฑเดเตเดเดฟเดเตเดเดฟเดฒเตเดฒ. เดชเตเดพเดคเตเดตเดพเดฏเดฟ เดชเดฑเดเตเดเดพเดฒเต, tcpdump
เดจเดฟเดฐเดตเดงเดฟ เดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเดฟเดฒเตเดเตเดเตเด เดซเดฟเตฝเดเตเดเดฑเตเดเดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดจเตเด เดชเตเตผเดเตเดเต เดเตเดฏเตเดคเต tcpdump
libpcap
libpcap
, เดจเดฟเดเตเดเตพ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต:
- เดเดฐเต เดคเดฐเด เดกเดฟเดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตผ เดธเตเดทเตเดเดฟเดเตเดเตเด
pcap_t
เดเตปเตเดฑเตผเดซเตเดธเต เดจเดพเดฎเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต: ,pcap_create
- เดเตปเตเดฑเตผเดซเตเดธเต เดธเดเตเดตเดฎเดพเดเตเดเตเด:
,pcap_activate
- เดเดเดชเตเตฝ เดซเดฟเตฝเดเตเดเตผ:
,pcap_compile
- เดเดฃเดเตเดเต เดซเดฟเตฝเดเตเดเตผ:
.pcap_setfilter
เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดเดเตเดเดจเตเดฏเตเดจเตเดจเต เดเดพเดฃเดพเตป pcap_setfilter
เดฒเดฟเดจเดเตเดธเดฟเตฝ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฟ, เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต strace
(เดเดฟเดฒ เดตเดฐเดฟเดเตพ เดจเตเดเตเดเด เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเต):
$ sudo strace -f -e trace=%network tcpdump -p -i eth0 ip
socket(AF_PACKET, SOCK_RAW, 768) = 3
bind(3, {sa_family=AF_PACKET, sll_protocol=htons(ETH_P_ALL), sll_ifindex=if_nametoindex("eth0"), sll_hatype=ARPHRD_NETROM, sll_pkttype=PACKET_HOST, sll_halen=0}, 20) = 0
setsockopt(3, SOL_SOCKET, SO_ATTACH_FILTER, {len=4, filter=0xb00bb00bb00b}, 16) = 0
...
เดเดเตเดเตเดชเตเดเตเดเดฟเตปเตเดฑเต เดเดฆเตเดฏ เดฐเดฃเตเดเต เดตเดฐเดฟเดเดณเดฟเตฝ เดเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต eth0
. เดเดฐเต เดชเดเตเดทเต ip
เดจเดพเดฒเต เดฌเดฟเดชเดฟเดเดซเต เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเต, เดฎเตเดจเตเดจเดพเดฎเดคเตเดคเต เดตเดฐเดฟเดฏเดฟเตฝ เด เดเดชเตเดทเตป เดเดเตเดเดจเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเต เดจเดฎเตเดเตเดเต เดเดพเดฃเดพเด SO_ATTACH_FILTER
setsockopt
4 เดจเตเดณเดฎเตเดณเตเดณ เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดเดเตเดเตพ เดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดคเดพเดฃเต เดเดเตเดเดณเตเดเต เดซเดฟเตฝเดเตเดเตผ.
เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเดฟเตฝ, เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดฒเตเดกเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเตเด เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเตเด เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดเดฐเต เดเดฑเตเดฑเตเดฎเดฟเดเต เดเดชเตเดชเดฑเตเดทเดจเดพเดฏเดฟเดเตเดเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต เดเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต, เดเตเดเดพเดคเต เดฌเดฟเดชเดฟเดเดซเดฟเตปเตเดฑเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเดฟเตฝ, เดชเตเดฐเตเดเตเดฐเดพเด เดฒเตเดกเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเตเด เดเดตเตปเตเดฑเต เดเดจเดฑเตเดฑเตเดฑเดฑเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเตเด เดเตเดคเตเดฏเดธเดฎเดฏเดคเตเดคเต เดตเตเตผเดคเดฟเดฐเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต.
เดฎเดฑเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดธเดคเตเดฏเด
เดเดเตเดเตเดชเตเดเตเดเดฟเตปเตเดฑเต เดเตเดฑเดเตเดเตเดเตเดเดฟ เดชเตเตผเดฃเตเดฃเดฎเดพเดฏ เดชเดคเดฟเดชเตเดชเต เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
$ sudo strace -f -e trace=%network tcpdump -p -i eth0 ip
socket(AF_PACKET, SOCK_RAW, 768) = 3
bind(3, {sa_family=AF_PACKET, sll_protocol=htons(ETH_P_ALL), sll_ifindex=if_nametoindex("eth0"), sll_hatype=ARPHRD_NETROM, sll_pkttype=PACKET_HOST, sll_halen=0}, 20) = 0
setsockopt(3, SOL_SOCKET, SO_ATTACH_FILTER, {len=1, filter=0xbeefbeefbeef}, 16) = 0
recvfrom(3, 0x7ffcad394257, 1, MSG_TRUNC, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
setsockopt(3, SOL_SOCKET, SO_ATTACH_FILTER, {len=4, filter=0xb00bb00bb00b}, 16) = 0
...
เดฎเตเดเดณเดฟเตฝ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดคเตเดชเตเดฒเต, เดเดเตเดเตพ เดฒเตเตป 5-เดฒเต เดธเตเดเตเดเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดเดเตเดเดณเตเดเต เดซเดฟเตฝเดเตเดเตผ เดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ 3, 4 เดตเดฐเดฟเดเดณเดฟเตฝ เดเดจเตเดคเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต? เดเดคเต เดฎเดพเดฑเตเดจเตเดจเต libpcap
เดเดเตเดเดณเต เดชเดฐเดฟเดชเดพเดฒเดฟเดเตเดเตเดจเตเดจเต - เด
เดคเดฟเดจเดพเตฝ เดเดเตเดเดณเตเดเต เดซเดฟเตฝเดเตเดเดฑเดฟเตปเตเดฑเต เดเดเตเดเตเดชเตเดเตเดเดฟเตฝ เด
เดคเต เดคเตเดชเตเดคเดฟเดชเตเดชเตเดเตเดคเตเดคเดพเดคเตเดค เดชเดพเดเตเดเดฑเตเดฑเตเดเตพ เดเตพเดชเตเดชเตเดเดฟเดฒเตเดฒ, เดฒเตเดฌเตเดฐเดฑเดฟ ret #0
(เดเดฒเตเดฒเดพ เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเตเด เดกเตเดฐเตเดชเตเดชเต เดเตเดฏเตเดฏเตเด), เดธเตเดเตเดเดฑเตเดฑเต เดจเตเตบ-เดฌเตเดฒเตเดเตเดเดฟเดเดเต เดฎเตเดกเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเดเดฏเตเด เดฎเตเดฎเตเดชเดคเตเดคเต เดซเดฟเตฝเดเตเดเดฑเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดถเตเดทเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเตเด เดเตเดฑเดฏเตเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดฎเตเดคเตเดคเดคเตเดคเดฟเตฝ, เดเตเดฒเดพเดธเดฟเดเต BPF เดเดชเดฏเตเดเดฟเดเตเดเต Linux-เตฝ เดชเดพเดเตเดเตเดเตเดเตพ เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเดเดจเดฏเตเดเต เดฐเตเดชเดคเตเดคเดฟเตฝ เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดเดตเดถเตเดฏเดฎเดพเดฃเต struct sock_fprog
เดเดฐเต เดคเตเดฑเดจเตเดจ เดธเตเดเตเดเดฑเตเดฑเตเด, เด
เดคเดฟเดจเตเดถเตเดทเด เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดธเตเดเตเดเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดซเดฟเตฝเดเตเดเตผ เดเดเดฟเดชเตเดชเดฟเดเตเดเดพเด setsockopt
.
เดฐเดธเดเดฐเดฎเตเดจเตเดจเต เดชเดฑเดฏเดเตเดเต, เดซเดฟเตฝเดเตเดเตผ เด
เดธเดเดธเตเดเตเดคเดฎเดพเดฏเดฟ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดเดคเต เดธเตเดเตเดเดฑเตเดฑเดฟเดฒเตเด เดเดเดฟเดชเตเดชเดฟเดเตเดเดพเด. เดเดตเดฟเดเต
เดเดชเดฏเตเดเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดพเดเดถเดเตเดเตพ setsockopt
เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดพเดฃเตเด struct sock_fprog
เดธเดนเดพเดฏเดฎเดฟเดฒเตเดฒเดพเดคเต tcpdump
เดเดเตเดเตพ เดตเดฟเดญเดพเดเดคเตเดคเดฟเตฝ เดธเดเดธเดพเดฐเดฟเดเตเดเตเด
เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเตเด 21-เดพเด เดจเตเดฑเตเดฑเดพเดฃเตเดเตเด
1997-เตฝ BPF เดฒเดฟเดจเดเตเดธเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดฟ, เดฆเตเตผเดเดเดพเดฒเดฎเดพเดฏเดฟ เดเดฐเต เดเตเดฒเดฟเดเตเดเดพเดฐเดจเดพเดฏเดฟ เดคเตเดเตผเดจเตเดจเต libpcap
เดชเตเดฐเดคเตเดฏเตเด เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดจเตเดจเตเด เดเตเดเดพเดคเต (เดฒเดฟเดจเดเตเดธเต-เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดฎเดพเดฑเตเดฑเดเตเดเตพ, เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, x86_64
เดเตเดพเดกเต.
เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดเต เดถเตเดเดเดฒเดฏเดฟเดฒเต เดเดฆเตเดฏเดคเตเดคเตเดคเต JIT เดเดเดชเตเดฒเตผ เดเดฏเดฟเดฐเตเดจเตเดจเต: 2012 เตฝ xt_bpf
, เดเดคเต เดจเดฟเดฏเดฎเดเตเดเตพ เดเดดเตเดคเดพเตป เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต iptables
เดฌเดฟเดชเดฟเดเดซเดฟเตปเตเดฑเต เดธเดนเดพเดฏเดคเตเดคเตเดเต, 2013 เดเดเตเดเตเดฌเดฑเดฟเตฝ cls_bpf
, BPF เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดฐเดพเดซเดฟเดเต เดเตเดฒเดพเดธเดฟเดซเดฏเดฑเตเดเตพ เดเดดเตเดคเดพเตป เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต.
เด เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเตเดฒเตเดฒเดพเด เดเดเตเดเตพ เดเดเตป เดคเดจเตเดจเต เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด, เดเดจเตเดจเดพเตฝ เดฒเตเดฌเตเดฐเดฑเดฟ เดจเตฝเดเตเดจเตเดจ เดเดดเดฟเดตเตเดเตพ เดเดพเดฐเดฃเด, เดฌเดฟเดชเดฟเดเดซเดฟเดจเดพเดฏเดฟ เด
เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดเตเดเดจเต เดเดดเตเดคเดพเดฎเตเดจเตเดจเตเด เดเดเดชเตเตฝ เดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเตเด เดชเด เดฟเดเตเดเตเดจเตเดจเดคเต เดเดฆเตเดฏเด เดเดเตเดเตพเดเตเดเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดเตเด. libpcap
เดชเดฐเดฟเดฎเดฟเดคเด (เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดฆเดพเดนเดฐเดฃเด: เดซเดฟเตฝเดเตเดเตผ เดธเตเดทเตเดเดฟเดเตเดเดคเต libpcap
เดฐเดฃเตเดเต เดฎเตเดฒเตเดฏเดเตเดเตพ เดฎเดพเดคเตเดฐเดฎเต เดจเตฝเดเดพเดจเดพเดเต - 0 เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ 0x40000) เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเตเดคเตเดตเต, seccomp-เตปเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเดฒเตเดจเตเดจเดชเตเดฒเต, เดฌเดพเดงเดเดฎเดฒเตเดฒ.
เดจเดฎเตเดฎเตเดเต เดธเตเดตเดจเตเดคเด เดเตเดเตเดฃเตเดเต BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต
BPF เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดเต เดฌเตเดจเดฑเดฟ เดซเตเตผเดฎเดพเดฑเตเดฑเต เดจเดฎเตเดเตเดเต เดชเดฐเดฟเดเดฏเดชเตเดชเตเดเดพเด, เดเดคเต เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฃเต:
16 8 8 32
| code | jt | jf | k |
เดเดฐเต เดจเดฟเตผเดฆเตเดฆเตเดถเดตเตเด 64 เดฌเดฟเดฑเตเดฑเตเดเตพ เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเต, เด
เดคเดฟเตฝ เดเดฆเตเดฏเดคเตเดคเต 16 เดฌเดฟเดฑเตเดฑเตเดเตพ เดจเดฟเตผเดฆเตเดฆเตเดถ เดเตเดกเดพเดฃเต, เดคเตเดเตผเดจเตเดจเต เดฐเดฃเตเดเต เดเดเตเดเต-เดฌเดฟเดฑเตเดฑเต เดเตปเดกเตปเตเดฑเตเดเตพ เดเดฃเตเดเต, jt
ะธ jf
, เดตเดพเดฆเดคเตเดคเดฟเดจเดพเดฏเดฟ 32 เดฌเดฟเดฑเตเดฑเตเดเตพ K
, เดเดคเดฟเตปเตเดฑเต เดเดฆเตเดฆเตเดถเตเดฏเด เดเดฎเดพเตปเดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฎเดพเตปเดกเต เดตเดฐเต เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเตเดเตเดจเตเดจเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฎเดพเตปเดกเต ret
, เดชเตเดฐเตเดเตเดฐเดพเด เด
เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดเตเดกเต เดเดฃเตเดเต 6
, เดเตเดเดพเดคเต เดฑเดฟเดเตเดเตเตบ เดฎเตเดฒเตเดฏเด เดธเตเดฅเดฟเดฐเดพเดเตเดเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเตเดเตเดจเตเดจเต K
. เดธเดฟเดฏเดฟเตฝ, เดเดฐเตเดฑเตเดฑ เดฌเดฟเดชเดฟเดเดซเต เดจเดฟเตผเดฆเตเดฆเตเดถเด เดเดฐเต เดเดเดจเดฏเดพเดฏเดฟ เดชเตเดฐเดคเดฟเดจเดฟเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
struct sock_filter {
__u16 code;
__u8 jt;
__u8 jf;
__u32 k;
}
เดเตเดเดพเดคเต เดฎเตเดดเตเดตเตป เดชเตเดฐเตเดเตเดฐเดพเดฎเตเด เดเดฐเต เดเดเดจเดฏเตเดเต เดฐเตเดชเดคเตเดคเดฟเดฒเดพเดฃเต
struct sock_fprog {
unsigned short len;
struct sock_filter *filter;
}
เด
เดคเดฟเดจเดพเตฝ, เดเดเตเดเตพเดเตเดเต เดเดคเดฟเดจเดเด เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดดเตเดคเดพเตป เดเดดเดฟเดฏเตเด (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดเตเดเตพเดเตเดเต เดจเดฟเตผเดฆเตเดฆเตเดถ เดเตเดกเตเดเตพ เด
เดฑเดฟเดฏเดพเด ip6
เดจเดฟเดจเตเดจเต
struct sock_filter code[] = {
{ 0x28, 0, 0, 0x0000000c },
{ 0x15, 0, 1, 0x000086dd },
{ 0x06, 0, 0, 0x00040000 },
{ 0x06, 0, 0, 0x00000000 },
};
struct sock_fprog prog = {
.len = ARRAY_SIZE(code),
.filter = code,
};
เดชเตเดฐเตเดเตเดฐเดพเด prog
เดจเดฎเตเดเตเดเต เดเดฐเต เดเตเดณเดฟเตฝ เดจเดฟเดฏเดฎเดชเดฐเดฎเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดพเด
setsockopt(sk, SOL_SOCKET, SO_ATTACH_FILTER, &prog, sizeof(prog))
เดฎเตเดทเตเตป เดเตเดกเตเดเดณเตเดเต เดฐเตเดชเดคเตเดคเดฟเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดดเตเดคเตเดจเตเดจเดคเต เดตเดณเดฐเต เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดฒเตเดฒ, เดชเดเตเดทเต เดเดฟเดฒเดชเตเดชเตเตพ เดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดกเตเดฌเดเตเดเดฟเดเดเต, เดฏเตเดฃเดฟเดฑเตเดฑเต เดเตเดธเตเดฑเตเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตฝ, เดนเดฌเตเดฐเตเดฏเดฟเตฝ เดฒเตเดเดจเดเตเดเตพ เดเดดเตเดคเตฝ เดฎเตเดคเดฒเดพเดฏเดต). เดธเตเดเดฐเตเดฏเดพเตผเดคเตเดฅเด, เดซเดฏเดฒเดฟเตฝ <linux/filter.h>
เดนเตเตฝเดชเตเดชเตผ เดฎเดพเดเตเดฐเตเดเตพ เดจเดฟเตผเดตเดเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต - เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เด
เดคเต เดเดฆเดพเดนเดฐเดฃเด เดเดคเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเดฟเดฏเตเดดเตเดคเดพเด
struct sock_filter code[] = {
BPF_STMT(BPF_LD|BPF_H|BPF_ABS, 12),
BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, ETH_P_IPV6, 0, 1),
BPF_STMT(BPF_RET|BPF_K, 0x00040000),
BPF_STMT(BPF_RET|BPF_K, 0),
}
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เด เดเดชเตเดทเตป เดตเดณเดฐเต เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดฒเตเดฒ. เดเดคเดพเดฃเต เดฒเดฟเดจเดเตเดธเต เดเตเตผเดฃเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเตผเดฎเดพเตผ เดจเตเดฏเดพเดฏเตเดเดฐเดฟเดเตเดเดคเต, เด
เดคเดฟเดจเดพเตฝ เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเตฝ tools/bpf
เด
เดธเดเดฌเตเดฒเดฟ เดญเดพเดท เดกเตเดฌเดเต เดเดเตเดเตเดชเตเดเตเดเตเดฎเดพเดฏเดฟ เดตเดณเดฐเต เดธเดพเดฎเตเดฏเดฎเตเดณเตเดณเดคเดพเดฃเต tcpdump
, เดเดจเตเดจเดพเตฝ เดเตเดเดพเดคเต เดจเดฎเตเดเตเดเต เดชเตเดฐเดคเตเดเดพเดคเตเดฎเด เดฒเตเดฌเดฒเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเด. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, TCP/IPv4 เดเดดเดฟเดเตเดฏเตเดณเตเดณ เดเดฒเตเดฒเดพ เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเตเด เดกเตเดฐเตเดชเตเดชเต เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดชเตเดฐเตเดเตเดฐเดพเด เดเดคเดพ:
$ cat /tmp/tcp-over-ipv4.bpf
ldh [12]
jne #0x800, drop
ldb [23]
jneq #6, drop
ret #-1
drop: ret #0
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เด
เดธเดเดฌเตเดฒเตผ เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดเตเดกเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต <ะบะพะปะธัะตััะฒะพ ะธะฝััััะบัะธะน>,<code1> <jt1> <jf1> <k1>,...
, TCP เดเดณเตเดณ เดเดเตเดเดณเตเดเต เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เดเดคเต เดเดฏเดฟเดฐเดฟเดเตเดเตเด
$ tools/bpf/bpf_asm /tmp/tcp-over-ipv4.bpf
6,40 0 0 12,21 0 3 2048,48 0 0 23,21 0 1 6,6 0 0 4294967295,6 0 0 0,
เดธเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเตผเดฎเดพเดฐเตเดเต เดธเตเดเดฐเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดฎเดฑเตเดฑเตเดฐเต เดเดเตเดเตเดชเตเดเตเดเต เดซเตเตผเดฎเดพเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเดพเด:
$ tools/bpf/bpf_asm -c /tmp/tcp-over-ipv4.bpf
{ 0x28, 0, 0, 0x0000000c },
{ 0x15, 0, 3, 0x00000800 },
{ 0x30, 0, 0, 0x00000017 },
{ 0x15, 0, 1, 0x00000006 },
{ 0x06, 0, 0, 0xffffffff },
{ 0x06, 0, 0, 0000000000 },
เด เดตเดพเดเดเด เดคเดฐเด เดเดเดจ เดจเดฟเตผเดตเดเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเดเตผเดคเตเดคเดพเด struct sock_filter
, เด เดตเดฟเดญเดพเดเดคเตเดคเดฟเตปเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเตเดฏเตเดคเดคเตเดชเตเดฒเต.
Linux, netsniff-ng เดตเดฟเดชเตเดฒเตเดเดฐเดฃเดเตเดเตพ
เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต เดฌเดฟเดชเดฟเดเดซเดฟเดจเต เดชเตเดฑเดฎเต, เดฒเดฟเดจเดเตเดธเตเด tools/bpf/bpf_asm
เดชเดฟเดจเตเดคเตเดฃ เดเดชเตเดชเด struct sk_buff
, เดเดคเต เดเตเตผเดฃเดฒเดฟเดฒเต เดเดฐเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดชเดพเดเตเดเดฑเตเดฑเดฟเดจเต เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดฎเดฑเตเดฑเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดธเดนเดพเดฏ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเด เดเดฃเตเดเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต ldw cpu
เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดฒเตเดกเต เดเตเดฏเตเดฏเตเด A
เดเดฐเต เดเตเตผเดฃเตฝ เดซเดเดเตเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเตปเตเดฑเต เดซเดฒเด raw_smp_processor_id()
. (BPF-เตปเตเดฑเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเดฟเตฝ, เดฎเตเดฎเตเดฎเดฑเดฟ, เดเดเดจเดเตพ, เดเดตเตปเตเดฑเตเดเตพ เดเดจเตเดจเดฟเดต เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดฐเต เดเตเดเตเดเด เดเตเตผเดฃเตฝ เดธเดนเดพเดฏเดฟเดเดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด เดจเดฟเดฒเดตเดพเดฐเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดตเดฟเดชเตเดฒเตเดเดฐเดฃเดเตเดเตพ เดตเดฟเดชเตเดฒเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.) เดเดเตเดเตพ เดชเดเตผเดคเตเดคเตเดจเตเดจ เดซเดฟเตฝเดเตเดเดฑเดฟเตปเตเดฑเต เดฐเดธเดเดฐเดฎเดพเดฏ เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดเดคเดพ. เดตเดฟเดชเตเดฒเตเดเดฐเดฃเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเดชเดฏเตเดเตเดคเต เดธเตเดฅเดฒเดคเตเดคเตเดเตเดเต เดชเดพเดเตเดเดฑเตเดฑเต เดคเดฒเดเตเดเตเดเตเดเตเดเตพ poff
, เดชเตเดฒเตเดกเต เดเดซเตโเดธเตเดฑเตเดฑเต:
ld poff
ret a
เดฌเดฟเดชเดฟเดเดซเต เดเดเตเดธเตเดฑเตเดฑเตปเดทเดจเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ tcpdump
, เดเดจเตเดจเดพเตฝ เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดชเดพเดเตเดเตเดเต เดชเดฐเดฟเดเดฏเดชเตเดชเตเดเดพเตป เดเดคเต เดเดฐเต เดจเดฒเตเดฒ เดเดพเดฐเดฃเดฎเดพเดฃเต netsniff-ng
netsniff-ng
, เดเดคเดฟเตฝ, BPF เดเดชเดฏเตเดเดฟเดเตเดเต เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดชเตเดฑเดฎเต, เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฏ เดเตเดฐเดพเดซเดฟเดเต เดเดจเดฑเตเดฑเตเดฑเดฑเตเด เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเตเดเดพเดคเต เดเตเดเตเดคเตฝ เดตเดฟเดชเตเดฒเดฎเดพเดฏ tools/bpf/bpf_asm
, เดเดฐเต เดฌเดฟเดชเดฟเดเดซเต เด
เดธเดเดฌเตเดฒเตผ เดตเดฟเดณเดฟเดเตเดเต bpfc
. เดชเดพเดเตเดเตเดเดฟเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏ เดกเตเดเตเดฏเตเดฎเตเตปเตเดฑเตเดทเตป เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดฒเตเดเดจเดคเตเดคเดฟเตปเตเดฑเต เด
เดตเดธเดพเดจเดคเตเดคเต เดฒเดฟเดเตเดเตเดเดณเตเด เดเดพเดฃเตเด.
เดธเตเดเตเดเดจเตเดฑเต
เด เดคเดฟเดจเดพเตฝ, เด เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดธเดเตเดเตเตผเดฃเตเดฃเดคเดฏเตเดเต BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดเตเดเดจเต เดเดดเตเดคเดพเดฎเตเดจเตเดจเต เดเดเตเดเตพเดเตเดเดฑเดฟเดฏเดพเด, เดเตเดเดพเดคเต เดชเตเดคเดฟเดฏ เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดจเตเดเตเดเดพเตป เดคเดฏเตเดฏเดพเดฑเดพเดฃเต, เด เดคเดฟเตฝ เดเดฆเตเดฏเดคเตเดคเตเดคเต seccomp เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดฏเดพเดฃเต, เดเดคเต BPF เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต, เดฒเดญเตเดฏเดฎเดพเดฏ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเตผเดเตเดฏเตเดฎเตเตปเตเดฑเตเดเดณเตเดเต เดธเตเดฑเตเดฑเตเด เดธเตเดฑเตเดฑเตเด เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดจเดฟเดถเตเดเดฟเดค เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเด เด เดคเดฟเตปเตเดฑเต เดชเดฟเตปเดเดพเดฎเดฟเดเดณเตเด.
2005-เตฝ seccomp-เตปเตเดฑเต เดเดฆเตเดฏ เดชเดคเดฟเดชเตเดชเต เดเตเตผเดฃเดฒเดฟเดฒเตเดเตเดเต เดเตเตผเดคเตเดคเต, เด
เดคเต เดตเดณเดฐเต เดเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เดเดคเต เดเดฐเตเดฑเตเดฑ เดเดชเตเดทเตป เดฎเดพเดคเตเดฐเดฎเต เดจเตฝเดเดฟเดฏเดฟเดเตเดเตเดณเตเดณเต - เดเดฐเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดฒเตเดเตเดเต เดฒเดญเตเดฏเดฎเดพเดฏ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเดณเตเดเต เดธเตเดฑเตเดฑเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดตเดฏเดฟเดฒเตเดเตเดเต เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเดพเตป: read
, write
, exit
ะธ sigreturn
, เดเตเดเดพเดคเต เดจเดฟเดฏเดฎเดเตเดเตพ เดฒเดเดเดฟเดเตเด เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดจเตเดจเต SIGKILL
. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, 2012-เตฝ, BPF เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเต seccomp เดเตเตผเดคเตเดคเต, เดเดคเต เด
เดจเตเดตเดฆเดจเตเดฏเดฎเดพเดฏ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเดณเตเดเต เดเดฐเต เดเตเดเตเดเด เดจเดฟเตผเดตเตเดตเดเดฟเดเตเดเดพเดจเตเด เด
เดตเดฏเตเดเต เดเตผเดเตเดฏเตเดฎเตเตปเตเดฑเตเดเดณเดฟเตฝ เดชเดฐเดฟเดถเตเดงเดจ เดจเดเดคเตเดคเดพเดจเตเด เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. (เดฐเดธเดเดฐเดฎเตเดจเตเดจเต เดชเดฑเดฏเดเตเดเต, เด เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตปเตเดฑเต เดเดฆเตเดฏ เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเดฟเตฝ เดเดฐเดพเดณเดพเดฏเดฟเดฐเตเดจเตเดจเต Chrome, เดเตเดเดพเดคเต Chrome เดเดณเตเดเตพ เดจเดฟเดฒเดตเดฟเตฝ BPF-เตปเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเดฟเดจเต เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ เดเดฐเต KRSI เดธเดเดตเดฟเดงเดพเดจเด เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด Linux เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟ เดฎเตเดกเตเดฏเตเดณเตเดเดณเตเดเต เดเดทเตโเดเดพเดจเตเดธเตเดคเดฎเดพเดเตเดเตฝ เด
เดจเตเดตเดฆเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.) เด
เดงเดฟเด เดกเตเดเตเดฏเตเดฎเตเตปเตเดฑเตเดทเดจเดฟเดฒเตเดเตเดเตเดณเตเดณ เดฒเดฟเดเตเดเตเดเตพ เด
เดตเดธเดพเดจเด เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด. เดฒเตเดเดจเดคเตเดคเดฟเตปเตเดฑเต.
seccomp เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดนเดฌเตเดฌเดฟเตฝ เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดฒเตเดเดจเดเตเดเตพ เดเดฃเตเดเดพเดฏเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจ เดเดพเดฐเตเดฏเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด, เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดชเดตเดฟเดญเดพเดเดเตเดเตพ เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต (เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเดเดฐเด) เดเดฐเตเดเตเดเดฟเดฒเตเด เด
เดต เดตเดพเดฏเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดเตเดเดพเด. เดฒเตเดเดจเดคเตเดคเดฟเตฝ
เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเดเตเดเดจเต เดเดดเตเดคเดพเดฎเตเดจเตเดจเตเด เดฒเตเดกเต เดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเตเด เดจเตเดเตเดเดพเด seccomp
เดจเดเตเดจเดฎเดพเดฏ C เดฏเดฟเดฒเตเด เดฒเตเดฌเตเดฐเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต libseccomp
เดเดฐเต เดเดชเตเดทเตปเตเดฑเตเดฏเตเด เดเตเดฃเดฆเตเดทเดเตเดเตพ เดเดจเตเดคเตเดเตเดเตเดฏเดพเดฃเต, เด
เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เดชเตเดฐเตเดเตเดฐเดพเด เดเดเตเดเดจเต seccomp เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดจเตเดเตเดเดพเด strace
.
seccomp-เดจเดพเดฏเดฟ เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเดดเตเดคเตเดเดฏเตเด เดฒเตเดกเตเดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต
BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดเตเดเดจเต เดเดดเตเดคเดฃเดฎเตเดจเตเดจเต เดเดเตเดเตพเดเตเดเดฑเดฟเดฏเดพเด, เด
เดคเดฟเดจเดพเตฝ เดจเดฎเตเดเตเดเต เดเดฆเตเดฏเด seccomp เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดเตปเตเดฑเตผเดซเตเดธเต เดจเตเดเตเดเดพเด. เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเตเดธเดธเตเดธเต เดคเดฒเดคเตเดคเดฟเตฝ เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดธเดเตเดเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เดเตเดเดพเดคเต เดเดฒเตเดฒเดพ เดเตเตฝเดกเต เดชเตเดฐเตเดธเดธเตเดเดณเตเด เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดเตเดเตพ เด
เดตเดเดพเดถเดฎเดพเดเตเดเตเด. เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเดฃเต เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต seccomp(2)
seccomp(SECCOMP_SET_MODE_FILTER, flags, &filter)
เดเดตเดฟเดเต &filter
- เดเดคเต เดจเดฎเตเดเตเดเต เดเดคเดฟเดจเดเด เดชเดฐเดฟเดเดฟเดคเดฎเดพเดฏ เดเดฐเต เดเดเดจเดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดธเตเดเดจเดฏเดพเดฃเต struct sock_fprog
, เด
เดคเดพเดฏเดคเต. เดฌเดฟเดชเดฟเดเดซเต เดชเตเดฐเตเดเตเดฐเดพเด.
seccomp-เดจเตเดณเตเดณ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดธเตเดเตเดเดฑเตเดฑเตเดเตพเดเตเดเตเดณเตเดณ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเดจเต เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต? เดธเดเดชเตเดฐเตเดทเดฃเด เดเตเดฏเตเดค เดธเดจเตเดฆเตผเดญเด. เดธเตเดเตเดเดฑเตเดฑเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดเตเดเตพเดเตเดเต เดชเดพเดเตเดเดฑเตเดฑเต เด เดเดเตเดเดฟเดฏ เดเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟ เดเดฐเดฟเดฏ เดจเตฝเดเดฟ, เดธเตเดเตเดเตเดฎเตเดชเดฟเตปเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดเดคเตเดชเตเดฒเต เดเดฐเต เดเดเดจ เดจเตฝเดเดฟ
struct seccomp_data {
int nr;
__u32 arch;
__u64 instruction_pointer;
__u64 args[6];
};
เดเดคเต nr
เดฒเตเดเตเดเต เดเตเดฏเตเดฏเตเดฃเตเด เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเตปเตเดฑเต เดจเดฎเตเดชเดฑเดพเดฃเต, arch
- เดจเดฟเดฒเดตเดฟเดฒเต เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏ (เดเดคเดฟเตฝ เดเตเดเตเดคเตฝ เดคเดพเดดเต), args
- เดเดฑเต เดตเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเตผเดเตเดฏเตเดฎเตเตปเตเดฑเตเดเตพ, เดเตเดเดพเดคเต instruction_pointer
เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดฃเตเดเดพเดเตเดเดฟเดฏ เดเดชเดฏเตเดเตเดคเต เดธเตเดชเตเดธเต เดจเดฟเตผเดฆเตเดฆเตเดถเดคเตเดคเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดชเตเดฏเดฟเตปเตเดฑเดฑเดพเดฃเต. เด
เดเตเดเดจเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดจเดฎเตเดชเตผ เดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป A
เดเดเตเดเตพ เดชเดฑเดฏเดฃเด
ldw [0]
seccomp เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพเดเตเดเดพเดฏเดฟ เดฎเดฑเตเดฑเต เดธเดตเดฟเดถเตเดทเดคเดเดณเตเดฃเตเดเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดธเดจเตเดฆเตผเดญเด 32-เดฌเดฟเดฑเตเดฑเต เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดฒเตเดเต เดฎเดพเดคเตเดฐเดฎเต เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดฒเตเดกเตเดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดฎเตเดชเตเตพ เดชเดเตเดคเดฟ เดตเดพเดเตเดเต เดฌเตเดฑเตเดฑเต เดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ. ldh [0]
เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ seccomp
เดคเดฟเดฐเดฟเดเตเดเต เดตเดฐเตเด EINVAL
. เดฒเตเดกเต เดเตเดฏเตเดค เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดซเดเดเตเดทเตป เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต seccomp_check_filter()
mod
(เดกเดฟเดตเดฟเดทเตป เดฌเดพเดเตเดเดฟ) เดเตเดเดพเดคเต เดเดชเตเดชเตเตพ เดธเตเดเตเดเตเดเดชเต เดฌเดฟเดชเดฟเดเดซเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพเดเตเดเต เดเดคเต เดฒเดญเตเดฏเดฎเดฒเตเดฒ, เด
เดคเต เดเตเตผเดคเตเดคเดคเดฟเดจเต เดถเตเดทเด
เด เดเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ, seccomp เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดดเตเดคเดพเดจเตเด เดตเดพเดฏเดฟเดเตเดเดพเดจเตเด เดเดฒเตเดฒเดพเด เดเดเตเดเตพเดเตเดเดฑเดฟเดฏเดพเด. เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดชเตเดฐเตเดเตเดฐเดพเด เดฒเตเดเดฟเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเดณเตเดเต เดตเตเดณเตเดณ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฑเตเดชเตเดชเต เดฒเดฟเดธเตเดฑเตเดฑเดพเดฏเดฟ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เดชเตเดฐเตเดเตเดฐเดพเด
ld [0]
jeq #304, bad
jeq #176, bad
jeq #239, bad
jeq #279, bad
good: ret #0x7fff0000 /* SECCOMP_RET_ALLOW */
bad: ret #0
304, 176, 239, 279 เดเดจเตเดจเต เดจเดฎเตเดชเดฑเตเดเดณเตเดณเตเดณ เดจเดพเดฒเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเดณเตเดเต เดฌเตเดฒเดพเดเตเดเตโเดฒเดฟเดธเตเดฑเตเดฑเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดคเดพเดฃเต เด เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเตพ? เดเดคเต เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเตเดเตเดเดพเดฃเต เดชเตเดฐเตเดเตเดฐเดพเด เดเดดเตเดคเดฟเดฏเดคเตเดจเตเดจเต เดเดเตเดเตพเดเตเดเต เด
เดฑเดฟเดฏเดพเดคเตเดคเดคเดฟเดจเดพเตฝ เดเดเตเดเตพเดเตเดเต เดเตเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฑเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ. เด
เดคเดฟเดจเดพเตฝ, seccomp เตปเตเดฑเต เดฐเดเดฏเดฟเดคเดพเดเตเดเตพ arch
เดเดเดจเดเตพ struct seccomp_data
). เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตฝ, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตปเตเดฑเต เดเดฐเดเดญเด เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเด:
ld [4]
jne #0xc000003e, bad_arch ; SCMP_ARCH_X86_64
เดคเตเดเตผเดจเตเดจเต เดเดเตเดเดณเตเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดจเดฎเตเดชเดฑเตเดเตพเดเตเดเต เดเดฟเดฒ เดฎเตเดฒเตเดฏเดเตเดเตพ เดฒเดญเดฟเดเตเดเตเด.
seccomp เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเดดเตเดคเตเดเดฏเตเด เดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต libseccomp
เดจเตเดฑเตเดฑเตเดตเต เดเตเดกเดฟเดฒเต เดฌเดฟเดชเดฟเดเดซเต เด
เดธเดเดฌเตเดฒเดฟเดฏเดฟเดฒเต เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเดดเตเดคเตเดจเตเดจเดคเต เดซเดฒเดคเตเดคเดฟเตฝ เดชเตเตผเดฃเตเดฃ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด เดจเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เด
เดคเต เดธเดฎเดฏเด, เดชเตเตผเดเตเดเดฌเดฟเตพ เดเตเดเดพเดคเต/เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฑเตเดกเดฌเดฟเตพ เดเตเดกเต เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต. เดเดคเดฟเดจเต เดฒเตเดฌเตเดฐเดฑเดฟ เดจเดฎเตเดฎเต เดธเดนเดพเดฏเดฟเดเตเดเตเด
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดชเดฏเตเดเตเดคเดพเดตเต เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดจเตเดจ เดเดฐเต เดฌเตเดจเดฑเดฟ เดซเดฏเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดชเตเดฐเตเดเตเดฐเดพเด เดเดดเตเดคเดพเด, เดฎเตเดฎเตเดชเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเดณเตเดเต เดเดฐเต เดฌเตเดฒเดพเดเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดคเต
#include <seccomp.h>
#include <unistd.h>
#include <err.h>
static int sys_numbers[] = {
__NR_mount,
__NR_umount2,
// ... ะตัะต 40 ัะธััะตะผะฝัั
ะฒัะทะพะฒะพะฒ ...
__NR_vmsplice,
__NR_perf_event_open,
};
int main(int argc, char **argv)
{
scmp_filter_ctx ctx = seccomp_init(SCMP_ACT_ALLOW);
for (size_t i = 0; i < sizeof(sys_numbers)/sizeof(sys_numbers[0]); i++)
seccomp_rule_add(ctx, SCMP_ACT_TRAP, sys_numbers[i], 0);
seccomp_load(ctx);
execvp(argv[1], &argv[1]);
err(1, "execlp: %s", argv[1]);
}
เดเดฆเตเดฏเด เดจเดฎเตเดฎเตพ เดเดฐเต เด
เดฑเต เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเต sys_numbers
เดฌเตเดฒเตเดเตเดเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ 40+ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดจเดฎเตเดชเดฑเตเดเตพ. เดคเตเดเตผเดจเตเดจเต, เดธเดจเตเดฆเตผเดญเด เดเดฐเดเดญเดฟเดเตเดเตเด ctx
เดเดเตเดเตพ เด
เดจเตเดตเดฆเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดคเต เดฒเตเดฌเตเดฐเดฑเดฟเดฏเตเดเต เดชเดฑเดฏเตเด (SCMP_ACT_ALLOW
) เดกเดฟเดซเตเตพเดเตเดเดพเดฏเดฟ เดเดฒเตเดฒเดพ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเดณเตเด (เดฌเตเดฒเดพเดเตเดเตโเดฒเดฟเดธเตเดฑเตเดฑเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเต เดเดณเตเดชเตเดชเดฎเดพเดฃเต). เดคเตเดเตผเดจเตเดจเต, เดฌเตเดฒเดพเดเตเดเตโเดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฒเตเดฒเดพ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเดณเตเด เดเดเตเดเตพ เดเดจเตเดจเตเดจเตเดจเดพเดฏเดฟ เดเตเตผเดเตเดเตเดจเตเดจเต. เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเดจเต เดชเตเดฐเดคเดฟเดเดฐเดฃเดฎเดพเดฏเดฟ, เดเดเตเดเตพ เด
เดญเตเดฏเตผเดคเตเดฅเดฟเดเตเดเตเดจเตเดจเต SCMP_ACT_TRAP
, เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ seccomp เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเดฒเตเดเตเดเต เดเดฐเต เดธเดฟเดเตเดจเตฝ เด
เดฏเดฏเตเดเตเดเตเด SIGSYS
เดเดคเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดจเดฟเดฏเดฎเดเตเดเตพ เดฒเดเดเดฟเดเตเดเตเดตเตเดจเตเดจเดคเดฟเตปเตเดฑเต เดตเดฟเดตเดฐเดฃเดคเตเดคเตเดเตเดชเตเดชเด. เด
เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เดเดเตเดเตพ เดชเตเดฐเตเดเตเดฐเดพเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเตผเดฃเดฒเดฟเดฒเตเดเตเดเต เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต seccomp_load
, เดเดคเต เดชเตเดฐเตเดเตเดฐเดพเด เดเดเดชเตเตฝ เดเตเดฏเตเดฏเตเดเดฏเตเด เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเตเดธเดธเตเดธเดฟเดฒเตเดเตเดเต เด
เดฑเตเดฑเดพเดเตเดเตเดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด seccomp(2)
.
เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดเดเดชเตเตฝ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดชเตเดฐเตเดเตเดฐเดพเด เดฒเตเดฌเตเดฐเดฑเดฟเดฏเตเดฎเดพเดฏเดฟ เดฒเดฟเดเตเดเต เดเตเดฏเตเดคเดฟเดฐเดฟเดเตเดเดฃเด libseccomp
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต:
cc -std=c17 -Wall -Wextra -c -o seccomp_lib.o seccomp_lib.c
cc -o seccomp_lib seccomp_lib.o -lseccomp
เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏ เดตเดฟเดเตเดทเตเดชเดฃเดคเตเดคเดฟเตปเตเดฑเต เดเดฆเดพเดนเดฐเดฃเด:
$ ./seccomp_lib echo ok
ok
เดคเดเดเตเด เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเตปเตเดฑเต เดเดฆเดพเดนเดฐเดฃเด:
$ sudo ./seccomp_lib mount -t bpf bpf /tmp
Bad system call
เดเดเตเดเตพ เดเดชเดฏเตเดพเดเดฟเดเตเดเตเดจเตเดจเต strace
เดตเดฟเดถเดฆเดพเดเดถเดเตเดเตพเดเตเดเต:
$ sudo strace -e seccomp ./seccomp_lib mount -t bpf bpf /tmp
seccomp(SECCOMP_SET_MODE_FILTER, 0, {len=50, filter=0x55d8e78428e0}) = 0
--- SIGSYS {si_signo=SIGSYS, si_code=SYS_SECCOMP, si_call_addr=0xboobdeadbeef, si_syscall=__NR_mount, si_arch=AUDIT_ARCH_X86_64} ---
+++ killed by SIGSYS (core dumped) +++
Bad system call
เดจเดฟเดฏเดฎเดตเดฟเดฐเตเดฆเตเดงเดฎเดพเดฏ เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเตปเตเดฑเต เดเดชเดฏเตเดเด เดเดพเดฐเดฃเด เดชเตเดฐเตเดเตเดฐเดพเด เด
เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดเตเดเตเดตเตเดจเตเดจเต เดจเดฎเตเดเตเดเต เดเดเตเดเดจเต เด
เดฑเดฟเดฏเดพเดจเดพเดเตเด mount(2)
.
เด
เดคเดฟเดจเดพเตฝ, เดเดเตเดเตพ เดฒเตเดฌเตเดฐเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดซเดฟเตฝเดเตเดเตผ เดเดดเตเดคเดฟ libseccomp
, เดจเดฟเดธเตเดธเดพเดฐเดฎเดฒเตเดฒเดพเดคเตเดค เดเตเดกเต เดจเดพเดฒเต เดตเดฐเดฟเดเดณเดพเดฏเดฟ เดเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต. เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดงเดพเดฐเดพเดณเด เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเตพ เดเดฃเตเดเตเดเตเดเดฟเตฝ, เดเดเตเดธเดฟเดเตเดฏเตเดทเตป เดธเดฎเดฏเด เดเดฃเตเดฏเดฎเดพเดฏเดฟ เดเตเดฑเดฏเตเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เดเดพเดฐเดฃเด เดชเดฐเดฟเดถเตเดงเดจ เดคเดพเดฐเดคเดฎเตเดฏเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต. เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเตเดทเดจเดพเดฏเดฟ, libseccomp เด
เดเตเดคเตเดคเดฟเดเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต SCMP_FLTATR_CTL_OPTIMIZE
. เด เดเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเต 2 เดเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดซเดฟเตฝเดเตเดเดฑเดฟเดจเต เดเดฐเต เดฌเตเดจเดฑเดฟ เดคเดฟเดฐเดฏเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเดพเดเตเดเดฟ เดฎเดพเดฑเตเดฑเตเด.
เดฌเตเดจเดฑเดฟ เดคเดฟเดฐเดฏเตฝ เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดพเดฃเดฃเดฎเตเดเตเดเดฟเตฝ, เดจเตเดเตเดเตเด
$ echo 1 3 6 8 13 | ./generate_bin_search_bpf.py
ld [0]
jeq #6, bad
jgt #6, check8
jeq #1, bad
jeq #3, bad
ret #0x7fff0000
check8:
jeq #8, bad
jeq #13, bad
ret #0x7fff0000
bad: ret #0
BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพเดเตเดเต เดเตปเดกเตปเตเดฑเตเดทเตป เดเดฎเตเดชเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดพเดคเตเดคเดคเดฟเดจเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดพเดฐเตเดฏเดฎเดพเดฏเดฟ เดตเตเดเดคเตเดคเดฟเตฝ เดเดจเตเดจเตเด เดเดดเตเดคเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดเตเดเตพเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ, jmp A
เด
เดฅเดตเดพ jmp [label+X]
) เด
เดคเดฟเดจเดพเตฝ เดเดฒเตเดฒเดพ เดธเดเดเตเดฐเดฎเดฃเดเตเดเดณเตเด เดจเดฟเดถเตเดเดฒเดฎเดพเดฃเต.
seccomp เดเตปเดกเต strace
เดชเตเดฐเดฏเตเดเดจเด เดเดฒเตเดฒเดพเดตเตผเดเตเดเตเด เด
เดฑเดฟเดฏเดพเด strace
Linux-เดฒเต เดชเตเดฐเดเตเดฐเดฟเดฏเดเดณเตเดเต เดธเตเดตเดญเดพเดตเด เดชเด เดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดเดดเดฟเดเตเดเตเดเตเดเดพเดจเดพเดตเดพเดคเตเดค เดเดชเดเดฐเดฃเดฎเดพเดฃเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดชเดฒเดฐเตเด เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดเตเดเดฟเดเตเดเตเดฃเตเดเต strace
เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฟ ptrace(2)
, เดเตเดเดพเดคเต เด เดฎเตเดเตเดเดพเดจเดฟเดธเดคเตเดคเดฟเตฝ, เดเดคเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเตเดเดณเตเดเต เดธเตเดฑเตเดฑเดฟเดฒเดพเดฃเต เดจเดฎเตเดเตเดเต เดชเตเดฐเตเดธเดธเตเดธเต เดจเดฟเตผเดคเตเดคเตเดฃเตเดเดคเตเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ, เด
เดคเดพเดฏเดคเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฎเดพเตปเดกเตเดเตพ
$ time strace du /usr/share/ >/dev/null 2>&1
real 0m3.081s
user 0m0.531s
sys 0m2.073s
ะธ
$ time strace -e open du /usr/share/ >/dev/null 2>&1
real 0m2.404s
user 0m0.193s
sys 0m1.800s
เดเดเดฆเตเดถเด เดเดฐเต เดธเดฎเดฏเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต, เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดฎเดพเดคเตเดฐเดฎเต เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเต.
เดชเตเดคเดฟเดฏ เดเดชเตเดทเตป --seccomp-bpf
, เดเตเตผเดคเตเดคเต strace
เดชเดคเดฟเดชเตเดชเต 5.3, เดชเตเดฐเดเตเดฐเดฟเดฏ เดชเดฒเดคเดตเดฃ เดตเตเดเดคเตเดคเดฟเดฒเดพเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต เดเตเดเดพเดคเต เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเตปเตเดฑเต เดเตเดฐเตเดฏเตโเดธเดฟเดจเต เดเตเดดเดฟเดฒเตเดณเตเดณ เดธเตเดฑเตเดฑเดพเตผเดเตเดเดชเตเดชเต เดธเดฎเดฏเด เดเดคเดฟเดจเดเด เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดธเตเดฑเตเดฑเดพเตผเดเตเดเดชเตเดชเดฟเตปเตเดฑเต เดธเดฎเดฏเดตเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเตเดเตเดคเตเดคเดพเดตเตเดจเตเดจเดคเดพเดฃเต:
$ time strace --seccomp-bpf -e open du /usr/share/ >/dev/null 2>&1
real 0m0.148s
user 0m0.017s
sys 0m0.131s
$ time du /usr/share/ >/dev/null 2>&1
real 0m0.140s
user 0m0.024s
sys 0m0.116s
(เดเดตเดฟเดเต, เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เด เดเดฎเดพเตปเดกเดฟเตปเตเดฑเต เดชเตเดฐเดงเดพเดจ เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเดฟเดฒเตเดฒ เดเดจเตเดจเดคเดฟเตฝ เดเดฐเต เดเตเดฑเดฟเดฏ เดตเดเตเดเดจเดฏเตเดฃเตเดเต. เดเดเตเดเตพ เดเตเดฐเตเดธเต เดเตเดฏเตเดฏเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, newfsstat
, เดชเดฟเดจเตเดจเต strace
เดเดฒเตเดฒเดพเดคเต เดชเตเดฒเต เดคเดจเตเดจเต เดถเดเตเดคเดฎเดพเดฏเดฟ เดฌเตเดฐเตเดเตเดเต เดเตเดฏเตเดฏเตเด --seccomp-bpf
.)
เด เดเดชเตเดทเตป เดเดเตเดเดจเตเดฏเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต? เด
เดตเดณเดฟเดฒเตเดฒเดพเดคเต strace
เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เด
เดคเต เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต PTRACE_SYSCALL
. เดเดฐเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดค เดชเตเดฐเตเดธเดธเตเดธเต (เดเดคเตเดเตเดเดฟเดฒเตเด) เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดจเตฝเดเตเดฎเตเดชเตเตพ, เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด เดเตเดฎเดพเดฑเตเดฑเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด strace
, เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเตปเตเดฑเต เดเตผเดเตเดฏเตเดฎเตเตปเตเดฑเตเดเตพ เดจเตเดเตเดเตเดเดฏเตเด เด
เดคเต เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต PTRACE_SYSCALL
. เดเตเดฑเดเตเดเต เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดถเตเดทเด, เดชเตเดฐเตเดธเดธเตเดธเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตเดจเตเดจเต, เด
เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฑเดคเตเดคเตเดเดเดเตเดเตเดฎเตเดชเตเตพ, เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด เดตเตเดฃเตเดเตเด เดเตเดฎเดพเดฑเตเดฑเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด strace
, เดเดคเต เดฑเดฟเดเตเดเตเตบ เดฎเตเดฒเตเดฏเดเตเดเตพ เดจเตเดเตเดเตเดเดฏเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต PTRACE_SYSCALL
, เดเดคเตเดฏเดพเดฆเดฟ.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, seccomp เดเดชเดฏเตเดเดฟเดเตเดเต, เด เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดคเตเดชเตเดฒเต เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด. เด
เดคเดพเดฏเดคเต, เดจเดฎเตเดเตเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเตฝ เดฎเดพเดคเตเดฐเด เดจเตเดเตเดเดฃเดฎเตเดเตเดเดฟเตฝ X
, เด
เดชเตเดชเตเตพ เดจเดฎเตเดเตเดเต เด
เดคเดฟเดจเดพเดฏเดฟ เดเดฐเต BPF เดซเดฟเตฝเดเตเดเตผ เดเดดเตเดคเดพเด X
เดฎเตเดฒเตเดฏเด เดจเตฝเดเตเดจเตเดจเต SECCOMP_RET_TRACE
, เดเตเดเดพเดคเต เดเดเตเดเตพเดเตเดเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดเตเดณเตเดเตพเดเตเดเตเด - SECCOMP_RET_ALLOW
:
ld [0]
jneq #X, ignore
trace: ret #0x7ff00000
ignore: ret #0x7fff0000
เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ strace
เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต PTRACE_CONT
, เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเดจเตเด เดเดเตเดเดณเตเดเต เดซเดฟเตฝเดเตเดเตผ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเต X
, เดคเตเดเตผเดจเตเดจเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเต เดคเตเดเดฐเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดเดคเต X
, เด
เดชเตเดชเตเตพ seccomp เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด เดเตเดฎเดพเดฑเตเด strace
เดเตผเดเตเดฏเตเดฎเตเตปเตเดฑเตเดเตพ เดจเตเดเตเดเตเดเดฏเตเด เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด PTRACE_SYSCALL
(เดธเดฟเดธเตเดฑเตเดฑเด เดเตเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฑเดคเตเดคเตเดเดเดเตเดเตเดฎเตเดชเตเตพ เดเดฐเต เดชเตเดฐเตเดเตเดฐเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเต seccomp-เดจเต เดเดฒเตเดฒ เดเดจเตเดจเดคเดฟเดจเดพเตฝ). เดธเดฟเดธเตเดฑเตเดฑเด เดเตเตพ เดคเดฟเดฐเดฟเดเต เดตเดฐเตเดฎเตเดชเตเตพ, strace
เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดเตเดฐเดฟเดฏ เดชเตเดจเดฐเดพเดฐเดเดญเดฟเดเตเดเตเด PTRACE_CONT
seccomp-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเตเดคเดฟเดฏ เดธเดจเตเดฆเตเดถเดเตเดเตพเดเตเดเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดเดชเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดฎเตเดชเตเตพ --seccomp-bpf
เดฐเดฃเตเดเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดเตเดเตพ เดเดฃเตเดเต. เดเดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดเดฐเต เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเดฟเตฝ เดเตเดฐเตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดฒเตเดฒ (เดเดชเตเดทเตป -p
เดชเตเดฐเตเดพเดเตเดฐเดพเดฎเตเดเตพ strace
), เดเดคเต seccomp เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเดพเดคเตเดคเดคเดฟเดจเดพเตฝ. เดฐเดฃเตเดเดพเดฎเดคเดพเดฏเดฟ, เดเดฐเต เดธเดพเดงเตเดฏเดคเดฏเตเดฎเดฟเดฒเตเดฒ เด
เดฒเตเดฒ เดเตเตฝเดกเต เดชเตเดฐเตเดธเดธเตเดเตพ เดจเตเดเตเดเตเด, เดเดพเดฐเดฃเด เดเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดเตเดเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเดฟเดฒเตเดฒเดพเดคเต เดเดฒเตเดฒเดพ เดเตเตฝเดกเต เดชเตเดฐเตเดธเดธเตเดธเตเดเตพเดเตเดเตเด seccomp เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเดฎเดพเดฏเดฟ เดฒเดญเดฟเดเตเดเตเดจเตเดจเต.
เดเตเดคเตเดฏเดฎเดพเดฏเดฟ เดเดเตเดเดจเต เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ strace
เดเตเดเต เดเตเดพเดฒเดฟ seccomp
เดจเดฟเดจเตเดจเต เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด
xt_bpf
เดเดจเดฟ เดจเดฎเตเดเตเดเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเตเดเดณเตเดเต เดฒเตเดเดคเตเดคเตเดเตเดเต เดฎเดเดเตเดเดพเด.
เดชเดถเตเดเดพเดคเตเดคเดฒเด: เดตเดณเดฐเตเดเตเดเดพเดฒเด เดฎเตเดฎเตเดชเต, 2007 เตฝ, เดเตเตผ เดเดฏเดฟเดฐเตเดจเตเดจเต xt_u32
เดจเตเดฑเตเดฑเตเดซเดฟเตฝเดเตเดเดฑเดฟเดจเดพเดฏเดฟ. เด
เดคเดฟเดฒเตเด เดชเตเดฐเดพเดเตเดจเดฎเดพเดฏ เดเดฐเต เดเตเดฐเดพเดซเดฟเดเตเดเต เดเตเดฒเดพเดธเดฟเดซเดฏเดฑเตเดฎเดพเดฏเตเดณเตเดณ เดธเดพเดฎเตเดฏเด เดเดชเดฏเตเดเดฟเดเตเดเดพเดฃเต เดเดคเต เดเดดเตเดคเดฟเดฏเดคเต cls_u32
เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต iptables-เดจเต เด
เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดฌเตเดจเดฑเดฟ เดจเดฟเดฏเดฎเดเตเดเตพ เดเดดเตเดคเดพเตป เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเต: เดเดฐเต เดชเดพเดเตเดเตเดเดฟเตฝ เดจเดฟเดจเตเดจเต 32 เดฌเดฟเดฑเตเดฑเตเดเตพ เดฒเตเดกเตเดเตเดฏเตเดคเต เด
เดตเดฏเดฟเตฝ เดเดฐเต เดเตเดเตเดเด เดเดฃเดฟเดค เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดจเดเดคเตเดคเตเด. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต,
sudo iptables -A INPUT -m u32 --u32 "6&0xFF=1" -j LOG --log-prefix "seen-by-xt_u32"
IP เดนเตเดกเดฑเดฟเตปเตเดฑเต 32 เดฌเดฟเดฑเตเดฑเตเดเตพ เดฒเตเดกเตเดเตเดฏเตเดฏเตเดจเตเดจเต, เดชเดพเดกเดฟเดเดเต 6-เตฝ เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต, เด
เดตเดฏเตเดเตเดเต เดเดฐเต เดฎเดพเดธเตเดเต เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต 0xFF
(เดเตเดฑเดเตเด เดฌเตเดฑเตเดฑเต เดเดเตเดเตเดเตเด). เด เดซเตเตฝเดกเต protocol
IP เดคเดฒเดเตเดเตเดเตเดเตเด เดเดเตเดเตพ เด
เดคเดฟเดจเต 1 (ICMP) เดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดจเดฟเดฏเดฎเดคเตเดคเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดเตเดเตเดเตเดเตพ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เดเตเดเดพเดคเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเดจเตเด เดเดดเดฟเดฏเตเด @
โ X เดฌเตเดฑเตเดฑเตเดเตพ เดตเดฒเดคเตเดคเตเดเตเดเต เดจเตเดเตเดเตเด. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดญเดฐเดฃเด
iptables -m u32 --u32 "6&0xFF=0x6 && 0>>22&0x3C@4=0x29"
TCP เดธเตเดเตเดตเตปเดธเต เดจเดฎเตเดชเตผ เดคเตเดฒเตเดฏเดฎเดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต 0x29
. เด
เดคเตเดคเดฐเด เดจเดฟเดฏเดฎเดเตเดเตพ เดเตเดเตเดฃเตเดเต เดเดดเตเดคเตเดจเตเดจเดคเต เดตเดณเดฐเต เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดฒเตเดฒเตเดจเตเดจเต เดเดคเดฟเดจเดเด เดตเตเดฏเดเตเดคเดฎเดพเดฏเดคเดฟเดจเดพเตฝ เดเดพเตป เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดพเดเดถเดเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดเดฟเดฒเตเดฒ. เดฒเตเดเดจเดคเตเดคเดฟเตฝ xt_u32
. เด เดฒเตเดเดจเดคเตเดคเดฟเตปเตเดฑเต เด
เดตเดธเดพเดจเดคเตเดคเต เดฒเดฟเดเตเดเตเดเดณเตเด เดเดพเดฃเตเด.
เดฎเตเดกเตเดฏเตเดณเดฟเดจเต เดชเดเดฐเด 2013 เดฎเตเดคเตฝ เดฎเตเดกเตเดฏเตเตพ xt_u32
เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต BPF เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเตเดณเตเดณ เดฎเตเดกเตเดฏเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเด xt_bpf
. เดเดคเตเดตเดฐเต เดตเดพเดฏเดฟเดเตเดเดฟเดเตเดเตเดณเตเดณ เดเตผเดเตเดเตเด เด
เดคเดฟเตปเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดคเดคเตเดตเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด: BPF bytecode iptables เดจเดฟเดฏเดฎเดเตเดเดณเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด. เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดชเตเดคเดฟเดฏ เดจเดฟเดฏเดฎเด เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดคเตเดชเตเดฒเต:
iptables -A INPUT -m bpf --bytecode <ะฑะฐะนัะบะพะด> -j LOG
เดเดตเดฟเดเต <ะฑะฐะนัะบะพะด>
- เด
เดธเดเดฌเตเดฒเตผ เดเดเตเดเตเดชเตเดเตเดเต เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเดณเตเดณ เดเตเดกเดพเดฃเดฟเดคเต bpf_asm
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต,
$ cat /tmp/test.bpf
ldb [9]
jneq #17, ignore
ret #1
ignore: ret #0
$ bpf_asm /tmp/test.bpf
4,48 0 0 9,21 0 1 17,6 0 0 1,6 0 0 0,
# iptables -A INPUT -m bpf --bytecode "$(bpf_asm /tmp/test.bpf)" -j LOG
เด เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเดฒเตเดฒเดพ UDP เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเตเด เดซเดฟเตฝเดเตเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดฐเต เดฎเตเดกเตเดฏเตเดณเดฟเดฒเต BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเตเดณเตเดณ เดธเดจเตเดฆเตผเดญเด xt_bpf
, เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดชเดพเดเตเดเดฑเตเดฑเต เดกเดพเดฑเตเดฑเดฏเดฟเดฒเตเดเตเดเต, iptables-เตปเตเดฑเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, IPv4 เดคเดฒเดเตเดเตเดเตเดเดฟเตปเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเดฒเตเดเตเดเต เดเตเดฃเตเดเดฟเดเตเดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต. BPF เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเตเดฒเตเดฏเด เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเด false
เดชเดพเดเตเดเดฑเตเดฑเต เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒ เดเดจเตเดจเดพเดฃเต เด
เตผเดคเตเดฅเดฎเดพเดเตเดเตเดจเตเดจเดคเต.
เดฎเตเดกเตเดฏเตเดณเดพเดฃเตเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดพเดฃเต xt_bpf
เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดเดฆเดพเดนเดฐเดฃเดคเตเดคเตเดเตเดเดพเตพ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฏ เดซเดฟเตฝเดเตเดเดฑเตเดเตพ เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเต. Cloudfare-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฏเดฅเดพเตผเดคเตเดฅ เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดจเตเดเตเดเดพเด. เด
เดเตเดคเตเดคเดฟเดเต เดตเดฐเต เด
เดตเตผ เดฎเตเดกเตเดฏเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเดฟเดฐเตเดจเตเดจเต xt_bpf
DDoS เดเดเตเดฐเดฎเดฃเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดฐเดฟเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต. เดฒเตเดเดจเดคเตเดคเดฟเตฝ bpfgen
เดเดฐเต เดชเตเดฐเดฟเดจเดพเดฏเตเดณเตเดณ DNS เด
เดจเตเดตเตเดทเดฃเดตเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจ เดเดฐเต BPF เดชเตเดฐเตเดเตเดฐเดพเด เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด habr.com
:
$ ./bpfgen --assembly dns -- habr.com
ldx 4*([0]&0xf)
ld #20
add x
tax
lb_0:
ld [x + 0]
jneq #0x04686162, lb_1
ld [x + 4]
jneq #0x7203636f, lb_1
ldh [x + 8]
jneq #0x6d00, lb_1
ret #65535
lb_1:
ret #0
เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเตฝ เดเดเตเดเตพ เดเดฆเตเดฏเด เดฐเดเดฟเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต X
เดตเดฐเดฟ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเตปเตเดฑเต เดเดฐเดเดญเด x04habrx03comx00
เดเดฐเต UDP เดกเดพเดฑเตเดฑเดพเดเตเดฐเดพเดฎเดฟเดจเตเดณเตเดณเดฟเตฝ, เดคเตเดเตผเดจเตเดจเต เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด: 0x04686162 <-> "x04hab"
เด
เดคเตเดชเตเดฒเต.
เดเตเดฑเดเตเดเต เดเดดเดฟเดเตเดเต, Cloudfare p0f -> BPF เดเดฎเตเดชเตเดฒเตผ เดเตเดกเต เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเต. เดฒเตเดเดจเดคเตเดคเดฟเตฝ
$ ./bpfgen p0f -- 4:64:0:0:*,0::ack+:0
39,0 0 0 0,48 0 0 8,37 35 0 64,37 0 34 29,48 0 0 0,
84 0 0 15,21 0 31 5,48 0 0 9,21 0 29 6,40 0 0 6,
...
เดจเดฟเดฒเดตเดฟเตฝ เดเตเดฒเตเดกเตเดซเตเดฏเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ xt_bpf
, เด
เดตเตผ XDP-เดฏเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเดฟเดฏเดคเดฟเดจเดพเตฝ - BPF-เตปเตเดฑเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดชเตเดทเดจเตเดเดณเดฟเดฒเตเดจเตเดจเต, เดเดพเดฃเตเด.
cls_bpf
เดเตเตผเดฃเดฒเดฟเตฝ เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเตปเตเดฑเต เด
เดตเดธเดพเดจ เดเดฆเดพเดนเดฐเดฃเด เดเตเดฒเดพเดธเดฟเดซเดฏเตผ เดเดฃเต cls_bpf
เดฒเดฟเดจเดเตเดธเดฟเดฒเต เดเตเดฐเดพเดซเดฟเดเต เดเตบเดเตเดฐเตเตพ เดธเดฌเตเดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเดพเดฏเดฟ, 2013 เด
เดตเดธเดพเดจเดคเตเดคเตเดเต เดฒเดฟเดจเดเตเดธเดฟเดฒเตเดเตเดเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตเดเดฏเตเด เดชเตเดฐเดพเดคเดจเดฎเดพเดฏเดคเดฟเดจเต เดเดถเดฏเดชเดฐเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต. cls_u32
.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดเตเดเตพ เดเดชเตเดชเตเตพ เดเตเดฒเดฟเดฏเต เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ cls_bpf
, เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เด
เดฑเดฟเดตเดฟเตปเตเดฑเต เดตเตเดเตเดทเดฃเดเตเดฃเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดคเต เดเดเตเดเตพเดเตเดเต เดเดจเตเดจเตเด เดจเตฝเดเดฟเดฒเตเดฒ - เดเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดเดเตเดเตพ เดเดคเดฟเดจเดเด เดชเดฐเดฟเดเดฟเดคเดฎเดพเดฏเดฟเดเตเดเดดเดฟเดเตเดเต. เดเตเดเดพเดคเต, เดตเดฟเดชเตเดฒเตเดเตเดค เดฌเดฟเดชเดฟเดเดซเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเดจเตเดจ เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เดฒเตเดเดจเดเตเดเดณเดฟเตฝ, เดเดเตเดเตพ เดเดจเตเดจเดฟเดฒเดงเดฟเดเด เดคเดตเดฃ เด เดเตเดฒเดพเดธเดฟเดซเดฏเตผ เดเดพเดฃเตเด.
เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเต เดธเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเดจเตเดณเตเดณ เดฎเดฑเตเดฑเตเดฐเต เดเดพเดฐเดฃเด cls_bpf
เดตเดฟเดชเตเดฒเตเดเตเดค เดฌเดฟเดชเดฟเดเดซเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเตเดเตเดคเตเดคเตเดฎเตเดชเตเตพ, เด เดเตเดธเดฟเตฝ เดชเตเดฐเดฏเตเดเดคเตเดคเดฟเตปเตเดฑเต เดตเตเดฏเดพเดชเตเดคเดฟ เดธเดฎเตเดฒเดฎเดพเดฏเดฟ เดเตเดฐเตเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดถเตเดจเด: เดเตเดฒเดพเดธเดฟเดเตเดเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพเดเตเดเต เดชเดพเดเตเดเตเดเตเดเดณเตเดเต เดเดณเตเดณเดเดเตเดเด เดฎเดพเดฑเตเดฑเดพเดจเตเด เดเตเดณเตเดเตพเดเตเดเดฟเดเดฏเดฟเตฝ เดจเดฟเดฒ เดธเดเดฐเดเตเดทเดฟเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เด เดคเตเดเตเดฃเตเดเต เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเดฟเดจเตเดเต เดตเดฟเดเดชเดฑเดฏเดพเดจเตเด เดญเดพเดตเดฟเดฏเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเดพเดจเตเดฎเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต.
เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเดฟเดจเต เดตเดฟเด
เดคเตเดฃเตเดฃเตเดฑเตเดเดณเตเดเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเด เดฌเดฟเดชเดฟเดเดซเต เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏ เดเดเตเดเดจเต เดเดพเตฝเดจเตเดฑเตเดฑเดพเดฃเตเดเต เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดเตเดตเดฟเดเตเดเตเดเดฏเตเด เด
เดตเดธเดพเดจเด เดตเดฐเต เดชเตเดคเดฟเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดเดฃเตเดเตเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดคเตเดตเตเดจเตเดจเต เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดธเตเดฑเตเดฑเดพเดเตเดเต เดฎเตเดทเตเดจเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต RISC-เดฒเตเดเตเดเตเดณเตเดณ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏเดฟ, เดเดคเต เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเดฟเตปเตเดฑเต เดตเดฟเดเดธเดจเดคเตเดคเดฟเดจเต เดชเตเดฐเตเดฐเดฃเดฏเดพเดฏเดฟ, 32-เดเดณเดฟเตฝ 64-เดฌเดฟเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต XNUMX-เดฌเดฟเดฑเตเดฑเต เดฎเตเดทเตเดจเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฐเต เดฎเดพเดฑเตเดฑเด เดเดฃเตเดเดพเดฏเดฟ, เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเต เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเดพเตป เดคเตเดเดเตเดเดฟ. เดเตเดเดพเดคเต, เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเดฟเตปเตเดฑเต เดเดดเดฟเดตเตเดเตพ เดตเดณเดฐเต เดชเดฐเดฟเดฎเดฟเดคเดฎเดพเดฃเต, เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเตเด เดเตผเดเตเดเดฟเดเตเดเตเดเดฑเดฟเดจเต เดชเตเดฑเดฎเต - เดฌเดฟเดชเดฟเดเดซเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเตเดณเตเดเตพเดเตเดเดฟเดเดฏเดฟเตฝ เดจเดฟเดฒ เดธเดเดฐเดเตเดทเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเต เดเดเตเดเตพเดเตเดเต เดเดฒเตเดฒ, เดจเตเดฐเดฟเดเตเดเตเดณเตเดณ เดเดชเดฏเตเดเตเดคเต เดเดเดชเตเดเดฒเดฟเดจเต เดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒ, เดธเดเดตเดฆเดฟเดเตเดเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒ. เดเตเตผเดฃเดฒเดฟเดจเตเดชเตเดชเด, เดชเดฐเดฟเดฎเดฟเดคเดฎเดพเดฏ เดธเตเดเตเดฐเดเตเดเตผ เดซเตเตฝเดกเตเดเตพ เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเดคเต เดเดดเดฟเดเต sk_buff
เดเดฑเตเดฑเดตเตเด เดฒเดณเดฟเดคเดฎเดพเดฏ เดธเดนเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดจเดฟเดเตเดเตพเดเตเดเต เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเตเดเต เดเดณเตเดณเดเดเตเดเด เดฎเดพเดฑเตเดฑเดพเดจเตเด เดฑเตเดกเดฏเดฑเดเตโเดเตเดเตเดฏเตเดฏเดพเดจเตเด เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดจเดฟเดฒเดตเดฟเตฝ เดฒเดฟเดจเดเตเดธเดฟเดฒเต เดเตเดฒเดพเดธเดฟเดเต เดฌเดฟเดชเดฟเดเดซเดฟเตฝ เด เดตเดถเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต เดเดชเดฟเด เดเตปเตเดฑเตผเดซเตเดธเดพเดฃเต, เดเตเดเดพเดคเต เดเตเตผเดฃเดฒเดฟเดจเตเดณเตเดณเดฟเตฝ เดเดฒเตเดฒเดพ เดเตเดฒเดพเดธเดฟเดเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเตเด เดธเตเดเตเดเดฑเตเดฑเต เดซเดฟเตฝเดเตเดเดฑเตเดเดณเต เดธเตเดเตเดเตเดฎเตเดชเต เดซเดฟเตฝเดเตเดเดฑเตเดเดณเต เดเดเดเตเดเต, เดตเดฟเดชเตเดฒเตเดเดฐเดฟเดเตเด เดฌเดฟเดชเดฟเดเดซเต เดเดจเตเดจ เดชเตเดคเดฟเดฏ เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดธเตเดตเดฏเดฎเตเดต เดตเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต. (เดเดคเต เดเดเตเดเดจเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เด เดเตเดคเตเดค เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเตพ เดธเดเดธเดพเดฐเดฟเดเตเดเตเด.)
เดเดฐเต เดชเตเดคเดฟเดฏ เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดฎเดพเดฑเตเดฑเด 2013-เตฝ เดเดฐเดเดญเดฟเดเตเดเต, เด
เดฒเดเตเดธเดฟ เดธเตเดฑเตเดฑเดพเดฐเตเดตเตเดฏเดฟเดฑเตเดฑเตเดตเต เดเดฐเต เดฌเดฟเดชเดฟเดเดซเต เด
เดชเตโเดกเตเดฑเตเดฑเต เดธเตเดเตเด เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเดคเตเดเตเดฏเดพเดฃเต. 2014-เตฝ เด
เดจเตเดฌเดจเตเดง เดชเดพเดเตเดเตเดเตพ
เด เดชเดฐเดฎเตเดชเดฐเดฏเดฟเดฒเต เดเตเดเตเดคเตฝ เดฒเตเดเดจเดเตเดเตพ เดชเตเดคเดฟเดฏ เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดฏเตเดเต เดเตผเดเตเดเดฟเดเตเดเตเดเดฑเตเด เดชเตเดฐเดฏเตเดเดเตเดเดณเตเด เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเต, เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดเตปเตเดฑเตเดฃเตฝ เดฌเดฟเดชเดฟเดเดซเต เดเดจเตเดจเตเด เดชเดฟเดจเตเดจเตเดเต เดตเดฟเดชเตเดฒเตเดเตเดค เดฌเดฟเดชเดฟเดเดซเต เดเดจเตเดจเตเด เดเดชเตเดชเตเตพ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดฌเดฟเดชเดฟเดเดซเต เดเดจเตเดจเตเด เด เดฑเดฟเดฏเดชเตเดชเตเดเตเดเดฟเดฐเตเดจเตเดจเต.
เดฑเตเดซเดฑเตปเดธเตเดเตพ
- เดธเตเดฑเตเดฑเตเดตเตป เดฎเดเตเดเดพเดจเตเดฏเตเด เดตเดพเตป เดเตเดเตเดเดฌเตโเดธเดฃเตเด, "เดฆเดฟ เดฌเดฟเดเดธเตโเดกเดฟ เดชเดพเดเตเดเดฑเตเดฑเต เดซเดฟเตฝเดเตเดเตผ: เดเดชเดฏเตเดเตเดคเต เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเดพเดเตเดเดฑเตเดฑเต เดเตเดฏเดพเดชเตโเดเดฑเดฟเดจเตเดณเตเดณ เดชเตเดคเดฟเดฏ เดเตผเดเตเดเดฟเดเตเดเตเดเตผ",
https://www.tcpdump.org/papers/bpf-usenix93.pdf
- เดธเตเดฑเตเดฑเตเดตเตป เดฎเดเตเดเดพเตป, "libpcap: เดชเดพเดเตเดเดฑเตเดฑเต เดเตเดฏเดพเดชเตโเดเดฑเดฟเดจเดพเดฏเตเดณเตเดณ เดเดฐเต เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเตเด เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเตเดทเตป เดฐเตเดคเดฟเดฏเตเด",
https://sharkfestus.wireshark.org/sharkfest.11/presentations/McCanne-Sharkfest'11_Keynote_Address.pdf
tcpdump
,libpcap
:https://www.tcpdump.org/ IPtable U32 เดฎเดพเดเตเดเต เดเตเดฏเตเดเตเดเตเดฑเดฟเดฏเตฝ .- BPF - เดฎเดฑเดจเตเดจเตเดชเตเดฏ เดฌเตเดฑเตเดฑเตเดเตเดกเต:
https://blog.cloudflare.com/bpf-the-forgotten-bytecode/
- BPF เดเตเตพ เด
เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต:
https://blog.cloudflare.com/introducing-the-bpf-tools/
bpf_cls
:http://man7.org/linux/man-pages/man8/tc-bpf.8.html
- เดเดฐเต เดธเตเดเตเดเตปเตเดฑเต เด
เดตเดฒเตเดเดจเด:
https://lwn.net/Articles/656307/
https://github.com/torvalds/linux/blob/master/Documentation/userspace-api/seccomp_filter.rst
habr: เดชเดพเดคเตเดฐเดเตเดเดณเตเด เดธเตเดฐเดเตเดทเดฏเตเด: seccomp habr: systemd เดเดชเดฏเตเดเดฟเดเตเดเต เดกเตเดฎเดฃเตเดเดณเต เดเดฑเตเดฑเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ "เดเดคเดฟเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดกเตเดเตเดเตผ เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ!" - เดชเตเตพ เดเตเดเตเดจเตบ, "เดธเตเดเตเดฐเตเดธเต --เดธเตเดเตเดเตเดเดชเต-เดฌเดฟเดชเดฟเดเดซเต: เด เดฒเตเดเตเดเต เด
เดฃเตเดเตผ เดฆเดฟ เดนเตเดกเต",
https://fosdem.org/2020/schedule/event/debugging_strace_bpf/
netsniff-ng
:http://netsniff-ng.org/
เด เดตเดฒเดเดฌเด: www.habr.com