Добрый день! Я новичок и многое не понимаю, но стремлюсь. Имеется роутер Mikrotik. IP статичный. К нему подключен сервер для бэкапа через интернет с удаленных компьютеров по ssh/rsync и локальныекомпьютеры (по wifi). Прочитал кучу инструкций, как настроить firewall, но остались вопросы. Конфиг такой: Спойлер: /ip firewall address-list 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 Спойлер: /ip firewall filter 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 acket protocol=icmp 8. add action=accept chain=forward comment=Allow_limited_pings in-interface=\ ether1 limit=50/5s,2 acket 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. Нужно ли добавить что-то нужное? Заранее спасибо за помощь!
Понимаю, что получилась «куча». Потому и прошу помощи. Попытаюсь сформулировать понятнее. Хочу, чтобы были: 1. Доступ к серверу №1 для бэкапов по ssh/rsyncиз интернета. 2. Доступ к серверу №2 для закачки торрентов через порт 49051 3. Доступ к компьютеру для закачки торрентов через порт 47051 и для соединения через Resilio Sync через порт 28533 4. Свободный доступ из локальной сети Спойлер: Более понятный /ip firewall filter # Запрещаем транзит '''битых''' и '''неправильных''' пакетов 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,2acket protocol=icmp 9. add action=accept chain=forward comment=Allow_limited_pings in-interface=\ ether1 limit=50/5s,2acket 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"
Здравствуйте существуют разные политики Firewall и разные методы , настройка зависимости от нужд и познаний ( если вы делаете политику по умолчанию DROP запрет INPUT -(Входящие соединения на ваш роутер ) (FORWARD - ваша локальная сеть ) и (OUTPUT -исходящие соединения ) то соответственно открываете порты и пробросы на сервисы которые вы хотите , Для начало возьмите и окуните себя в изучения информации как устроен межсетевой экран как ходит пакет который пришел к вам на интерфейс , какую цепочку он проходит до достижения INPUT какую до достижения FORWARD , а также что нужно с начало разрешающие правила , потом запрешающие ) ну а также не когда не выкладывайте свои правила фаервола на публику ) а ещё вам необходимо почитать про протоколы на сервисах и определиться по TCP или по UDP работает то что вы хотите разрешить фаерволе чтобы исключить уязвимости и дырки некоторых сервисах и своего личного пространства ) а также на официальном сайте микротик в описание устройства есть описание пропускной способности пакетов втом или ином режиме при большом количестве правил она снижается
Спасибо. Вроде разобрался. Остался вопрос с настройкой 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 Но время на компьютере не синхронизируется.
А чем вас стандартная windows синхронизация времени не устраивает ???)) или ручками везде поставить ) обьяснью почему делаю упор на это так как , а вы уверены сервер с которым вы синхронизируетесь не являеться уеязвимым ? это исключит на вашей стороне : обход ограничений безопасности, раскрытие важных данных и многое другое ) так что мой вам совет изучите внимательно сначало тот или инной сервис!!! чем открыть его наружу я вам в прошлом сообшении дал наводочки ) главное научитесь понимать ответсвенность если вы это делаете особенно на придприятие ! не ошибаеться тот кто не чего не делает )
Спасибо. Мне была интересна сама возможность настройки 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 неудачные попытки подключения?
Вариантов настроек куча суть принципа токова тут в саммый вверх до цепочки 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 просто возми прочти и тогда много начнёт прикладываться и сложиться однажды в едино ) если ты вспомнишь этот пост вернёшся к нему и улыбнешся ) извини конечно но выглядит это так пацаны я купил машину, ну не прав и опыта езды нет ) а знаков в обше не знаю и буду ехать по своему мнению а точто есть стандарт я не буду на него смотреть а то что есть опасность так из дома тоже выходить опасно )))