72
Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Enhance OpenSSH for Fun and Security Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto Julien Pivotto LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe LinuxCon Europe October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015 October 5, 2015

Enhance OpenSSH for fun and security

Embed Size (px)

Citation preview

Page 1: Enhance OpenSSH for fun and security

Enhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and SecurityEnhance OpenSSH for Fun and Security

Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto

LinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeLinuxCon EuropeOctober 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015October 5, 2015

Page 2: Enhance OpenSSH for fun and security

Match User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieMatch User roidelapluieJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto

• Sysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.euSysadmin at inuits.eu

• FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004FLOSS user since 2004• DevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believerDevOps believer• @roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie on irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/github

Page 3: Enhance OpenSSH for fun and security

inuits.eu

Page 4: Enhance OpenSSH for fun and security

World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015World, 2015Licensed under a Creative Commons Attribution 2.0 License

https://www.flickr.com/photos/80497449@N04/10012162166

Page 5: Enhance OpenSSH for fun and security

Connected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devicesConnected devices

• MMMMMMMMMMMMMMMMMainframes• SSSSSSSSSSSSSSSSServers• VVVVVVVVVVVVVVVVVirtual machines• CCCCCCCCCCCCCCCCContainers• IIIIIIIIIIIIIIIIIoT

Page 6: Enhance OpenSSH for fun and security

Entrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance DoorsEntrance Doors

• PPPPPPPPPPPPPPPPPhysical Access• TTTTTTTTTTTTTTTTTelnet• RRRRRRRRRRRRRRRRRSH• SSSSSSSSSSSSSSSSSSH• HHHHHHHHHHHHHHHHHTTPS• ……………………………………………

Page 7: Enhance OpenSSH for fun and security

SSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSH

• DDDDDDDDDDDDDDDDDozens of implementations• OOOOOOOOOOOOOOOOOpenSSH• DDDDDDDDDDDDDDDDDropbear (embedded)• CCCCCCCCCCCCCCCCClosed-source• ……………………………………………

Page 8: Enhance OpenSSH for fun and security

SSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSHSSH

• DDDDDDDDDDDDDDDDDozens of usecases• SSSSSSSSSSSSSSSSShell access and TCP Tunelling• CCCCCCCCCCCCCCCCCode (git)• FFFFFFFFFFFFFFFFFile transfert (sftp)• XXXXXXXXXXXXXXXXX terminal (x2go)• AAAAAAAAAAAAAAAAAutomation (ansible)• ……………………………………………

Page 9: Enhance OpenSSH for fun and security

OpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHLicensed under a Creative Commons Attribution 2.0 License

https://www.flickr.com/photos/pennuja/5399766800

Page 10: Enhance OpenSSH for fun and security

OpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSHOpenSSH

• DDDDDDDDDDDDDDDDDeveloped by the OpenBSD project• RRRRRRRRRRRRRRRRReleased first in 1995• SSSSSSSSSSSSSSSSServer/Client implementation• IIIIIIIIIIIIIIIIIncluded in BSD, Linux, Cygwin, Mac OS X, …• AAAAAAAAAAAAAAAAAvailable in many other platforms

Page 11: Enhance OpenSSH for fun and security

Out of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scopeOut of scope

• FFFFFFFFFFFFFFFFFirewalling, OS, …• BBBBBBBBBBBBBBBBBasic tips: RootLogin, Pubkeys, …• CCCCCCCCCCCCCCCCCrypto/Encryption/Key Exchangeshttps://stribika.github.io/2015/01/04/secure-secure-shell.html

Page 12: Enhance OpenSSH for fun and security

SecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecuritySecurityLicensed under a Creative Commons Asstribution-ShareAlike 2.0 License

https://www.flickr.com/photos/111692634@N04/11406986014

Page 13: Enhance OpenSSH for fun and security

Common senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon senseCommon sense

• DDDDDDDDDDDDDDDDDo you need SSH? (immutable infra,containers…)

