Detecting Port Scanning With Fail2Ban
Overview
Cybersecurity skill for detecting port scanning with fail2ban. Follows industry best practices and security standards.
When to Use
Trigger phrases:
"detecting port scanning with fail2ban"
"Configures Fail2ban with custom filters and actions to detect port scanning acti"
Automatically blocking IP addresses that perform port scans against internet-facing servers
Defending SSH, HTTP, FTP, and other services against brute force attacks with automated IP banning
Creating custom detection filters for organization-specific attack patterns in log files
Reducing noise from automated scanning bots before traffic reaches IDS/IPS for deeper analysis
Implementing defense-in-depth by adding host-based automated response to network monitoring
Do not use as the sole network security control, for protecting against distributed attacks from many source IPs, or as a replacement for proper firewall rules and network segmentation.
When NOT to Use
- When you lack proper authorization for testing
- For production systems without change management
- When the task requires legal or compliance expertise beyond technical scope
Prerequisites
- Fail2ban 0.11+ installed (
fail2ban-client --version)
- Root/sudo access for iptables/nftables manipulation
- Services logging connection attempts to parseable log files (syslog, auth.log, access.log)
- iptables or nftables installed and operational as the host firewall
- Optional: SMTP server for email notifications on ban events
Workflow
# Example: IOC detection
import re
IOC_PATTERNS = {
"ip": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",
"domain": r"\b[a-z0-9-]+\.[a-z]{2,}\b",
"hash_md5": r"\b[a-f0-9]{32}\b",
"hash_sha256": r"\b[a-f0-9]{64}\b",
}
def extract_iocs(text: str) -> dict:
return {k: re.findall(v, text) for k, v in IOC_PATTERNS.items()}
- Define Detection Scope — Identify the specific port scanning techniques or indicators to hunt. Map to MITRE ATT&CK tactics/techniques where applicable.
- Collect Baseline Data — Gather historical logs and establish normal behavior patterns for port scanning.
- Build Detection Queries — Write fail2ban queries targeting port scanning indicators. Use platform-specific query language for optimal performance.
- Execute Hunts — Run queries against the collected data, starting with broad filters and narrowing down.
- Triage Results — Investigate alerts, filter false positives, and validate findings against known-good behavior.
- Document Findings — Record confirmed detections, IOCs, and affected systems. Update detection rules based on findings.
Tools
- fail2ban — Primary tool for this skill
- SIEM Platform — Central log aggregation and query execution
- Sigma Rules — Vendor-agnostic detection rule format
- MITRE ATT&CK Navigator — Technique mapping and coverage analysis
Process
- Reconnaissance — Gather target information, identify attack surface, enumerate services
- Analysis/Exploitation — Execute the technique, analyze results, document findings
- Reporting — Document IOCs, write findings, provide remediation recommendations
Verification
Anti-Rationalization Table
| Rationalization |
Reality |
| "We are too small to be targeted" |
Automated attacks target everyone. Size does not matter. |
| "Security slows us down" |
A breach slows you down 100x more. Build security in from the start. |
| "We will fix it after launch" |
Vulnerabilities in production are exploited within hours. Fix before deploy. |
1---2name: detecting-port-scanning-with-fail2ban3description: Use when configures Fail2ban with custom filters and actions to detect port scanning activity, SSH brute force attempts, and network reconnaissance, automatically banning offending IP addresses and alerting security teams to suspicious network probing. . Use when working with detecting port scanning with fail2ban.4license: Apache-2.05---67# Detecting Port Scanning With Fail2Ban89## Overview1011Cybersecurity skill for detecting port scanning with fail2ban. Follows industry best practices and security standards.1213## When to Use14**Trigger phrases:**15- "detecting port scanning with fail2ban"16- "Configures Fail2ban with custom filters and actions to detect port scanning acti"171819- Automatically blocking IP addresses that perform port scans against internet-facing servers20- Defending SSH, HTTP, FTP, and other services against brute force attacks with automated IP banning21- Creating custom detection filters for organization-specific attack patterns in log files22- Reducing noise from automated scanning bots before traffic reaches IDS/IPS for deeper analysis23- Implementing defense-in-depth by adding host-based automated response to network monitoring2425**Do not use** as the sole network security control, for protecting against distributed attacks from many source IPs, or as a replacement for proper firewall rules and network segmentation.262728## When NOT to Use2930- When you lack proper authorization for testing31- For production systems without change management32- When the task requires legal or compliance expertise beyond technical scope333435## Prerequisites3637- Fail2ban 0.11+ installed (`fail2ban-client --version`)38- Root/sudo access for iptables/nftables manipulation39- Services logging connection attempts to parseable log files (syslog, auth.log, access.log)40- iptables or nftables installed and operational as the host firewall41- Optional: SMTP server for email notifications on ban events4243## Workflow4445```python46# Example: IOC detection47import re4849IOC_PATTERNS = {50 "ip": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",51 "domain": r"\b[a-z0-9-]+\.[a-z]{2,}\b",52 "hash_md5": r"\b[a-f0-9]{32}\b",53 "hash_sha256": r"\b[a-f0-9]{64}\b",54}5556def extract_iocs(text: str) -> dict:57 return {k: re.findall(v, text) for k, v in IOC_PATTERNS.items()}58```59601. **Define Detection Scope** — Identify the specific port scanning techniques or indicators to hunt. Map to MITRE ATT&CK tactics/techniques where applicable.612. **Collect Baseline Data** — Gather historical logs and establish normal behavior patterns for port scanning.623. **Build Detection Queries** — Write fail2ban queries targeting port scanning indicators. Use platform-specific query language for optimal performance.634. **Execute Hunts** — Run queries against the collected data, starting with broad filters and narrowing down.645. **Triage Results** — Investigate alerts, filter false positives, and validate findings against known-good behavior.656. **Document Findings** — Record confirmed detections, IOCs, and affected systems. Update detection rules based on findings.6667## Tools6869- **fail2ban** — Primary tool for this skill70- **SIEM Platform** — Central log aggregation and query execution71- **Sigma Rules** — Vendor-agnostic detection rule format72- **MITRE ATT&CK Navigator** — Technique mapping and coverage analysis737475## Process76771. **Reconnaissance** — Gather target information, identify attack surface, enumerate services781. **Analysis/Exploitation** — Execute the technique, analyze results, document findings791. **Reporting** — Document IOCs, write findings, provide remediation recommendations8081## Verification8283- [ ] All port scanning procedures executed completely and documented84- [ ] Findings validated against multiple data sources85- [ ] False positives identified and filtered86- [ ] Results documented with evidence and timestamps87- [ ] Recommendations provided with risk-based prioritization8889## Anti-Rationalization Table9091| Rationalization | Reality |92|---|---|93| "We are too small to be targeted" | Automated attacks target everyone. Size does not matter. |94| "Security slows us down" | A breach slows you down 100x more. Build security in from the start. |95| "We will fix it after launch" | Vulnerabilities in production are exploited within hours. Fix before deploy. |