58 lines
2.2 KiB
Bash
58 lines
2.2 KiB
Bash
#!/bin/bash
|
|
. ./lib
|
|
|
|
options=()
|
|
options+=("Edit IPv4" "/etc/iptables/iptables.rules")
|
|
options+=("Edit IPv6" "/etc/iptables/ip6tables.rules")
|
|
options+=("" "")
|
|
options+=("Load Rules" "iptables-restore & ip6tables-restore")
|
|
options+=("" "")
|
|
options+=("Start At Boot" "systemctl enable iptables & systemctl enable ip6tables")
|
|
options+=("Generate Default Rules" "/etc/iptables/iptables.rules & /etc/iptables/ip6tables.rules")
|
|
|
|
defaultitem=""
|
|
sel=$(whiptail --backtitle "$apptitle" --title "Firewall Menu :" --menu "" --default-item "$defaultitem" --cancel-button "Back" 0 0 0 \
|
|
"${options[@]}" \
|
|
3>&1 1>&2 2>&3)
|
|
if [ ! "$?" = "0" ]; then
|
|
exit 1
|
|
fi
|
|
sed -i "/^defaultitem=/c\defaultitem=\"$sel\"" $0
|
|
|
|
case $sel in
|
|
'Edit IPv4') editfile /etc/iptables/iptables.rules;;
|
|
'Edit IPv6') editfile /etc/iptables/ip6tables.rules;;
|
|
'Load Rules') iptables-restore < /etc/iptables/iptables.rules
|
|
ip6tables-restore < /etc/iptables/ip6tables.rules;;
|
|
'Start At Boot') systemctl enable iptables
|
|
systemctl start iptables
|
|
systemctl enable ip6tables
|
|
systemctl start ip6tables;;
|
|
'Generate Default Rules')
|
|
file=/etc/iptables/iptables.rules
|
|
echo '*filter' > $file
|
|
echo ':INPUT DROP [0:0]' >> $file
|
|
echo ':FORWARD DROP [0:0]' >> $file
|
|
echo ':OUTPUT ACCEPT [0:0]' >> $file
|
|
echo '-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT' >> $file
|
|
echo '-A INPUT -i lo -j ACCEPT' >> $file
|
|
echo '# SSH' >> $file
|
|
echo '#-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT' >> $file
|
|
echo '# Ping' >> $file
|
|
echo '#-A INPUT -p icmp -j ACCEPT' >> $file
|
|
echo '# SNMP' >> $file
|
|
echo '#-A INPUT -s 192.168.0.0/24 -p udp -m udp --dport 161 -m state --state NEW -j ACCEPT' >> $file
|
|
echo 'COMMIT' >> $file
|
|
iptables-restore $file
|
|
file=/etc/iptables/ip6tables.rules
|
|
echo '*filter' > $file
|
|
echo ':INPUT DROP [0:0]' >> $file
|
|
echo ':FORWARD DROP [0:0]' >> $file
|
|
echo ':OUTPUT ACCEPT [0:0]' >> $file
|
|
echo '-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT' >> $file
|
|
echo '-A INPUT -i lo -j ACCEPT' >> $file
|
|
echo 'COMMIT' >> $file
|
|
ip6tables-restore $file;;
|
|
esac
|
|
|
|
exit 0
|