Obscurity Is a Valid Security Layer - <AUTHOR> https://danielmiessler.com/study/security-by-obscurity/?fb_ref=wfGNVWZlpn-Hackernews <comment><USER2> It's good someone finally took the effort to write this up. When discussing some security by obscurity measure, other people almost invariably come up with the "security by obscurity is bad" slogan without having spent much thought on /why/ it is bad in that instance. Now this piece can be conveniently linked.

Somewhat differently, sometimes security by obscurity is confused with using a proper key. For example, with most webservers you can pretty safely restrict access to a file by giving it a filename containing some key that cannot realistically be guessed. Barring other ways in which an attacker could find out about the presence of the file – which is quite easy to fuckup in some environments, and is why you shouldn't do this if you really want to be secure – someone without the key cannot access the file, and thus it shouldn't be called security by obscurity; the method is public, the key is not.

<comment><USER3> What should be said is that security _only_ through obscurity is bad. Security through obscurity is fine as long as you're not relying on it. At the worst, it doesn't hurt, just don't count on it to save your bacon.

<comment><USER4> > _At the worst, it doesn 't hurt_

I do agree with the article, but at its worst, obscurity _can_ hurt. Obscurity can add complexity, and it's said that "complexity is the enemy of security".

For example, sysadmins and maintainers could lose track of which layers are security and which are obscurity. In turn, this leads to decisions that compromise security because the maintainers overvalued the obscurity layers.

<comment><USER5> Not just added complexity, but added sense of _false_ security. To be in a situation where you consider obscurity even a cursory part of your infrastructure is the moment you are relying on it by the nature of considering it even a fraction of total security.

It is only reasonable to consider when its both insignificant in the total security stem and you have the willpower of a monk to resist ever considering it valuable.

</comment></comment></comment></comment><comment><USER6> I've often felt there was an interesting discussion to have about obscurity. It's interesting because although the infosec community has such a strong reaction to the phrase "security by obscurity", it has a very different reaction to the phrase "obfuscation".

I'd like to propose a distinction between the two:

\- "security by obscurity" would refer to the non-declaration of configuration and parameters

\- "obfuscation" would refer to the deliberate fuzzing of _statistical_ means by which such configuration and parameters can be discovered.

The distinction is admittedly fuzzy, but the idea is that "security by obscurity" is trivially defeated by treating the target system as a statistical problem. If said system can be repeatedly probed, then useful information can be gleaned. With obfuscation, one is deliberately injecting noise into the signal that the attacker is trying to analyze.

What do you all think? Is this a useful distinction? To be perfectly clear, I don't mean to imply that obfuscation is a sufficient security mechanism, but rather:

1\. that obfuscation is more useful than plain-old obscurity

2\. we should understand that infosec attacks are often statistical in nature

Regarding point 2, I think this ends up shedding more light on what, exactly, is wrong with "security by obscurity" as it's often debated.

<comment><USER7> 1\. & 2\. Totally agree.

On point 2 I've recently come to the conclusion that I can't worry about every damn thing. I follow all the ITSec news pretty closely and there's just SO MUCH WRONG with everything (or at least it feels like it). Security researchers seem to love to freak out about everything (it's their job after all)_but I just don't have the time. If something is going to be a likely attack, easily done, remotely, today or next month, then it's something I need to worry about. If this is a theoretical attack based on something happening in the room next door I need to shrug it off, for now. There's many many things that fall in between those two extremes, and that's where I'm afraid I'm not sure what to worry about sometimes.

<comment><USER6> I'd like to follow up on your post because you raise a lot of good points. In particular, we have a problem in infosec whereby "security" is implicitly equated to "security with cryptographic guarantees".

I understand that "cryptographically secure" is the gold standard for infosec, but this misses a certain reality on the ground. Often times, your system doesn't need to be Fort Knox: it just needs to be a more difficult target than the other guy's system.

I think this is where obfuscation comes in. With regards to well-known vulnerabilities, clearly cryptographic-grade solutions are required, but the best defense against zero-day attacks is to make your system hard to probe for odd behaviors. Why waste time doing statistical analyses on a system in the hopes of extracting a faint signal when another system literally responds to a port scan?

I think the camouflage analogy in the article is a good one. Hardening your asset is necessary, but hiding it is even better.

In my former military days, we were always told that "concealment is better than cover". It's hard to pull a flanking maneuver on a target you can't locate, but trivial to do so against a target you simply can't hit. I wouldn't go as far as to claim that the same is true in infosec, but it stands to reason that there's a place for concealment.

<comment><USER8> I think camouflage and decoys are useful analogies.

I run ssh on non-standard ports. Not because I think it makes me any more secure, but because it allows me to either ignore all the automated scans/connections to port 22 altogether, or to proactively blackhole any ip address who attempts to connect to a decoy port 22...

It doesn't mean I don't continue to need to do all the things I need to keep ssh secure as well - keep my sshd updated, disable password auth, shut down root connections, etc...

<comment><USER6> >I think camouflage and decoys are useful analogies.

Indeed I've found that most military analogies work quite well for infosec!

>Not because I think it makes me any more secure, but because it allows me to either ignore all the automated scans/connections to port 22 altogether, or to proactively blackhole any ip address who attempts to connect to a decoy port 22...

This is another excellent point. Not only are we fuzzing the signal with respect to automated attacks, we're also improving the signal-to-noise ratio in our _own_ security analyses.

</comment></comment></comment></comment></comment><comment><USER9> It seems here that the author has a different definition of security through obscurity to many who criticise it.

The important aspect is whether the knowledge required to break the system is the system itself, or the key. AES is not security through obscurity because everyone can look up how it works, and it's only the key that we have to keep secret. Port knocking is the same (just with a weaker key). Moving your SSH to port 24 however is security through obscurity because if anyone knows the mechanics of _how_ you use it, they _can_ use it.

This differentiation is subtle, and can be somewhat of a grey area sometimes, but I find it good at differentiating between the two most of the time.

<comment><USER10> Couldn't you argue that the port SSH listens on is a 16 bit key? It's small and easy to brute force (among numerous other ways it is easy to discover) but I don't really see distinction you are trying to make.

<comment><USER9> Yes, this is what I mean by it being a subtle and not always clear difference, but I think it's usually pretty easy to apply common sense to this.

</comment></comment></comment><comment><USER11> I agree that obscurity has value in security designs --- security is in large part about imposing asymmetric costs on attackers.

I do not believe that port knocking and single-packet authentication are good examples of this; both are sort of textbook examples of cosmetic security mechanisms that are made irrelevant by SSH public key authentication.

<comment><USER12> "I do not believe that port knocking and single-packet authentication are good examples of this; both are sort of textbook examples of cosmetic security mechanisms that are made irrelevant by SSH public key authentication."

If there's a remote-root buffer overflow for sshd that does not involve login at all, doesn't hiding the sshd add quite a bit of value ?

That is, there are attack vectors that we know exist, and that we have seen in the past many times for server daemons, that occur before, and override, any authentication mechanism.

By hiding the service, you take yourself out of that population of low hanging fruit ...

