SSHFS a root filesystém

SSHFS a root filesystém
« kdy: 29. 12. 2013, 20:51:15 »
Chcel by som pomocou sshfs pripojiť celý / (root) koreňový adresár. Problém je že na server sa pripájam cez ssh na bežný užívateľský účet a potom zadám príkaz su a root heslo a som pripojeny ako root. Priame prihlasovanie sa cez ssh ako root som kvoli bezpečnosti zakázal. Ked som skúsil sshfs, tak som mal len užívateľské privilégia. Bolo by možné to nejako bezpečne obísť a mať možnosť zapisovať do root adresarov bez nutnosti sa pripájať cez ssh ako root ?


Jenda

Re:SSHFS a root filesystém
« Odpověď #1 kdy: 29. 12. 2013, 21:08:38 »
Můžeš si patchnout sshd, aby se root jmenoval nějak jinak…

Honza

Re:SSHFS a root filesystém
« Odpověď #2 kdy: 29. 12. 2013, 21:31:25 »
Můžeš si patchnout sshd, aby se root jmenoval nějak jinak…
no pokud se kontroluje login, tak to už je jednodušší vytvořit nového uživatele s uid=0, a na něj se přihlašovat

nextsux

Re:SSHFS a root filesystém
« Odpověď #3 kdy: 29. 12. 2013, 22:29:41 »
Ja bych to videl na:
Kód: [Vybrat]
man sshfs:
         -o SSHOPT=VAL
              ssh options (see man ssh_config)

v kombinaci s
Kód: [Vybrat]
       LocalCommand
              Specifies  a  command to execute on the local machine after suc‐
              cessfully connecting to the server. ...

Sten

Re:SSHFS a root filesystém
« Odpověď #4 kdy: 29. 12. 2013, 22:58:33 »
Co místo zákazu přihlášení roota povolit přihlašování pomocí certifikátu?


Jenda

Re:SSHFS a root filesystém
« Odpověď #5 kdy: 30. 12. 2013, 06:26:56 »
Ja bych to videl na:
...
Kód: [Vybrat]
       LocalCommand
              Specifies  a  command to execute on the local machine after suc‐
              cessfully connecting to the server. ...
To je LOCAL command.

Kód: [Vybrat]
~> tsocks sshfs -o "LocalCommand=sudo -i" brmlab@brmvid:/ sshfs/
~> less sshfs/etc/shadow
sshfs/etc/shadow: Permission denied

Co místo zákazu přihlášení roota povolit přihlašování pomocí certifikátu?
To nepomůže proti tomu útoku, proti kterému se nejspíš snaží bránit (0day podobný jako kdysi v Debianu).

Re:SSHFS a root filesystém
« Odpověď #6 kdy: 30. 12. 2013, 08:32:37 »
Prihlasujem sa ako user pomocou certifikatov a potom pomocou hesla ako root.  MOžnosť zapisovať do root suborov som chcel kvoli zalohovaniu a obnoveniu zalohy pomocou rdiff-backup.

Jenda

Re:SSHFS a root filesystém
« Odpověď #7 kdy: 30. 12. 2013, 10:10:48 »
Prihlasujem sa ako user pomocou certifikatov a potom pomocou hesla ako root.  MOžnosť zapisovať do root suborov som chcel kvoli zalohovaniu a obnoveniu zalohy pomocou rdiff-backup.
Můžeš spustit druhý SSH server, na který se půjde připojit jenom odněkud a přihlašování tam bude povolené. Možná by taky pomohlo přidat toho uživatele do skupin jako root, shadow, disk atd.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:SSHFS a root filesystém
« Odpověď #8 kdy: 30. 12. 2013, 11:26:07 »
MOžnosť zapisovať do root suborov som chcel kvoli zalohovaniu a obnoveniu zalohy pomocou rdiff-backup.

Pokud byste nahodou mohl vystacit s backupem pomoci rsync, tak tam si na tom vzdalenem stroji bez root loginu muzete rozjet rsyncd poslouchajici na localhostu a pak si na to z klienta pres ssh protunelovat rsync. Pozor, prenos oproti rsyncd probiha nezabezpecene, takze tunelovat se musi a nechat rsyncd poslouchat na nejakem vnejsim portu a pripojit se rovnou na to je opravdu blby napad.

