Ph: 168123321

Archive

Posts Tagged ‘ssh’

No ssh port forwarding for you!

February 13th, 2009

I just saw a recent article describing some simple ssh attacks that looked a little funny to me. So I figured I’ll test them out. The one that smelled funny was using local and remote port forwarding on itself, localhost. It just doesn’t work on modern linux hosts. I tried it on a fresh gentoo install, a new fedora 10 install, and an old fedora 8 workhorse. You just can’t open more than 1024 descriptors by default in all cases, hmm except maybe as root, but that’s not the point here. Linux says “Sign’s point to ye…yeah NO.” But this article was from January 2009. So wtf? Banging away on old FreeBSD servers long forgotten in someones closet or something?

I was originally poking around at getting by /bin/false or /bin/nologin because I was wondering what happened if you just replaced the bin file with a copy of a working shell and then set a password for the account. Some good accounts that came to mind would be ldap, sshd, and postmaster :) But it looks like there’s already group restrictions set up BY DEFAULT.

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys


telnet localhost 9000 ssh -N -L9000:localhost:9000 192.168.123.321 & ssh -N -L9000:localhost:4141 192.168.123.321 &

no dice…

debug1: Connection to port 9000 forwarding to localhost port 9000 requested.
accept: Too many open files

security dos, old, port forwarding, ssh

Gaining shell access to a VMware ESXi server

February 12th, 2009

Accessing the hidden VMware ESXi service console was supposed to be done only while working directly with a VMware technician, but it’s just so darn handy when you’re a command line junkie, that how can you resist right?

1. From the ESXi console summary screen hit ALT-F1.
2. Type the word “unsupported†(without the quotes of course, and you won’t see anything on the screen…)
3. Enter your root password at the prompt.

Voila. You should see a big fat red warning that will either scare you off or just tickle a little bit.

WARNING - Tech Support Mode is not supported unless used in consultation with VMware Tech Support.

Now you can navigate around and edit your configs using vi. While you’re here, why not enable ssh? Just uncomment it from your /etc/inetd.conf

Now that you know how, don’t do it. Or at least, don’t blame me when things break.

ooo! Shiny... esxi, hidden console, root, ssh, vmware

Add your public SSH keys to a remote host’s authorized_keys in a single command

November 14th, 2008

[user@localhost ~]$  cat ~/.ssh/id_rsa.pub ~/.ssh/id_dsa.pub | ssh user@remotehost ’sh -c “cat - >> ~/.ssh/authorized_keys”‘

You’ll be prompted for the password just this one last time.  This is perfect for running a script that runs several remote commands through ssh.  Here’s a script that checks for your keys and adds them if they’re not there.  You’ll get prompted for a password twice if the keys didn’t already exist, and then no more.

#!/bin/sh
MY_NAME=`hostname`
MY_IPADDR=`hostname -i`

CHECK_KEYS=`ssh user@remotehost “touch ~/.ssh/authorized_keys > /dev/null 2> /dev/null; \
chmod 700 ~/.ssh/authorized_keys; grep -e $MY_NAME ~/.ssh/authorized_keys”`

LENGTH=`expr $CHECK_KEYS” : ‘.*’`
if [ $LENGTH -lt 3 ]; then
# cat the keys
else
# they already exist
fi

Another way around the password prompting issue from running a bunch of ssh commands is to branch the script and have one branch check your hostname to make sure you’re not the remote host and then start running all your commands.  When you get to the stuff you want to do remotely, echo the script across your ssh tunnel and execute it.  Now in the script, go into the 2nd branch that only runs if the hostname check matches the remote host, and it will skip down to this part on the remote run.  This gets around having a 2nd script with all your remote commands in it.  It might not be elegant, but it works!

#!/bin/sh
if [ `hostname` != $1 ]; then
# you ran this script with the remote host as the 1st argument, so it’s not going to be equal, and it will run these commands
# do a bunch of local stuff here
cat $0 | ssh user@remotehost /bin/bash `hostname`

else

# i’m here because i’ve been called on the remote host
REMOTEHOST=$2
# now i can run commands as if they were local.  executing `hostname` now would now return the remotehost name.  So any variables you want to carry over to the remote host, such as where I was called from, just add them as additional arguments when you cat the script and grab them from $2, $3, … etc. when you enter this else clause!
fi

Linux authorized_keys, bash, ssh

Installing OpenSSL, OpenSSH, and RSYNC on Solaris 2.6 (SunOS)

November 7th, 2008

