KONTO SFTP Z CHROOTEM Z UŻYCIEM OPENSSH-SERVER NA CENTOS/RHEL6

Konta SFTP-only możemy chcieć użyć, gdy mamy zainstalowany na serwerze SSH (prawie zawsze) i udostępniamy dane  innemu systemowi, który loguje się i pobiera je (i ewentualnie usuwa), a nie chcemy instalować dodatkowej aplikacji jak FTPd czy HTTPd.

Zakładamy, że logowanie odbywa się automatycznie z użyciem klucza i bez hasła. Nazwa użytkownika na serwerze zdalnym to: copy z UID 2000, a grupa to sftponly z GID 2000. Serwer z SFTP to 10.7.18.2, a klient, z którego będziemy się logować to 10.7.18.1

Na pierwszy ogień musimy skongfigurować demona SSH, aby posiadał następujące wpisy:

Subsystem       sftp    internal-sftp
AuthorizedKeysFile      .ssh/authorized_keys
AllowUsers copy@10.7.18.1
Match user copy
        ChrootDirectory %h
        ForceCommand internal-sftp
        AllowTCPForwarding no
        X11Forwarding no

Oraz żeby nie posiadał takiego wpisu lub podobnego

#Subsystem      sftp    /usr/libexec/openssh/sftp-server

Następnym krokiem jest utworzenie katalogu, gdzie chcemy mieć katalogi w chroot, ja utworze katalog chroot w głównym drzewie

mkdir /chroot

Po utworzeniu katalogu a przed utworzeniem użytkownika warto utworzyć osobną grupę dla użytkownika

groupadd -g 2000 sftponly

Teraz naszym zadaniem jest utworzenie użytkownika z shellem ustawionym na /bin/false i z katalogiem domowym w wybranym miejscu.

adduser -u 2000 -g 2000 -s /bin/false -d /chroot/copy copy

Konto zostało utworzone z następującymi prawami dostępu

ls -ald /chroot/copy/
drwx------. 2 copy sftponly 4096 Mar  3 12:32 /chroot/copy/

Muszą one zostać zedytowane tak, aby właścicielem katalogu domowego konta chrootowanego był root i trzeba trochę poluzować dostępy

chown root /chroot/copy
chmod 755 /chroot/copy

Jeszcze musimy stworzyć katalog na klucze, nadać mu odpowiednie uprawnienia i wkopiować klucze publiczne, które będą mogły logować się do systemu, żeby skopiować jakieś dane za pomocą sftp

mkdir /chroot/copy/.ssh
chown root:root /chroot/copy/.ssh

Teraz czas na wkopiowanie klucza publicznego i ustawienie mu odpowiednich uprawnień

echo 'AAAA...== user@maszyna' > /chroot/copy/.ssh/authorized_keys
chown root:root /chroot/copy/.ssh/authorized_keys
chmod 644 /chroot/copy/.ssh/authorized_keys

Po tych operacjach możemy zrestartować SSHD

service sshd restart

Jeżeli wykorzystujemy selinux w trybie enforcing, to musimy jeszcze skonfigurować dla plików i katalogów odpowiednie konteksty z użyciem aplikacji semanage dostępnej w pakiecie

policycoreutils-python

Same ustawienia kontekstów

semanage fcontext -a -t home_root_t "/chroot(/.*)?"
semanage fcontext -a -t user_home_t "/chroot/copy(/.*)?"
semanage fcontext -a -t ssh_home_t "/chroot/copy/.ssh(/.*)?"
restorecon -FFrv /chroot

Po wykonaniu powyższych operacji konto copy powinno umożliwiać łączenie się do niego ze wskazanego klienta za pomocą komendy

sftp -o "IdentityFile=/sciezka/do/klucza/prywatnego" copy@10.7.18.2

Po zalogowaniu powinniśmy zobaczyć następujące okno

Connecting to 10.7.18.2...
sftp>

Jeżeli tak nie jest i system odrzuca połączenie lub prosi o hasło warto rozpocząć rozwiązywanie problemu od włączenia SSHD na serwerze w trybie debug poprzez dodanie do /etc/ssh/sshd_config wpisu

LogLevel DEBUG

i zrestartowanie usługi

service sshd restart

A po stronie klienta użyć sftp z opcją -v lub -vv

sftp -v -o "IdentityFile=/sciezka/do/klucza/prywatnego" copy@10.7.18.2
sftp -vv -o "IdentityFile=/sciezka/do/klucza/prywatnego" copy@10.7.18.2

Po stronie serwera logi czytać można wykorzystując taila

tail -fn0 /var/log/secure
0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
RHEL: Building a custom kernel on RHEL 6
Viewed 5264 times since Sat, Jun 2, 2018
Transform XML to CSV Format | Unix String Pattern Manipulation The Ugly Way
Viewed 8158 times since Sun, Jan 9, 2022
RHEL: Getting/Setting hardware clock’s time
Viewed 4361 times since Sat, Jun 2, 2018
Linux - How to shutdown or reboot
Viewed 2837 times since Fri, Jun 8, 2018
15 Linux Yum Command Examples – Install, Uninstall, Update Packages
Viewed 4610 times since Thu, Oct 25, 2018
Linux Kernel /etc/sysctl.conf Security Hardening
Viewed 24733 times since Fri, Aug 3, 2018
Manage SSH Key File With Passphrase
Viewed 3078 times since Tue, Mar 5, 2019
www.unixarena.com
Viewed 3087 times since Fri, Jul 27, 2018
How do I add ethtool settings to a network device permanently?
Viewed 7776 times since Mon, May 21, 2018
RHEL: Rename a network interface on RHEL 7
Viewed 11943 times since Sat, Jun 2, 2018