Use o ipfw como na resposta do @ bindbn. Essa é a ideia geral.
Persistência:
coloque suas regras em um arquivo:
/etc/ipfw.conf
adicione no topo do seu arquivo
flush
Verifique se não há espaços em branco iniciais ou finais em nenhuma linha.
adicione a /Library/LaunchDaemons/com.yourdomain.ipfw.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.yourdomain.ipfw</string>
<key>Program</key>
<string>/sbin/ipfw</string>
<key>ProgramArguments</key>
<array>
<string>/sbin/ipfw</string>
<string>-q</string>
<string>/etc/ipfw.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Reinicie ou
launchctl load -w /Library/LaunchDaemons/com.yourdomain.ipfw.plist
pela primeira vez.
Depois disso, é
launchctl load com.yourdomain.ipfw