Rob Ricci

ricci's pfp

Contacting Rob Ricci

Federation handle:

@ricci@discuss.systems

Rob Ricci's Information

Web

ricci.io/

Location

Salt Lake City, Utah, USA

Pronunciation

ɹɒb ɹɪtʃiː

FFXIV main

AST

Rob Ricci's Bio

Research associate professor in the Kahlert School of Computing at the University of Utah. Co-director of the Flux Research Group: flux.utah.edu. I build research infrastructure: cloudlab.us, powderwireless.net, emulab.net, geni.net.

Rob Ricci's Posts

Rob Ricci has 3 posts.


Pinned

Rob Ricci

Hey! Let's talk about and !

If you've ever looked at SSH server logs you know what I'm about to say: Any SSH server connected to the public Internet is getting bombarded by constant attempts to log in. Not just a few of them. A *lot* of them. Sometimes even dozens per second. And this problem is not going away; it is, in fact, getting worse. And attackers' behavior is changing.

The graph attached to this post shows the number of attempted SSH logins per day to one of @cloudlab s clusters over a four-year period. It peaks at about 3.4 million login attempts per day.

This is part of a study we did on our production system, using logs of more than 640 million login attempts, covering more than 1,500 hosts on our side and observing more than 840 thousand incoming IP addresses.

A paper presenting our analysis and a new, highly effective means to block SSH brute force attacks ("Where The Wild Things Are: Brute-Force SSH Attacks In The Wild And How To Stop Them") will be presented next week at by @sachindhke . The full paper is at flux.utah.edu/paper/singh-nsdi

Let's dive in. 🧵


Tags: #ssh #security #nsdi24

Mentions: @sachindhke@mastodon.social


Likes: 0

Replies: 0

Boosts: 0

Rob Ricci

Okay, so let me tell you about my doorbell, from a perspective.

When you push the button by the door, it sends a message over the wireless mesh network in my house. It probably goes through a few hops, getting relayed along the way by the various Zigbee light switches and "smart outlets" I have.

Once it makes it to my utility closet, it's received by a Zigbee-to-USB dongle, through a USB hub (a simple tree network) plugged into an SFF PC. From there, it gets fed into zigbee2mqtt, which, as the name implies, publishes it to my local broker.

The mqtt broker is in the small cluster of nodes I run in my utility closet. To get in (via a couple of switch hops), it goes through , which is basically a proxy-ARP type service that advertises the IP address for the mqtt endpoint to the rest of my network, then passes the traffic to the appropriate container via a veth device.

I have , running in the same Kubernetes cluster, subscribed to these events. Within Kubernetes, the message goes through the CNI plugin that I use, . If the message has to pass between hosts, Flannel encapsulates it in VXLAN, so that it can be directed to the correct veth on the destination host.

Because I like for automation tasks more than HomeAssistant, your press of the doorbell takes another hop within the Kubernetes cluster (via a REST call) so that NodeRed can decide whether it's within the time of day I want the doorbell to ring, etc. If we're all good, NodeRed publishes an mqtt message (more VXLANs, veths, etc.)

(Oh and it also sends a notification to my phone, which means another trip through the HomeAssistant container, and leaving my home network involves another soup of acronyms including VLANs, PoE, QoS, PPPoE, NAT or IPv6, DoH, and GPON. And maybe it goes over 5G depending on where my phone is.)

Of course something's got to actually make the "ding dong" sound, and that's another Raspberry Pi that sits on top of my grandmother clock. So to get *there* the message hops through a couple Ethernet switches and my home WiFi, where it gets received by a little custom daemon I wrote that plays the sound via an attached board. Oh but wait! We're not quite done with networking, because the sound gets played through PulseAudio, which is done through a UNIX domain socket.

SO ANYWAY, that's why my doorbell rarely works and why you've been standing outside in the snow for five minutes.


Tags: #networking #zigbee #mqtt #kubernetes #raspberrypi #Ethernet #metallb #linux #homeassistant #flannel #nodered #hifiberry


Likes: 0

Replies: 0

Boosts: 0


Rob Ricci

In response to this post

ICMP stands for Insane Clown Message Protocol



Likes: 0

Replies: 0

Boosts: 1

Rob Ricci

Hey! Let's talk about and !

If you've ever looked at SSH server logs you know what I'm about to say: Any SSH server connected to the public Internet is getting bombarded by constant attempts to log in. Not just a few of them. A *lot* of them. Sometimes even dozens per second. And this problem is not going away; it is, in fact, getting worse. And attackers' behavior is changing.

The graph attached to this post shows the number of attempted SSH logins per day to one of @cloudlab s clusters over a four-year period. It peaks at about 3.4 million login attempts per day.

This is part of a study we did on our production system, using logs of more than 640 million login attempts, covering more than 1,500 hosts on our side and observing more than 840 thousand incoming IP addresses.

A paper presenting our analysis and a new, highly effective means to block SSH brute force attacks ("Where The Wild Things Are: Brute-Force SSH Attacks In The Wild And How To Stop Them") will be presented next week at by @sachindhke . The full paper is at flux.utah.edu/paper/singh-nsdi

Let's dive in. 🧵


Tags: #ssh #security #nsdi24

Mentions: @sachindhke@mastodon.social


Likes: 0

Replies: 0

Boosts: 0

Rob Ricci

Okay, so let me tell you about my doorbell, from a perspective.

When you push the button by the door, it sends a message over the wireless mesh network in my house. It probably goes through a few hops, getting relayed along the way by the various Zigbee light switches and "smart outlets" I have.

Once it makes it to my utility closet, it's received by a Zigbee-to-USB dongle, through a USB hub (a simple tree network) plugged into an SFF PC. From there, it gets fed into zigbee2mqtt, which, as the name implies, publishes it to my local broker.

The mqtt broker is in the small cluster of nodes I run in my utility closet. To get in (via a couple of switch hops), it goes through , which is basically a proxy-ARP type service that advertises the IP address for the mqtt endpoint to the rest of my network, then passes the traffic to the appropriate container via a veth device.

I have , running in the same Kubernetes cluster, subscribed to these events. Within Kubernetes, the message goes through the CNI plugin that I use, . If the message has to pass between hosts, Flannel encapsulates it in VXLAN, so that it can be directed to the correct veth on the destination host.

Because I like for automation tasks more than HomeAssistant, your press of the doorbell takes another hop within the Kubernetes cluster (via a REST call) so that NodeRed can decide whether it's within the time of day I want the doorbell to ring, etc. If we're all good, NodeRed publishes an mqtt message (more VXLANs, veths, etc.)

(Oh and it also sends a notification to my phone, which means another trip through the HomeAssistant container, and leaving my home network involves another soup of acronyms including VLANs, PoE, QoS, PPPoE, NAT or IPv6, DoH, and GPON. And maybe it goes over 5G depending on where my phone is.)

Of course something's got to actually make the "ding dong" sound, and that's another Raspberry Pi that sits on top of my grandmother clock. So to get *there* the message hops through a couple Ethernet switches and my home WiFi, where it gets received by a little custom daemon I wrote that plays the sound via an attached board. Oh but wait! We're not quite done with networking, because the sound gets played through PulseAudio, which is done through a UNIX domain socket.

SO ANYWAY, that's why my doorbell rarely works and why you've been standing outside in the snow for five minutes.


Tags: #networking #zigbee #mqtt #kubernetes #raspberrypi #Ethernet #metallb #linux #homeassistant #flannel #nodered #hifiberry


Likes: 0

Replies: 0

Boosts: 0