Hi everyone, been a while since I’ve done a new config on my router so I figured I’d post here for a config review. If you see anything obviously wrong, missing anything that puts me at risk, or just likely to kill my my overall internet throughput performance I’d love to get your feedback. This is at my home on residential (dynamic IP) Spectrum 100Mbps Internet and I have a DynDns service with a personal domain and an updater client running on a VM.
Router: 1100AHx2
In general, I’m a security conscience user and have some interest in seeing how much scanning activity actually hits my router at home. I frequently travel so I do have a few RDP forward rules set for alternate ports so I can easily log in to home from my work computer rather than travel with two laptops. I run a Pi-Hole internally for my DNS. I don’t, at this point, want to block and reroute ALL DNS, I’d rather be able to put a secondary DNS into DHCP so that if the Pi-Hole fails while I’m traveling I won’t get any frantic phone calls about the internet being down. Although, having a rule to log all DNS traffic not from the Pi-Hole may be useful for visibility… I also found some tutorials on blocking brute force and port scanners, so I’ve included those in my firewall ruleset.
Stage two after getting this config locked down I wanted to build a Cacti (or similar) monitor and Syslog server VM. Maybe even a Security Onion IDS.
Here is the config:
export hide-sensitive (and I’ve redacted some names and MAC addresses)
# feb/11/2019 14:13:52 by RouterOS 6.43.11
# software id = T38F-M5KD
#
# model = 1100AHx2
# serial number = XXXXXXXXXXXXX
/interface bridge
add name=bridge1
/interface list
add name=WAN
add name=LAN
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip pool
add name=dhcp ranges=172.22.22.100-172.22.22.200
/ip dhcp-server
add address-pool=dhcp disabled=no interface=bridge1 lease-time=5m name=dhcp1
/tool user-manager customer
set admin access=\
own-routers,own-users,own-profiles,own-limits,config-payment-gw
/interface bridge port
add bridge=bridge1 interface=ether2
add bridge=bridge1 interface=ether3
add bridge=bridge1 interface=ether4
add bridge=bridge1 interface=ether5
add bridge=bridge1 interface=ether6
add bridge=bridge1 interface=ether7
add bridge=bridge1 interface=ether8
add bridge=bridge1 interface=ether9
add bridge=bridge1 interface=ether10
add bridge=bridge1 interface=ether11
add bridge=bridge1 interface=ether12
add bridge=bridge1 interface=ether13
/ip neighbor discovery-settings
set discover-interface-list=none
/ip settings
set rp-filter=strict
/interface list member
add interface=ether1 list=WAN
add interface=bridge1 list=LAN
/ip address
add address=172.22.22.1/24 interface=ether2 network=172.22.22.0
/ip dhcp-client
add dhcp-options=hostname,clientid disabled=no interface=ether1
/ip dhcp-server lease
add address=172.22.22.192 client-id=MACADDY1 comment=\
"Canon Printer" mac-address=MACADDY1 server=dhcp1
add address=172.22.22.200 client-id=MACADDY2 mac-address=\
MACADDY2 server=dhcp1
add address=172.22.22.191 client-id=MACADDY3 comment=\
"VMWare Management Interface\
\n" mac-address=MACADDY3 server=dhcp1
add address=172.22.22.190 client-id=MACADDY4 comment=Thermo \
mac-address=MACADD4 server=dhcp1
add address=172.22.22.197 client-id=MACADDY5 mac-address=\
MACADDY5 server=dhcp1
add address=172.22.22.196 client-id=MACADDY6 mac-address=\
MACADDY6 server=dhcp1
add address=172.22.22.198 client-id=MACADDY7 mac-address=\
MACADDY7 server=dhcp1
/ip dhcp-server network
add address=172.22.22.0/24 dns-server=172.22.22.2,172.22.22.1 domain=\
domain.local gateway=172.22.22.1 netmask=24 ntp-server=172.22.22.1
/ip dns
set allow-remote-requests=yes servers=172.22.22.2,1.1.1.1
/ip firewall address-list
add address=172.22.22.2-172.22.22.254 list=allowed_to_router
add address=0.0.0.0/8 comment=RFC6890 list=not_in_internet
add address=172.16.0.0/12 comment=RFC6890 list=not_in_internet
add address=192.168.0.0/16 comment=RFC6890 list=not_in_internet
add address=10.0.0.0/8 comment=RFC6890 list=not_in_internet
add address=169.254.0.0/16 comment=RFC6890 list=not_in_internet
add address=127.0.0.0/8 comment=RFC6890 list=not_in_internet
add address=224.0.0.0/4 comment=Multicast list=not_in_internet
add address=198.18.0.0/15 comment=RFC6890 list=not_in_internet
add address=192.0.0.0/24 comment=RFC6890 list=not_in_internet
add address=192.0.2.0/24 comment=RFC6890 list=not_in_internet
add address=198.51.100.0/24 comment=RFC6890 list=not_in_internet
add address=203.0.113.0/24 comment=RFC6890 list=not_in_internet
add address=100.64.0.0/10 comment=RFC6890 list=not_in_internet
add address=240.0.0.0/4 comment=RFC6890 list=not_in_internet
add address=192.88.99.0/24 comment="6to4 relay Anycast [RFC 3068]" list=\
not_in_internet
add comment="Black List (SSH)" list="Black List (SSH)"
add comment="Black List (Telnet)" list="Black List (Telnet)"
add comment="Black List (Winbox)" list="Black List (Winbox)"
add comment="Black List (Port Scanner WAN)" list=\
"Black List (Port Scanner WAN)"
add comment="Black List (Port Scanner LAN)" list=\
"Black List (Port Scanner LAN)"
/ip firewall filter
add action=accept chain=input comment="default configuration" \
connection-state=established,related
add action=accept chain=input src-address-list=allowed_to_router
add action=accept chain=input protocol=icmp
add action=drop chain=input
add action=fasttrack-connection chain=forward comment=FastTrack \
connection-state=established,related
add action=accept chain=forward comment="Established, Related" \
connection-state=established,related
add action=drop chain=forward comment="Drop invalid" connection-state=invalid \
log=yes log-prefix=invalid
add action=drop chain=forward comment=\
"Drop tries to reach not public addresses from LAN" dst-address-list=\
not_in_internet in-interface=bridge1 log=yes log-prefix=!public_from_LAN \
out-interface=!bridge1
add action=drop chain=forward comment=\
"Drop incoming packets that are not NATted" connection-nat-state=!dstnat \
connection-state=new in-interface=ether1 log=yes log-prefix=!NAT
add action=drop chain=forward comment=\
"Drop incoming from internet which is not public IP" in-interface=ether1 \
log=yes log-prefix=!public src-address-list=not_in_internet
add action=drop chain=forward comment=\
"Drop packets from LAN that do not have LAN IP" in-interface=bridge1 log=\
yes log-prefix=LAN_!LAN src-address=!172.22.22.0/24
add action=drop chain=input comment="Drop anyone in Black List (SSH)." \
in-interface=ether1 log=yes log-prefix="BL_Black List (SSH)" \
src-address-list="Black List (SSH)"
add action=jump chain=input comment="Jump to Black List (SSH) chain." \
dst-port=22 in-interface=ether1 jump-target="Black List (SSH) Chain" \
protocol=tcp
add action=add-src-to-address-list address-list="Black List (SSH)" \
address-list-timeout=4w2d chain="Black List (SSH) Chain" comment="Transfer\
\_repeated attempts from Black List (SSH) Stage 3 to Black List (SSH)." \
connection-state=new in-interface=ether1 log=yes log-prefix=\
"Add_Black List (SSH)" src-address-list="Black List (SSH) Stage 3"
add action=add-src-to-address-list address-list="Black List (SSH) Stage 3" \
address-list-timeout=1m chain="Black List (SSH) Chain" comment=\
"Add successive attempts to Black List (SSH) Stage 3." connection-state=\
new in-interface=ether1 log=yes log-prefix="Add_Black List (SSH) S3" \
src-address-list="Black List (SSH) Stage 2"
add action=add-src-to-address-list address-list="Black List (SSH) Stage 2" \
address-list-timeout=1m chain="Black List (SSH) Chain" comment=\
"Add successive attempts to Black List (SSH) Stage 2." connection-state=\
new in-interface=ether1 log=yes log-prefix="Add_Black List (SSH) S2" \
src-address-list="Black List (SSH) Stage 1"
add action=add-src-to-address-list address-list="Black List (SSH) Stage 1" \
address-list-timeout=1m chain="Black List (SSH) Chain" comment=\
"Add initial attempt to Black List (SSH) Stage 1." connection-state=new \
in-interface=ether1 log=yes log-prefix="Add_Black List (SSH) S1"
add action=return chain="Black List (SSH) Chain" comment=\
"Return From Black List (SSH) chain."
add action=drop chain=input comment="Drop anyone in Black List (Telnet)." \
in-interface=ether1 log=yes log-prefix="BL_Black List (Telnet)" \
src-address-list="Black List (Telnet)"
add action=jump chain=input comment="Jump to Black List (Telnet) chain." \
dst-port=23 in-interface=ether1 jump-target="Black List (Telnet) Chain" \
protocol=tcp
add action=add-src-to-address-list address-list="Black List (Telnet)" \
address-list-timeout=4w2d chain="Black List (Telnet) Chain" comment="Trans\
fer repeated attempts from Black List (Telnet) Stage 3 to Black List (Teln\
et)." connection-state=new in-interface=ether1 log=yes log-prefix=\
"Add_Black List (Telnet)" src-address-list="Black List (Telnet) Stage 3"
add action=add-src-to-address-list address-list="Black List (Telnet) Stage 3" \
address-list-timeout=1m chain="Black List (Telnet) Chain" comment=\
"Add successive attempts to Black List (Telnet) Stage 3." \
connection-state=new in-interface=ether1 log=yes log-prefix=\
"Add_Black List (Telnet) S3" src-address-list=\
"Black List (Telnet) Stage 2"
add action=add-src-to-address-list address-list="Black List (Telnet) Stage 2" \
address-list-timeout=1m chain="Black List (Telnet) Chain" comment=\
"Add successive attempts to Black List (Telnet) Stage 2." \
connection-state=new in-interface=ether1 log=yes log-prefix=\
"Add_Black List (Telnet) S2" src-address-list=\
"Black List (Telnet) Stage 1"
add action=add-src-to-address-list address-list="Black List (Telnet) Stage 1" \
address-list-timeout=1m chain="Black List (Telnet) Chain" comment=\
"Add initial attempt to Black List (Telnet) Stage 1." connection-state=\
new in-interface=ether1 log=yes log-prefix="Add_Black List (Telnet) S1"
add action=return chain="Black List (Telnet) Chain" comment=\
"Return From Black List (Telnet) chain."
add action=drop chain=input comment="Drop anyone in Black List (Winbox)." \
in-interface=ether1 log=yes log-prefix="BL_Black List (Winbox)" \
src-address-list="Black List (Winbox)"
add action=jump chain=input comment="Jump to Black List (Winbox) chain." \
dst-port=8291 in-interface=ether1 jump-target="Black List (Winbox) Chain" \
protocol=tcp
add action=add-src-to-address-list address-list="Black List (Winbox)" \
address-list-timeout=4w2d chain="Black List (Winbox) Chain" comment="Trans\
fer repeated attempts from Black List (Winbox) Stage 3 to Black List (Winb\
ox)." connection-state=new in-interface=ether1 log=yes log-prefix=\
"Add_Black List (Winbox)" src-address-list="Black List (Winbox) Stage 3"
add action=add-src-to-address-list address-list="Black List (Winbox) Stage 3" \
address-list-timeout=1m chain="Black List (Winbox) Chain" comment=\
"Add succesive attempts to Black List (Winbox) Stage 3." \
connection-state=new in-interface=ether1 log=yes log-prefix=\
"Add_Black List (Winbox) S3" src-address-list=\
"Black List (Winbox) Stage 2"
add action=add-src-to-address-list address-list="Black List (Winbox) Stage 2" \
address-list-timeout=1m chain="Black List (Winbox) Chain" comment=\
"Add succesive attempts to Black List (Winbox) Stage 2." \
connection-state=new in-interface=ether1 log=yes log-prefix=\
"Add_Black List (Winbox) S2" src-address-list=\
"Black List (Winbox) Stage 1"
add action=add-src-to-address-list address-list="Black List (Winbox) Stage 1" \
address-list-timeout=1m chain="Black List (Winbox) Chain" comment=\
"Add initial attempt to Black List (Winbox) Stage 1." connection-state=\
new in-interface=ether1 log=yes log-prefix="Add_Black List (Winbox) S1"
add action=return chain="Black List (Winbox) Chain" comment=\
"Return From Black List (Winbox) chain."
add action=drop chain=input comment=\
"Drop anyone in the Port Scanner (WAN) list." in-interface=ether1 log=yes \
log-prefix="BL_Black List (Port Scanner WAN)" src-address-list=\
"Black List (Port Scanner WAN)"
add action=drop chain=forward comment=\
"Drop anyone in the Port Scanner (WAN) list." in-interface=ether1 log=yes \
log-prefix="BL_Black List (Port Scanner WAN)" src-address-list=\
"Black List (Port Scanner WAN)"
add action=add-src-to-address-list address-list=\
"Black List (Port Scanner WAN)" address-list-timeout=4w2d chain=input \
comment="Add TCP port scanner to Port Scanner (WAN) list." in-interface=\
ether1 log=yes log-prefix="Add_Black List (Port Scanner WAN)" protocol=\
tcp psd=21,3s,3,1
add action=add-src-to-address-list address-list=\
"Black List (Port Scanner WAN)" address-list-timeout=4w2d chain=input \
comment="Add NMAP FIN Stealth scaner to Port Scanner (WAN) list." \
in-interface=ether1 log=yes log-prefix=\
"Add_Black List (Port Scanner WAN)" protocol=tcp tcp-flags=\
fin,!syn,!rst,!psh,!ack,!urg
add action=add-src-to-address-list address-list=\
"Black List (Port Scanner WAN)" address-list-timeout=4w2d chain=input \
comment="Add SYN/FIN scanner to Port Scanner (WAN) list." in-interface=\
ether1 log=yes log-prefix="Add_Black List (Port Scanner WAN)" protocol=\
tcp tcp-flags=fin,syn
add action=add-src-to-address-list address-list=\
"Black List (Port Scanner WAN)" address-list-timeout=4w2d chain=input \
comment="Add SYN/RST scanner to Port Scanner (WAN) list." in-interface=\
ether1 log=yes log-prefix="Add_Black List (Port Scanner WAN)" protocol=\
tcp tcp-flags=syn,rst
add action=add-src-to-address-list address-list=\
"Black List (Port Scanner WAN)" address-list-timeout=4w2d chain=input \
comment="Add FIN/PSH/URG scanner to Port Scanner (WAN) list." \
in-interface=ether1 log=yes log-prefix=\
"Add_Black List (Port Scanner WAN)" protocol=tcp tcp-flags=\
fin,psh,urg,!syn,!rst,!ack
add action=add-src-to-address-list address-list=\
"Black List (Port Scanner WAN)" address-list-timeout=4w2d chain=input \
comment="Add ALL/ALL scanner to Port Scanner (WAN) list." in-interface=\
ether1 log=yes log-prefix="Add_Black List (Port Scanner WAN)" protocol=\
tcp tcp-flags=fin,syn,rst,psh,ack,urg
add action=add-src-to-address-list address-list=\
"Black List (Port Scanner WAN)" address-list-timeout=4w2d chain=input \
comment="Add NMAP NULL scanner to Port Scanner (WAN) list." in-interface=\
ether1 log=yes log-prefix="Add_Black List (Port Scanner WAN)" protocol=\
tcp tcp-flags=!fin,!syn,!rst,!psh,!ack,!urg
add action=drop chain=input comment=\
"Drop anyone in the Port Scanner (LAN) list." in-interface=ether1 log=yes \
log-prefix="BL_Black List (Port Scanner LAN)" src-address-list=\
"Black List (Port Scanner LAN)"
add action=drop chain=forward comment=\
"Drop anyone in the Port Scanner (LAN) list." in-interface=ether1 log=yes \
log-prefix="BL_Black List (Port Scanner LAN)" src-address-list=\
"Black List (Port Scanner LAN)"
add action=add-src-to-address-list address-list=\
"Black List (Port Scanner LAN)" address-list-timeout=4w2d chain=forward \
comment="Add TCP port scanner to Port Scanner (LAN) list." in-interface=\
ether1 log=yes log-prefix="Add_Black List (Port Scanner LAN)" protocol=\
tcp psd=21,3s,3,1
/ip firewall nat
add action=masquerade chain=srcnat out-interface-list=WAN
add action=dst-nat chain=dstnat comment="Workstation1" dst-port=33896 \
in-interface=ether1 log=yes log-prefix=Workstation protocol=tcp \
to-addresses=172.22.22.196 to-ports=3389
add action=dst-nat chain=dstnat comment="Workstation2" dst-port=33897 \
in-interface=ether1 log=yes log-prefix=Workstation protocol=tcp \
to-addresses=172.22.22.197 to-ports=3389
add action=dst-nat chain=dstnat comment="Workstation3" dst-port=33898 \
in-interface=ether1 log=yes log-prefix=Workstation3 protocol=tcp \
to-addresses=172.22.22.198 to-ports=3389
add action=dst-nat chain=dstnat comment="Workstation4" dst-port=33899 \
in-interface=ether1 log=yes log-prefix=Workstation4 protocol=tcp \
to-addresses=172.22.22.199 to-ports=3389
/ip firewall service-port
set sip sip-timeout=2h
/ip service
set telnet disabled=yes
set ftp disabled=yes
set api disabled=yes
set api-ssl disabled=yes
/ip ssh
set strong-crypto=yes
/system clock
set time-zone-name=America/New_York
/system identity
set name=MyRouter
/system ntp client
set enabled=yes primary-ntp=172.98.193.44 secondary-ntp=54.39.20.247
/system ntp server
set enabled=yes
/system routerboard settings
set auto-upgrade=yes
/tool bandwidth-server
set enabled=no
/tool mac-server
set allowed-interface-list=none
/tool mac-server mac-winbox
set allowed-interface-list=none
/tool mac-server ping
set enabled=no
/tool user-manager database
set db-path=user-manager
Credits:
Mikrotik Wiki
https://www.marthur.com/networking/mikrotik-setup-brute-force-protection/382/
Thank you!