forked from scponly/scponly
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SECURITY
70 lines (51 loc) · 3.13 KB
/
SECURITY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
SECURITY
Here are a few important things to know about security and scponly. This is a
brief attempt to document what should be done to correctly secure scponly.
1) Configure scponly to use a chroot
2) Configure scponly to use as few extra options and services as possible. If
possible, try to use something similar to the following:
./configure --disable-wildcards --enable-chrooted-binary \
--disable-gftp-compat --with-sftp-server=/path/to/sftp-server
3) NOTE THE FOLLOWING SECURITY RISKS:
-- by enabling wildcards, there is a slightly higher chance of an exploit
-- by enabling scp and/or scp compatibility, more programs will need to be
installed in the chroot which increases the risk
-- CAUTION: by enabling svn/svnserve the user WILL BE ABLE TO EXECUTE
SCRIPTS OR PROGRAMS INDIRECTLY! svn and svnserve will try to execute
pre-commit, post-commit hooks, as well as a few others. These files
have specific filenames at specific locations relative to the svn
repository root. Thus, unless you are *very* careful about security,
the user WILL BE ABLE TO EXECUTE SCRIPTS OR PROGRAMS INDIRECTLY! This
can be prevented by a careful configuration.
-- The following programs use configuration files that might allow the user
to bypass security restrictions placed on command line arguments:
svn, svnserve, rsync, and unison
Note specifically that rsync uses popt for parsing command line arguments
and popt explicitly checks /etc/popt and $HOME/.popt for aliases. Thus,
users can likely bypass argument checking for rsync.
4) Make sure that all files required for the chroot have the IMMUTABLE and
UNDELETABLE bits set. Other bits might also be prudent. See: man 1 chattr.
5) Only put files in the chroot that are absolutely essential to its
functionality.
6) Make sure the following directories are locked down appropriately:
~/.ssh, ~/.unison, ~/.subversion
NOTE: depending on file permissions in the above, ssh, unison, and
subversion may not work correctly. Also note that the location of the
above directories is sometimes system dependent, so please check the
documentation specific to your system.
7) Make sure that every directory the users have write permissions to are
on a filesystem that is mounted NODEV, NOEXEC. Eg. Make sure that they
cannot execute files that they have permissions to upload. They should
also not need permissions to create any devices. If the user can't execute
any files that he has access to upload and the executable files on the
system are not considered harmful, then you need not worry about the
security problems referencing svn/svnserve above!
8) Monitor your logs! If you start to see something funny, odd, or strange in
the logs, please let us know so that we can investigate and make sure any
problems are resolved.
9) Stay up-to-date with the scponly installs. We don't have releases too
often, but the changes we do make are usually important!
10) Enjoy!
Lastly, if you have other suggestions and thoughts that would help secure an
scponly install, please send them to us!
Thanks for using scponly!