You don't find that valuable ? I personally find it extremely valuable and consider port knocking to be one of the _very few_ security optimizations that has such low cost/complexity for such a pronounced and well defined gain. I would not think of deploying an Internet facing system without port knocking on the daemons that don't need public access.[1]

<comment><USER11> If you believe that sshd might harbor a _preauth_ RCE --- something that hasn't happened in a very long time --- then deploy _real_ security in front of it: stick it on the other end of a simple encrypted tunnel.

<comment><USER12> I agree that port knocking is _not the christ child_. It will not _solve world hunger_ nor will it allow the wolves to lay down with the lambs.

But it's _something_.

<comment><USER13> It's the ROT13 of defense mechanisms.

<comment><USER14> What would you recommend?

<comment><USER13> SSH key with public key auth over VPN.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> The real problem with obscurity as a security layer is that it complicates day to day work that you'd be doing with that system. Each new person needs to be constantly trained and reminded about your specific system quicks and configuration outside the standard norm before they can do work using the system. That has a real cost, and it is a cost analysis question.

<comment><USER16> That really depends on the use case. We too have sshd listening on a non- standard port and the overhead to tell people what to put into their .ssh/config is negligible.

We use SPA only on very few select servers that less people need to access and those just get the shell script they need to run instead of typing "ssh $host".

After about 2 years of running things this way: The time saved in checking system logs in a single week was much more than the time spent on "training" people in those 2 years.

</comment></comment><comment><USER17> There's a number of things I disagree with in the article, but it does have a few good points.

Here's what I disagree with and why:

\- Portknocking. I've found from experience that it's far better to allow SSH access (for example) from only known IP addresses. Portknocking is far too easy to beat and really doesn't impede much.

\- Non-standard ports. Sure if you're only interested in blocking bulk network scanners that limit themselves to known ports. Any manual scan or a solid in- depth scan is going to map every one of the lower 1024 ports, and possibly the rest depending on how interesting the target is.

\- The Tank camouflage example. It all sounds fine and dandy until a maintenance crew roam the desert for 10 days looking for a tank they can no longer see. Same with security and IT... obscurity leads to lots of wasted time when newer techs try to diagnose things that aren't as they seem, and are undocumented. Not only that, but the since the enemy know that the new armour requires a special ammunition to beat, they will just throw new ammo at everything that moves in case it is a tank. i.e. you're going to scan for hidden SSID's, your going to nmap every port, etc etc. Takes more time, but you still get in.

\- If there's a 0-day SSH vector, it's getting owned no matter which port it's on unless your security team are on top of patching. What if the new-hire that's told to go patch all the SSH servers accidentally misses the undocumented one that's running on port 24? It also doesn't matter if there's 10x more hits on port 22 than 24. All it takes is 1. It's that simple.

I just don't think obscurity belongs in an environment where clarity matters so much.

<comment><USER18> > Portknocking is far too easy to beat and really doesn't impede much.

If you have to guess a random 3 port sequence in a 65k port space, how long will it take you to break? at 1 try of 3 ports per second I get almost 9 million years for exhaustive search.

<comment><USER17> Why guess when you can just sniff the network for the sequence?

Port knocking _requires_ the network that you're using to knock is in fact as secure and trusted as the one you're knocking. So there's really no point as you could easily just limit SSH access to that network and save yourself all the bother and risk.

</comment></comment></comment><comment><USER19> Well, yes, technically any amount of obscurity you add to your service increases your overall security.

So let's go. You make a 256 bit level key. That's 256 bits of security there. For each binary thing that must be guessed together with the key (let's call those multiplicative), you gain an extra bit there. So, if you could somehow (what you can't) not disclose your encryption algorithm, you'd gain some easy 3 extra bits of security there.

Now, if you have a secret that can be verified independently from your other secrets (let's call those additive), you'll gain one extra bit of security for every secret that has your overall security level. That is, if you add a 256 bit secure port knocking step (16 knocks on completely random pots) to your 256 bit secure key, you'll get 257 bits of security overall. If you add a 16 bit non-standard port, you'll get some fraction of a bit, starting with some dozens of zeros after the comma.

Thus, since security is all about trade-off, think very hard about the costs of any additive measure you want to create.

<comment><USER20> I think this reasoning is missing something.

The maths assumes that the security of your system is entirely defined by the complexity of your key.

Obscurity gives you the option of hiding the /lock/, which is different.

<comment><USER19> I think you should read my comment again.

Anyway, hiding your lock is additive (spreading fake locks would be multiplicative).

How many bits of entropy does your lock obscurity have again? What does it cost?

</comment></comment></comment><comment><USER21> This argument seems disingenuous. It's no great insight that port knocking reduces unauthorized login attempts. What's disputed is whether it's better to have a system that's rarely challenged vs. a system that's regularly challenged and still holds. The argument against is that adding layers of bad security makes it easier for problems in the "real" security to go undetected or ignored since the obscurity layer works too well.

<comment><USER22> I agree people confuse obscurity with "operational security".

Reducing your footprint, and keeping information disclosure to a minimum isn't obscurity.

On the more specific examples while port knocking is an acceptable security mechanism (so is geoblocking, and even whitelisting specific IP's only) it's again not obscurity, putting connections on random ports is and it can also be a very bad practice because obscurity often works both ways.

In a large organization even one with great documentation and knowledge management things will fall between the cracks, if we take their example to the then while the attacker might be slightly less likely to identify a non standard SSH port (because for some reason they assume that port scanning is expensive) it can also mean that your own security teams and tools can miss them just as easily.

When heartbleed came out for example people run it on the common SSL ports internally, pretty much all of it was patched rather quickly but from time to time you still find an instance of it and usually it's because some developer somewhere decided port 23216 is a good port for SSL.

The attackers are considerably more likely to perform allot of information gathering on their target, more so than internal teams, internal security tools often limit their tests to standard and specified ports because when the security team has a 4 hour window each month to turn their vuln scan a full TCP port scan is probably out of the question on a network with few 1000's of IP's and larger.

By adding unnecessary obscurity to your system you are effectively only increasing the likelihood of you missing something while the attacker is just as likely to find it as anything else.

</comment></comment><comment><USER23> Heavily agree with this. I read people stating "security by obscurity is bad" without really thinking about it all the time.

For example, I think changing the SSH server port and WordPress login pages are a good idea because 1) if a hacker cannot find the login location in the first place, your chance of getting hacked must decrease and 2) the number of intrusion attempts being logged will be significantly less so you can more usefully survey these for targeted attacks.

Of course, relying only on obscurity is a terrible idea but you should have several layers of obstacles so if one fails the security violation will get caught at the next layer. Avoiding security through obscurity completely is more something you should do when designing a secure protocol or algorithm.

<comment><USER24> There is the concept of "Defense in depth", used by the military for many years...

This acknowledges that each layer is bound to have holes, therefore the best you can hope for is to delay the inevitable breach. Therefore, any additional layer you can add to the security increases the time taken and hence gives you a better chance at rebutting the attack.

</comment></comment><comment><USER25> It's still pretty expensive for very little added security benefit, which the added complexity might negate. How many bits of security does this add? 5 or 6? Maybe 32?

