country-ip-blocks
tailscale
country-ip-blocks | tailscale | |
---|---|---|
7 | 1,006 | |
640 | 16,759 | |
- | 4.0% | |
9.9 | 9.9 | |
6 days ago | 6 days ago | |
Go | ||
Creative Commons Zero v1.0 Universal | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
country-ip-blocks
- CIDR country-level IP data, straight from the Regional Internet Registries
-
How often do the IP addresses issued to a country change?
Maybe looking at the commit logs/history of https://github.com/herrbischoff/country-ip-blocks gives you some idea about change frequency.
-
Who's Attacking My Server?
Looks not-so reliable. Either fetches a list of blocks from https://github.com/herrbischoff/country-ip-blocks which is a random GitHub repository that collects "straight from the Regional Internet Registries" without any stating any sources nor method for gathering it (which also, I'm assuming, is self-reported data from those registries), or it fetches it from https://www.ipdeny.com/ which currently runs with an expired TLS certificate, which on top of everything, nft-blackhole ignores any issues with certificates anyways, leaving it wide open to MITM attacks (https://github.com/tomasz-c/nft-blackhole/blob/8a656ac0a803a...)
I wouldn't run that if I'd want something to reliably block someone from a specific country.
- Ukraine government websites down as it is bombarded by cyberattacks amid Russian invasion.
-
Create a script to block countries on an Azure NSG
#requires -Version 3.0 -Modules Az.Network function Get-OdCountryIpAddressCidrList { [CmdletBinding( DefaultParameterSetName = 'code' )] param ( # ISO 3166 country [Parameter( ParameterSetName = 'country' )] [string[]] $CountryName, # ISO 3166 2 character code [Parameter( ParameterSetName = 'code' )] [string[]] $CountryAlpha2Code, # IP protocol [Parameter( Mandatory )] [ValidateSet('Ipv4', 'Ipv6')] [string] $Protocol ) begin { $ErrorActionPreference = 'stop' try { $CountryCodeUrl = 'https://restcountries.eu/rest/v2/all' $Iso3166CountryList = Invoke-RestMethod -Uri $CountryCodeUrl -Verbose:$false -ErrorAction Stop $date = Get-Date -Format 's' $CountryList = [System.Collections.Generic.List[psobject]]::new() } # NOTE: When you use a SPECIFIC catch block, exceptions thrown by -ErrorAction Stop MAY LACK # some InvocationInfo details such as ScriptLineNumber. # REMEDY: If that affects you, remove the SPECIFIC exception type [System.ArgumentException] in the code below # and use ONE generic catch block instead. Such a catch block then handles ALL error types, so you would need to # add the logic to handle different error types differently by yourself. catch [System.ArgumentException] { # get error record [Management.Automation.ErrorRecord]$e = $_ # retrieve information about runtime error $info = [PSCustomObject]@{ Exception = $e.Exception.Message Reason = $e.CategoryInfo.Reason Target = $e.CategoryInfo.TargetName Script = $e.InvocationInfo.ScriptName Line = $e.InvocationInfo.ScriptLineNumber Column = $e.InvocationInfo.OffsetInLine } # output information. Post-process collected info, and log info (optional) $info } catch { $PSCmdlet.WriteError( $PSItem ) } } process { $ErrorActionPreference = 'stop' try { if ($PSCmdlet.ParameterSetName -eq 'country') { foreach ($name in $CountryName) { $country = $Iso3166CountryList | Where-Object -Property name -EQ -Value $name if ($country) { $CountryList.Add($country) } else { $CountryNotFoundMessage = "Cound not find ISO 3166-2 country '$name'. ISO 3166-2 list retrieved from $CountryCodeUrl on $date." Write-Error -Message $CountryNotFoundMessage } } } else { foreach ($code in $CountryAlpha2Code) { $country = $Iso3166CountryList | Where-Object -Property alpha2Code -EQ -Value $code if ($country) { $CountryList.Add($country) } else { $CodeNotFoundMessage = "Cound not find ISO 3166-2 country code for '$code' in list. ISO 3166-2 list retrieved from $CountryCodeUrl on $date." Write-Error -Message $CodeNotFoundMessage } } } } catch { $PSCmdlet.WriteError( $PSItem ) } } end { $ErrorActionPreference = 'stop' try { $headers = @{ Accept = 'application/vnd.github.v3.raw' } $IpList = foreach ($entry in $CountryList) { $IsoCode = $entry.alpha2Code $IsoName = $entry.Name $path = '{0}/{1}.cidr' -f $Protocol, $IsoCode [uri]$uri = 'https://api.github.com/repos/herrbischoff/country-ip-blocks/contents/{0}' -f $path.ToLower() Write-Verbose -Message "Retrieving country IPs for $IsoName ($IsoCode)" [PSCustomObject][ordered]@{ Country = $IsoName Code = $IsoCode TopLevelDomain = $entry.topLevelDomain CidrList = ((Invoke-RestMethod -Method Get -Uri $uri -Headers $headers -Verbose:$false).Split([System.Environment]::NewLine, [System.StringSplitOptions]::RemoveEmptyEntries) -split "`n").Trim() CidrListSource = 'https://github.com/herrbischoff/country-ip-blocks/blob/master/{0}' -f $path.ToLower() } } $IpList | Sort-Object -Property Code } catch { $PSCmdlet.WriteError( $PSItem ) } } } $CountryCodeUrl = 'https://restcountries.eu/rest/v2/all' $Iso3166CountryList = Invoke-RestMethod -Uri $CountryCodeUrl -Verbose:$false $nsg = Get-AzNetworkSecurityGroup -Name 'LOL' $port = 8081 ForEach ($country in $Iso3166CountryList) { $CountryName = $country.name If ($CountryName -eq "New Zealand") { $CN = $country.alpha2Code $IPRanges = Get-OdCountryIpAddressCidrList -Protocol Ipv4 -CountryAlpha2Code $CN $IPRangeCidr = $IPRanges.CidrList ForEach ($range in $IPRangeCidr) { IF ($count -eq $null) { $count = 1 } $char = ([char](96 + $count)) $count++ IF ($priority -eq $null) { $priority = 100 } $priority++ $nsg | Add-AzNetworkSecurityRuleConfig -Name "Allow_$($CN)_$($char)" -Description "Allows access from $Countryname" -Access Allow ` -Protocol * -Direction Inbound -Priority $priority -SourceAddressPrefix "$range" -SourcePortRange * ` -DestinationAddressPrefix * -DestinationPortRange * $nsg | Set-AzNetworkSecurityGroup }} }
tailscale
-
List of ngrok/Cloudflare Tunnel alternatives and other tunneling software and services. Focus on self-hosting.
Tailscale - Built on WireGuard. Easy to use. Control server is closed source. Client code available with a BSD3 license + separate patents file.
-
Building a Managed Service Provider Business With Open Source
Tailscale
-
How to update Go version of tailscaled on macOS
I'm using the GitHub version of tailscaled on one of my Macs as a background daemon launched at boot. To upgrade to the latest version, try the following:
- Home Lab Guide
-
🛡️4 Top Database Security Tools in 2024 🏆🔥
Tailscale is a VPN service that makes the devices and applications you own accessible anywhere in the world, securely and effortlessly. It enables encrypted point-to-point connections using the open source WireGuard® protocol, which means only devices on your private network can communicate with each other.
-
Apple Announces Changes to iOS, Safari, and the App Store in the European Union
Might be possible to do using a VPN as long as you can get broadcast/multicast packets forwarded.
Tailscale unfortunately doesn't support it...yet?
https://github.com/tailscale/tailscale/issues/1013
-
GitHub issues from top Open Source Golang Repositories that you should contribute to
Tailscale - Make depaware output patch compatible
-
I have made a smalll NAS server using samba. What is the port to fwd to get to it externally
Tailscale is another way of doing it. I'm using it to access my Pi's Samba shares from my phone but it works from Windows as well.
- Remote Printing
- SSH configuration
What are some alternatives?
crowdsec - CrowdSec - the open-source and participative security solution offering crowdsourced protection against malicious IPs and access to the most advanced real-world CTI.
headscale - An open source, self-hosted implementation of the Tailscale control server
nft-blackhole - Script / daemon to blocking IP in nftables by country and black lists
Netmaker - Netmaker makes networks with WireGuard. Netmaker automates fast, secure, and distributed virtual networks.
cc0-textures - Torrent downloads of free, CC0 licensed, PBR textures
netbird - Connect your devices into a single secure private WireGuard®-based mesh network with SSO/MFA and simple access controls.
masscan - TCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes.
ZeroTier - A Smart Ethernet Switch for Earth
SSHHeatmap - Generates a heatmap of IP's that made failed SSH login attempts.
pivpn - The Simplest VPN installer, designed for Raspberry Pi
fwknop - Single Packet Authorization > Port Knocking
Nebula - A scalable overlay networking tool with a focus on performance, simplicity and security