Настройка Firewall

Тема в разделе "Вопросы начинающих", создана пользователем aenikolishin, 20 июл 2017.

  1. aenikolishin

    aenikolishin Новый участник

    Добрый день!

    Я новичок и многое не понимаю, но стремлюсь. Имеется роутер Mikrotik. IP статичный. К нему подключен сервер для бэкапа через интернет с удаленных компьютеров по ssh/rsync и локальныекомпьютеры (по wifi). Прочитал кучу инструкций, как настроить firewall, но остались вопросы.

    Конфиг такой:

    add address=0.0.0.0/8 list=BOGON
    add address=10.0.0.0/8 list=BOGON
    add address=100.64.0.0/10 list=BOGON
    add address=127.0.0.0/8 list=BOGON
    add address=169.254.0.0/16 list=BOGON
    add address=172.16.0.0/12 list=BOGON
    add address=192.0.0.0/24 list=BOGON
    add address=192.0.2.0/24 list=BOGON
    add address=192.168.0.0/16 list=BOGON
    add address=198.18.0.0/15 list=BOGON
    add address=198.51.100.0/24 list=BOGON
    add address=203.0.113.0/24 list=BOGON
    add address=224.0.0.0/4 list=BOGON
    add address=240.0.0.0/4 list=BOGON

    1. add action=drop chain=input comment="Drop Invalid connections" \ connection-state=invalid
    2. add action=drop chain=forward comment="Drop Invalid connections" \ connection-state=invalid
    3. add action=drop chain=input comment="Drop DNS" dst-port=53 in-interface=\ ether1 protocol=tcp
    4. add action=drop chain=input comment="Drop DNS" dst-port=53 in-interface=\ ether1 protocol=udp
    5. add action=drop chain=input comment=Pings_Drop in-interface=ether1 protocol=\ icmp
    6. add action=drop chain=forward comment=Pings_Drop in-interface=ether1 \ protocol=icmp
    7. add action=accept chain=input comment=Allow_limited_pings in-interface=ether1 \ limit=50/5s,2 :packet protocol=icmp
    8. add action=accept chain=forward comment=Allow_limited_pings in-interface=\ ether1 limit=50/5s,2 :packet protocol=icmp
    9. add action=drop chain=forward comment="drop ssh brute downstream" dst-port=22 \ protocol=tcp src-address-list=ssh_blacklist
    10. add action=add-src-to-address-list address-list=ssh_blacklist \ address-list-timeout=1w3d chain=forward connection-state=new dst-port=22 \ protocol=tcp src-address-list=ssh_stage3
    11. add action=add-src-to-address-list address-list=ssh_stage3 \ address-list-timeout=1m chain=forward connection-state=new dst-port=22 \ protocol=tcp src-address-list=ssh_stage2
    12. add action=add-src-to-address-list address-list=ssh_stage2 \ address-list-timeout=1m chain=forward connection-state=new dst-port=22 \ protocol=tcp src-address-list=ssh_stage1
    13. add action=add-src-to-address-list address-list=ssh_stage1 \ address-list-timeout=1m chain=forward connection-state=new dst-port=22 \ protocol=tcp
    14. add action=accept chain=forward comment=SSH dst-port=22 in-interface=ether1 \ protocol=tcp
    15. add action=accept chain=forward comment=SSH dst-port=22 in-interface=ether1 \ protocol=udp
    16. add action=drop chain=forward comment="drop rsync brute downstream" dst-port=\ 873 protocol=tcp src-address-list=rsync_blacklist
    17. add action=add-src-to-address-list address-list=rsync_blacklist \ address-list-timeout=1w3d chain=forward connection-state=new dst-port=873 \ protocol=tcp src-address-list=rsync_stage3
    18. add action=add-src-to-address-list address-list=rsync_stage3 \ address-list-timeout=1m chain=forward connection-state=new dst-port=873 \ protocol=tcp src-address-list=rsync_stage2
    19. add action=add-src-to-address-list address-list=rsync_stage2 \ address-list-timeout=1m chain=forward connection-state=new dst-port=873 \ protocol=tcp src-address-list=rsync_stage1
    20. add action=add-src-to-address-list address-list=rsync_stage1 \ address-list-timeout=1m chain=forward connection-state=new dst-port=873 \ protocol=tcp
    21. add action=accept chain=forward comment=Rsync dst-port=873 in-interface=\ ether1 protocol=tcp
    22. add action=accept chain=forward comment=Rsync dst-port=873 in-interface=\ ether1 protocol=udp
    23. add action=drop chain=input comment="dropping port scanners" \ src-address-list=port_scanners
    24. add action=drop chain=forward comment="dropping port scanners" \ src-address-list=port_scanners
    25. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="NMAP NULL scan" protocol=\ tcp tcp-flags=!fin,!syn,!rst,!psh,!ack,!urg
    26. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="ALL/ALL scan" protocol=tcp \ tcp-flags=fin,syn,rst,psh,ack,urg
    27. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="FIN/PSH/URG scan" \ protocol=tcp tcp-flags=fin,psh,urg,!syn,!rst,!ack
    28. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="SYN/RST scan" protocol=tcp \ tcp-flags=syn,rst
    29. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="SYN/FIN scan" protocol=tcp \ tcp-flags=fin,syn
    30. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="NMAP FIN Stealth scan" \ protocol=tcp tcp-flags=fin,!syn,!rst,!psh,!ack,!urg
    31. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="Port scanners to list" \ protocol=tcp psd=21,3s,3,1
    32. add action=fasttrack-connection chain=forward comment=Fasttrack \ connection-state=established,related
    33. add action=accept chain=input comment=Establieshed_Related_Wan_Accept \ connection-state=established,related
    34. add action=accept chain=forward comment=Establieshed_Related_Wan_Accept \ connection-state=established,related
    35. add action=accept chain=forward comment="Transmission" dst-port=\ 49051 in-interface=ether1 protocol=tcp
    36. add action=accept chain=forward comment="Transmission" dst-port=\ 49051 in-interface=ether1 protocol=udp
    37. add action=accept chain=forward comment="qBittorent - pc3" dst-port=\ 47051 in-interface=ether1 protocol=tcp
    38. add action=accept chain=forward comment="qBittorent - pc3" dst-port=\ 47051 in-interface=ether1 protocol=udp
    39. add action=accept chain=forward comment="pc3 - Resilio Sync" dst-port=\ 28533 in-interface=ether1 protocol=tcp
    40. add action=accept chain=forward comment="pc3 - Resilio Sync" dst-port=\ 28533 in-interface=ether1 protocol=udp
    41. add action=accept chain=forward comment="accept from local to internet" \ in-interface=!ether1 out-interface=ether1
    42. add action=accept chain=output comment="accept everything to internet" \ out-interface=ether1
    43. add action=accept chain=output comment="accept everything to non internet" \ out-interface=!ether1
    44. add action=accept chain=output comment="accept everything"
    45. add action=jump chain=forward comment=Jumping jump-target=tcp protocol=tcp
    46. add action=jump chain=forward comment=Jumping jump-target=udp protocol=udp
    47. add action=jump chain=forward comment=Jumping jump-target=icmp protocol=icmp
    48. add action=drop chain=input comment=Bogon_Wan_Drop in-interface=ether1 \ src-address-list=BOGON
    49. add action=drop chain=input comment=Drop_all_WAN in-interface=ether1
    50. add action=drop chain=forward comment=Drop_all_WAN in-interface=ether1
    51. add action=drop chain=forward comment=\ "Drop new forward WAN" \ connection-nat-state=!dstnat connection-state=new in-interface=ether1

    Вопросы:
    1. Правильная ли очередность правил?
    2. Нет ли ничего лишнего?
    3. Нужно ли добавить что-то нужное?

    Заранее спасибо за помощь!
     
    Последнее редактирование: 20 июл 2017
  2. Kato

    Kato Участник

    "куча" и получилась)
     
  3. aenikolishin

    aenikolishin Новый участник

    Понимаю, что получилась «куча». Потому и прошу помощи.

    Попытаюсь сформулировать понятнее.

    Хочу, чтобы были:

    1. Доступ к серверу №1 для бэкапов по ssh/rsyncиз интернета.

    2. Доступ к серверу №2 для закачки торрентов через порт 49051

    3. Доступ к компьютеру для закачки торрентов через порт 47051 и для соединения через Resilio Sync через порт 28533

    4. Свободный доступ из локальной сети

    # Запрещаем транзит '''битых''' и '''неправильных''' пакетов

    1. add action=drop chain=input comment="Drop Invalid connections" \ connection-state=invalid
    2. add action=drop chain=forward comment="Drop Invalid connections" \ connection-state=invalid

    # Блокируем Bogon

    3. add action=drop chain=input comment=Bogon_Wan_Drop in-interface=ether1 \ src-address-list=BOGON

    # Блокируем DNS запросы на внешний интерфейс

    4. add action=drop chain=input comment="Drop DNS" dst-port=53 in-interface=\ ether1 protocol=tcp
    5. add action=drop chain=input comment="Drop DNS" dst-port=53 in-interface=\ ether1 protocol=udp

    # Фильтруем ICMP

    6. add action=drop chain=input comment=Pings_Drop in-interface=ether1 protocol=\ icmp
    7. add action=drop chain=forward comment=Pings_Drop in-interface=ether1 \ protocol=icmp
    8. add action=accept chain=input comment=Allow_limited_pings in-interface=ether1 \ limit=50/5s,2:packet protocol=icmp
    9. add action=accept chain=forward comment=Allow_limited_pings in-interface=\ ether1 limit=50/5s,2:packet protocol=icmp

    # Защита от брутфорса SSH

    10. add action=drop chain=forward comment="drop ssh brute downstream" dst-port=22 \ protocol=tcp src-address-list=ssh_blacklist
    11. add action=add-src-to-address-list address-list=ssh_blacklist \ address-list-timeout=1w3d chain=forward connection-state=new dst-port=22 \ protocol=tcp src-address-list=ssh_stage3
    12. add action=add-src-to-address-list address-list=ssh_stage3 \ address-list-timeout=1m chain=forward connection-state=new dst-port=22 \ protocol=tcp src-address-list=ssh_stage2
    13. add action=add-src-to-address-list address-list=ssh_stage2 \ address-list-timeout=1m chain=forward connection-state=new dst-port=22 \ protocol=tcp src-address-list=ssh_stage1
    14. add action=add-src-to-address-list address-list=ssh_stage1 \ address-list-timeout=1m chain=forward connection-state=new dst-port=22 \ protocol=tcp

    # Защита от брутфорса RSYNC

    15. add action=drop chain=forward comment="drop rsync brute downstream" dst-port=\ 873 protocol=tcp src-address-list=rsync_blacklist
    16. add action=add-src-to-address-list address-list=rsync_blacklist \ address-list-timeout=1w3d chain=forward connection-state=new dst-port=873 \ protocol=tcp src-address-list=rsync_stage3
    17. add action=add-src-to-address-list address-list=rsync_stage3 \ address-list-timeout=1m chain=forward connection-state=new dst-port=873 \ protocol=tcp src-address-list=rsync_stage2
    18. add action=add-src-to-address-list address-list=rsync_stage2 \ address-list-timeout=1m chain=forward connection-state=new dst-port=873 \ protocol=tcp src-address-list=rsync_stage1
    19. add action=add-src-to-address-list address-list=rsync_stage1 \ address-list-timeout=1m chain=forward connection-state=new dst-port=873 \ protocol=tcp

    # Защита от сканера портов

    20. add action=drop chain=input comment="dropping port scanners" \ src-address-list=port_scanners
    21. add action=drop chain=forward comment="dropping port scanners" \ src-address-list=port_scanners
    22. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="NMAP NULL scan" protocol=\ tcp tcp-flags=!fin,!syn,!rst,!psh,!ack,!urg
    23. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="ALL/ALL scan" protocol=tcp \ tcp-flags=fin,syn,rst,psh,ack,urg
    24. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="FIN/PSH/URG scan" \ protocol=tcp tcp-flags=fin,psh,urg,!syn,!rst,!ack
    25. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="SYN/RST scan" protocol=tcp \ tcp-flags=syn,rst
    26. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="SYN/FIN scan" protocol=tcp \ tcp-flags=fin,syn
    27. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="NMAP FIN Stealth scan" \ protocol=tcp tcp-flags=fin,!syn,!rst,!psh,!ack,!urg
    28. add action=add-src-to-address-list address-list=port_scanners \ address-list-timeout=1w3d chain=input comment="Port scanners to list" \ protocol=tcp psd=21,3s,3,1

    #Разрешаем все уже установленные и зависимые подключения

    29. add action=accept chain=input comment=Establieshed_Related_Wan_Accept \ connection-state=established,related
    30. add action=accept chain=forward comment=Establieshed_Related_Wan_Accept \ connection-state=established,related

    # Разрешаем fasttrack

    31. add action=fasttrack-connection chain=forward comment=Fasttrack \ connection-state=established,related

    # Разрешаем SSH

    32. add action=accept chain=forward comment=SSH dst-port=22 in-interface=ether1 \ protocol=tcp
    33. add action=accept chain=forward comment=SSH dst-port=22 in-interface=ether1 \ protocol=udp

    # Разрешаем RSYNC

    34. add action=accept chain=forward comment=Rsync dst-port=873 in-interface=\ ether1 protocol=tcp
    35. add action=accept chain=forward comment=Rsync dst-port=873 in-interface=\ ether1 protocol=udp

    # Разрешаем torrent для NAS

    36. add action=accept chain=forward comment="Transmission" dst-port=\ 49051 in-interface=ether1 protocol=tcp
    37. add action=accept chain=forward comment="Transmission" dst-port=\ 49051 in-interface=ether1 protocol=udp

    # Разрешаем torrent для компа

    38. add action=accept chain=forward comment=" qBittorent" dst-port=\ 47051 in-interface=ether1 protocol=tcp
    39. add action=accept chain=forward comment=" qBittorent" dst-port=\ 47051 in-interface=ether1 protocol=udp

    # Разрешаем resilio sync для компа

    40. add action=accept chain=forward comment=" Resilio Sync" dst-port=\ 28533 in-interface=ether1 protocol=tcp
    41. add action=accept chain=forward comment=" Resilio Sync" dst-port=\ 28533 in-interface=ether1 protocol=udp

    # Разрешаем доступ из локальной сети в интернет

    42. add action=accept chain=forward comment="accept from local to internet" \ in-interface=!ether1 out-interface=ether1

    # Разрешаем исходящие соединения

    43. add action=accept chain=output comment="accept everything to internet" \ out-interface=ether1
    44. add action=accept chain=output comment="accept everything to non internet" \ out-interface=!ether1
    45. add action=accept chain=output comment="accept everything"


    # Заперт установки новых транзитных входящих соединений на WAN порту
    46. add action=drop chain=forward comment=\ "Drop new forward WAN" \ connection-nat-state=!dstnat connection-state=new in-interface=ether1

    # Запрет на все остальные входящие
    47. add chain=input in-interface=ether1 action=drop comment="Drop everything else"
    48. add chain=forward in-interface=ether1 action=drop comment="Drop everything else"
     
    Последнее редактирование: 21 июл 2017
  4. blackfenix38

    blackfenix38 Новый участник

    Здравствуйте существуют разные политики Firewall и разные методы , настройка зависимости от нужд и познаний ( если вы делаете политику по умолчанию DROP запрет INPUT -(Входящие соединения на ваш роутер ) (FORWARD - ваша локальная сеть ) и (OUTPUT -исходящие соединения ) то соответственно открываете порты и пробросы на сервисы которые вы хотите , Для начало возьмите и окуните себя в изучения информации как устроен межсетевой экран как ходит пакет который пришел к вам на интерфейс ,
    какую цепочку он проходит до достижения INPUT какую до достижения FORWARD , а также что нужно с начало разрешающие правила , потом запрешающие ) ну а также не когда не выкладывайте свои правила фаервола на публику ) а ещё вам необходимо почитать про протоколы на сервисах и определиться по TCP или по UDP работает то что вы хотите разрешить фаерволе чтобы исключить уязвимости и дырки некоторых сервисах и своего личного пространства )
    а также на официальном сайте микротик в описание устройства есть описание пропускной способности пакетов втом или ином режиме при большом количестве правил она снижается
     
    Последнее редактирование: 20 июл 2017
    Илья Князев нравится это.
  5. aenikolishin

    aenikolishin Новый участник

    Спасибо. Вроде разобрался.

    Остался вопрос с настройкой NTP. Пытаюсь сделать так, чтобы компьютеры в локальной сети синхронизировались с роутером. А роутер получал NTP из интернета.

    1. Включаю NTP клиент и сервер (включен manycast, отключены broadcast и multicast).

    2. IP-DNS-Static - Add - Name: time.windows.com, Address: 192.168.100.1 (адрес роутера)

    3. Правило firewall:
    add action=accept chain=input in-interface=ether1 protocol=udp dst-port=123

    4. Правило NAT
    add action=dst-nat chain=dstnat comment=NTP dst-port=123 protocol=udp to-addresses=192.168.100.1

    Но время на компьютере не синхронизируется.
     
    Последнее редактирование: 21 июл 2017
  6. blackfenix38

    blackfenix38 Новый участник

    А чем вас стандартная windows синхронизация времени не устраивает ???)) или ручками везде поставить ) обьяснью почему делаю упор на это так как , а вы уверены сервер с которым вы синхронизируетесь не являеться уеязвимым ? это исключит на вашей стороне :
    обход ограничений безопасности, раскрытие важных данных и многое другое ) так что мой вам совет изучите внимательно сначало тот или инной сервис!!! чем открыть его наружу я вам в прошлом сообшении дал наводочки ) главное научитесь понимать
    ответсвенность если вы это делаете особенно на придприятие ! не ошибаеться тот кто не чего не делает )
     
  7. aenikolishin

    aenikolishin Новый участник

    Спасибо. Мне была интересна сама возможность настройки NTP. Просто абстрактно изучать работу firewall-а не интересно, хочется смотреть как работает, чтобы понимать.

    Остался вопрос по защите от SSH брутфорса.

    Сейчас правила в таком порядке:
    1. add action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp
    2. add action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage1
    3. add action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage2
    4. add action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=5d chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage3
    5. add action=drop chain=input comment="drop ssh brute downstream" dst-port=22 protocol=tcp src-address-list=ssh_blacklist

    6. add action=accept chain=input comment="allow ssh" dst-port=22 in-interface=ether1 protocol=tcp

    Как я это понимаю:
    Сначала пакет попадает в stage1, потом в stage2, потом в stage3, потом в blacklist и банится на 5 дней. При этом ниже правило, что ssh разрешен.

    Во многих инструкциях правила с 1-5 идут в обратном порядке, и я не понимаю почему. Ведь правила идут сверху вниз, "фильтрующие" трафик сверху, потом разрешающие, потом - блокирующие.

    Я прав или нет?

    При этом, если я правильно понимаю, адрес банится за 3 попытки подключения (удачные и нет) в течение 1 минуты.

    Можно ли настроить так, чтобы адрес банился именно за 3 неудачные попытки подключения?
     
    Последнее редактирование: 21 июл 2017
  8. blackfenix38

    blackfenix38 Новый участник

    Вариантов настроек куча суть принципа токова тут в саммый вверх до цепочки input ты анализируешь тип соединения в данном случаии ssh 22 tcp ( то есть представь входную дверь к тебе домой (input), пришёл чувак и хочет постучать тебе в дверь стук будет ssh 22 руками (tcp) ) но поумолчанию допустим у тебя стоит домофон ( политика по умолчанию дроп ) по этому ты сказал домофону к моей двери до квартиры можно пропускать чуваков (accept) чтоб они стучали в дверь только руками tcp

    """6. add action=accept chain=input comment="allow ssh" dst-port=22 in-interface=ether1 protocol=tcp""""" по этому стоит правило разрешить (если политика по умолчанию нельзя не чего ) дальше он подходит к твоей двери вступают правила 1,2,3,4 которое считает сколько раз он постучал при этом запаминает его лицо (ip адресс) если он привысил стуки в дверь больше количество раз то он попадает в черный список на количество дней и в ступает правило к входу к тебе 5. add action=drop chain=input comment="drop ssh brute downstream" dst-port=22 protocol=tcp src-address-list=ssh_blacklist в данном случаи оно должно стоять там от куда ты начал запришать всё после того что ты разрешил до прохода к тебе домой ( тоесть 6 правило должно стоять у тебя вместо пятого ) а потом drop дальше идет твоя квартира forward сначало ты можешь разрешить что можно там делать а остальное drop потом идёт output выход из твоей квартиры тут также можешь применить то что можно и запретить всё
    так вот к чему это я всё Пользуешься ли ты протоколом ssh ? если да то сервис ты оставляешь если нет ip services disable не нужные сервисы тамже на против сервиса есть очень хорошая весч available from суда ты можешь вписать ip adress с которого можно подключиться к сервисам или целый диапазон что исключает все выше проверки и снежает нагрузку на firewall а самый главный плюс ты зашишаешь сервис таким способом надёжно что кроме того списка больше не кого ,
    твоя цитата "Просто абстрактно изучать работу firewall-а не интересно," ну как тебе сказать , зачем тогда тебе в обше он нужен есть dlink Всё искоробки за тебя продумано ну правдо функционал порезан и я думаю либо все могут к тебе зайти и сделать что хотят либо же изучить принципы сетевого экрана а до этого ознакомиться с мделью OSI просто возми прочти и тогда много начнёт прикладываться и сложиться однажды в едино ) если ты вспомнишь этот пост вернёшся к нему и улыбнешся )
    извини конечно но выглядит это так пацаны я купил машину, ну не прав и опыта езды нет ) а знаков в обше не знаю и буду ехать по своему мнению а точто есть стандарт я не буду на него смотреть а то что есть опасность так из дома тоже выходить опасно )))
     
    a9265211819 и Илья Князев нравится это.