Peter Todd
Legendary
Offline
Activity: 1120
Merit: 1152
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 28, 2013, 06:15:42 PM |
|
It's the same thing. A real bitcoind node isn't useless, so if a useless node claims to be a Satoshi node, we know it's not.
Right, but if we know it's useless, who cares what subver it claims?
|
|
|
|
Peter Todd
Legendary
Offline
Activity: 1120
Merit: 1152
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 28, 2013, 06:21:15 PM |
|
FWIW, these are also the same nodes which have been triggering the incorrect time warnings.
We should have fixed the time nonsense in bitcoin long ago. Despite the imperfections of NTP, there is no excuse for a p2p network (which runs on the same internet as NTP) to fudge the clock. If I have a good NTP lock, and I connect to a node with a different time, that node is wrong and should be kicked immediately. If I don't have a good NTP lock and I connect to a node which does, that node should kick me. I don't know that making whatever this is fix their clocks will cure anything, but it can't hurt, and we should have done it long ago. Emphasis on ifUnfortunately we can't just ship bitcoind out of the box with NTP support, because then whatever NTP servers we use - even if we use a whole bunch - suddenly become a central point of control of the whole Bitcoin network. This is made even worse by how NTP isn't authenticated. Maybe we could get away with abusing https and timestamping servers based on the logic they won't want to be proven to be lying, especially the latter, but ultimately we really just want users to set their damn clocks right. It's ugly and there's no good solution to the problem unfortunately. Satoshi should have picked something more like a six or twelve hour window, rather than two, but widening that window now is a hard-fork even to SPV clients.
|
|
|
|
kjj
Legendary
Offline
Activity: 1302
Merit: 1026
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 28, 2013, 07:05:25 PM Last edit: October 28, 2013, 07:33:23 PM by kjj |
|
FWIW, these are also the same nodes which have been triggering the incorrect time warnings.
We should have fixed the time nonsense in bitcoin long ago. Despite the imperfections of NTP, there is no excuse for a p2p network (which runs on the same internet as NTP) to fudge the clock. If I have a good NTP lock, and I connect to a node with a different time, that node is wrong and should be kicked immediately. If I don't have a good NTP lock and I connect to a node which does, that node should kick me. I don't know that making whatever this is fix their clocks will cure anything, but it can't hurt, and we should have done it long ago. Emphasis on ifUnfortunately we can't just ship bitcoind out of the box with NTP support, because then whatever NTP servers we use - even if we use a whole bunch - suddenly become a central point of control of the whole Bitcoin network. This is made even worse by how NTP isn't authenticated. Maybe we could get away with abusing https and timestamping servers based on the logic they won't want to be proven to be lying, especially the latter, but ultimately we really just want users to set their damn clocks right. It's ugly and there's no good solution to the problem unfortunately. Satoshi should have picked something more like a six or twelve hour window, rather than two, but widening that window now is a hard-fork even to SPV clients. Why would we need to include NTP? Is there some OS out there with network support that can run a bitcoin node, but not NTP? No one should be doing serious work on the internet without a solid clock, and money is about as serious as serious gets. After a while, this really degenerates into the SSL debate. SSL sucks. Why does everyone use it? Because everything else is worse. NTP sucks. Why does everyone use it? Because everything else (including bitcoind's crappy pseudo-NTP) is worse. We were smart enough to avoid creating our own PKI in favor of the existing system that is good enough. Why aren't we smart enough to avoid creating our own clock synchronization system? P.S. pool.ntp.org. The Air Force could probably mess with it if they were willing to crash some planes, but I doubt that anyone else could do much damage. I know we have some timekeeping enthusiasts around. Is the NTP pool more vulnerable than I'm aware of? Edit 2013-10-28 19:32: removed an extra "a"
|
17Np17BSrpnHCZ2pgtiMNnhjnsWJ2TMqq8 I routinely ignore posters with paid advertising in their sigs. You should too.
|
|
|
gmaxwell
Moderator
Legendary
Offline
Activity: 4228
Merit: 8619
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 28, 2013, 07:13:05 PM |
|
Uh. NTP is pretty much completely insecure in practice. And if you have free control of time you can inflate bitcoin randomly. At the same time, nodes don't really need precise time.
|
|
|
|
Peter Todd
Legendary
Offline
Activity: 1120
Merit: 1152
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 28, 2013, 07:39:48 PM |
|
No one should be doing serious work on the internet without a solid clock, and money is about as serious as serious gets.
Bitcoin can handle a clock that's off by roughly an hour off just fine. Clock accuracy just isn't a big deal. We were smart enough to avoid creating our own PKI in favor of the existing system that is good enough. Why aren't we smart enough to avoid creating our own clock synchronization system?
We didn't create a clock synchronization system, we created a peer averaging system. Think correctness vs. consensus. Also, if the PKI in the payment protocol is attacked, all that happens is some users lose their money. If there is a wide-spread NTP attack, especially affecting miners, the whole system can collapse.
|
|
|
|
kjj
Legendary
Offline
Activity: 1302
Merit: 1026
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 28, 2013, 07:48:30 PM |
|
Uh. NTP is pretty much completely insecure in practice. And if you have free control of time you can inflate bitcoin randomly. At the same time, nodes don't really need precise time.
There is insecure, and then there is insecure. Are there any real world attacks that don't require the attacker to be in a position where they could do much worse? Also, note that the time data used by the bitcoin network is also totally unauthenticated and insecure. Our pseudoclock is adjusted based on the version message timestamp, which is trivial to modify. We even potentially reject blocks (which contain a somewhat secure timestamp) based partially on data collected from the totally insecure timestamps reported in the unauthenticated version messages. Hell, for all we know, the bogus timestamps from these nodes are a real world attack test. I know that bitcoin doesn't need an accurate clock, but every node on the network has an accurate clock available anyway.
|
17Np17BSrpnHCZ2pgtiMNnhjnsWJ2TMqq8 I routinely ignore posters with paid advertising in their sigs. You should too.
|
|
|
zvs (OP)
Legendary
Offline
Activity: 1680
Merit: 1000
https://web.archive.org/web/*/nogleg.com
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 28, 2013, 11:59:00 PM |
|
oh, re: the stuff I said earlier 2013-10-28 23:47:36 received block 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa 2013-10-28 23:47:36 Committing 6844 changed transactions to coin database... 2013-10-28 23:47:36 SetBestChain: new best=000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa height=266620 log2_work=73.28903 tx=26163172 date=2013-10-28 23:47:57 progress=1.000002 2013-10-28 23:47:36 ProcessBlock: ACCEPTED 2013-10-28 23:47:36 getblocks -1 to 0000000000000000000000000000000000000000000000000000000000000000 limit 500 2013-10-28 23:47:36 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:36 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266618 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266618 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266618 to 00000000000000095f2b79ac211d800ca268f58d2429b049d2fd64e68ba8db3c limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:37 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:38 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:38 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:38 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500 2013-10-28 23:47:39 getblocks 266619 to 000000000000000177422a58c0204921623eaff044b88d8a0dc4eeeb1e133cfa limit 500
another nice example, when one checks block 266619 normally you'd just get some getblocks -1 to 0000000000000000000000000000000000000000000000000000000000000000 in there, not all the requests for block 266619 and 266620 (and in some cases 266618, 266619, and 266620) needs changing on handling of block requests i would think
|
|
|
|
Cryddit
Legendary
Offline
Activity: 924
Merit: 1130
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 29, 2013, 05:27:49 PM |
|
Suggestions on how to do this that won't turn into a game of whack-a-mole?
I think that these nodes are listening to see where transactions originate. As long as, by listening, they can see where transactions originate, they will continue to listen. The only way to get rid of them is to deprive them of the ability to obtain the information they seek. They are worth getting rid of because they fail to follow protocol in propagation of tx and block information. If this defection from protocol becomes widespread it constitutes a DoS attack, wherein nodes are cut off from the network by having their connections clogged with these useless fake clients. Obtaining the information they seek relies on the fact that the current client propagates transactions to all connected nodes, including them. The only way to get rid of them, therefore, is to quit doing that. Instead, propagate a new transaction to one, two, or three nodes, regardless of how many are connected. Propagate a received transaction to nine or ten nodes, regardless of how many are connected. That will make it very difficult for these eavesdroppers to tell where new transactions originate. And hopefully it will deprive their owners of the motivation to continue to keep up this attack.
|
|
|
|
piotr_n
Legendary
Offline
Activity: 2053
Merit: 1356
aka tonikt
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 29, 2013, 05:32:02 PM |
|
You're right @Cryddit - it's a good solution to broadcast your own txs slowly, like each new second you send it to another peer... there is no rush with it anyway.
But I think they might also be spying for mining nodes - and a mining node wants to propagate new blocks as quickly as possible. So that's a tough problem to solve.
What I do in my client now, I never broadcast locally created txs to nodes that have not sent me any inv. But when they find out what I do, its easy to circumvent - all they need to do is send me an inv once for awhile.
|
Check out gocoin - my original project of full bitcoin node & cold wallet written in Go.PGP fingerprint: AB9E A551 E262 A87A 13BB 9059 1BE7 B545 CDF3 FD0E
|
|
|
piotr_n
Legendary
Offline
Activity: 2053
Merit: 1356
aka tonikt
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
October 30, 2013, 05:07:24 PM |
|
Did you guys also notice that there is an entire subnet 129.132.230.0/24 doing quite a similar stuff...?
|
Check out gocoin - my original project of full bitcoin node & cold wallet written in Go.PGP fingerprint: AB9E A551 E262 A87A 13BB 9059 1BE7 B545 CDF3 FD0E
|
|
|
RoadTrain
Legendary
Offline
Activity: 1386
Merit: 1009
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
November 09, 2013, 02:08:23 AM |
|
Did you guys also notice that there is an entire subnet 129.132.230.0/24 doing quite a similar stuff...?
By the way, they are considered "hub nodes" by blockchain.info https://blockchain.info/hub-nodesTheir subver is somewhat different { "addr" : "129.132.230.69:41037", "services" : "00000001", "lastsend" : 1383962848, "lastrecv" : 1383962839, "bytessent" : 110486, "bytesrecv" : 74817, "conntime" : 1383962013, "version" : 70001, "subver" : "/BTC-ETHZ:0.8.99/", "inbound" : true, "startingheight" : 268607, "banscore" : 0, "syncnode" : true }, What does it have to do with ETH Zurich? It's interesting because ETHZ had quite a few publications about bitcoin.
|
|
|
|
deepceleron
Legendary
Offline
Activity: 1512
Merit: 1036
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
November 11, 2013, 06:59:49 PM |
|
Looks like they're mostly hosted at your-server.de
Whoever is doing this, please set your subVer field appropriately. Otherwise it just makes you look like a DoS attacker ....
The same hosting IP space of bitcoincharts/bitcoinwatch...
|
|
|
|
DeathAndTaxes
Donator
Legendary
Offline
Activity: 1218
Merit: 1079
Gerald Davis
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
November 11, 2013, 07:08:16 PM |
|
Jut curious but does bitcoind support IP blacklisting. Yeah it probably can (and would be better done) at the firewall level but this topic just made me wonder if there is any config option in bitcoind.
|
|
|
|
disclosure
Newbie
Offline
Activity: 38
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
November 17, 2013, 12:53:16 AM |
|
My bitcoind is configured to accept max. 32 connections, i.e. maxconnections=32 in bitcoin.conf. Now I am seeing this: $ ./bitcoind getpeerinfo | grep BTC-ETHZ | wc -l 23 $ ./bitcoind getpeerinfo | grep 129.132.230 | wc -l 23 $ ./bitcoind getpeerinfo | grep 0.8.99 | wc -l 23 They took 70% of my connections. All from the same network with IP address 129.132.230.*. I thought bitcoind is hardcoded to accept only 1 peer per /16 network??
|
|
|
|
wtogami
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
November 17, 2013, 01:29:12 AM |
|
If you are running a bitcoin listening node on Linux, this example iptables rule would help to limit the number of incoming connections coming from the same IPv4 subnet. # Reject TCP connection if quantity of connections per class C network is exceeded. # "--connlimit-above 2" is default in this example. The limit can be increased if # your server has sufficient RAM to handle an increased bitcoin.conf maxconnections= # parameter much higher than the default 150 simultaneous connections. -A INPUT -p tcp --syn --dport 8333 -m connlimit --connlimit-above 2 --connlimit-mask 24 -j REJECT --reject-with tcp-reset # Allow TCP connection if not rejected by the previous limit -A INPUT -m state --state NEW -m tcp -p tcp --dport 8333 -j ACCEPT
# This TCP connection limit per source class C subnet is similar to a Slowloris # HTTP DoS mitigation measure, except it is safe to have a very small limit. # It is non-fatal for legitimate clients to fail to connect because there exist # plenty of other legitimate nodes to choose from that offer the same service. # It is more important to allow random, distributed clients to connect with a 90% # success rate than it is to that ensure 100% of clients are able to connect.
|
If you appreciate my work please consider making a small donation. BTC: 1LkYiL3RaouKXTUhGcE84XLece31JjnLc3 LTC: LYtrtYZsVSn5ymhPepcJMo4HnBeeXXVKW9 GPG: AEC1884398647C47413C1C3FB1179EB7347DC10D
|
|
|
maaku
Legendary
Offline
Activity: 905
Merit: 1012
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
November 17, 2013, 01:31:50 AM |
|
This subnet is owned by a Swiss academic institution: http://whois.domaintools.com/129.132.230.0If anyone knows who this group is, can they please make them aware of the difficulties they are causing?
|
I'm an independent developer working on bitcoin-core, making my living off community donations. If you like my work, please consider donating yourself: 13snZ4ZyCzaL7358SmgvHGC9AxskqumNxP
|
|
|
disclosure
Newbie
Offline
Activity: 38
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
November 17, 2013, 07:02:57 AM |
|
If you are running a bitcoin listening node on Linux, this example iptables rule would help to limit the number of incoming connections coming from the same IPv4 subnet.
So the bitcoind built-in /16 restriction ( https://github.com/bitcoin/bitcoin/blob/master/src/net.cpp#L1331) is not working?
|
|
|
|
wtogami
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
November 17, 2013, 07:07:12 AM |
|
That is outbound, there is no limit for inbound. One IP address could theoretically fill all incoming listening slots of the entire world. That is unless they used something like my iptables rule above. Some of the devs indicated that they would welcome an option for this kind of behavior in bitcoind itself.
|
If you appreciate my work please consider making a small donation. BTC: 1LkYiL3RaouKXTUhGcE84XLece31JjnLc3 LTC: LYtrtYZsVSn5ymhPepcJMo4HnBeeXXVKW9 GPG: AEC1884398647C47413C1C3FB1179EB7347DC10D
|
|
|
piotr_n
Legendary
Offline
Activity: 2053
Merit: 1356
aka tonikt
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
November 17, 2013, 11:00:34 AM |
|
They don't act like the spying nodes from the OP, though - they do send invs, sometimes even very fresh ones. ![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2FF8zGpOI.png&t=665&c=arcA1mRucZaVTQ) ![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2FSjsOqAO.png&t=665&c=bDX4iXjwPFKfOg) source: https://blockchain.info/poolsIt might be a miner's solution to speed up a propagation time of the blocks it mines.
|
Check out gocoin - my original project of full bitcoin node & cold wallet written in Go.PGP fingerprint: AB9E A551 E262 A87A 13BB 9059 1BE7 B545 CDF3 FD0E
|
|
|
disclosure
Newbie
Offline
Activity: 38
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
November 17, 2013, 11:02:32 AM |
|
That is outbound, there is no limit for inbound. One IP address could theoretically fill all incoming listening slots of the entire world. That is unless they used something like my iptables rule above. Some of the devs indicated that they would welcome an option for this kind of behavior in bitcoind itself. I would think being listed in the peer list (getpeerinfo) means the bitcoind has successfully exchanged packets/handshaked with its peers. Even if the restriction is outbound (outgoing packets), it still does not make sense for the multiple nodes from the same /16 to be able to establish connection with my bitcoind.
|
|
|
|
|