Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

3.3 KiB

Firewall setup (iptables) with ferm

# /etc/ferm/ferm.conf

# Default rules
domain (ip ip6) {
    table filter {
        # Default Policies
        chain INPUT {
            policy DROP;

            # respond to ping
            proto icmp ACCEPT; 

            # allow SSH connections
            proto tcp dport ssh ACCEPT;
        }

        chain OUTPUT policy ACCEPT;

        # loopback traffic
        chain INPUT interface lo ACCEPT;
        chain OUTPUT outerface lo ACCEPT;

        chain (INPUT OUTPUT) {
            # connection tracking
            mod state state INVALID DROP;
            mod conntrack ctstate (RELATED ESTABLISHED) ACCEPT;
        }
    }
}

# Local rules
@include ferm.d/;
  • sudo vim /etc/ferm/ferm.d/00-docker.ferm
# /etc/ferm/ferm.d/00-docker.ferm

domain (ip ip6) {
    table filter {
        chain (DOCKER DOCKER-INGRESS DOCKER-ISOLATION-STAGE-1 DOCKER-ISOLATION-STAGE-2 FORWARD) @preserve;
    }

    table nat {
        chain (DOCKER DOCKER-INGRESS PREROUTING OUTPUT POSTROUTING) @preserve;
    }
}

  • sudo vim /etc/ferm/ferm.d/20-in.ssh.ferm
  • is in default, not necessary
domain (ip ip6) {
    table filter chain INPUT proto tcp dport 22 ACCEPT;
}
  • sudo vim /etc/ferm/ferm.d/20-in.docker.nginx.ferm
domain (ip ip6) {
    table filter chain DOCKER-USER

    # Incoming traffic bound for a docker service will come in
    # to the FORWARD chain on eth0 and exit on docker_gwbridge
    interface eth0 outerface docker_gwbridge

    # The destination port here is the port listening IN THE DOCKER CONTAINER
    # Often times that is the same as the host port, but not always
    proto tcp dport (80 443)

    ACCEPT;
}
  • sudo vim /etc/ferm/ferm.d/20-in.docker.mailcow.ferm
domain (ip ip6) {
    table filter chain DOCKER-USER

    # Incoming traffic bound for a docker service will come in
    # to the FORWARD chain on eth0 and exit on docker_gwbridge
    interface eth0 outerface docker_gwbridge

    # The destination port here is the port listening IN THE DOCKER CONTAINER
    # Often times that is the same as the host port, but not always
    proto tcp dport (25 465 587 143 993 110 995 4190)

    ACCEPT;
}
  • sudo vim /etc/ferm/ferm.d/20-in.docker.ts3.ferm
domain (ip ip6) {
    table filter chain DOCKER-USER

    # Incoming traffic bound for a docker service will come in
    # to the FORWARD chain on eth0 and exit on docker_gwbridge
    interface eth0 outerface docker_gwbridge

    # The destination port here is the port listening IN THE DOCKER CONTAINER
    # Often times that is the same as the host port, but not always
    proto tcp dport (10011 30033)

    ACCEPT;
}

domain (ip ip6) {
    table filter chain DOCKER-USER

    interface eth0 outerface docker_gwbridge

    proto udp dport (9987 9988)

    ACCEPT;
}
  • /etc/ferm/ferm.d/99-docker.ferm
domain (ip ip6) table filter chain DOCKER-USER {
    interface eth0 outerface docker_gwbridge {
        mod conntrack ctstate (RELATED ESTABLISHED) ACCEPT;
        DROP;
    }
    RETURN;
}
  • edit /etc/default/ferm to enable it
  • sudo systemctl enable ferm