Add 'mail_client_ips', 'restrict_local_service_to_net', 'restrict_local_net_to_net'.
This commit is contained in:
@ -10,6 +10,8 @@
|
||||
# Short-Description: IPv6 Firewall
|
||||
### END INIT INFO
|
||||
|
||||
CONFIG_FILE=/etc/ipt-firewall/ip6t-firewall-vserver.conf
|
||||
|
||||
|
||||
# ------------- Load Kernel Modules -------------
|
||||
#
|
||||
@ -30,8 +32,15 @@ echo
|
||||
## --------------------------------------------------------------------------
|
||||
## --- All Configurations will be done in /etc/ipt-firewall/ipt-firewall.conf
|
||||
## --------------------------------------------------------------------------
|
||||
|
||||
source /etc/ipt-firewall/ip6t-firewall.conf
|
||||
|
||||
if [[ -f "$CONFIG_FILE" ]]; then
|
||||
source $CONFIG_FILE
|
||||
else
|
||||
echo
|
||||
echo -e "\033[31m\033[1m\tNo Configuration File found..\033[m \033[37m\033[1mExiting now!\033[m"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# -------------
|
||||
@ -512,6 +521,7 @@ echo_done
|
||||
# - VPN
|
||||
# ---
|
||||
|
||||
echononl "\tPermit all traffic through VPN lines.."
|
||||
if $local_vpn_service ; then
|
||||
echononl "\tPermit all traffic through VPN lines.."
|
||||
for _port in ${local_vpn_port_arr[@]} ; do
|
||||
@ -526,6 +536,97 @@ if $local_vpn_service ; then
|
||||
fi
|
||||
done
|
||||
echo_done
|
||||
else
|
||||
echo_skipped
|
||||
fi
|
||||
|
||||
|
||||
echo
|
||||
|
||||
# -------------
|
||||
# ---- Restrict local Servive to given (extern) IP-Address/Network
|
||||
# -------------
|
||||
|
||||
echononl "\tRestrict local Servive to given (extern) IP-Address/Network"
|
||||
if [[ ${#restrict_local_service_to_net_arr[@]} -gt 0 ]] ; then
|
||||
|
||||
_deny_service_arr=()
|
||||
|
||||
for _val in "${restrict_local_service_to_net_arr[@]}" ; do
|
||||
IFS=',' read -a _val_arr <<< "${_val}"
|
||||
|
||||
for _dev in ${ext_if_arr[@]} ; do
|
||||
|
||||
if containsElement "${_val_arr[1]}" ${lxc_ips_arr[@]} ; then
|
||||
$ip6t -A FORWARD -i $_dev -p ${_val_arr[3]} -s ${_val_arr[0]} -d ${_val_arr[1]} --dport ${_val_arr[2]} -m conntrack --ctstate NEW -j ACCEPT
|
||||
if ! containsElement "${_dev},${_val_arr[1]},${_val_arr[2]},${_val_arr[3]},FORWARD" "${_deny_service_arr[@]}" ; then
|
||||
_deny_service_arr+=("${_dev},${_val_arr[1]},${_val_arr[2]},${_val_arr[3]},FORWARD")
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
$ip6t -A INPUT -i $_dev -p ${_val_arr[3]} -s ${_val_arr[0]} -d ${_val_arr[1]} --dport ${_val_arr[2]} -m conntrack --ctstate NEW -j ACCEPT
|
||||
|
||||
if ! containsElement "${_dev},${_val_arr[1]},${_val_arr[2]},${_val_arr[3]},INPUT" "${_deny_service_arr[@]}" ; then
|
||||
_deny_service_arr+=("${_dev},${_val_arr[1]},${_val_arr[2]},${_val_arr[3]},INPUT")
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
done
|
||||
|
||||
for _val in "${_deny_service_arr[@]}" ; do
|
||||
IFS=',' read -a _val_arr <<< "${_val}"
|
||||
$ip6t -A ${_val_arr[4]} -i ${_val_arr[0]} -p ${_val_arr[3]} -d ${_val_arr[1]} --dport ${_val_arr[2]} -j DROP
|
||||
done
|
||||
|
||||
echo_done
|
||||
else
|
||||
echo_skipped
|
||||
fi
|
||||
|
||||
|
||||
# -------------
|
||||
# ---- Restrict local Network to given extern IP-Address/Network
|
||||
# -------------
|
||||
|
||||
echononl "\tRestrict local Address/Network to given extern Address/Network"
|
||||
if [[ ${#restrict_local_net_to_net_arr[@]} -gt 0 ]] ; then
|
||||
|
||||
_deny_net_arr=()
|
||||
|
||||
for _val in "${restrict_local_net_to_net_arr[@]}" ; do
|
||||
IFS=',' read -a _val_arr <<< "${_val}"
|
||||
for _dev in ${ext_if_arr[@]} ; do
|
||||
|
||||
if containsElement "${_val_arr[1]}" ${lxc_ips_arr[@]} ; then
|
||||
$ip6t -A FORWARD -i $_dev -s ${_val_arr[0]} -d ${_val_arr[1]} -m conntrack --ctstate NEW -j ACCEPT
|
||||
|
||||
if ! containsElement "${_dev},${_val_arr[1]},FORWARD" "${_deny_net_arr[@]}" ; then
|
||||
_deny_net_arr+=("${_dev},${_val_arr[1]},FORWARD")
|
||||
fi
|
||||
|
||||
else
|
||||
$ip6t -A INPUT -i $_dev -s ${_val_arr[0]} -d ${_val_arr[1]} -m conntrack --ctstate NEW -j ACCEPT
|
||||
if ! containsElement "${_dev},${_val_arr[1]},INPUT" "${_deny_net_arr[@]}" ; then
|
||||
_deny_net_arr+=("${_dev},${_val_arr[1]},INPUT")
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
done
|
||||
|
||||
for _val in "${_deny_net_arr[@]}" ; do
|
||||
IFS=',' read -a _val_arr <<< "${_val}"
|
||||
$ip6t -A ${_val_arr[2]} -i ${_val_arr[0]} -d ${_val_arr[1]} -j DROP
|
||||
done
|
||||
|
||||
echo_done
|
||||
else
|
||||
echo_skipped
|
||||
fi
|
||||
|
||||
|
||||
@ -610,7 +711,6 @@ if $local_dns_service ; then
|
||||
$ip6t -A INPUT -p udp -d $_ip --dport 53 -m state --state NEW -j ACCEPT
|
||||
$ip6t -A INPUT -p tcp -d $_ip --dport 53 -m state --state NEW -j ACCEPT
|
||||
# Zonetransfer
|
||||
$ip6t -A INPUT -p tcp -d $_ip --dport 53 -m state --state NEW -j ACCEPT
|
||||
$ip6t -A OUTPUT -p tcp -s $_ip --dport 53 -m state --state NEW -j ACCEPT
|
||||
done
|
||||
fi
|
||||
@ -648,7 +748,6 @@ echononl "\t\tSSH Service"
|
||||
if $local_ssh_service ; then
|
||||
for _port in ${ssh_port_arr[@]} ; do
|
||||
$ip6t -A INPUT -p tcp --dport $_port -m state --state NEW -j ACCEPT
|
||||
|
||||
done
|
||||
fi
|
||||
|
||||
@ -870,10 +969,10 @@ fi
|
||||
|
||||
|
||||
# ---
|
||||
# - Mail (POP/IMAP Server)
|
||||
# - Mailservice (Submission/SMTPS/POP/IMAP Server)
|
||||
# ---
|
||||
|
||||
echononl "\t\tMail (POP/IMAP Server)"
|
||||
echononl "\t\tMailservice (Submission/SMTPS/POP/IMAP Server)"
|
||||
|
||||
if [[ ${#mail_server_ips_arr[@]} -gt 0 ]] || $local_mail_service ; then
|
||||
if [[ ${#mail_server_ips_arr[@]} -gt 0 ]] ; then
|
||||
@ -899,6 +998,33 @@ if [[ ${#mail_server_ips_arr[@]} -gt 0 ]] || $local_mail_service ; then
|
||||
$ip6t -A INPUT -i $host_if -p tcp -d $_ip -m multiport --dports $mail_user_ports -m state --state NEW -j ACCEPT
|
||||
done
|
||||
fi # if $local_mail_service
|
||||
|
||||
echo_done
|
||||
else
|
||||
echo_skipped
|
||||
fi
|
||||
|
||||
|
||||
# ---
|
||||
# - Mail Client (Submission/SMTPS/POPS/IMAPS) out only
|
||||
# ---
|
||||
|
||||
echononl "\t\tMail Client (Submission/SMTPS/POPS/IMAPS) out only"
|
||||
|
||||
if [[ ${#mail_client_ips_arr[@]} -gt 0 ]] ; then
|
||||
|
||||
if [[ ${#mail_client_ips_arr[@]} -gt 0 ]] ; then
|
||||
for _ip in ${mail_client_ips_arr[@]} ; do
|
||||
# mail ports
|
||||
#
|
||||
if containsElement "$_ip" ${lxc_ips_arr[@]} ; then
|
||||
$ip6t -A FORWARD -p tcp -s $_ip -m multiport --dports $mail_user_ports -m state --state NEW -j ACCEPT
|
||||
else
|
||||
$ip6t -A OUTPUT -p tcp -s $_ip -m multiport --dports $mail_user_ports -m state --state NEW -j ACCEPT
|
||||
fi
|
||||
done
|
||||
fi # if [[ ${#mail_client_ips_arr[@]} -gt 0 ]]
|
||||
|
||||
echo_done
|
||||
else
|
||||
echo_skipped
|
||||
|
Reference in New Issue
Block a user