According to man mmap
PROT_NONE The memory cannot be accessed at all. PROT_READ The memory can be read. PROT_WRITE The memory can be modified. PROT_EXEC The memory can be executed.
PROT_NONE will act like a guard page by hitting a SIGSEGV when accessed.
The page with PROT_NONE looks like this in the map during runtime
0x7ffff7ff7000 0x7ffff7ff8000 ---p 1000 0
gdb allows you to call arbitrary functions in the process space. A simple solution would be to run this under gdb
print mprotect($address,0x1000,0)
This would set PROT_NONE = 0 permissions on the page and it will act as a guard page. If after hitting SIGSEGV you want to remap the page as rw (PROT_READ|PROT_WRITE)
print mprotect($address,0x1000,3)
If you want to add an extra page mapped as guard page like the page heaps in windows, you can call mmap.
print /a mmap($address+0x1000,0x1000,0,0x22,-1,0)
Here 0x22 is MAP_PRIVATE|MAP_ANONYMOUS