• KKKKKKKKKKKKKKKKKISS• CCCCCCCCCCCCCCCCChose what will get public IP and thenexposition.. hypervisors vs vms?

• PPPPPPPPPPPPPPPPPort 22 is not Evil

Page 14: Enhance OpenSSH for fun and security

Server-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideServer-sideLicensed under a Creative Commons Attribution 2.0 License

https://www.flickr.com/photos/56001405@N06/6187271613

Page 15: Enhance OpenSSH for fun and security

"Server config""Server config""Server config""Server config""Server config""Server config""Server config""Server config""Server config""Server config""Server config""Server config""Server config""Server config""Server config""Server config""Server config"

• /////////////////etc/ssh/sshd_config• RRRRRRRRRRRRRRRRRestart of the service does not kill currentssh sessions

Page 16: Enhance OpenSSH for fun and security

Allow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesAllow/Deny rulesLicensed under a Creative Commons Attribution 2.0 License

https://www.flickr.com/photos/84388958@N03/7729300102

Page 17: Enhance OpenSSH for fun and security

AllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsersAllowUsers

AllowUsers jenkinsAllowUsers jenkins [email protected] jenkins [email protected]/12

AllowUsers is exclusive

Page 18: Enhance OpenSSH for fun and security

AllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroupsAllowGroups

AllowGroups staff jenkins

AllowGroups is exclusive

Page 19: Enhance OpenSSH for fun and security

Allow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* orderingAllow* ordering

• DDDDDDDDDDDDDDDDDenyUsers• AAAAAAAAAAAAAAAAAllowUsers• DDDDDDDDDDDDDDDDDenyGroups• AAAAAAAAAAAAAAAAAllowGroups

Page 20: Enhance OpenSSH for fun and security

MatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatch

• MMMMMMMMMMMMMMMMMatch + conditions• rrrrrrrrrrrrrrrrreads until next Match or EOF

Page 21: Enhance OpenSSH for fun and security

MatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatchMatch

AllowGroups staffMatch Address 172.31.16.8AllowGroups staff jenkins

Page 22: Enhance OpenSSH for fun and security

Trust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseTrust On First UseLicensed under a Creative Commons Attribution 2.0 License

https://www.flickr.com/photos/armandoh2o/7069748077

Page 23: Enhance OpenSSH for fun and security

TOFUTOFUTOFUTOFUTOFUTOFUTOFUTOFUTOFUTOFUTOFUTOFUTOFUTOFUTOFUTOFUTOFU

The authenticity of host 'example.com(93.184.216.34)' can't be established.

ED25519 key fingerprint is SHA256:eIvxpj9aMSS/+Ed7NQZ9er/vyV17mabfiUxtgF2Q1X0.

Are you sure you want to continueconnecting (yes/no)?

Page 24: Enhance OpenSSH for fun and security

Trust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first useTrust on first use

• WWWWWWWWWWWWWWWWWho checks the key on the server?• WWWWWWWWWWWWWWWWWho says no?• SSSSSSSSSSSSSSSSSecurity fatigue

Page 25: Enhance OpenSSH for fun and security

Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)Alternative to TOFU (1/2)

• AAAAAAAAAAAAAAAAAutomation• EEEEEEEEEEEEEEEEExport keys from hosts• CCCCCCCCCCCCCCCCCollect them from hosts• AAAAAAAAAAAAAAAAApply then to /etc/ssh/known_hosts

Page 26: Enhance OpenSSH for fun and security

# saz/puppet−ssh − ASL 2.0if $::sshrsakey {

@@sshkey { "${::fqdn}_rsa":ensure => present,host_aliases => $host_aliases,type => rsa,key => $::sshrsakey,

}} else {

@@sshkey { "${::fqdn}_rsa":ensure => absent,

}}

Page 27: Enhance OpenSSH for fun and security

Sshkey <<| |>>

Page 28: Enhance OpenSSH for fun and security

Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)Alternative to TOFU (2/2)

