Dockerfile 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. ARG BASE
  2. FROM ${BASE}
  3. RUN echo "Install openssh, needed for scp."
  4. RUN apt-get update -y && apt-get install -y openssh-client
  5. RUN groupadd -g 10000 groupone
  6. RUN groupadd -g 10001 grouptwo
  7. # Note - we do not create the user's home directory, pam_mkhomedir will do that
  8. # for us, and we want to test that PAM gets triggered by Tailscale SSH.
  9. RUN useradd -g 10000 -G 10001 -u 10002 testuser
  10. RUN echo "Set up pam_mkhomedir."
  11. RUN sed -i -e 's/Default: no/Default: yes/g' /usr/share/pam-configs/mkhomedir || echo "might not be ubuntu"
  12. RUN cat /usr/share/pam-configs/mkhomedir
  13. RUN pam-auth-update --enable mkhomedir
  14. COPY tailscaled .
  15. COPY tailssh.test .
  16. RUN chmod 755 tailscaled
  17. # RUN echo "First run tests normally."
  18. RUN eval `ssh-agent -s` && TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestSSHAgentForwarding
  19. RUN rm -Rf /home/testuser
  20. RUN TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestIntegrationSFTP
  21. RUN rm -Rf /home/testuser
  22. RUN TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestIntegrationSCP
  23. RUN rm -Rf /home/testuser
  24. RUN TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestIntegrationSSH
  25. RUN echo "Then run tests as non-root user testuser and make sure tests still pass."
  26. RUN chown testuser:groupone /tmp/tailscalessh.log
  27. RUN TAILSCALED_PATH=`pwd`tailscaled eval `su -m testuser -c ssh-agent -s` && su -m testuser -c "./tailssh.test -test.v -test.run TestSSHAgentForwarding"
  28. RUN TAILSCALED_PATH=`pwd`tailscaled su -m testuser -c "./tailssh.test -test.v -test.run TestIntegration TestDoDropPrivileges"
  29. RUN chown root:root /tmp/tailscalessh.log
  30. RUN echo "Then run tests in a system that's pretending to be SELinux in enforcing mode"
  31. RUN mv /usr/bin/login /tmp/login_orig
  32. # Use nonsense for /usr/bin/login so that it fails.
  33. # It's not the same failure mode as in SELinux, but failure is good enough for test.
  34. RUN echo "adsfasdfasdf" > /usr/bin/login
  35. RUN chmod 755 /usr/bin/login
  36. # Simulate getenforce command
  37. RUN printf "#!/bin/bash\necho 'Enforcing'" > /usr/bin/getenforce
  38. RUN chmod 755 /usr/bin/getenforce
  39. RUN eval `ssh-agent -s` && TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestSSHAgentForwarding
  40. RUN TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestIntegration
  41. RUN mv /tmp/login_orig /usr/bin/login
  42. RUN rm /usr/bin/getenforce
  43. RUN echo "Then remove the login command and make sure tests still pass."
  44. RUN rm `which login`
  45. RUN eval `ssh-agent -s` && TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestSSHAgentForwarding
  46. RUN rm -Rf /home/testuser
  47. RUN TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestIntegrationSFTP
  48. RUN rm -Rf /home/testuser
  49. RUN TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestIntegrationSCP
  50. RUN rm -Rf /home/testuser
  51. RUN TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestIntegrationSSH
  52. RUN echo "Then remove the su command and make sure tests still pass."
  53. RUN chown root:root /tmp/tailscalessh.log
  54. RUN rm `which su`
  55. RUN eval `ssh-agent -s` && TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestSSHAgentForwarding
  56. RUN TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestIntegration
  57. RUN echo "Test doDropPrivileges"
  58. RUN TAILSCALED_PATH=`pwd`tailscaled ./tailssh.test -test.v -test.run TestDoDropPrivileges