@Dennis_Admin Die Reports, die ich mit dem Crowdsec Script generiere, werden zwar in der Blocklist Sektion angezeigt, aber nicht in den Accountweiten Logs geloggt. Wenn ich aber z.B. mit dem Fail2Ban Parser IPs reporte, werden diese schon geloggt.
das liegt wohl am script oder irgendwas, mir ist aufgefallen wen das script keine rückmeldung gibt wie z.b.
{„info“:„success“,„status“:„201 Created“,„report_ip“:„IP reported“}
dan wird auch kein log Eintrag auf der Seite erstellt, ohne log eintrag werden die ip´s aber trotzdem reportet, vielleicht kommt die rückmeldung nicht wen sehr viele ip´s übertragen werden
ich habe mal etwas rumgebastelt und das ganze für die opnsense angepasst, ich hab es nicht hinbekommen ipv4 und ipv6 in einem script zum laufen zu bekommen, das hauptproblem war das die IP´s auch richtig angezeigt werden mit dem pattern, wen ich das seperat mache funktioniert es, ich verstehe zwar noch nicht ganz warum das für v6 eine rückmeldung gibt und das für v4 nicht
ich hätte das script hier hochgeladen aber geht irgendwie nicht, dan halt den code, vielleicht kann dennis das ja auf git hinzufügen wen ihr es getestet habt
für IPv4
import re,json,requests
import subprocessGet it From IPv64.net Website
v64_api_token=„dein-api-key“
Blocker Node ID
v64_blocker_node_id=„deine-blocker-id“
ipv64.net Api Endpoint
v64_url = „https://ipv64.net/api.php“
Fuehre den Befehl ‚pfctl -t tabelle -T show‘ aus und lies die Ausgabe ein
try:
pfctl_output = subprocess.check_output([„pfctl“, „-t“, „crowdsec_blacklists“, „-T“, „show“], universal_newlines=True)
except subprocess.CalledProcessError as e:
print(„Fehler beim Ausführen des Befehls ‚pfctl -t crowdsec_blacklists -T show‘:“, e)
pfctl_output = „“Regular expression pattern for matching IPv4 addresses
ipv4_pattern = r’\b(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b’
Find all IPv4 addresses in the input string
ipv4_addresses = re.findall(ipv4_pattern, pfctl_output)
Filter out duplicate IPv4 addresses (if any)
unique_ipv4_addresses = list(set(ipv4_addresses))
Erstelle separate Listen von JSON-Objekten für IPv4
ipv4_json_objects = [{„ip“: ipv4_address} for ipv4_address in unique_ipv4_addresses]
ip_list = ipv4_json_objects
ip_list = {„ip_list“: ip_list}
ip_list = json.dumps(ip_list, indent=2)
Drucke den JSON-String
#print(ip_list)
payload = {‚blocker_id‘: v64_blocker_node_id,
‚report_ip_list‘: ip_list
}
headers = {
‚Authorization‘: f"Bearer {v64_api_token}"
}
response = requests.request(„POST“, v64_url, headers=headers, data=payload)
print(response.text)
für Ipv6
import re,json,requests
import subprocessGet it From IPv64.net Website
v64_api_token=„dein-api-key“
Blocker Node ID
v64_blocker_node_id=„deine-blocker-id“
ipv64.net Api Endpoint
v64_url = „https://ipv64.net/api.php“
Fuehre den Befehl ‚pfctl -t tabelle -T show‘ aus und lies die Ausgabe ein
try:
pfctl_output = subprocess.check_output([„pfctl“, „-t“, „crowdsec6_blacklists“, „-T“, „show“], universal_newlines=True)
except subprocess.CalledProcessError as e:
print(„Fehler beim Ausführen des Befehls ‚pfctl -t crowdsec6_blacklists -T show‘:“, e)
pfctl_output = „“Regular expression pattern for matching IPv6 addresses
ipv6_pattern = r’\b([0-9a-fA-F:]+)\b’
Extract IPv4 addresses from pfctl output
ipv6_addresses = re.findall(ipv6_pattern, pfctl_output)
Create a list of JSON objects for IPv6 addresses
ip_list = [{„ip“: ipv6_address} for ipv6_address in ipv6_addresses]
Create a JSON object with the list of IP addresses
ip_list_json = {„ip_list“: ip_list}
Convert the JSON object to a formatted string
ip_list = json.dumps(ip_list_json, indent=2)
Drucke den JSON-String
#print(ip_list)
payload = {‚blocker_id‘: v64_blocker_node_id,
‚report_ip_list‘: ip_list
}
headers = {
‚Authorization‘: f"Bearer {v64_api_token}"
}
response = requests.request(„POST“, v64_url, headers=headers, data=payload)
print(response.text)
kann sein dass bei vielen IPs auf einmal der Request nicht geloggt wird. Ist mir auch aufgefallen dass keine Antwort im Script angezeigt wird.