• Как настроить фаервол на сервере с несколькими IP?

    @dronmaxman
    VoIP Administrator
    Все достаточно просто.

    Недолюбливаю я ufw, мне больше по душе ferm
    Не забываем про
    sudo sysctl -w net.ipv4.ip_forward=1

    Сносим ufw и cтавим надстройку ferm над firewall
    sudo apt install ferm

    Правим конфиг ferm
    sudo vim /etc/ferm/ferm.conf
    @def $WAN_IP1 = 1.1.1.1; # На этом разрешаем входящие
    @def $WAN_IP2 = 1.1.1.2; # Через этот выходим
    @def $DEV_WAN = ens1s0;
    @def $VPN_NETS = (10.10.10.0/24 10.10.20.0/24); # Сети VPN клиентов
    
    
    domain (ip ip6) {
        table filter {
            chain INPUT {
                policy DROP; # Политика поумолчанию, если нет разрешающего правила значит запрещено
    
                # connection tracking
                mod state state INVALID LOG log-prefix '[FERM] INVALID INPUT DROP: ';
                mod state state INVALID DROP;
                mod state state (ESTABLISHED RELATED) ACCEPT;
    
                # allow local packet
                interface lo ACCEPT;
    
                 # respond to ping
                 #proto icmp ACCEPT;
                
                daddr $WAN_IP1 {
    
                    # respond to ping
                    proto icmp ACCEPT;
    
                    # allow SSH connections
                    proto tcp dport 22 ACCEPT;
    
                    # allow WEB connections
                    proto tcp dport (http https) ACCEPT;
    
                    # allow VPN wireguard connections
                    proto udp dport 51820 ACCEPT;
                }
    
    
            }
            chain OUTPUT {
                policy ACCEPT;
    
                # connection tracking
                #mod state state INVALID DROP;
                mod state state (ESTABLISHED RELATED) ACCEPT;
            }
            
            chain FORWARD {
                policy DROP; 
    
                # connection tracking
                mod state state INVALID DROP;
                mod state state (ESTABLISHED RELATED) ACCEPT;
    
                saddr $VPN_NETS ACCEPT; # Разрешаем трафику от VPN клиентов проходить в любом направлении
            }
        }
        table nat {
            chain POSTROUTING {
                saddr $VPN_NETS outerface $DEV_WAN SNAT to $WAN_IP2; # Маскируем-натим исходящий трафик от VPN клиентов вторым IP
            }
        }
    }
    
    @include ferm.d/;


    Применяем конфиг
    sudo ferm -i /etc/ferm/ferm.conf
    Ответ написан
    1 комментарий