According to Cisco documentation that I have found, traffic sourced by a router is not affected by access list on the router's interfaces, only on traffic that transits the router.
Here are some quotes from Cisco documentation linked to their respective documents:
Now, there do appear to be exceptions to these statements. Ron has been able to show that the ACL does have an effect, at least in some cases. I haven't found any documentation to back this up, but perhaps a device with L2 functionality such as the ISR that he used behaves differently? I sometimes can get access to a non-production 7600 so if I get a chance to test with that I will update with my findings.
Here are the results I can get consistently across the routers in my lab (1800s, 2500s, 2600/2600XMs, and 3825) across a variety of codes. I will also note that I did cut some lines at points to reduce the length of the output (some of my extra play/testing, interface output not relevant to this test, etc). To start, let's establish some basic information by showing the serial interface on this router, the loopback on this router, the cdp neighbor showing the neighbor router, routing to the loopback on the neighbor router (which includes IP from serial on that side) and a basic ping to set the baseline:
r7#sh ip int brie
Interface IP-Address OK? Method Status Protocol
Serial0/0 10.78.1.1 YES NVRAM up up
Loopback0 10.7.1.1 YES NVRAM up up
r7#sh cdp nei
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater
Device ID Local Intrfce Holdtme Capability Platform Port ID
r8 Ser 0/0 134 R 2610 Ser 0/0
r7#sh ip route 10.8.1.1
Routing entry for 10.8.1.1/32
Last update from 10.78.1.2 on Serial0/0, 6w4d ago
Routing Descriptor Blocks:
* 10.78.1.2, from 10.78.1.2, 6w4d ago, via Serial0/0
r7#ping 10.78.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.78.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms
So, let's start the fun:
r7#sh ip access-lists
Extended IP access list TestACL
deny icmp any any echo
deny icmp any any echo-reply
permit ip any any
r7#config t
r7(config)#int Ser 0/0
r7(config-if)#ip access-group TestACL out
r7(config-if)#end
r7#ping 10.78.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.78.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms
r7#ping 10.8.1.1 source lo 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.8.1.1, timeout is 2 seconds:
Packet sent with a source address of 10.7.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms
r7#ping 10.78.1.2 source lo 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.78.1.2, timeout is 2 seconds:
Packet sent with a source address of 10.7.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms
r7#sh ip access-lists
Extended IP access list TestACL
deny icmp any any echo
deny icmp any any echo-reply
permit ip any any
So, I show my access list, apply it to the serial interface, and run the same ping, then ping both remote IP addresses sourced from loopback. All three work just fine and showing the access list again, note there are no hits. But maybe I applied it backwards?
r7(config)#int Ser 0/0
r7(config-if)#no ip access-group out
r7(config-if)#ip access-group TestACL in
r7(config-if)#end
r7#ping 10.78.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.78.1.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
Now it looks like it was blocked, but not because I applied it backwards. Let's look at the access list again:
r7#sh ip access-lists
Extended IP access list TestACL
deny icmp any any echo
deny icmp any any echo-reply (10 matches)
permit ip any any (17 matches)
We can see based on the counters that it is the echo-reply from the neighbor router that is being blocked when coming into the interface. This is what we should expect using this ACL inbound. Note that the permit statement now also has matches. These are the routing updates and other traffic from the neighboring router, but note above that the outbound ACL didn't get any permit matches even the local router is also participating in routing.
Observant readers may point out that my ACL doesn't match Ron's. It is actually based on the original question posted by the OP. But let's run a test similar to Ron's to rule that out as well. I also went ahead and explicitly allowed my second IP just to have the match counter if it applied.
r7#config t
r7(config)#int ser 0/0
r7(config-if)#no ip access-group in
r7(config-if)#exit
r7(config)#no ip access-list extended TestACL
r7(config)#ip access-list extended TestACL
r7(config-ext-nacl)#permit icmp any host 10.8.1.1
r7(config-ext-nacl)#deny icmp any host 10.78.1.2
r7(config-ext-nacl)#permit ip any any
r7(config-ext-nacl)#end
r7(config)#int ser 0/0
r7(config-if)#ip access
r7(config-if)#ip access-group TestACL out
r7(config-if)#end
r7#sh ip access-lists TestACL
Extended IP access list TestACL
permit icmp any host 10.8.1.1
deny icmp any host 10.78.1.2
permit ip any any
r7#ping 10.8.1.1 sourc lo 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.8.1.1, timeout is 2 seconds:
Packet sent with a source address of 10.7.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms
r7#ping 10.78.1.2 source lo 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.78.1.2, timeout is 2 seconds:
Packet sent with a source address of 10.7.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/4 ms
r7#sh ip access-lists
Extended IP access list TestACL
permit icmp any host 10.8.1.1
deny icmp any host 10.78.1.2
permit ip any any