• Как пустить PREROUTING iptables через фильтр?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Маркируете трафик и дропаете его как только он попадает в FILTER. Не надо пытаться забивать молотком шурупы - для этого отвертка есть.
    Вот как я например глушу прилетающие "снаружи" пакеты с RFC1918-адресами: (формат iptables-restore)
    *mangle
    -A PREROUTING -i eth0 -m set --match-set rfc1918 src -j MARK --set-mark 1
    *filter
    -A INPUT -m mark --mark 1 -j DROP


    Сет rfc1918 - это таблица, которую составляет ipset:
    create rfc1918 hash:net family inet hashsize 1024 maxelem 65536 
    add rfc1918 10.0.0.0/8
    add rfc1918 172.16.0.0/12
    add rfc1918 192.168.0.0/16


    С его помощью запросто организовать доступ к ssh например только для определенного списка адресов, а всех остальных дропать.
    Ответ написан
    2 комментария
  • Как пустить PREROUTING iptables через фильтр?

    @MechanID
    Админ хостинг провайдера
    Конечно строка iptables -A INPUT -i ${WAN} -d ${LOCAL_IP} -p tcp --dport 80 -j ACCEPT бесполезна - так как указан ${WAN} интерфейс и в трафике там приходит на ${WAN_IP}. - вам нужно заменить ${LOCAL_IP} на ${WAN_IP} тогда правило заработает.

    По ддос атаке - опасно рейтлимитить вест трафик, когда вы делаете вот так:
    -A Filters -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROP
    вы рейтлимитите все и отовсюду, если у вас переполнится conntrac то начнутся потери пакетов и сервер может стать не доступным, в таких правилах всегда указывайте входящий интерфейс и порт.
    Ответ написан
    3 комментария
  • Как пустить PREROUTING iptables через фильтр?

    hint000
    @hint000
    у админа три руки
    хочу попробовать закрыть все публичные порты и открывать их для каждого пользователя индивидуально.
    Это называется доступом по белому списку. Ниже пример, как можно это сделать. Только у меня это не в формате исполняемого шелл-скрипта, а в формате конфига, загружаемого командой iptables-restore.
    # example
    
    *nat
    :PREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    
    # WhiteList (разрешенные внешние клиенты)
    -N Wht
    -A Wht -s 1.2.3.4      -j RETURN
    -A Wht -s 2.3.4.5      -j RETURN
    # разрешенная подсеть
    -A Wht -s 3.4.5.0/24 -j RETURN
    # ...
    
    # go to hell
    -A Wht  -j DNAT --to-destination 192.168.99.99
    
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 22 -j Wht
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT
    
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 80 -j Wht
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 80 -j DNAT --to-destination 192.168.42.18:80
    
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 8080 -j Wht
    -A PREROUTING ! -s 192.168.0.0/16 -p tcp --dport 8080 -j DNAT --to-destination 192.168.42.19:80
    
    -A PREROUTING -s 192.168.0.0/16 -j ACCEPT
    
    COMMIT

    поясню насчёт 192.168.99.99 - этот адрес я выбрал (произвольно, можно любой другой) в качестве "чёрной дыры", куда можно невозбранно отправлять ненужные пакеты. Прописана "дыра" командой ip route add blackhole 192.168.99.99
    Ответ написан
    1 комментарий