University of Minnesota
Development of Secure Software Systems
index.php

CSci 4271 Lab 0

Since we haven't gotten a chance to cover much actual security content in the course yet, the theme of today's lab will just be to give you some practice with different tools that you can using the CSE Labs machines for collaborating online. Note that even if we start having in-person lab sections, as you attend them you'll still need to use some electronic collaboration tools. This is because getting close enough to someone else that you could be reading the same computer monitor would be a violation of social distancing.

For today's lab we'll randomly split you into breakout groups of 2-3 students since it takes multiple people to try out collaboration tools. Use the "Ask for Help" button to ask questions or show off what you've done, or we'll also circulate among the breakout groups.

  1. (Vole and SSH access.)

    You've probably already used Vole in previous CS classes, since it's usually the first recommended way to access CSE Labs computing resources remotely. But just in case you haven't, it's a remote-desktop login system which displays a Linux-based graphical interface inside a window in your web browser. The starting page with basic information and links about Vole is https://vole.cse.umn.edu/

    The graphical desktop features of Vole are going to be less important for a lot of the work we do, so it's also good to know about how you can make a terminal-only connection using SSH. Unix and Mac computers likely already have a command-line "ssh" program; if you're using Windows you may need to install a separate program. CSE-IT's suggestions are here.

    With SSH there's also a choice of what CSE Labs computer to connect to. There isn't a single large entry point maintained for SSH in the same way the Vole servers work. So our recommendation instead is that you randomly pick one of the Linux workstations in the lab where our in-person labs will be held in the future. There's a predictable naming pattern; since the lab is 1-262 Keller Hall, the names of the machines all look like:

    csel-kh1262-XX.cselabs.umn.edu
    	
    where the XX is replaced by a two digit number between 01 and 28. You should choose a computer number randomly to spread the load out across all the machines, like with the command:
    perl -e 'printf "%02d\n", 1 + int(rand(37))'
    

    As a combination of the two ideas mentioned above, at least while the campus is running most classes remotely, CSE-IT has also arranged that you can make graphical connections to the lab machines in the same way you connect to Vole. Just put the host name mentioned in the previous paragraph into your web browser.

  2. (Screen sharing on Zoom.)

    Since you're using Zoom anyway to participate in the lab, one basic kind of collaboration you can do is to share the view of your screen or a single window in a Zoom meeting. This is the same feature we use to present slides. If you're using the desktop Zoom application, there's a green "share screen" icon at the bottom of the window.

  3. (Terminal sharing with tmate.)

    Zoom screen sharing is view-only: you can see what someone else is doing but not do things for them. Sometimes that can be a good way of working; in pair programming terminology you'll hear people talk about one person "driving" at a time. But in other cases it can be convenient for multiple people to all be able to interact with programs at once. For command-line/terminal programs, the easiest solution we've found for doing this is a program called tmate, which works using a combination of tmux and SSH and public rendezvous servers. The web site is at https://tmate.io/ and we've also already installed a binary on the CSE Labs machines at:

    /web/classes/Spring-2021/csci4271/bin/tmate
    

    Set up a shared terminal session on one of the CSE Labs machines with the other people in your group an run some commands together.

  4. (Accessing library materials.)

    Some of the reading materials in this course will be ones that you'd have to pay to get access to as an independent person, but which are available without charge to the university community because the U Libraries have already paid for that access. If you're browsing from an on-campus computer (e.g., Vole), the free access will usually just work automatically, but not if you're off the campus network.

    A general purpose tool you can use to make your network connection from off campus look like an on-campus one is a VPN. Information about the campus VPN is available here. But the VPN can be a bit complicated to install and use. So we recommend a more specialized service instead for this purpose.

    This service is a proxy that the libraries run specifically just for accessing library resources over the web. You switch to using the proxy by putting the following prefix in front of the URL you want to access:

    http://login.ezproxy.lib.umn.edu/login?url=
    	
    That's a bit of a pain to type every time, though. In many web browsers you can set this up as what's called a bookmarklet, so that transforming the URL is as easy as choosing a menu entry. The libraries' information about how to do this is here.

    Try one of the methods for accessing libraries content out by downloading a PDF for this paper. (This paper isn't an assigned reading, but it is relevant to security.)

  5. (More things to try.)

    If you found everything above easy enough, here are some brief notes on further things you can look into:

    • Another thing you'll want to be able to do when using the CSE Labs machines over a terminal interface is to edit files. The two most popular families of Linux text editors are named Emacs and VI. If you want to start learning about Emacs, type the command emacs -nw at a terminal and look for the link to the tutorial. For VI, type the command vimtutor at a terminal.
    • Another option for simulating the CSE Labs experience on your own machine is to set up a virtual machine. CSE-IT has instructions on this here. However at the moment it appears that the instructions are for an Ubuntu version 18.04 machine; we'll be using version 20.04 instead.