Nenhuma Descrição

send-wazuh-cisco-test-events.sh 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. SCENARIO="${1:-all}"
  4. COUNT="${2:-1}"
  5. DELAY="${3:-0.3}"
  6. WAZUH_SYSLOG_HOST="${WAZUH_SYSLOG_HOST:-127.0.0.1}"
  7. WAZUH_SYSLOG_PORT="${WAZUH_SYSLOG_PORT:-514}"
  8. CISCO_DEVICE_HOST="${CISCO_DEVICE_HOST:-cisco-asa-01}"
  9. CISCO_SRC_IP="${CISCO_SRC_IP:-198.51.100.25}"
  10. CISCO_DST_IP="${CISCO_DST_IP:-10.10.10.20}"
  11. CISCO_VPN_USER="${CISCO_VPN_USER:-vpn.user}"
  12. CISCO_ADMIN_USER="${CISCO_ADMIN_USER:-admin}"
  13. if ! [[ "${COUNT}" =~ ^[0-9]+$ ]] || [[ "${COUNT}" -lt 1 ]]; then
  14. echo "error: count must be a positive integer"
  15. exit 1
  16. fi
  17. emit_syslog() {
  18. local msg="$1"
  19. local sent="false"
  20. if command -v nc >/dev/null 2>&1; then
  21. if printf "%s\n" "${msg}" | nc -u -w1 "${WAZUH_SYSLOG_HOST}" "${WAZUH_SYSLOG_PORT}"; then
  22. sent="true"
  23. fi
  24. fi
  25. if [[ "${sent}" != "true" ]]; then
  26. if printf "%s\n" "${msg}" >"/dev/udp/${WAZUH_SYSLOG_HOST}/${WAZUH_SYSLOG_PORT}" 2>/dev/null; then
  27. sent="true"
  28. fi
  29. fi
  30. if [[ "${sent}" != "true" ]]; then
  31. echo "error: failed to send syslog event to ${WAZUH_SYSLOG_HOST}:${WAZUH_SYSLOG_PORT}/udp"
  32. echo "hint: install netcat or run with bash UDP support (/dev/udp)"
  33. return 1
  34. fi
  35. echo "[$(date -u +'%Y-%m-%dT%H:%M:%SZ')] sent: ${msg}"
  36. }
  37. random_id() {
  38. printf "%s" "cisco-evt-$(date +%s)-$RANDOM-$RANDOM"
  39. }
  40. send_asa_acl_deny() {
  41. local eid
  42. eid="$(random_id)"
  43. emit_syslog "<166>$(date '+%b %d %H:%M:%S') ${CISCO_DEVICE_HOST} %ASA-4-106023: Deny tcp src outside:${CISCO_SRC_IP}/51515 dst inside:${CISCO_DST_IP}/445 by access-group \"outside_access_in\" [0x0, 0x0] soc_mvp_test=true vendor=cisco product=asa event_id=${eid} event_type=cisco_asa_acl_deny severity=high"
  44. }
  45. send_asa_vpn_auth_fail() {
  46. local eid
  47. eid="$(random_id)"
  48. emit_syslog "<166>$(date '+%b %d %H:%M:%S') ${CISCO_DEVICE_HOST} %ASA-4-113019: Group = RA-VPN, Username = ${CISCO_VPN_USER}, IP = ${CISCO_SRC_IP}, Session disconnected. Session Type: SSL, Duration: 0h:00m:01s, Bytes xmt: 0, Bytes rcv: 0, Reason: User Requested. soc_mvp_test=true vendor=cisco product=asa event_id=${eid} event_type=cisco_vpn_auth_fail severity=medium"
  49. }
  50. send_ios_login_fail() {
  51. local eid
  52. eid="$(random_id)"
  53. emit_syslog "<165>$(date '+%b %d %H:%M:%S') ${CISCO_DEVICE_HOST} %SEC_LOGIN-4-LOGIN_FAILED: Login failed [user: ${CISCO_ADMIN_USER}] [Source: ${CISCO_SRC_IP}] [localport: 22] [Reason: Login Authentication Failed] at 19:30:00 UTC Tue Feb 17 2026 soc_mvp_test=true vendor=cisco product=ios event_id=${eid} event_type=cisco_ios_login_fail severity=medium"
  54. }
  55. send_ios_config_change() {
  56. local eid
  57. eid="$(random_id)"
  58. emit_syslog "<165>$(date '+%b %d %H:%M:%S') ${CISCO_DEVICE_HOST} %SYS-5-CONFIG_I: Configured from console by ${CISCO_ADMIN_USER} on vty0 ( ${CISCO_SRC_IP} ) soc_mvp_test=true vendor=cisco product=ios event_id=${eid} event_type=cisco_config_change severity=low"
  59. }
  60. send_once() {
  61. case "${SCENARIO}" in
  62. asa_acl_deny)
  63. send_asa_acl_deny
  64. ;;
  65. asa_vpn_auth_fail)
  66. send_asa_vpn_auth_fail
  67. ;;
  68. ios_login_fail)
  69. send_ios_login_fail
  70. ;;
  71. ios_config_change)
  72. send_ios_config_change
  73. ;;
  74. all)
  75. send_asa_acl_deny
  76. send_asa_vpn_auth_fail
  77. send_ios_login_fail
  78. send_ios_config_change
  79. ;;
  80. *)
  81. echo "error: unknown scenario '${SCENARIO}'"
  82. echo "valid: asa_acl_deny | asa_vpn_auth_fail | ios_login_fail | ios_config_change | all"
  83. exit 1
  84. ;;
  85. esac
  86. }
  87. for ((i=1; i<=COUNT; i++)); do
  88. send_once
  89. if [[ "${i}" -lt "${COUNT}" ]]; then
  90. sleep "${DELAY}"
  91. fi
  92. done