Skip to content

Instantly share code, notes, and snippets.

@dln
Last active May 1, 2021 16:11
Show Gist options
  • Select an option

  • Save dln/1348882101c4ffb43f103e5e73a8cc68 to your computer and use it in GitHub Desktop.

Select an option

Save dln/1348882101c4ffb43f103e5e73a8cc68 to your computer and use it in GitHub Desktop.
Minimal script to update IP blocklists from various sources
#!/bin/bash
set -eo pipefail
blocklists=(
# Team Cymru bogons lists
https://www.team-cymru.org/Services/Bogons/fullbogons-ipv4.txt
# SpamHaus DROP (Don't Route or Peer)
https://www.spamhaus.org/drop/drop.txt
# SpamHaus Extended DROP (Extended Don't Route or Peer)
https://www.spamhaus.org/drop/edrop.txt
# BlockList.de complete
https://lists.blocklist.de/lists/all.txt
# FireHOL Level1
https://iplists.firehol.org/files/firehol_level1.netset
# SSL Abuse Blacklist
https://sslbl.abuse.ch/blacklist/sslipblacklist.txt
# Greensnow attack list
https://blocklist.greensnow.co/greensnow.txt
# China
https://github.com/firehol/blocklist-ipsets/raw/master/ipip_country/ipip_country_cn.netset
# Russia
https://github.com/firehol/blocklist-ipsets/raw/master/ipip_country/ipip_country_ru.netset
# Iraq
https://github.com/firehol/blocklist-ipsets/raw/master/ipip_country/ipip_country_iq.netset
# Iran
https://github.com/firehol/blocklist-ipsets/raw/master/ipip_country/ipip_country_ir.netset
# Syria
https://github.com/firehol/blocklist-ipsets/raw/master/ipip_country/ipip_country_sy.netset
# Afghanistan
https://github.com/firehol/blocklist-ipsets/raw/master/ipip_country/ipip_country_af.netset
# Saudi Arabia
https://github.com/firehol/blocklist-ipsets/raw/master/ipip_country/ipip_country_sa.netset
# Kazakhstan
https://github.com/firehol/blocklist-ipsets/raw/master/ipip_country/ipip_country_kz.netset
# North Korea
https://github.com/firehol/blocklist-ipsets/raw/master/ipip_country/ipip_country_kp.netset
# Vietnam
https://github.com/firehol/blocklist-ipsets/raw/master/ipip_country/ipip_country_vn.netset
)
ipset destroy -! blocklist-tmp || true
ipset save blocklist | head -n1 | sed 's/blocklist/blocklist-tmp/' | xargs ipset || true
echo ${blocklists[@]} \
| xargs -n1 curl -s \
| gawk 'match($0, /^([0-9/.]+)/, a){ print a[1]}' \
| xargs -n1 ipset add -! blocklist-tmp
ipset swap blocklist blocklist-tmp
ipset destroy blocklist-tmp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment