На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила трёх "С"
Пожалуйста,
1. Соблюдайте правила Форума.
2. Слушайте советы Модераторов.
(например, http://forum.sources.ru/index.php?act=ST&f=7&t=80382 )
3. Сверяйтесь с учебником по Великому и Могучему
  
> Настройка Firewall для XL2TPD & Samba
    Здравствуйте! Имеется Ubuntu 16.04 и VPN-сервер: XL2TPD PPP IPSec Libreswan Samba (папка с общим доступом находится на сервере Ubuntu).
    Уже один раз меня хакали. Не хочу, чтобы впредь это повторялось.
    Как грамотно прописать правила для iptables, чтобы не было открытого прямого доступа?

    Я сделал так (/etc/iptables/rules.v4):
    ExpandedWrap disabled
      # eth0 подключен к интернету.
      # eth1 подключен к частной подсети.
       
      # Внешний интерфейс сервера
      IF_EXT="ens3"
       
      # Внутренние интерфейсы (обслуживающие ВПН-клиентов)
      IF_INT="ppp+"
       
      # Сеть, адреса из которой будут получать ВПН-клиенты
      NET_INT="112.128.72.0/24"
       
      LOOP="127.0.0.1"
       
       
      *nat
      :PREROUTING ACCEPT [0:0]
      :INPUT ACCEPT [0:0]
      :OUTPUT ACCEPT [0:0]
      :POSTROUTING ACCEPT [0:0]
      -A POSTROUTING -s ${NET_INT} -o eth0 -j MASQUERADE
      -t nat -A POSTROUTING -s ${NET_INT} -j MASQUERADE -o ${IF_EXT}
      -t nat -A POSTROUTING -o eth0 -s ${NET_INT} -j MASQUERADE
      COMMIT
       
      *filter
      :INPUT ACCEPT [0:0]
      :FORWARD ACCEPT [0:0]
      :OUTPUT ACCEPT [0:0]
       
      #
      -A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol none -j DROP
      -A INPUT -m conntrack --ctstate INVALID -j DROP
      -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
      -A INPUT -p udp -m multiport --dports 500,4500 -j ACCEPT
      -A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol ipsec -j ACCEPT
      -A INPUT -p udp -m udp --dport 1701 -j DROP
      -A FORWARD -m conntrack --ctstate INVALID -j DROP
      -A FORWARD -i eth0 -o ${IF_INT} -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
      -A FORWARD -i ${IF_INT} -o eth0 -j ACCEPT
      -A FORWARD -s ${NET_INT} -d ${NET_INT} -i ${IF_INT} -o ${IF_INT} -j ACCEPT
      -A FORWARD -j DROP
       
       
      # Разрешаем весь трафик на петлевом интерфейсе
      -A INPUT -i lo -j ACCEPT
       
      # Запретить внешним пакетам использовать петлевой адрес
      -A INPUT -i eth0 -s ${LOOP} -j DROP
      -A FORWARD -i eth0 -s ${LOOP} -j DROP
      -A INPUT -i eth0 -d ${LOOP} -j DROP
      -A FORWARD -i eth0 -d ${LOOP} -j DROP
       
      # Все, что приходит из Интернета, должно иметь настоящий интернет-адрес
      -A FORWARD -i eth0 -s 192.168.0.0/16 -j DROP
      -A FORWARD -i eth0 -s 172.16.0.0/12 -j DROP
      -A FORWARD -i eth0 -s 10.0.0.0/8 -j DROP
      -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
      -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
      -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
       
      # Разрешаем всё для ВПН-клиентов
      -A INPUT -i ${IF_INT} -s ${NET_INT} -j ACCEPT
       
       
      # Разрешаем входящие соединения к L2TP
      # Но только с шифрованием!
      -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT
       
      # Разрешаем IPSec
      -A INPUT -p esp -j ACCEPT
      -A INPUT -p ah -j ACCEPT
      -A INPUT -p udp --dport 500 -j ACCEPT
      -A INPUT -p udp --dport 4500 -j ACCEPT
       
      # Разрешаем доступ к серверу по SSH
      -A INPUT -m tcp -p tcp --dport 2002 -j ACCEPT
       
       
      # Разрешаем входящие ответы на исходящие соединения
      -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
       
      # NAT для локальной сети (ВПН-клиентов)
      -A FORWARD -i ${IF_INT} -o ${IF_EXT} -s ${NET_INT} -j ACCEPT
      -A FORWARD -i ${IF_EXT} -o ${IF_INT} -d ${NET_INT} -m state --state RELATED,ESTABLISHED -j ACCEPT
       
      # Блокировать исходящие NetBios (если у вас запущены машины с Windows
      # в частной подсети). Это не повлияет на NetBios
      # трафик, который проходит через VPN-туннель, но он остановится
      # локальные машины Windows от вещания себя
      # интернет.
      -A FORWARD -p tcp --sport 137:139 -o eth0 -j DROP
      -A FORWARD -p udp --sport 137:139 -o eth0 -j DROP
      -A OUTPUT -p tcp --sport 137:139 -o eth0 -j DROP
      -A OUTPUT -p udp --sport 137:139 -o eth0 -j DROP
       
      # Проверка правильности адреса источника на пакетах, выходящих в интернет
      -A FORWARD -s ! ${NET_INT} -i eth1 -j DROP
       
      # Разрешить локальную петлю
      -A INPUT -s ${LOOP} -j ACCEPT
      -A INPUT -d ${LOOP} -j ACCEPT
       
      # Drop входящих эхо-запросов
      -A INPUT -p icmp --icmp-type echo-request -j DROP
       
      # Drop пакетов из частных подсетей
      -A INPUT -i eth1 -j DROP
      -A FORWARD -i eth1 -j DROP
       
      # Сохранять состояние соединений из локальной машины и частных подсетей
      -A OUTPUT -m state --state NEW -o eth0 -j ACCEPT
      -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
      -A FORWARD -m state --state NEW -o eth0 -j ACCEPT
      -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
       
      # Самба ВКЛ
      -A INPUT -p tcp -m tcp --dport 445 –s ${NET_INT} -j ACCEPT
      -A INPUT -p tcp -m tcp --dport 139 –s ${NET_INT} -j ACCEPT
      -A INPUT -p udp -m udp --dport 137 –s ${NET_INT} -j ACCEPT
      -A INPUT -p udp -m udp --dport 138 –s ${NET_INT} -j ACCEPT
       
      -A INPUT -i eth0 -s ${NET_INT} -p udp --dport 137:138 -m state --state NEW,ESTABLISHED -j ACCEPT
      -A OUTPUT -o eth0 -d ${NET_INT} -p udp --sport 137:138 -m state --state ESTABLISHED -j ACCEPT
      -A INPUT -i eth0 -s ${NET_INT} -p tcp --dport 139 -m state --state NEW,ESTABLISHED -j ACCEPT
      -A OUTPUT -o eth0 -d ${NET_INT} -p tcp --sport 139 -m state --state ESTABLISHED -j ACCEPT
      -A OUTPUT -o eth0 -d ${NET_INT} -p udp --sport 445 -m state --state ESTABLISHED -j ACCEPT
       
      -I INPUT -i eth0 -p tcp --dport 137 -j DROP
      -I INPUT -i eth0 -p tcp --dport 138 -j DROP
      -I INPUT -i eth0 -p tcp --dport 139 -j DROP
      -I INPUT -i eth0 -p tcp --dport 445 -j DROP
      -I INPUT -i eth0 -p tcp --dport 1701 -j DROP
       
      COMMIT

    Подскажите, пожалуйста, всё ли правильно у меня написано?
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0164 ]   [ 15 queries used ]   [ Generated: 29.03.24, 09:33 GMT ]