Bry8 Star
2013-Apr-04 08:50 UTC
[CentOS] Using "root" Type User Via Forwarding-SSH-Tunnel Inside Non-Root SSH Connection
Hi,
QUESTION:
what implications are there when using the "root" or a root type of
account via a port-forwarding ssh-tunnel inside (or on top of)
another non-root type of user's ssh-tunnel ?
Is such double layer of encryption brings more security or system
still vulnerable same as single layer of SSH encryption ?
DETAILS:
In CentOS (6.3 & 6.4) server side i have done these:
(1) Created a user named "administrator". Then by using visudo
command, i allowed "administrator" to have higher level of access
&
permission, similar/close to the "root" user, (not exactly same
though).
http://wiki.centos.org/TipsAndTricks/BecomingRoot
(Basically this "administrator" user has maintenance related
software running privilege).
(2) Created a user named "non-root", a standard/normal user.
(3) In /etc/ssh/sshd_config file i have modified the default
configurations into this:
# File: /etc/ssh/sshd_config
port NNN10
protocol 2
SyslogFacility AUTHPRIV
AllowUsers non-root root at 127.0.0.1 administrator at 127.0.0.1
PasswordAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY
LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
X11Forwarding no
Banner /etc/issue.net
Subsystem sftp /usr/libexec/openssh/sftp-server
# End of File: /etc/ssh/sshd_config
Above config allows only "non-root" user to connect with CentOS
server from internet. And "administrator" or "root" can
must/only
connect using local ip address 127.0.0.1.
In /etc/issue file and in /etc/issue.net file i have placed such
text info:
***********************************
NOTICE / WARNING TO USERS
* This computer system is private
property of its owner, Bry8Star.
* This message is shown from
hostname.sld.tld
* It is for AUTHORIZED use only.
Any unauthorized or improper
use of this system will result
in CIVIL and CRIMINAL PENALTIES
...
* ...
* Your connection IP ADDRESS,
PORT, and TIME info etc are
recorded by this computer.
***********************************
In /etc/profile file, i have placed these below 13 lines just above
the "unset i" line, at bottom side:
if [ -n "$SSH_CLIENT" ]
then
set $SSH_CLIENT
echo "Your current connection coming from IP Address $1 using port
$2, to this computer."
else
if [ -n "$SSH_CONNECTION" ]
then
set $SSH_CONNECTION
echo "Your current connection coming from IP Address $1 using port
$2, to this computer."
else
echo "Your current connection's IP Address & port could not be
shown for now."
fi
fi
In /etc/profile.local file, i have placed these below 13 lines at
bottom side:
if [ -n "$SSH_CLIENT" ]
then
set $SSH_CLIENT
echo "You have connected from IP Address $1 using port $2"
else
if [ -n "$SSH_CONNECTION" ]
then
set $SSH_CONNECTION
echo "You have connected from IP Address $1 using port $2"
else
echo "User's IP Address could not be shown"
fi
fi
Above codes allow me to see what IP:port is currently being used.
And after login opensshd by default shows last/previous connection's
IP-address or reverse-domain. This helps to see instantly which IP
is being used right now or who is attempting to login in simple way.
Ofcourse log can show more detailed info.
And in client side (user side), i'm using PuTTY or PuTTY based or
other SSH client software, with such configurations:
SSH-client software has 3 connection profiles.
The "ssh-client-01" connection ssh-profile is configured for regular
user "non-root", and connects to ip.address.numbers:port
(hostname.sld.tld:NNN10) (sld = 2nd level domain, tld = top level
domain). This connection profile is also configured to create one
encrypted port-forwarding tunnel through the SSH-tunnel: where,
local port NNN11, is port-forwarded, to the (local-)port NNN10
inside CentOS server (hostname.sld.tld).
The "ssh-client-02" connection ssh-profile is configured for user
"administrator", and connects to local ip address 127.0.0.1 on port
NNN11 (127.0.0.1:NNN11). This connection profile itself has no
port-forwarding tunnels. It uses the forwarding-tunnel of
"ssh-client-01" to create SSH-tunnel, toward the ssh-server port
NNN10 of CentOS server.
The "ssh-client-03" connection ssh-profile is configured with user
"root", and connects to local ip address 127.0.0.1 on port NNN11
(127.0.0.1:NNN11). This connection profile itself has no
port-forwarding tunnels. It uses the forwarding-tunnel of
"ssh-client-01" to create SSH-tunnel, toward the ssh-server port
NNN10 of CentOS server.
I first connect with CentOS server using "ssh-client-01", then i
connect again with CentOS server using the "ssh-client-02".
In this way "ssh-client-02" (for "administrator") goes
through the
encryption layer of "ssh-client-01" (for "non-root").
If i need to use "root" level access/privilege, i do these:
sudo one-command options
For multiple commands i do these:
su -
a-command options
another-command options
exit
To switch into another user account (like "GUIuser1",
"non-root2")
without disconnecting, i do:
su GUIuser1
su non-root2
The "ssh-client-03" ssh-profile i use for exceptional purpose, when
i absolutely must have to use the "root" account directly, only then.
QUESTION:
How can i configure opensshd related settings, so that, it shows
current ip-address & port used by the current user who is
trying/attempting to login ? BEFORE user types in the password.
I have placed a text "This is \o | Now it is \t \d | Connection is
using \l" in /etc/issue file and also in /etc/issue.net file, but it
does not work, just appears as verbatim, (escape sequenced special
variables do not get
translated/replaced by special values).
I want to show the user who is attempting to login, his/her
IP-address, port, time, etc to him/her, every time before typing
password.
QUESTION:
what is/are better practice(s) (to secure CentOS server related to
SSH) ?
QUESTION/Possible-SOLUTION:
Should i remove the "root at 127.0.0.1" from "AllowUsers"
and add
"PermitRootLogin no" line in /etc/sshd_config file ?
Thanks in advance,
-- Bright Star.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: OpenPGP digital signature
URL:
<http://lists.centos.org/pipermail/centos/attachments/20130404/c8796395/attachment.sig>
Nicolas Thierry-Mieg
2013-Apr-04 17:22 UTC
[CentOS] Using "root" Type User Via Forwarding-SSH-Tunnel Inside Non-Root SSH Connection
Bry8 Star wrote:> Hi, > QUESTION: > what implications are there when using the "root" or a root type of > account via a port-forwarding ssh-tunnel inside (or on top of) > another non-root type of user's ssh-tunnel ? > > Is such double layer of encryption brings more security or system > still vulnerable same as single layer of SSH encryption ? ><snip>> > QUESTION: > what is/are better practice(s) (to secure CentOS server related to > SSH) ? > > QUESTION/Possible-SOLUTION: > Should i remove the "root at 127.0.0.1" from "AllowUsers" and add > "PermitRootLogin no" line in /etc/sshd_config file ?your current setup is a bit complex, I can't comment on whether it gains you anything compared to direct ssh connection as whatever user you need to be (not root), and relying on sudo to elevate your admin user's privileges. But yes I would recommend disabling root login, and using only keys if you can (ie disabling passwords). This could be a useful read: http://wiki.centos.org/HowTos/Network/SecuringSSH