Yes, I know this is ancient stuff, but I have no choice but to mess with it right now.  Old ultrasparc garbage, weeee!  So here goes the installation of some ‘modern day’ packages so I can work with this old box.  (It hasn’t been touched since 2002, ouch)

First you’ll need to download the following packages from ftp.sunfreeware.com, gunzip them, then install them with pkgadd:

# pkgadd -d libgcc-3.4.6-sol26-sparc-local.gz

# pkgadd -d egd-0.8-sol26-sparc-local.gz

# pkgadd -d popt-1.7-sol26-sparc-local.gz

# pkgadd -d zlib-1.2.3-sol26-sparc-local.gz

# pkgadd -d prngd-0.9.25-sol26-sparc-local.gz

# pkgadd -d openssl-0.9.8i-sol26-sparc-local.gz

# pkgadd -d openssh-5.1p1-sol26-sparc-local.gz

# pkgadd -d rsync-3.0.4-sol26-sparc-local.gz

Create some new directories:

/var/spool/prngd/

/var/run/

Create a startup script for the random number generator in /etc/init.d

#!/bin/sh
# 10/04/2008
# Purpose: start, stop, status script for prngd
case “$1″ in
’start’)
/usr/local/sbin/prngd /var/spool/prngd/pool /var/run/egd-pool
;;
’stop’)
/usr/bin/kill `ps -ef | /usr/bin/grep prngd | /usr/bin/grep local | /usr/bin/awk ‘{print $2}’`
;;
’status’)
if [ "`ps -ef | /usr/bin/grep prngd | /usr/bin/grep local`" ]; then
echo prngd is running…
else
echo prngd is stopped.
fi
;;
*)
echo “Usage: $0 { start | stop | status }”
exit 1
;;
esac
exit 0

Create a startup script for sshd in /etc/init.d

#! /bin/sh
#
# start/stop the secure shell daemon
case “$1″ in
’start’)
# Start the ssh daemon
if [ -f /usr/local/sbin/sshd ]; then
echo “starting SSHD daemon”
/usr/local/sbin/sshd &
fi
;;
’stop’)
# Stop the ssh deamon
PID=`/usr/bin/ps -e -u 0 | /usr/bin/fgrep sshd | /usr/bin/awk ‘{print $1}’`
if [ ! -z "$PID" ] ; then
/usr/bin/kill ${PID} >/dev/null 2>&1
fi
;;
*)
echo “usage: /etc/init.d/sshd {start|stop}”
;;
esac

Don’t forget to link them both in /etc/rc2.d so they’ll start automatically.  I used 50 and 99 to try to make sure that prngd starts before sshd fires up.

# cd /etc/rc2.d

# ln -s ../init.d/prngd S50prngd

# ln -s ../init.d/sshd S99sshd

Create ssh public key pairs.  Don’t change these output names, the daemon expects them to be named like this and if you change them, you’ll see an error like no key found, ssh v1 not starting.  But who really cares, right?

# /usr/local/bin/ssh-keygen -d -f /usr/local/etc/ssh_host_dsa_key -N “”

# /usr/local/bin/ssh-keygen -b 1024 -f /usr/local/etc/ssh_host_rsa_key -t rsa -N “”

# /usr/local/bin/ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N “”

Start the daemons and you should be good to go.  If you’re getting PRNGD not seeded errors, go take care of some other stuff, it will eventually stop as long as you installed prngd properly and started it up.  Generating the keys will probably take forever if you’re on an old Ultra 1 like me, give them a minute or two.  Entropy will take forever+1.  You can fill the seed files with garbage data if you want to speed it up.  If you’re still getting PRNGD errors an hour later, you could try the kernel patch to add /dev/random /dev/urandom support directly to the kernel.  (Sun patch 112438-03) I chose not to because I didn’t want to risk something going terribly wrong with this machine.  It’s unique in my environment and been shoved in a corner and forgotten about for a long time until now!

I also installed bash and top.  Bash was a no brainer!  I hate old ksh shells with broken backspaces, arrow keys, and lack of a command history.  They were both installed with pkgadd -d, no additional script writing or directory creating necessary.  If you have library issues after installed, run ldd on the binaries and do a google search to find what libraries packages you need.

Uncategorized ancient, bash, egd, gcc, popt, prngd, rsync, solaris, ssh, ssl, sun, sunfreeware, sunos, top, zlib


You are viewing a mobilized version of this site...
View original page here

Mobilized by Mowser Mowser
Mobilytics