Jinak resit backup pres sshfs asi neni nejlepsi, "rdiff-backup  can  also  operate in a bandwidth efficient manner over a pipe, like rsync(1).  Thus you can use ssh and rdiff-backup to securely back a hard drive up to a remote location, and only the differences will be transmitted.", coz vam pri pouziti sshfs nebude fungovat a budete tahat pres linku hafo zbytecnych dat. Spise zkuste nastudovat, jak to funguje s parametrem --server, kde by se asi dalo dosahnout neceho podobneho, jako u rsync pri pouziti rsyncd.

Re:SSHFS a root filesystém
« Odpověď #9 kdy: 30. 12. 2013, 21:24:35 »
vyskúšal som
Kód: [Vybrat]
rdiff-backup --remote-schema 'ssh -C -p51591 %s' martin@xxxxxx.com::/home/martin/zaloha /home/martin/pokus/

ale skončilo to množstvom chýb. Skusil som si stiahnuť novší rdiff-backup(1.2.8-6) z backports repo, ale aj tak boli iba same chyby.

Kód: [Vybrat]
rdiff-backup --remote-schema 'ssh -C -p51591 %s' martin@xxxxxx.com::/home/martin/zaloha /home/martin/pokus/
/usr/lib/pymodules/python2.6/rdiff_backup/SetConnections.py:148: DeprecationWarning: os.popen2 is deprecated.  Use the subprocess module.
  stdin, stdout = os.popen2(remote_cmd)
Pseudo-terminal will not be allocated because stdin is not a terminal.
Exception '' raised of class '<type 'exceptions.MemoryError'>':
  File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 321, in Main
    rps = map(SetConnections.cmdpair2rp, cmdpairs)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/SetConnections.py", line 76, in cmdpair2rp
    if cmd: conn = init_connection(cmd)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/SetConnections.py", line 152, in init_connection
    check_connection_version(conn, remote_cmd)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/SetConnections.py", line 160, in check_connection_version
    try: remote_version = conn.Globals.get('version')
  File "/usr/lib/pymodules/python2.6/rdiff_backup/connection.py", line 450, in __call__
    return apply(self.connection.reval, (self.name,) + args)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/connection.py", line 368, in reval
    result = self.get_response(req_num)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/connection.py", line 315, in get_response
    try: req_num, object = self._get()
  File "/usr/lib/pymodules/python2.6/rdiff_backup/connection.py", line 240, in _get
    data = self._read(length)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/connection.py", line 210, in _read
    try: return self.inpipe.read(length)

Traceback (most recent call last):
  File "/usr/bin/rdiff-backup", line 30, in <module>
    rdiff_backup.Main.error_check_Main(sys.argv[1:])
  File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 321, in Main
    rps = map(SetConnections.cmdpair2rp, cmdpairs)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/SetConnections.py", line 76, in cmdpair2rp
    if cmd: conn = init_connection(cmd)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/SetConnections.py", line 152, in init_connection
    check_connection_version(conn, remote_cmd)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/SetConnections.py", line 160, in check_connection_version
    try: remote_version = conn.Globals.get('version')
  File "/usr/lib/pymodules/python2.6/rdiff_backup/connection.py", line 450, in __call__
    return apply(self.connection.reval, (self.name,) + args)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/connection.py", line 368, in reval
    result = self.get_response(req_num)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/connection.py", line 315, in get_response
    try: req_num, object = self._get()
  File "/usr/lib/pymodules/python2.6/rdiff_backup/connection.py", line 240, in _get
    data = self._read(length)
  File "/usr/lib/pymodules/python2.6/rdiff_backup/connection.py", line 210, in _read
    try: return self.inpipe.read(length)
MemoryError
-bash: line 1: syntax error near unexpected token `crdiff_backup.connection'
-bash: line 1: `oh(crdiff_backup.connection'