SFTP chroot + rsync
- En del af Tommys Backup Projekt
ChrootDirectory PLUS et traditionelt chroot. - en lyn-guide, nej nok nærmere notater.
Lavet fordi jeg skulle bruge en backup server som kunne modtage backups via rsync eller sftp og man kunne hente filerne ned igen via FileZilla (http://filezilla-project.org/).
Ekstra : Disk skalering med resize2fs.
Contents
Server Opsætning
SSH server
Installer ssh-server og rsync
/etc/ssh/sshd_config
#Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no # ForceCommand internal-sftp
Herfra skal alle homefolders både ha root som owner og group for at virke. HUSK ! - En Match -regl kører til slutningen af filen eller til ny match, derfor smid den nederst i filen
Klargør gruppe
addgroup sftponly
Opret bruger
adduser user01 addgroup user01 sftponly chown root:root /home/user01 usermod -d / user01
Sidste kommando retter etc/passwd så brugerens home-dir er /, man bliver nemlig smidt til home-dir EFTER man er chrooted. Og derefter er / ikke system-root, men chrooted-folder, altså /home/user01/
Opret chroot miljø med bash og rsync
Debian 6:
mkdir /home/user01/bin cp /usr/bin/rsync /home/user01/bin/ cp /bin/bash /home/user01/bin/ mkdir /home/user01/lib cp /lib/libncurses.so.5 /home/user01/lib/ cp /lib/libdl.so.2 /home/user01/lib/ cp /lib/libc.so.6 /home/user01/lib/ cp /lib/libacl.so.1 /home/user01/lib/ cp /lib/libpopt.so.0 /home/user01/lib/ cp /lib/libattr.so.1 /home/user01/lib/ mkdir /home/user01/lib64 cp /lib64/ld-linux-x86-64.so.2 /home/user01/lib64/
Debian 7 64bit, multiarch:
mkdir /home/user01/bin cp /usr/bin/rsync /home/user01/bin/ cp /bin/bash /home/user01/bin/ mkdir -p /home/user01/lib/x86_64-linux-gnu cp /lib/x86_64-linux-gnu/libacl.so.1 /home/user01/lib/x86_64-linux-gnu/libacl.so.1 cp /lib/x86_64-linux-gnu/libpopt.so.0 /home/user01/lib/x86_64-linux-gnu/libpopt.so.0 cp /lib/x86_64-linux-gnu/libc.so.6 /home/user01/lib/x86_64-linux-gnu/libc.so.6 cp /lib/x86_64-linux-gnu/libattr.so.1 /home/user01/lib/x86_64-linux-gnu/libattr.so.1 cp /lib/x86_64-linux-gnu/libtinfo.so.5 /home/user01/lib/x86_64-linux-gnu/libtinfo.so.5 cp /lib/x86_64-linux-gnu/libdl.so.2 /home/user01/lib/x86_64-linux-gnu/libdl.so.2 cp /lib/x86_64-linux-gnu/libc.so.6 /home/user01/lib/x86_64-linux-gnu/libc.so.6 mkdir /home/user01/lib64 cp /lib64/ld-linux-x86-64.so.2 /home/user01/lib64/ # Herunder lidt ekstra cp /bin/rm /home/user01/bin/ cp /bin/ln /home/user01/bin/ cp /bin/ls /home/user01/bin/ cp /usr/bin/du /home/user01/bin/ cp /lib/x86_64-linux-gnu/libselinux.so.1 /home/user01/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/librt.so.1 /home/user01/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libpthread.so.0 /home/user01/lib/x86_64-linux-gnu/
Jeg har brugt ldd til at liste dependencies for bash og rsync, samme procedure kan bruges hvis andre programmer skal med.
Opret mappe brugeren kan gemme filer i
Da SSH bestemmer at en ChrootDirectory SKAL ejes af root, skal brugeren have en undermappe med skriverettigheder
mkdir /home/user01/files chown user01:user01 /home/user01/files
Samme procedure kan bruges hvis det er en webserver, så lav en html mappe.
Rsync
rsync --progress /mappe/filer user01@server:/files
eller hvis på en anden ssh-port end standard :
rsync --progress -e "ssh -p 522" /backup/ user01@dev.caddi.com:/files
SSH Authorized Keys
Til at kunne lave automatisk backup kan vi ikke bruge interaktive passwords, derfor bruger vi keys. Og da vi ikke har et helt normalt setup, skal der laves et par ændringer.
Da alle brugerne har samme home-dir i top-level /etc/passwd, skal jeg selv angive stien til home-dirs FØR chroot.
/etc/ssh/sshd_config:
RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys AuthorizedKeysFile /home/%u/.ssh/authorized_keys
Nu kan vi lave en key på den klient eller server vi skal have backup fra :
ssh-keygen -t rsa
Opret mappen på serveren til keys :
mkdir /home/user01/.ssh chown user01 /home/user01/.ssh touch /home/user01/.ssh/authorized_keys
og kopiere indholdet af ~/.ssh/id_rsa.pub op på serveren i /home/user01/.ssh/authorized_keys.
Voila, nu kan vi rsynce uden password. - Husk at beskyt private filen godt.
Rsync eksempel fra QNAP
rsync --bwlimit 70 -r /share/Public/Billeder user01@server:/files/AmstrupNAS/
Se eksempel på Versions backup med rsync.
Skalér virtuel server-disk
Da min plan er at bruge en virtuel server til backup, har jeg brug for at kunne udvide disken efterhånden som backup-data fylder på.
Pt. denne guide : http://www.howtoforge.com/linux_resizing_ext3_partitions