It is well known that you can enable anonymous access in SharePoint at the site or list/library level. But what about enabling/disabling anonymous access to selected pages within the site? The problem is you can only have one Pages library per site, and all publishing pages must sit in that library. Therefore, if you enable anonymous access on the Pages library, all pages in that library will be accessible anonymously.
I have found that (in SharePoint 2013 at least), you can disable anonymous access for selected pages within a library that has anonymous access enabled at the library level. You do this by breaking permission inheritance on the page.
Below are the permissions for the page before breaking inheritance. Notice the entry for Anonymous Users.
And now the permissions after breaking inheritance.
I have not tested this with list items, but I expect that it would work the same way.