To be a bit more specific, there are default behaviors for each of the chains. In 2.8.x, we had the option to set a default policy per chain. In 2.9.x, this option is no longer available. MikroTik has 3 “built-in” chains as follows:
INPUT - This chain is called for packets which are destined for the router. In other words, if the dst-address belongs to the router itself, that packet is processed against the INPUT chain.
OUTPUT - This chain is called for packets which originate from the router. Things like the router sending it’s syslog to a remote syslog server, replies to ping or other connections and such will be processed against this chain.
FORWARD - This chain is called for packets that enter the router and will be sent along to other devices. In other words, traffic that passes through the router will be processed against this chain.
For the above 3 “built-in” chains, the default policy is ACCEPT. This means that if you have no rules in a given chain, then packets that would be processed against that chain will “automatically” be accepted. Furthermore, let’s consider the following example for the input chain:
/ip firewall filter
add chain=input src-address=10.10.2.1 action=drop
add chain=input src-address=10.10.2.25 action=drop
add chain=input src-address=10.1.1.2 action=accept
When a packet is received by the router with a src-address of 10.10.2.1 and a destination address that belongs to the router, that packet will match the first rule in the example and will, therefore, be dropped. Likewise for a src-address of 10.10.2.25. The last rule causes all traffic from 10.1.1.2 to be accepted. Since the default behavior for the input chain is to accept, the traffic from that IP would have been accepted anyway, so the rule is not needed. Keep in mind, that firewall rules are processed in order from the top going down. Let’s add another rule at the bottom of the list now:
add chain=input action=drop
What this rule does is cause any traffic that has not matched any previous rule to be dropped. With this setup, the first 2 rules would not really be needed, as the only traffic that has an “accept” action (if it comes from 10.1.1.2) will be allowed to pass the firewall. It should be noted that that last rule does not really change the default policy of the firewall, but it changes the default behavior, since the final rule will drop all other traffic. Kind of a minor point, but I thought I would add it for the sake of completeness.