• DDDDDDDDDDDDDDDDDNS• EEEEEEEEEEEEEEEEExport keys in SSHFP DNS records• CCCCCCCCCCCCCCCCCan be secured by DNSSEC• hhhhhhhhhhhhhhhhhttps://github.com/jpmens/facts2sshfp

Page 29: Enhance OpenSSH for fun and security

$ dig +short SSHFP example.com1 1 F00A55CEA3B8E15528665A6781CA7C35190CF02 1 CC1F004DA60CF38E809FE58B10D0F22680D59D

Page 30: Enhance OpenSSH for fun and security

ssh −o VerifyHostKeyDNS=yes example.com

Page 31: Enhance OpenSSH for fun and security

The authenticity of host 'example.com(93.184.216.34)' can't be established.

ED25519 key fingerprint is SHA256:eIvxpj9aMSS/+Ed7NQZ9er/vyV17mabfiUxtgF2Q1X0.

Matching host key fingerprint found in DNSAre you sure you want to continue

connecting (yes/no)?

Page 32: Enhance OpenSSH for fun and security

Authorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysAuthorized keysLicensed under a Creative Commons Attribution 2.0 License

https://www.flickr.com/photos/brenda-starr/4498078166

Page 33: Enhance OpenSSH for fun and security

ssh−rsa AAsafgrewgBzhfadgthgfpoDtGlUBIYhzf user@desktop

• OOOOOOOOOOOOOOOOOne key, one user• AAAAAAAAAAAAAAAAAlways with a password• DDDDDDDDDDDDDDDDDistribute them in an automated way

Page 34: Enhance OpenSSH for fun and security

from="172.21.32.4" ssh−rsa AAspoDtGlUBIYhzf ansibleno−port−forwarding ,no−x11−forwarding ,no−agent−forwarding

ssh−rsa AAspDjeFJwFRf jenkins

Page 35: Enhance OpenSSH for fun and security

ssh_authorized_key {'jenkins ':

type => 'ssh−rsa',key => 'AAAAKZ6TwZl3ikhY42clyY/De7J',user => 'jenkins ',

}

Page 36: Enhance OpenSSH for fun and security

ssh_authorized_key {'jenkins ':

type => 'ssh−rsa',key => 'AAAAKZ6TwZl3ikhY42clyY/De7J',user => 'jenkins ',options => 'from="192.168.10.1"'

}

Page 37: Enhance OpenSSH for fun and security

Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!Purge undefined keys!

user {'jenkins ':

purge_ssh_keys => true,}

Page 38: Enhance OpenSSH for fun and security

AuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommandAuthorizedKeysCommand

• SSSSSSSSSSSSSSSSScript that takes username as argumentsand returns authorized_keys

• EEEEEEEEEEEEEEEEExemple reference: openssh-ldap RPM

Page 39: Enhance OpenSSH for fun and security

Client SideClient SideClient SideClient SideClient SideClient SideClient SideClient SideClient SideClient SideClient SideClient SideClient SideClient SideClient SideClient SideClient SideLicensed under a Creative Commons Zero License

@roidelapluie

Page 40: Enhance OpenSSH for fun and security

Client configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configurationClient configuration

• $$$$$$$$$$$$$$$$$HOME/.ssh/config• /////////////////etc/ssh/ssh_config

Page 41: Enhance OpenSSH for fun and security

Host web1Hostname web1.example.comUser roidelapluie

Page 42: Enhance OpenSSH for fun and security

SSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsLicensed under a Creative Commons Attribution-ShareAlike 2.0 License

https://www.flickr.com/photos/sarahrosenau/269786597

Page 43: Enhance OpenSSH for fun and security

Host web1Proxycommand ssh proxy nc %h %pHost proxyProxycommand ssh out nc %h %p

Page 44: Enhance OpenSSH for fun and security

SSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH HopsSSH Hops