People deploy ad hoc obscurity hacks like port-knocking because we have doubts our standard access-control infrastructure (e.g. libssl, SSH). It would be less wasteful to take the resources being spent on these hacks, and pool them together into projects that would boost our confidence in the infrastructure, instead.

I can think of lots of security infrastructure projects that could probably use more resources:

\- The various libssl projects could probably use more resources.

\- There is at least one team working on formal proofs of implementation correctness for libssl.

\- Sandstorm.io is developing ways to move web access control (including CSRF protection) to an intermediate layer, rather than relying on individual web applications to get it right.

\- U2F is trying to bring cheap hardware tokens to web users, but it needs better support across the web.

\- Let's Encrypt/ACME is working on making it feasible to deprecate plaintext HTTP. There's still a lot of distro integration work to be done.

\- There's an IETF working group working on moving transport security into TCP itself (tcpinc). If it's done well (i.e. gets enough eyeballs), this could replace "libssl version hell" with straightforward socket file descriptors.

\- Most developers have no idea how to develop formal proofs of implementation correctness alongside their code. Educational materials would be great, here!

\- There are many, many legacy systems running still known-insecure software/protocols that need to be upgraded or worked around.

</comment><comment><USER26> Moving the SSH port is a bad idea. The article falls into a number of common pitfalls here.

A connection to your SSH server does not usefully equate to someone "trying to hack" your server. If I had $1 for every time I've heard this complaint, I'd be very rich, but it's total rubbish. Stop worrying about it.

The mass scanners that fill your logs with brute force attempts on port 22 are looking for trivially obvious username/password combinations. If there is any chance they could actually get in with this approach, you've screwed up so badly that moving the port will not save you. If you're using key-based authentication, no amount of scanning is ever going to compromise your server, unless the attacker learns your key.

The reason moving your port is pointless is that against an attacker sophisticated enough to have any chance of compromising your SSH server, no amount of hiding the port is going to do more than delay them a few minutes. Compromising SSHv2 is _hard_. You need either a key compromise (difficult to achieve, likely some sort of APT malware against your laptop), or a zero-day sshd vulnerability. Against someone motivated and able to do that, your "clever trick" of moving sshd to port 24 is totally useless.

It's a bad idea to propose, too, as it will require users to either update SELinux rules to allow sshd to bind to a different port, or disable SELinux entirely. And as many of the ports <= 1024 are used for other things, users will tend to do things like bind to ports > 1024, such as 2222. As any system user can bind to ports > 1024, you're actually reducing security, and opening up a potential priv escalation vector (user with unpriv shell access causes sshd to crash via XYZ, starts their own malicious daemon on 2222, steals your credentials, etc).

There are cases where obscurity helps. Reducing the amount of information an attacker has about the environment they are attacking is often a very valid defence, and is something any security audit should consider. Moving the sshd port is not one of these cases.

In short, make sure you're using key-based authentication (ed25519 is preferred IMO, but happy for others to debate this). Make sure password authentication is disabled. Make sure direct root ssh is disabled, and passwordless sudo is disabled. Leave the port sshd listens on well alone - it's just fine where it is.

<comment><USER27> Did you even read the article?

 _Let's say that there's a new zero day out for OpenSSH that's owning boxes with impunity. Is anyone willing to argue that someone unleashing such an attack would be equally likely to launch it against non-standard port vs. port 22? If not, then your risk goes down by not being there, it's that simple._

