Wednesday, February 8, 2017

SSH Port Forwarding S2C

Server2Client (S2C) Port Forwarding

Server install

  • Install a Linux virtual machine (Ubuntu 16.04 in my case).
  • Install ssh server apt-get install openssh-server.
  • Edit /etc/ssh/sshd_config and add the following line (otherwise ssh will publish the forwarding port only on local host nevermind the client’s rule):
    • GatewayPorts clientspecified
  • Restart ssh service or the whole server (shutdown -r now); watch out that restarting ssh service (like service ssh restart or service ssh stop+service ssh start will not kill existing established ssh sessions because they are run as separate sshd processes
  • Configure the client
  • Check that the ssh service listens on 3389 by running lsof -i :3389 (we target RDP protocol, see Client Install section)
  • Check all sshd processes lsof -i -n | egrep '\<sshd\>'

Client Install

Download and install Bitvise Tunnelier client https://www.bitvise.com/ssh-client-download

Run Bitvise SSH Client:

  • Create/save a profile by specifying:
    • Login tab
      • Host
      • Username (SSH user)
      • Initial Method password
      • Password
      • Store encrypted password in profile
    • Options tab:
      • Allways reconnect automatically
      • Un-check the On-login options
    • S2C tab:
      • Add as many rules as required by specifying:
        • Enabled
        • Listen interface: 0.0.0.0 (this means that the SSH server will accept connections on all interfaces)
        • Listen port: 3389 (for instance, SSH server will wait connections on this port)
        • Destination host (where on the client’s side the connection will be redirected):
          • localhost for the local computer
          • IP/FQDN for another computer
        • Destination port: 3389, to redirect to a local computer RDP requests
  • Press Login

Use the Forwarded Port

Suppose that our Linux machine is called sshs2c we can now open a RDP connection on the remote host (the one specified in <Destination host:Destination port>) by connecting to sshs2c:<Listen port>

Windows ssh servers

Remark: I haven’t fully tried the below mentioned OpenSSH approaches but I just would mention them in case you are interested in bypassing the installation of the Linux virtual machine (which actually brings an additional layer of security since you are not exposing your workstation directly over internet on highly sensitive port 22)

PGgxIGlkPSJzZXJ2ZXIyY2xpZW50czJjcG9ydGZvcndhcmRpbmciPlNlcnZlcjJDbGllbnQg KFMyQykgUG9ydCBGb3J3YXJkaW5nPC9oMT4NCg0KPGgyIGlkPSJzZXJ2ZXJpbnN0YWxsIj5T ZXJ2ZXIgaW5zdGFsbDwvaDI+DQoNCjx1bD4NCjxsaT5JbnN0YWxsIGEgTGludXggdmlydHVh bCBtYWNoaW5lIChVYnVudHUgMTYuMDQgaW4gbXkgY2FzZSkuPC9saT4NCjxsaT5JbnN0YWxs IHNzaCBzZXJ2ZXIgPGNvZGU+YXB0LWdldCBpbnN0YWxsIG9wZW5zc2gtc2VydmVyPC9jb2Rl Pi48L2xpPg0KPGxpPkVkaXQgPGNvZGU+L2V0Yy9zc2gvc3NoZF9jb25maWc8L2NvZGU+IGFu ZCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIChvdGhlcndpc2Ugc3NoIHdpbGwgcHVibGlzaCB0 aGUgZm9yd2FyZGluZyBwb3J0IG9ubHkgb24gbG9jYWwgaG9zdCBuZXZlcm1pbmQgdGhlIGNs aWVudCYjODIxNztzIHJ1bGUpOg0KDQo8dWw+DQo8bGk+R2F0ZXdheVBvcnRzIGNsaWVudHNw ZWNpZmllZDwvbGk+DQo8L3VsPjwvbGk+DQo8bGk+UmVzdGFydCBzc2ggc2VydmljZSBvciB0 aGUgd2hvbGUgc2VydmVyICg8Y29kZT5zaHV0ZG93biAtciBub3c8L2NvZGU+KTsgd2F0Y2gg b3V0IHRoYXQgcmVzdGFydGluZyBzc2ggc2VydmljZSAobGlrZSA8Y29kZT5zZXJ2aWNlIHNz aCByZXN0YXJ0PC9jb2RlPiBvciA8Y29kZT5zZXJ2aWNlIHNzaCBzdG9wPC9jb2RlPis8Y29k ZT5zZXJ2aWNlIHNzaCBzdGFydDwvY29kZT4gd2lsbCBub3Qga2lsbCBleGlzdGluZyBlc3Rh Ymxpc2hlZCBzc2ggc2Vzc2lvbnMgYmVjYXVzZSB0aGV5IGFyZSBydW4gYXMgc2VwYXJhdGUg PGNvZGU+c3NoZDwvY29kZT4gcHJvY2Vzc2VzPC9saT4NCjxsaT5Db25maWd1cmUgdGhlIGNs aWVudDwvbGk+DQo8bGk+Q2hlY2sgdGhhdCB0aGUgc3NoIHNlcnZpY2UgbGlzdGVucyBvbiAz Mzg5IGJ5IHJ1bm5pbmcgPGNvZGU+bHNvZiAtaSA6MzM4OTwvY29kZT4gKHdlIHRhcmdldCBS RFAgcHJvdG9jb2wsIHNlZSBDbGllbnQgSW5zdGFsbCBzZWN0aW9uKTwvbGk+DQo8bGk+Q2hl Y2sgYWxsIHNzaGQgcHJvY2Vzc2VzIDxjb2RlPmxzb2YgLWkgLW4gfCBlZ3JlcCAnXCZsdDtz c2hkXCZndDsnPC9jb2RlPjwvbGk+DQo8L3VsPg0KDQo8aDIgaWQ9ImNsaWVudGluc3RhbGwi PkNsaWVudCBJbnN0YWxsPC9oMj4NCg0KPHA+RG93bmxvYWQgYW5kIGluc3RhbGwgQml0dmlz ZSBUdW5uZWxpZXIgY2xpZW50IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmJpdHZpc2UuY29tL3Nz aC1jbGllbnQtZG93bmxvYWQiPmh0dHBzOi8vd3d3LmJpdHZpc2UuY29tL3NzaC1jbGllbnQt ZG93bmxvYWQ8L2E+PC9wPg0KDQo8cD5SdW4gQml0dmlzZSBTU0ggQ2xpZW50OjwvcD4NCg0K PHVsPg0KPGxpPkNyZWF0ZS9zYXZlIGEgcHJvZmlsZSBieSBzcGVjaWZ5aW5nOg0KDQo8dWw+ DQo8bGk+TG9naW4gdGFiDQoNCjx1bD4NCjxsaT5Ib3N0PC9saT4NCjxsaT5Vc2VybmFtZSAo U1NIIHVzZXIpPC9saT4NCjxsaT5Jbml0aWFsIE1ldGhvZCA8Y29kZT5wYXNzd29yZDwvY29k ZT48L2xpPg0KPGxpPlBhc3N3b3JkPC9saT4NCjxsaT5TdG9yZSBlbmNyeXB0ZWQgcGFzc3dv cmQgaW4gcHJvZmlsZTwvbGk+DQo8L3VsPjwvbGk+DQo8bGk+T3B0aW9ucyB0YWI6DQoNCjx1 bD4NCjxsaT5BbGx3YXlzIHJlY29ubmVjdCBhdXRvbWF0aWNhbGx5PC9saT4NCjxsaT5Vbi1j aGVjayB0aGUgT24tbG9naW4gb3B0aW9uczwvbGk+DQo8L3VsPjwvbGk+DQo8bGk+UzJDIHRh YjoNCg0KPHVsPg0KPGxpPkFkZCBhcyBtYW55IHJ1bGVzIGFzIHJlcXVpcmVkIGJ5IHNwZWNp Znlpbmc6DQoNCjx1bD4NCjxsaT5FbmFibGVkPC9saT4NCjxsaT5MaXN0ZW4gaW50ZXJmYWNl OiAwLjAuMC4wICh0aGlzIG1lYW5zIHRoYXQgdGhlIFNTSCBzZXJ2ZXIgd2lsbCBhY2NlcHQg Y29ubmVjdGlvbnMgb24gYWxsIGludGVyZmFjZXMpPC9saT4NCjxsaT5MaXN0ZW4gcG9ydDog MzM4OSAoZm9yIGluc3RhbmNlLCBTU0ggc2VydmVyIHdpbGwgd2FpdCBjb25uZWN0aW9ucyBv biB0aGlzIHBvcnQpPC9saT4NCjxsaT5EZXN0aW5hdGlvbiBob3N0ICh3aGVyZSBvbiB0aGUg Y2xpZW50JiM4MjE3O3Mgc2lkZSB0aGUgY29ubmVjdGlvbiB3aWxsIGJlIHJlZGlyZWN0ZWQp Og0KDQo8dWw+DQo8bGk+bG9jYWxob3N0IGZvciB0aGUgbG9jYWwgY29tcHV0ZXI8L2xpPg0K PGxpPklQL0ZRRE4gZm9yIGFub3RoZXIgY29tcHV0ZXI8L2xpPg0KPC91bD48L2xpPg0KPGxp PkRlc3RpbmF0aW9uIHBvcnQ6IDMzODksIHRvIHJlZGlyZWN0IHRvIGEgbG9jYWwgY29tcHV0 ZXIgUkRQIHJlcXVlc3RzPC9saT4NCjwvdWw+PC9saT4NCjwvdWw+PC9saT4NCjwvdWw+PC9s aT4NCjxsaT5QcmVzcyBMb2dpbjwvbGk+DQo8L3VsPg0KDQo8aDIgaWQ9InVzZXRoZWZvcndh cmRlZHBvcnQiPlVzZSB0aGUgRm9yd2FyZGVkIFBvcnQ8L2gyPg0KDQo8cD5TdXBwb3NlIHRo YXQgb3VyIExpbnV4IG1hY2hpbmUgaXMgY2FsbGVkIHNzaHMyYyB3ZSBjYW4gbm93IG9wZW4g YSBSRFAgY29ubmVjdGlvbiBvbiB0aGUgcmVtb3RlIGhvc3QgKHRoZSBvbmUgc3BlY2lmaWVk IGluICZsdDtEZXN0aW5hdGlvbiBob3N0OkRlc3RpbmF0aW9uIHBvcnQmZ3Q7KSBieSBjb25u ZWN0aW5nIHRvIHNzaHMyYzombHQ7TGlzdGVuIHBvcnQmZ3Q7PC9wPg0KDQo8aDIgaWQ9Indp bmRvd3Nzc2hzZXJ2ZXJzIj5XaW5kb3dzIHNzaCBzZXJ2ZXJzPC9oMj4NCg0KPHA+UmVtYXJr OiBJIGhhdmVuJiM4MjE3O3QgZnVsbHkgdHJpZWQgdGhlIGJlbG93IG1lbnRpb25lZCBPcGVu U1NIIGFwcHJvYWNoZXMgYnV0IEkganVzdCB3b3VsZCBtZW50aW9uIHRoZW0gaW4gY2FzZSB5 b3UgYXJlIGludGVyZXN0ZWQgaW4gYnlwYXNzaW5nIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhl IExpbnV4IHZpcnR1YWwgbWFjaGluZSAod2hpY2ggYWN0dWFsbHkgYnJpbmdzIGFuIGFkZGl0 aW9uYWwgbGF5ZXIgb2Ygc2VjdXJpdHkgc2luY2UgeW91IGFyZSBub3QgZXhwb3NpbmcgeW91 ciB3b3Jrc3RhdGlvbiBkaXJlY3RseSBvdmVyIGludGVybmV0IG9uIGhpZ2hseSBzZW5zaXRp dmUgcG9ydCAyMik8L3A+DQoNCjx1bD4NCjxsaT5XaW5TQ1AgbWVudGlvbmVkIE1pY3Jvc29m dCAoISkgaW1wbGVtZW50YXRpb24gb2Ygc3NoIHNlcnZlciAoPGEgaHJlZj0iaHR0cHM6Ly93 aW5zY3AubmV0L2VuZy9kb2NzL2d1aWRlX3dpbmRvd3Nfb3BlbnNzaF9zZXJ2ZXIiPmh0dHBz Oi8vd2luc2NwLm5ldC9lbmcvZG9jcy9ndWlkZV93aW5kb3dzX29wZW5zc2hfc2VydmVyPC9h Pik6DQoNCjx1bD4NCjxsaT5IYXZlIGEgbG9vayBvbiBnaXRodWIgcHJvamVjdCB3aWtpPC9s aT4NCjxsaT5XaW5kb3dzIHVzZXJzIHVzZWQgZm9yIHVzZXIvcGFzc3dvcmQgYXV0aGVudGlj YXRpb24vYXV0aG9yaXphdGlvbiBhcmUgbG9jYWwgdXNlcnMsIG5vdCBkb21haW4gdXNlcnM8 L2xpPg0KPC91bD48L2xpPg0KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWxzLXNvZnR3YXJl LmNvbS9vcGVuc3NoZC5odG1sI2JvdHBhZ2UiPmh0dHA6Ly93d3cubWxzLXNvZnR3YXJlLmNv bS9vcGVuc3NoZC5odG1sI2JvdHBhZ2U8L2E+PC9saT4NCjwvdWw+DQo=

1 comment :

  1. You saved me by adding "GatewayPorts clientspecified". Thanks a lot!

    ReplyDelete