• AAAAAAAAAAAAAAAAAcces restricted areas• KKKKKKKKKKKKKKKKKeeps your private keys in your machine• NNNNNNNNNNNNNNNNNo need for agent forwarding

Page 45: Enhance OpenSSH for fun and security

SocketsSocketsSocketsSocketsSocketsSocketsSocketsSocketsSocketsSocketsSocketsSocketsSocketsSocketsSocketsSocketsSocketsLicensed under a Creative Commons Attribution-ShareAlike 2.0 License

https://www.flickr.com/photos/restlessglobetrotter/2661016046

Page 46: Enhance OpenSSH for fun and security

Host git.example.comControlMaster autoControlPath /tmp/ssh−%r@%h:%pControlPersist 5

Page 47: Enhance OpenSSH for fun and security

SSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH SocketsSSH Sockets

• SSSSSSSSSSSSSSSSSpeed up reconnection time• DDDDDDDDDDDDDDDDDo not renegotiate each time• UUUUUUUUUUUUUUUUUseful for git

Page 48: Enhance OpenSSH for fun and security

Stopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHStopping OpenSSHLicensed under a Creative Commons Attribution 2.0 License

https://www.flickr.com/photos/horiavarlan/4747872021

Page 49: Enhance OpenSSH for fun and security

Send to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to backgroundSend to background

<enter > ~ &

Page 50: Enhance OpenSSH for fun and security

PausePausePausePausePausePausePausePausePausePausePausePausePausePausePausePausePause

<enter > ~ <ctrl+z>

Page 51: Enhance OpenSSH for fun and security

Kill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the sessionKill the session

<enter > ~ .

Page 52: Enhance OpenSSH for fun and security

TunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsLicensed under a Creative Commons Attribution-ShareAlike 2.0 License

https://www.flickr.com/photos/hanuska/5174842932

Page 53: Enhance OpenSSH for fun and security

TunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnels

• TTTTTTTTTTTTTTTTTCP Tunnels• SSSSSSSSSSSSSSSSSOCKS proxy

Page 54: Enhance OpenSSH for fun and security

TunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnelsTunnels

• LLLLLLLLLLLLLLLLLocal TCP Port Forwarding: give remoteacces to local port

• RRRRRRRRRRRRRRRRRemote TCP Port Forwarding: get access toremote ports

Page 55: Enhance OpenSSH for fun and security

Local TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port Forwarding

Icons from http://www.opensecurityarchitecture.org/cms/library/icon-libraryand the Tango Icons project

Page 56: Enhance OpenSSH for fun and security

Local TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port Forwarding

Icons from http://www.opensecurityarchitecture.org/cms/library/icon-libraryand the Tango Icons project

Page 57: Enhance OpenSSH for fun and security

Local TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port ForwardingLocal TCP Port Forwarding

Icons from http://www.opensecurityarchitecture.org/cms/library/icon-libraryand the Tango Icons project

Page 58: Enhance OpenSSH for fun and security

Local TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel exampleLocal TCP Tunnel example

• UUUUUUUUUUUUUUUUUser A is natted behind a firewall• HHHHHHHHHHHHHHHHHe wants to give User B access to local SSHdaemon

userA@hostA > ssh −NR 22222:localhost:22 userA@hostB

userB@hostB > ssh −p 22222 localhost

-N is for No Shell

Page 59: Enhance OpenSSH for fun and security

Remote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port Forwarding

Icons from http://www.opensecurityarchitecture.org/cms/library/icon-libraryand the Tango Icons project

Page 60: Enhance OpenSSH for fun and security

Remote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port ForwardingRemote TCP Port Forwarding

Icons from http://www.opensecurityarchitecture.org/cms/library/icon-libraryand the Tango Icons project

Page 61: Enhance OpenSSH for fun and security

Remote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding exampleRemote Port Forwarding example

• UUUUUUUUUUUUUUUUUser A is behind a firewall that blocks VNCport

• HHHHHHHHHHHHHHHHHe wants to access User B local VNCdaemon

