Em vez de fazer o seu script bash suid root, execute o seu script bash através do sudo. Como um benefício colateral, isso também permite que você bloqueie facilmente quem pode executar seu script como root e também os argumentos passados. Você poderia, por exemplo, permitir apenas:
phpuser ALL=(root) NOPASSWD: /usr/local/sbin/your-script [0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9][0-9]
certifique-se de que seu script PHP sempre formata cada octeto de endereço IP como três dígitos.
Se for muito difícil ter o sudo chamada PHP (o que não deveria ser!), você pode fazer o script fazê-lo sozinho, com algo como:
#!/bin/sh
[ "$(id -u)" -eq 0 ] || exec sudo -- "$0" "$@"
# rest of script here
(Eu não estou inteiramente certo de que o iptables ficará satisfeito com os 0s iniciais, se não você pode despir-se).
PS: Por favor, cite suas variáveis em seu script de shell:
if validate_ip "$1"; then
/usr/sbin/iptables -I INPUT -s "$1" -j DROP
# ⋮