diff options
author | Joy Latten <latten@austin.ibm.com> | 2006-11-27 14:11:54 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-12-06 23:14:22 -0500 |
commit | 161a09e737f0761ca064ee6a907313402f7a54b6 (patch) | |
tree | 80fdf6dc5de73d810ef0ec811299a5ec3c5ce23e /include | |
parent | 95b99a670df31ca5271f503f378e5cac3aee8f5e (diff) |
audit: Add auditing to ipsec
An audit message occurs when an ipsec SA
or ipsec policy is created/deleted.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: James Morris <jmorris@namei.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/audit.h | 6 | ||||
-rw-r--r-- | include/net/xfrm.h | 19 |
2 files changed, 20 insertions, 5 deletions
diff --git a/include/linux/audit.h b/include/linux/audit.h index b2ca666d9997..0e07db6cc0d0 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
@@ -101,6 +101,10 @@ | |||
101 | #define AUDIT_MAC_CIPSOV4_DEL 1408 /* NetLabel: del CIPSOv4 DOI entry */ | 101 | #define AUDIT_MAC_CIPSOV4_DEL 1408 /* NetLabel: del CIPSOv4 DOI entry */ |
102 | #define AUDIT_MAC_MAP_ADD 1409 /* NetLabel: add LSM domain mapping */ | 102 | #define AUDIT_MAC_MAP_ADD 1409 /* NetLabel: add LSM domain mapping */ |
103 | #define AUDIT_MAC_MAP_DEL 1410 /* NetLabel: del LSM domain mapping */ | 103 | #define AUDIT_MAC_MAP_DEL 1410 /* NetLabel: del LSM domain mapping */ |
104 | #define AUDIT_MAC_IPSEC_ADDSA 1411 /* Add a XFRM state */ | ||
105 | #define AUDIT_MAC_IPSEC_DELSA 1412 /* Delete a XFRM state */ | ||
106 | #define AUDIT_MAC_IPSEC_ADDSPD 1413 /* Add a XFRM policy */ | ||
107 | #define AUDIT_MAC_IPSEC_DELSPD 1414 /* Delete a XFRM policy */ | ||
104 | 108 | ||
105 | #define AUDIT_FIRST_KERN_ANOM_MSG 1700 | 109 | #define AUDIT_FIRST_KERN_ANOM_MSG 1700 |
106 | #define AUDIT_LAST_KERN_ANOM_MSG 1799 | 110 | #define AUDIT_LAST_KERN_ANOM_MSG 1799 |
@@ -377,6 +381,7 @@ extern void auditsc_get_stamp(struct audit_context *ctx, | |||
377 | struct timespec *t, unsigned int *serial); | 381 | struct timespec *t, unsigned int *serial); |
378 | extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid); | 382 | extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid); |
379 | extern uid_t audit_get_loginuid(struct audit_context *ctx); | 383 | extern uid_t audit_get_loginuid(struct audit_context *ctx); |
384 | extern void audit_log_task_context(struct audit_buffer *ab); | ||
380 | extern int __audit_ipc_obj(struct kern_ipc_perm *ipcp); | 385 | extern int __audit_ipc_obj(struct kern_ipc_perm *ipcp); |
381 | extern int __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode); | 386 | extern int __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode); |
382 | extern int audit_bprm(struct linux_binprm *bprm); | 387 | extern int audit_bprm(struct linux_binprm *bprm); |
@@ -449,6 +454,7 @@ extern int audit_n_rules; | |||
449 | #define audit_inode_update(i) do { ; } while (0) | 454 | #define audit_inode_update(i) do { ; } while (0) |
450 | #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) | 455 | #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) |
451 | #define audit_get_loginuid(c) ({ -1; }) | 456 | #define audit_get_loginuid(c) ({ -1; }) |
457 | #define audit_log_task_context(b) do { ; } while (0) | ||
452 | #define audit_ipc_obj(i) ({ 0; }) | 458 | #define audit_ipc_obj(i) ({ 0; }) |
453 | #define audit_ipc_set_perm(q,u,g,m) ({ 0; }) | 459 | #define audit_ipc_set_perm(q,u,g,m) ({ 0; }) |
454 | #define audit_bprm(p) ({ 0; }) | 460 | #define audit_bprm(p) ({ 0; }) |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 15ec19dcf9c8..f699cdcab406 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -392,6 +392,15 @@ extern int xfrm_unregister_km(struct xfrm_mgr *km); | |||
392 | 392 | ||
393 | extern unsigned int xfrm_policy_count[XFRM_POLICY_MAX*2]; | 393 | extern unsigned int xfrm_policy_count[XFRM_POLICY_MAX*2]; |
394 | 394 | ||
395 | /* Audit Information */ | ||
396 | struct xfrm_audit | ||
397 | { | ||
398 | uid_t loginuid; | ||
399 | u32 secid; | ||
400 | }; | ||
401 | void xfrm_audit_log(uid_t auid, u32 secid, int type, int result, | ||
402 | struct xfrm_policy *xp, struct xfrm_state *x); | ||
403 | |||
395 | static inline void xfrm_pol_hold(struct xfrm_policy *policy) | 404 | static inline void xfrm_pol_hold(struct xfrm_policy *policy) |
396 | { | 405 | { |
397 | if (likely(policy != NULL)) | 406 | if (likely(policy != NULL)) |
@@ -906,7 +915,7 @@ static inline int xfrm_state_sort(struct xfrm_state **dst, struct xfrm_state **s | |||
906 | #endif | 915 | #endif |
907 | extern struct xfrm_state *xfrm_find_acq_byseq(u32 seq); | 916 | extern struct xfrm_state *xfrm_find_acq_byseq(u32 seq); |
908 | extern int xfrm_state_delete(struct xfrm_state *x); | 917 | extern int xfrm_state_delete(struct xfrm_state *x); |
909 | extern void xfrm_state_flush(u8 proto); | 918 | extern void xfrm_state_flush(u8 proto, struct xfrm_audit *audit_info); |
910 | extern int xfrm_replay_check(struct xfrm_state *x, __be32 seq); | 919 | extern int xfrm_replay_check(struct xfrm_state *x, __be32 seq); |
911 | extern void xfrm_replay_advance(struct xfrm_state *x, __be32 seq); | 920 | extern void xfrm_replay_advance(struct xfrm_state *x, __be32 seq); |
912 | extern void xfrm_replay_notify(struct xfrm_state *x, int event); | 921 | extern void xfrm_replay_notify(struct xfrm_state *x, int event); |
@@ -959,13 +968,13 @@ struct xfrm_policy *xfrm_policy_bysel_ctx(u8 type, int dir, | |||
959 | struct xfrm_selector *sel, | 968 | struct xfrm_selector *sel, |
960 | struct xfrm_sec_ctx *ctx, int delete); | 969 | struct xfrm_sec_ctx *ctx, int delete); |
961 | struct xfrm_policy *xfrm_policy_byid(u8, int dir, u32 id, int delete); | 970 | struct xfrm_policy *xfrm_policy_byid(u8, int dir, u32 id, int delete); |
962 | void xfrm_policy_flush(u8 type); | 971 | void xfrm_policy_flush(u8 type, struct xfrm_audit *audit_info); |
963 | u32 xfrm_get_acqseq(void); | 972 | u32 xfrm_get_acqseq(void); |
964 | void xfrm_alloc_spi(struct xfrm_state *x, __be32 minspi, __be32 maxspi); | 973 | void xfrm_alloc_spi(struct xfrm_state *x, __be32 minspi, __be32 maxspi); |
965 | struct xfrm_state * xfrm_find_acq(u8 mode, u32 reqid, u8 proto, | 974 | struct xfrm_state * xfrm_find_acq(u8 mode, u32 reqid, u8 proto, |
966 | xfrm_address_t *daddr, xfrm_address_t *saddr, | 975 | xfrm_address_t *daddr, xfrm_address_t *saddr, |
967 | int create, unsigned short family); | 976 | int create, unsigned short family); |
968 | extern void xfrm_policy_flush(u8 type); | 977 | extern void xfrm_policy_flush(u8 type, struct xfrm_audit *audit_info); |
969 | extern int xfrm_sk_policy_insert(struct sock *sk, int dir, struct xfrm_policy *pol); | 978 | extern int xfrm_sk_policy_insert(struct sock *sk, int dir, struct xfrm_policy *pol); |
970 | extern int xfrm_bundle_ok(struct xfrm_policy *pol, struct xfrm_dst *xdst, | 979 | extern int xfrm_bundle_ok(struct xfrm_policy *pol, struct xfrm_dst *xdst, |
971 | struct flowi *fl, int family, int strict); | 980 | struct flowi *fl, int family, int strict); |