userA@hostA > ssh −NL 5900:localhost:5900 userA@hostBuserA@hostA > vncviewer localhost

Page 62: Enhance OpenSSH for fun and security

SOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS ProxySOCKS Proxy

• """""""""""""""""Dynamic" port forwarding• EEEEEEEEEEEEEEEEEnable UDP, TCP, …• CCCCCCCCCCCCCCCCCreates a SOCKS5 proxy

userA@hostA > ssh −ND 9500 userA@hostBuserA@hostA > proxychains wget http://example.com

Page 63: Enhance OpenSSH for fun and security

ToolsToolsToolsToolsToolsToolsToolsToolsToolsToolsToolsToolsToolsToolsToolsToolsToolsLicensed under a Creative Commons Attribution 2.0 License

https://www.flickr.com/photos/86639298@N02/8559728371

Page 64: Enhance OpenSSH for fun and security

ssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agentssh-agent

• SSSSSSSSSSSSSSSSStores your private key in memory• eeeeeeeeeeeeeeeeeval $(ssh-agent)• ssssssssssssssssssh-add; ssh-add -t 1h foo.key• ssssssssssssssssssh-add -x (lock)• ssssssssssssssssssh-add -X (unlock)• PPPPPPPPPPPPPPPPPart of OpenSSH

Page 65: Enhance OpenSSH for fun and security

screenscreenscreenscreenscreenscreenscreenscreenscreenscreenscreenscreenscreenscreenscreenscreenscreen

• KKKKKKKKKKKKKKKKKeep session accross ssh connection• HHHHHHHHHHHHHHHHHave multiple shell `windows'• RRRRRRRRRRRRRRRRRun long command and keep them running• ssssssssssssssssscreen (launch new session)• CCCCCCCCCCCCCCCCCtrl+a d (detach)• ssssssssssssssssscreen -dx (detach and reattach)• ssssssssssssssssssh host -t screen -dx• AAAAAAAAAAAAAAAAAlternative: tmux

Page 66: Enhance OpenSSH for fun and security

reptyrreptyrreptyrreptyrreptyrreptyrreptyrreptyrreptyrreptyrreptyrreptyrreptyrreptyrreptyrreptyrreptyr

• AAAAAAAAAAAAAAAAAttach a long running process to the currentterminal

• IIIIIIIIIIIIIIIIIdea: launch a screen and rattach anotherprocess inside

• UUUUUUUUUUUUUUUUUseful when you forgot to launch yourscreen before

• rrrrrrrrrrrrrrrrreptyr -p PID

Page 67: Enhance OpenSSH for fun and security

vimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvim

• EEEEEEEEEEEEEEEEEdit files remotely with scp• vvvvvvvvvvvvvvvvvim scp://web//etc/hosts

Page 68: Enhance OpenSSH for fun and security

ConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionLicensed under a Creative Commons Attribution 2.0 License

https://www.flickr.com/photos/freddyfromutah/4424199420

Page 69: Enhance OpenSSH for fun and security

ConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusion

• SSSSSSSSSSSSSSSSSSH is still part of modern infrastructures• IIIIIIIIIIIIIIIIIt should be part of what youautomate/control

• LLLLLLLLLLLLLLLLLots of other projects rely on it• YYYYYYYYYYYYYYYYYou can harden it in a lot of ways• TTTTTTTTTTTTTTTTThere is a lot of things to discover!

Page 70: Enhance OpenSSH for fun and security

HomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomeworkHomework

• SSSSSSSSSSSSSSSSSSH certificate authority• cccccccccccccccccommand= permitopen=• MMMMMMMMMMMMMMMMMatch blocks• sssssssssssssssssshfs• ……………………………………………

Page 71: Enhance OpenSSH for fun and security

Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?Any Question?

Page 72: Enhance OpenSSH for fun and security

ContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContact

Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien [email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie

inuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitshttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.eu

[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636