Skip to content
Snippets Groups Projects
  1. Feb 12, 2020
    • McConahy, Renee Margaret's avatar
      Make check mode more usable. · a90cb578
      McConahy, Renee Margaret authored
      This skips several tasks that fail, at least in some conditions, when
      run in check mode but not when run in normal mode.
      a90cb578
    • McConahy, Renee Margaret's avatar
      Add working firewall configuration. · 266da402
      McConahy, Renee Margaret authored
      As I noted in an earlier commit, restricting Docker's ingress traffic is
      more complicated than adding a few rules to the filter table's INPUT
      chain. I had thought that relying on LOCKSS's "LOCKSS_ACCESS_SUBNET"
      variable would be sufficient; unfortunately, that is not the case:
      LOCKSS sees all of its traffic as coming from the Docker overlay network
      (by default, 10.0.0.0/8), regardless of its true origin.
      
      Fortunately for us, Docker provides us with a chain, DOCKER-USER, called
      by Docker's rules from the FORWARD chain in the filter table, that is
      suitable for filtering Docker's ingress traffic.
      
      Accordingly, this commit:
      
      - Removes the misleadingly ineffective 'lockss_trusted_ips' variable and
        provides new variables 'lockss_network_ips' and 'lockss_admin_ips'.
      
      - Replaces ufw or firewalld with ferm. Neither ufw nor firewalld is
        capable of satisfying this use case without employing significant
        violence; ferm is elegant and has beautiful configuration files.
        Beauty over bloodshed.
      
      - Adds tasks to configure a local firewall that denies inbound and
        forwarded traffic by default, permits ssh from anywhere, and permits
        access to LOCKSS's data and configuration ports from
        'lockss_network_ips' and 'lockss_admin_ips' respectively.
      
        Said firewall cooperates with Docker: Docker and the firewall can be
        started in any order, and restarting either preserves rules created by
        the other.
      
                                      *  *  *
      
      I got the suggestion of using ferm for this, as well as the bulk of the
      Docker-related rules, from a blog post: Ben Chavet, Convincing Docker
      and Iptables to Play Nicely, Aug. 8, 2019,
      <https://www.lullabot.com/articles/convincing-docker-and-iptables-play-nicely>.
      266da402
Loading