<comment><USER26> Yes. Please don't insinuate that others haven't read the article. It might be worth reading the HN guidelines here: [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

Also, from the article, please note paragraphs like:

"I configured my SSH daemon to listen on port 24 in addition to its regular port of 22 so I could see the difference in attempts to connect to each (the connections are usually password guessing attempts). My expected result is far fewer attempts to access SSH on port 24 than port 22, which I equate to less risk to my, or any, SSH daemon."

I was pointing out that this is silly. Those "attempts to connect" are totally meaningless, as I explained.

<comment><USER27> He provides a very specific use case (exploiting a zero day) where they are not meaningless.

</comment></comment></comment></comment><comment><USER28> Obscurity is "bad" security because when you're told "how it works" it's usually very weak and easily defeated.

Pairing up obscurity with "good" security should be more of a "do the benefits outweigh the costs?" type of question and only each site can answer this question.

I sincerely believe no one, crosses finger, argues that security by obscurity alone is good security. -.-

</comment><comment><USER29> > Let's say that there's a new zero day out for OpenSSH that's owning boxes > with impunity. Is anyone willing to argue that someone unleashing such an > attack would be equally likely to launch it against non-standard port vs. > port 22? If not, then your risk goes down by not being there, it's that > simple.

You need to compare equal-cost approaches to security. For the amount of effort it takes to use a non-standard port, you could use a real security measure like single-use passwords instead - which would increase your security more?

And you need to measure what your outcomes look like. If there's a new zero- day, do you really think those 5 attacks on the non-standard port won't use it? Do you think a targeted attack wouldn't use it? The result of getting caught in an ssh-scan of the whole internet is relatively benign - your server gets used to send some spam, you wipe it and rebuild. That's not the existential threat that security measures are about preventing.

</comment><comment><USER30> Security BY Obscurity is always bad. This article doesn't address this, but rather as an additional tool.

ie, I wouldn't use telnet to control all of my servers and then think i am being secure because the IP addresses are not put in a server-list.txt on each server.

However, using a secure protocol and not providing a network map on each server does provide a level of obscurity.

</comment><comment><USER31> > Remember, the NSA most likely has great algorithms, but they still don't > _publish_ them.

Not quite: [https://en.wikipedia.org/wiki/NSA_Suite_B_Cryptography](https://en.wikipedia.org/wiki/NSA_Suite_B_Cryptography)

They don't publish _all_ of them, I'm sure, but they did publish Suite B.

<comment><USER32> The ones relevant to the quote are here:

[https://en.wikipedia.org/wiki/NSA_Suite_A_Cryptography](https://en.wikipedia.org/wiki/NSA_Suite_A_Cryptography)

They along with the Type 1 development and certification process are used for stuff they trust the most. Suite B algorithms can be used with Type 1 implementation for very, critical stuff as well. The Type 1 is the key for assurance more than the algorithms themselves. It ensures the protocols and algorithms are rigorously implemented. Includes considerations on RNG's, common coding flaws, covert channel analysis, and TEMPEST shielding.

Only smartcard sector comes anywhere near assurance activities that go into Suite A or Type 1 products in terms of crypto.

</comment></comment><comment><USER33> There is a certain danger with obscurity in it can obscure to your own vulnerabilities. I believe this is most well-known with crypto, where essentially any proprietary crypto algorithm should be assumed to be broken (because crypto is just that hard), but it applies to all forms of security.

To put it another way: public (and popular) security measures have the benefit of having been validated by many eyes. When you choose proprietary security instead (which obsurity requires by definition, otherwise the technique would be known), you're betting that your own security team can do better. Is that a bet you can sometimes win? Perhaps, but I personally wouldn't want to bet too hard.

</comment><comment><USER34> Agreed considering I know someone who web scraped a entire dataset because they were selling 2500 sources for $15,000 a year and the API request were sequential ids 0-2500....so just curl 2500 request and call it a day because you didn't hash your ids

<comment><USER35> By the way, hashing IDs would be a perfect example of security by obscurity if the hash was not salted. You just have to notice that you were given sha256("1234") instead of "1234".

</comment></comment><comment><USER36> The question isn't whether Obscurity provides security at all, but rather if the tradeoff you make with ease of use and maintenance is worth it.

From my experience obscurity is usually trivial for a determined attacker to overcome, and if it's not a determined attacker your normal security layer will probably be insurmountable to an attacker of opportunity.

For the small time (let's say an hour) that it'll add to a determined attacker's time you force your users to use an extra key just to detect the ssh port your using (the example he used in the article).

<comment><AUTHOR> The point is to apply all your real security and then add obscurity afterwards to lower your risk even further.

Wear the armor, then engage your cloaking device.

Don't substitute the cloaking device for the armor, but also don't dismiss the value of not being targeted.

</comment></comment><comment><USER37> Can port knocking be used in the "real world"? In other words, would ~/.ssh/config or some other setting be able to automate the sequence?

I'm picturing some current workflows I use if port knocking was enabled.

In particular, unless there's a way to automate the knocking sequence, SSH'ing in via Ansible would be an issue and a SaaS we use to help with deployments would no longer work.

(Altho I'd imagine making firewall exception rules (e.g. "allow this ip address in") for these services would be a way around that).

<comment><USER38> I used to use something like this in ~/.ssh/config :

      Host Box
      Proxycommand ~/bin/do_knock %h %p

Where do_knock was simply

      #!/bin/sh
      host=$1
      port=$2

      knock $host 1 2 3 4 5
      nc $host $port && exit
      knock $host 1 2 3 4 5
      sleep 1.5
      nc $host $port

Simply, but it worked well enough for a few years.

On android I used to port knocking app that integrated with connectbot, so I had one tap access to the host.

</comment></comment><comment><USER23> For people saying security through obscurity should always be avoided, if you have a web service that is only required internally on the private network, would you make it public?

<comment><USER39> There's a difference between public, as in publicly accessible, and public as in externally visible. In your situation, you should not make it externally accessible, so it doesn't make a difference if it's externally visible or not (though there is no reason to make it externally visible).

<comment><USER23> Is making it externally invisible not a form of obscurity though? If so, why is this not frowned upon as well?

</comment></comment></comment><comment><USER40> I think this is something very unsafe to preach to people.

I'm not sure if this is a joke, or if this person and other comment authors are serious. The idea of Security-by-Obscurity is flawed inherently.

Let me first start by defining security: "the state of being free from danger or threat." Now this is definitely not the best definition, it's just the one that came up when I googled the word and so this will work for now.

The only way for security by obscurity to work, is for you to be able to design a system that is impossible to figure out or comprehend.

Let's assume that one was able to design a system that is incomprehensible to anyone. Let's initially ignore the fact that if the system is not understandable to the user, it couldn't have been invented in the first place.

I'll pose these questions:

      - If the system is so obscure to foreign users, how will it be maintained
      - If someone who knows the secrets of how this system is fired, what happens if they sell of their knowledge?
      - What would happen if there turns out to be a bug in this massive amorphous blob of crap that no one understands? How do you start debugging it without invalidating it's "security"

I'll never use security-by-obscurity as a model. This is mainly due to one of my core beliefs: there are much smarter people out in the world then you. If you think "this is un-guessable" or "this is unbreakable" when slapping a bitshift on a stream of data and calling it "encryption" you need to understand that there are people smart enough in this world that can smell that from a mile away.

I've worked with some of these people, and before then I may have said "yea security by obscurity" is fine; but having worked along side people who are FAR more intelligent then I am. Anything I can think of to circumvent their actions can be trivially figured out by someone out there who is smarter then I am.

</comment><comment><USER41> Great sentiments. I don't see security being discussed nearly enough in terms of risk and ROI. I usually see it discussed only in absolute terms, i.e. unless a solution fits the "CIA" model to a T, then it's unacceptable.

I think that we should layer the CIA triad on top of the Time-Cost-Quality triad when implementing application security.

</comment><comment><USER38> Nice work. There are a lot of claims out there about this sort of thing, and not a lot of hard data.

If you had used a port other than 24 you would have seen 0 attempts. Port 24 is still scanned fairly frequently, something like 22X where X !=2 is almost never scanned. If you block port 22 and use iptables to redirect a random high port to port 22, you'll never see any connection attempts - unless someone is really targeting you.

I did a bunch of reporting/math against our data a few months ago the last times this came up on reddit. I found a few interesting things and tried to counter some bogus claims.

First bogus claim: Shodan scans everything, so you can't hide.

I checked for the entire month of feburary for a large address space, shodan scanned these ports:

0 3 7 11 13 15 17 19 21 22 23 25 26 37 49 53 67 69 70 79 80 81 82 83 84 88 102 110 111 119 123 129 137 143 161 175 179 195 311 389 443 444 445 465 500 502 503 504 515 520 523 554 587 623 626 631 666 771 789 873 902 992 993 995 1010 1023 1025 1099 1177 1200 1234 1311 1434 1471 1604 1723 1777 1883 1900 1911 1962 1991 2000 2067 2082 2083 2086 2087 2123 2152 2181 2222 2323 2332 2375 2376 2404 2455 2480 2628 3000 3128 3306 3386 3388 3389 3460 3541 3542 3689 3749 3780 3784 3790 4000 4022 4040 4063 4064 4369 4443 4444 4500 4567 4848 4911 4949 5000 5001 5006 5007 5008 5009 5060 5094 5222 5269 5353 5357 5432 5555 5560 5577 5632 5672 5800 5900 5901 5984 5985 5986 6000 6379 6664 6666 6667 6881 6969 7071 7218 7474 7547 7548 7657 7777 7779 8000 8010 8060 8069 8080 8081 8086 8087 8089 8090 8098 8099 8112 8139 8140 8181 8333 8334 8443 8554 8649 8834 8880 8888 8889 9000 9001 9002 9051 9080 9100 9151 9160 9191 9200 9443 9595 9600 9943 9944 9981 9999 10000 10001 10243 11211 12345 13579 14147 16010 17000 18245 20000 20547 21025 21379 23023 23424 25105 25565 27015 27017 28017 30718 32400 32764 37777 44818 47808 49152 49153 50070 50100 51106 55553 55554 62078 64738

2nd bogus claim: "A single host on a decent connection will be able to scan all ports on a /16 in less then an hour. I see scans like this all the time."

It is the same amount of work to scan every ipv4 address on port 22 as it is to scan every port on a /16.

Every port on a /16 is 2^32 (65536 ports on 65536 hosts) or 4294967296 ports.

Saying it can be done on a "decent" connection in less than an hour, at 4294967296 ports in 3600 seconds works out to 1,193,046 packets/second.

Line rate gigE maxes out at 1,488,095 pps. You would need to saturate a full gigabit for an hour to fully scan a /16 - and a full gigabit at whatever site you are scanning. with 0% packet loss.

3rd bogus claim: (re port knocking) Faster internet speeds means more scanning power which means that it gets easier to find your hidden service

If I am using a non cryptographic port knocking daemon with a 4 port knocking sequence, that has 65536^4 combinations. One should probably figure out what the length of the shorter De Bruijn sequence is for guessing 4 port sequences, which I believe just works out to around "only" 65536^4 packets instead of 4 times that. Also assuming the correct sequence would be found halfway through, that would mean 9223372036854775808 packets required to be sent. At line rate gigE, that would take 6198107000463 seconds, or 196,540 years. Only 19,654 years at line rate 10gig though!

<comment><USER42> >you block port 22 and use iptables to redirect a random high port to port 22, you'll never see any connection attempts

This is a really bad idea, stick to lowports. Despite SSH doing host authentication, you really don't want non-root users being able to hijack the sshd port.

<comment><USER43> If they are using iptables to do the redirect instead of changing sshds port, wouldn't an attacker need a way to change/disable iptables, which also requires root? There shouldn't be a way for an application to put itself in front of iptables.

<comment><USER42> Ah! You're right, I didn't think that through. iptables is indeed a safe way to do this, however changing your port in the configs to a highport isn't.

</comment></comment></comment></comment><comment><USER44> The phrase I use is "Security through obscurity provides temporary security which degrades over time"

</comment><comment><USER45> Its valid in a way, but the second you count it as one of you security layers you risk relying on it...and thats where it becomes dangerous.

Should really be more of a bonus layer so to speak.

</comment><comment><USER46> As long as the goal of obscurity isn't to hide a weak or poor underlying security system, there might be some benefit to obscurity as an ADDITIONAL layer, as claimed.

</comment><comment><USER47> I mean, I guess a password can be considered "security by obscurity", in the sense that it relies on keeping your password secret, the lack of knowledge about your password.

So, sure, obscurity is a valid security layer.

The problem is when people start thinking that port knocking is something different than a needlessly (emphasis on needlessly) complex method of implementing a very weak system-wide password.

</comment><comment><USER48> Passive scans that hit your port 22 can hardly be called a security issue, and changing your port number definitely does not add any sort of security. This is a confusing concept, since changing your port number might decrease the probability your server gets taken advantage of (temporarily). It's a trivial fix for attackers everywhere to scan multiple ports instead of one at marginal cost.

</comment><comment><USER49> I know some people who try to extend this thinking to software libraries. Ask yourself if the world would be better served if OpenSSL was closed-source and therefore could not be analyzed for bugs so easily by attackers. It's a slippery slope... but I see regular arguments why a particular piece of software is "technically" more secure by some level of obscurity (restricting access).

</comment><comment><USER50> The other thing to consider is that obscurity makes threat detection easier. If your sshd_config is set up for some random port and you get 18K attempts, then it's pretty clear that someone is interested in your server. If you're running it on port 22, then a slew of login attempts could be difficult to disambiguate from regular portscanning weather.

</comment><comment><USER51> It is only useful if you don't publish open source software.a new, underfunded open source project is not the best place to find top-notch security. All the code is published so there is no obscurity, either. It takes a long time for security to be worked out, and in the meantime, systems can be compromised by dedicated hackers.

</comment><comment><USER52> Why is moving the SSH port Security by Obscurity? Its log cleaning by avoiding annoying portscans, nothing else.. There is NO Security gained by moving the port. If you think random portscans are a security risk to your SSH server you should seriously reconsider your SSH configuration.

<comment><USER53> So you don't think you're less likely to be compromised by a 0day OpenSSH worm if your sshd is running on a non-standard port? Why?

<comment><USER54> You might not get compromised in the first wave of IP scanners that try the 0day on port 22, port 2222, and maybe a few other common alternatives. This first wave will pass in about 5 minutes.

Subsequent waves will just try every port. This isn't costly, they have an army of compromised machines from the first wave.

<comment><USER53> Can you give me an example of a real-world worm that has scanned every port on every system on the internet? I haven't seen one, but if it exists, I'd be curious to see it. I'm speaking based on the actual exploits I've seen in the wild over the past 15-20 years, not what is hypothetically possible.

<comment><USER54> Not every port, but maybe you remember this: [http://arstechnica.com/security/2013/03/guerilla- researcher-...](http://arstechnica.com/security/2013/03/guerilla-researcher- created-epic-botnet-to-scan-billions-of-ip-addresses/) The article also details an earlier cataloging where a researcher probed 18 ports 3-4 times a day over the ipv4 address space. Tools like ZMap or MASSCAN make it easy for anyone to scan as many ports as they can, but I haven't heard of any worm that systematically tried all 65535 ports of all addresses. Though I would bet a lot of money that an OpenSSH 0day that bypassed all authentication would result in several such worms from multiple actors who already control hundreds of thousands of devices.

</comment></comment></comment></comment></comment><comment><USER32> Obfuscation has been one of my strongest measures for security for a long time. Cold War espionage writing taught me it's absolutely critical to defeating nation-state opponents given they'll always outsmart your specific, known techniques. What obfuscation does, if used effectively, is require the attacker to already have succeeded in some attack to even launch an attack. Defeating that paradox forces them to attack you in many ways, increasing work and exposure risk. The more obfuscation you have built in, the more that goes up. Very important moves to keep them effective are to ensure the obfuscation is invisible from users' or network perspective, make sure obfuscation itself doesn't negate key properties of security controls, make darned sure there are security controls rather than only obfuscation, only a few individual people knowing the obfuscations, and air gapped (or guarded) machines controlling them.

Here are some obfuscations I've used in practice with success, including against strong attackers, per monitoring results, third party tests, and occasional feedback from sysadmins that apply them or independently invented them:

1\. Use non-x86 and non-ARM processor combined with strong Linux or BSD configuration that also _advertises as x86 box_. Leave no visible evidence you're buying non-x86 boxes. This can work for servers. Some did it with PPC Mac's after they got discontinued. This one trick has stopped so many code execution attempts for so long it's crazy. I really thought a clever shortcut would appear by now outside browser Javascript, memory leaks, or something. An expansion on it with FPGA's is randomized instruction sets with logs & fail- safe for significant, repeated failures.

2\. Non-standard ports, names, whatever for about everything. Works best if you're not relying on commercial boxes that might assume specific ports and such. So, be careful there. This one, though, just keeps out riff raff. Combine it with strong HIDS and NIDS in case smarter attackers slip up. Don't rely on it for them, though.

3\. Covert, port-knocking schemes. An example of a design I think I modified and deployed was SILENTKNOCK. It gives no evidence a port-knocking scheme is in use unless they have clear picture of network activity. Even still, they can't be sure _how_ your traffic was authorized by looking at the packets. Modifications to that scheme that don't negate security properties and/or use of safety-enhanced languages/compilers can improve its effectiveness. My deployment strategy for this and guards was a box in front of the server that did it transparently. Lets you protect Windows services prone to 0-days. Think it stopped an SSH attack or something on Linux once. Can't recall. Very flexible. Can be improved if combined with IP-level tunneling protocol machine-to-machine in intranet. Which can also be obfuscated.

4\. Use of unpopular, but well-coded, software for key servers or apps. I especially did this for mail, DNS, web servers, and so on. Black hat economics means they usually focus on what brings them the most hacks for least time investment. This obfuscation counters their economic incentive by making them invest in attacking a niche market with almost no uptake. Works on desktops, too, where I recommended alternative Office suits, PDF readers, browsers, and so on that had at least same quality but not likely same 0-days as what was getting hit.

5\. Security via Diversity. This builds on 4 where you combine economics and technology to force black hats to turn a general, one-size-fits-all hack into a targeted attack specifically for _you_. You might choose among safe libraries, languages, protocols, whatever without advertising their use in the critical app or service. Additionally, there's work in CompSci on compilers that automatically transform your code into equivalent, but slightly different, code with different probabilities of exploits due to different internal structure. That's not mature, yet, imho. You could say all the randomization schemes in things like OpenBSD and grsecurity fit into this too. Those are more mature & field-tested. If Googling, the key words for CompSci research here are "moving target," "security," "diversity," and "obfuscation" in various combinations.

6\. My old, polymorphic crypto uses obfuscation. The strongest version combined three AES candidates in counter mode in layers. The candidates, their order, the counters, and of course the keys/nonces were randomized with exception being same one couldn't be used twice. That came from only criticism I got with evidence: DES meet in middle. FPGA's got good at accelerating specific algorithms. So, I modified it to allow weaker ciphers like IDEA or Blowfish in middle layer but _no less than one_ AES candidate in _evaluated configuration and implementation_ preferrably on outer layer. Prefferably two AES + 1 non-AES for computational complexity. All kinds of crypto people griped about this but never posted a single attack against such a scheme. Whereas, I provably stop one-size-fits-all attacks on crypto by layering several randomly with at least one strong one. Later, I saw TripleSec do a tiny subset of it with some praise. Also convinced Markus Ottella of Tinfoil Chat to create a non-OTP variant using a polycipher. He incorporated that plus our covert-channel mitigations to prevent traffic analysis. Fixed-size, fixed- transmission is obfuscation that does that I learned from high-security, military stuff.

7\. Last one, inspired by recent research, is to use any SW or HW improvements from academia that have been robustly coded and evaluated. These usually make your system immune to common attacks [2], mitigate unauthorized information flows [3], create minimal TCB's [4] [5], use crypto to protect key ops [6], or obfuscate the crap out of everything [7]. I mainly recommend 1-6, though. ;) Then, don't advertise which ones you use. Also, I encourage FOSS developers to build on any that have been open-sourced to get them into better shape and quality than academics leave them. Academics tend to jump from project to project. They deserve the effort of making something production-quality if they designed a practical approach and kindly FOSS'd the demo for us.

[1] [http://www-users.cs.umn.edu/~hopper/silentknock_esorics.pdf](http://www- users.cs.umn.edu/~hopper/silentknock_esorics.pdf)

[2] [https://www.cis.upenn.edu/acg/softbound/](https://www.cis.upenn.edu/acg/softbound/)

[3] [https://www.cs.cornell.edu/projects/fabric/](https://www.cs.cornell.edu/projects/fabric/)

Note: See related project in bottom-right for other good tech this builds on or was inspired by.

[4] [http://genode.org/](http://genode.org/)

[5] [https://robigalia.org/](https://robigalia.org/)

[6] [https://theses.lib.vt.edu/theses/available/etd-10112006-2048...](https://theses.lib.vt.edu/theses/available/etd-10112006-204811/unrestricted/edmison_joshua_dissertation.pdf)

[7] [http://www.ics.forth.gr/_publications/papadog-asist- ccs.pdf](http://www.ics.forth.gr/_publications/papadog-asist-ccs.pdf)

<comment><USER55> The recommendation to use rarely employed software is a nice example of a trap of obscurity. Enough eyes does indeed make bugs shallow.

How do you decide that a piece of software is "well-written"? Even very strict review processes missed critical issues... and none of those are team for rare software.

Instead, the proper advice is to reduce attack surface, not rely on some allegedly obscure piece of software.

Using results from academia is often supremely impractical. The actual software and designs are often unavailable or perhaps impossible, very definitely unverified.

Your homegrown CTR crypto might expose you for a related key attack. How do you know, since nobody targets it, until it is broken?

Guessing target architecture given an exploitable but is trivial. You need a simplest of data leaks. There aren't many options available either. You can use x86, MIPS or arm, the latter two in big endian or little endian. Other much more unlikely targets can be POWER or ia64. Custom micros can be PIC or MCP51, maybe Atmel. That gives only a bunch of options to try out.

You already have to tangle with much stronger security measures such as ASLR or NX. Or various operating systems.

<comment><USER14> I would label ASLR as an obscurity measure.

<comment><USER32> It is an obfuscation. It tries to obscure where something will be rather than directly prevent or detect the attack as strong controls do. Useful, as other obfuscations are, to add speedbumps in for the attacker while preserving some level of compatibility with existing code or performance that strong security might sacrifice. That an obfuscation was recommended in a counterpoint against obfuscations was most interesting. :)

</comment></comment></comment></comment><comment><USER56> Agree that changing SSH ports on public facing servers is a great use case for obscurity but I hate when "security minded" people use that inside private data centers which just makes scp/rsync etc. very annoying without adding the same security value.

</comment><comment><USER57> I'm not even sure if I agree or not. I get the point, but I kinda _want_ random attack bots to try logging into my sshd with common passwords. It's like a free security scan!

<comment><USER55> Use a separated or virtualized clone in a honeypot though. It is not good to risk your main servers and security for this.

<comment><USER42> This shouldn't qualify as a security risk, if it does there's something _very_ wrong with your setup.

<comment><USER55> Of course. But in case something is seriously wrong, you probably want the compromise to happen on an isolated system and not main production one or one containing critical data.

Separation of concerns and compartmentalization are both very good things from security point of view.

</comment></comment></comment></comment><comment><USER58> I just checked my home ssh endpoint, which runs on a non-standard port on my firewall. I was surprised to discover there have been zero scan attempts.

I am using comcast xfinity for my home internet access.

</comment><comment><USER59> Moving the SSH port if you are already using port knocking with SPA is kinda useless, nevertheless I agree with the premise of the article, I really like the M1 analogy.

</comment><comment><USER60> I think port knocking is like anti virus ... it makes you feel safe so you run obsolete software and get p0wned

</comment><comment><USER61> A valid security layer, but obscurity is not security.

</comment><comment><USER62> This argument is a strawman. Does OP have a real example of someone arguing that obscurity as a layer on top of good security is a bad thing?

<comment><USER63> I hear people call moving the ssh port "security by obscurity" all the time. For instance:

[http://serverfault.com/questions/189282/why-change- default-s...](http://serverfault.com/questions/189282/why-change-default-ssh- port)

[http://serverfault.com/questions/316516/does-changing- defaul...](http://serverfault.com/questions/316516/does-changing-default-port- number-actually-increase-security)</comment></comment>


Ask HN: Is there a streaming client for HN? - <AUTHOR> Similar to reddit-stream.com. <comment><USER2> Not an official one. [http://hnstream.com/](http://hnstream.com/) has a simple API and seems to work decently well, but it doesn't have the (sort of) nice interface that reddit-stream.com has.

</comment><comment><USER3> Also, have a look at irc://irc.freenode.org/#hn</comment>


Remote Code Execution for Java Developers - <AUTHOR> https://medium.com/cisco-amp-technology/remote-code-execution-for-java-developers-84adb8e23652 <comment><USER2> As a novice Java developer I really enjoyed this write up. Context is set, Java mechanisms are explained, and the attack is demonstrated. I am willing to bet not many Java developers have a good grasp of these language features, let alone how they can be abused.</comment>


Ask HN: Please review. Are we making something that people want? - <AUTHOR>

Hi fellow HNers,
Can you please have a look on our startup and give me your feedback?
Bear in mind that it's still work in progress. We would like to see if we're on the right track.
Basically, "are we building something that people want?"
Here's the link: http://blindoptimists.com Invitation code: hn.sandtable
Thanks in advance. <comment><USER2> Well okay, you know what? I liked this more than I expected.

I liked the look (I am sucker for bright colours). I liked the fact that I could try without signing up. I liked the fact that it is simple. I liked the popup offer of a super-brief tutorial.

So the idea is that you can sms/twitter/email your entries to this thing? If so sure, it could be useful. Personally I use neither twitter nor facebook (yes yes I know, who let Miss Daisy in here) so I would be interested in direct web entry, email and SMS.

Basically there are two kinds of personal finance applications that I would consider. My first preference would be for something quite sophisticated like wesabe.com which ideally automatically gets your transactions from your bank and so all you need is to categorise and analyse.

But, my bank lives somewhere between the dark and middle ages, and I can not automatically export to wesabe. While they do try their best to allow manual import, I find that is too much hassle especially for a task I would be avoiding anyway. So, the next best thing is something that makes manual entry as-you-go super simple, and I think you have done a good job at that. I would consider your site, even more if there was a syncing iphone app client for browsing the results and inputting data yet another way.

Little nitpicks - I did see "please wait" more than I would normally like to, and the calendar popup does not share the look and feel of the rest of the design.

<comment><AUTHOR> Wow. Thanks a lot for your quick reply.

Yes, we would like to decentralize the whole process of inputting transactions from web.

Well, we build this to solve our own problems, and from years of experience, we know we hate having to sit in front of computer everytime we come back home just to input transactions.

We have started working on Twitter and email. Sms is still on plan since we're not sure if people would like to spend 25c to input their transactions.

Regarding your banks. I have to agree 100% with you. Both my cofounders live in Indonesia. We hardly have proper internet banking there, let along importing transactions.

iPhone, Blackberry, Android and Pre is definitely on our plan. There are a lot we would love to do. Have been trying hard to get focus on finishing one by one.

Again, really thanks for your reply. Appreciate it.

<comment><USER2> Some people are on texting plans so they don't pay for SMS. Oh and thinking about this some more, a really good input method would be voice-to-text services such as jott. Frankly, I can't imagine you can go too wrong having a lot of variety in input methods. From looking at sites that have done this right (eg. toodledo - check out the input methods they support, their syntax has some similarities to yours), the secret seems to be to have a robust mature API into your system, and then people will be motivated to provide the gateways with their favourite applications even if you don't.

Feel free to ping me when you have more to test-drive, my e-mail address is in my profile.

<comment><AUTHOR> Thanks for a lot of your suggestions. That jott service is definitely very interesting. I'll let you know again when we have new releases.

</comment></comment></comment></comment><comment><USER3> Overall it is a good looking and fairly slick first pass at this. It would seem that you are on the right track for a simple account management system.

That being said criticism is the best way to make a product better so here are things that I would change:

1\. Do not force the user to enter a dollar sign every transaction. If I want to say "10 sandwich" assume that because there is only one number that is the dollar amount. It does not seem like much but it saves two keystrokes for every entry. It's the little victories that make a user feel good about using the service.

2\. Make the please wait windows go away. It is very jarring. That task should be handled in the background and updated via some Javascript.

3\. Get rid of the flash and use a Javascript library for the graphs. Unless you are offering video there should be no need for flash.

<comment><AUTHOR> Thanks. Yes, we're looking into making no 1 and 2 happen asap.

We've look at few JS libraries, but, they're not as good looking as Flash one. What is the major drawback of Flash you think? Isn't most people's machine got Flash installed these days considering YouTube etc? Thanks

<comment><USER3> It's pretty easy to do number 1. use a regex ([0-9]*) and check if there is more than one group of matched values. If there is more than one group then you can either error it out or do some more sophisticated checking(i.e. 100 meal at 10:50pm, two numbers but easy to discern what the intent was) number two is a bit more difficult but still fairly easy.

</comment></comment></comment><comment><USER4> I like it very neat and simple.

One comment: please do expand the currencies you allow :) I liked the idea but wouldnt use it because Im in the UK

(and yes I know I could use $ and mean £ but it doesnt feel as slick :))

<comment><AUTHOR> So, you're saying, you prefer to be able to input using the currency that you set? Or, just for display?

Example, you can input "Books from Amazon UK for £10.95"? Or, simply just for display?

Thanks

<comment><USER4> Well either really - certainly display :) Input would be nice but I suppose not essential.

</comment></comment></comment><comment><USER5> I really like the idea, what I don't like about other money management systems is that they connect with your bank account, but if you live outside the united states you can't use them.

</comment><comment><USER6> The dialog boxes could be better, and for some unknown reason, the income/expense charts always overlaps them (I'm using ff3.07 on linux).

<comment><AUTHOR> Okay. We'll make sure to iron out that bug. We'll try to reproduce it based on your information. Thanks!</comment></comment>


A very small Window manager - <AUTHOR> https://github.com/nautical/piwm Basic window manager written in C in 45 lines of
X-code. <comment><USER2> I've been very happy with i3 for some years now. It's minimalistic, stable, and easy to configure, but with enough features for it to be useful. smem shows it's using about 1.7 MB of dirty private memory on my system right now, and that's small enough for me.

<http://i3wm.org>

<comment><USER3> I love gnome-shell interface-wise, but it tends to be a real memory hog for something mostly just sits in the background and lets me switch windows (currently 1.1GB VM, 130MB RSS)...

<comment><USER2> i3 is not related to gnome or the gnome-shell in any way.

<comment><USER3> I know; I'm just mentioning (ok, complaining about) something which goes in completely the opposite direction...

</comment></comment></comment></comment><comment><USER4> Any tips for compilation on Mac OS X?

20:23:46 $ gcc piwm.c -o piwm -lX11 -lXrandr ld: library not found for -lX11 collect2: ld returned 1 exit status

<comment><USER5> I believe you'll want this: <http://xquartz.macosforge.org/landing/>

There may also be homebrew packages for the X11 headers/libs, but I believe XQuartz is the current popular way to do it.

</comment></comment><comment><USER6> while quite a bit more complex than this (2200 lines rather than 50), dwm[1] is a fairly complete tiling window manager, with extremely readable code.

[1]: <http://git.suckless.org/dwm/tree/dwm.c></comment>


Rhode Island Bill Would Impose Fee for Accessing Online Pornnography [pdf] - <AUTHOR> http://webserver.rilin.state.ri.us/BillText/BillText18/SenateText18/S2584.pdf <comment><AUTHOR> Fun bit:

(a) An Internet service provider, as defined [...] shall provide with any Internet service or product sold, leased or distributed, a digital blocking capability that renders inaccessible sexual content and/or patently offensive material[...] (c) Any digital blocking capability may be deactivated after a consumer: [...] (4) Pays a one time twenty dollar ($20.00) digital access fee.

And:

The attorney general or a consumer may seek damages of up to five hundred dollars ($500) for each piece of content that was reported but not subsequently blocked.

And the final summary:

This act would require Internet service providers to provide digital blocking of sexual content and patently offensive material. It would allow consumers to deactivate digital block upon payment of a twenty dollar ($20.00) fee. This act would take effect upon passage.</comment>


Fedora CoreOS Out of Preview - <AUTHOR> https://fedoramagazine.org/fedora-coreos-out-of-preview/ <comment><USER2> The positive headline hides bad news for those of us who run CoreOS. CoreOS will be out of support soon(?). Migration instructions have been announced, but not written yet...

There is a CoreOS fork at [https://www.flatcar- linux.org/](https://www.flatcar-linux.org/) promising seamless continuation. I have no experience with or further knowledge about it.

<comment><USER3> Is there a firm date for this? The original statement was "at least to the end of 2019". My employer uses CoreOS Container Linux extensively. It's really frustrating not knowing when the hammer will drop.

I'm not sure Flatcar Linux will make it through our security team. I'm "looking forward" to the migration guide to see how much pain i'm in for!

<comment><USER4> Chris from Kinvolk here.

We're happy to talk about what you need on the security front. Some of the folks working on Flatcar Container Linux have a very strong security background; worked on AWS' EC2 security team, do regular pentesting for distributed systems[1], have reported dozens of security issues to upstream projects packaged in Flatcar Container Linux, including the kernel.

We've just now started breaking away from the upstream project, and updating packages. Addressing any open security issues is front and center in our efforts. If you have concerns we'd love to hear them.

We worked with CoreOS team for years (was our founding project) and they trusted us on the security front. We feel that if you trusted CoreOS and know our team + background, you should have just as much trust in Kinvolk.

[1] [https://www.youtube.com/watch?v=ze1vgh8sjlE](https://www.youtube.com/watch?v=ze1vgh8sjlE)

<comment><USER3> Hi Chris,

Thanks for the informed response. To be honest I hope Flatcar does well, I notice the Docker version has been updated on your edge release - long overdue from the upstream project!

I will let you know if our security team has any issues if and when they look at it.

Thanks for giving everyone the option of staying on Container Linux!

<comment><USER4> The whole point of CoreOS Container Linux was to deliver a steady stream of security/software updates. We've been eager to update packages for Flatcar Container Linux but have wanted to maintain as much compatibility as possible for as long as possible. Fairly soon, however, we'll be introducing an updated kernel and user space (systemd, Docker, etc.) into the alpha channel. For us, this will mark the point where we feel like we're fully taking the reins from CoreOS and carrying forward the original objectives.

</comment></comment></comment></comment></comment><comment><USER5> Ignition is a killer feature, so much better than cloud-init, glad to see it surving and being actively worked on.

</comment><comment><USER6> Is this the best solution if I want a standalone bare metal server that can spin up VMs? I'm looking for the closest analog to for example, an open source digitalocean style platform. Also interested in something that lets me manage CUDA/TF/PyTorch jobs. I know and understand docker and kvm but not kubernetes yet. TBH I find this entire space totally confusing.

<comment><USER7> If Ubuntu is acceptable, Canonical LXD/LXC is worth looking at - containers, but full OS ones. Just so simple to configure and use, and minimal overhead.

Have used it without much problems for all kinds of workloads.

<comment><USER8> LXD will fully support KVM soon, too.

</comment></comment></comment><comment><USER9> Should I be using CoreOS for my containers?

Generally I've been using either Ubuntu or Alpine as bases.

Also it looks to be Red Hat based? Is there a Debian equivalent?

<comment><USER10> I think CoreOS is more intended for use as a container host - so you'd run CoreOS on a VM or bare metal, and that machine would run your Ubuntu/Alpine containers.

<comment><USER9> Ah I see. I totally missed that.

So that's quite interesting. Because on the host I generally run Ubuntu 18.04. Because I know how it works and can ensure it's secured and up to date.

Same with someone with familiarity with Redhat/Centos etc.

But installing a whole different OS?

Like I get it on niche Linux distros where people like packaging their desktop environments whilst pulling in Debian packages for everything else, for example.

But what's the advantage here?

<comment><USER10> There are a few advantages.

First is minimalism - it's designed to run containers.

Next is automatic, atomic updates - layers that comprise the entire OS are "pulled" and updated when the host boots, similar to how updates work with containers. Because updates are atomic, they can also be rolled back.

I think there is also built-in support for rolling updates across a fleet of host machines.

I find CoreOS a very interesting proposition, but because it's so different from other distros, there is going to be a learning curve.

<comment><USER11> > I find CoreOS a very interesting proposition

I personally find CoreOS very confusing. None of the advantages you mentioned are a problem nowadays, for personal computing. I haven't heard of Debian, Ubuntu, or RHEL update that would bork the system in a long while. All of these distros are more than capable of running containers...

And, for corporate use? You'd use Debian + Kubernetes to take care of your needs, wouldn't you?

As I said, I'm left here scratching my head, thinking up usecases for this system.

<comment><USER12> > I haven't heard of Debian, Ubuntu, or RHEL update that would bork the system > in a long while. All of these distros are more than capable of running > containers.

Fedora CoreOS is designed to have the smallest possible attack surface out of all operating systems currently capable of hosting containers.

Unlike Ubuntu, Debian, and CentOS, Fedora CoreOS doesn't contain packages that aren't required for hosting containers, and is automatically kept up-do-date without any manual interventions.

Just like Chromium OS on PCs, Fedora CoreOS on servers eliminates the need for "dist-upgrade", and thus reduces risks and increases reliability.

</comment></comment></comment></comment></comment></comment><comment><USER13> Still no okd 4.3 though. Waiting

<comment><USER14> This. I was waiting for new CoreOS just because of being the blocker for OKD release.

<comment><USER15> Still trying to land the remaining changes to 4.4. It's working, just a lot of workarounds still waiting to be replaced with real changes. It has definitely taken longer than anticipated to line up all of the impact from Fedora CoreOS cleanup and changes.</comment></comment></comment>


Necessary Games reviews 2005's Super Columbine Massacre RPG - <AUTHOR> http://www.necessarygames.com/reviews/super-columbine-massacre-rpg-game-free-download-independent-windows-political-contemporary

<comment><USER2> This is incredibly thought provoking on many different levels. I need to ponder more about it, but I'd recommend anyone to read this fascinating article. The fact that the game starts with a quote from Andre Breton: "The purest surrealist act would be to go into a crowd and fire at random.", surely puts it in a difference play already.</comment>