Fórum Root.cz

Hlavní témata => Server => Téma založeno: martinus26 29. 12. 2013, 20:51:15

Název: SSHFS a root filesystém
Přispěvatel: martinus26 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 ?
Název: Re:SSHFS a root filesystém
Přispěvatel: Jenda 29. 12. 2013, 21:08:38
Můžeš si patchnout sshd, aby se root jmenoval nějak jinak…
Název: Re:SSHFS a root filesystém
Přispěvatel: Honza 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
Název: Re:SSHFS a root filesystém
Přispěvatel: nextsux 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. ...
Název: Re:SSHFS a root filesystém
Přispěvatel: Sten 29. 12. 2013, 22:58:33
Co místo zákazu přihlášení roota povolit přihlašování pomocí certifikátu?
Název: Re:SSHFS a root filesystém
Přispěvatel: Jenda 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).
Název: Re:SSHFS a root filesystém
Přispěvatel: martinus26 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.
Název: Re:SSHFS a root filesystém
Přispěvatel: Jenda 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.
Název: Re:SSHFS a root filesystém
Přispěvatel: JardaP . 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.
Název: Re:SSHFS a root filesystém
Přispěvatel: martinus26 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'