| verzia 2.124, 2026/01/06 16:41:45 |
verzia 2.125, 2026/02/26 18:34:33 |
|
|
| # Licensed under terms of GNU General Public License. |
# Licensed under terms of GNU General Public License. |
| # All rights reserved. |
# All rights reserved. |
| # |
# |
| # $Platon: scripts/shell/firewall/fw-universal.sh,v 2.123 2023/11/08 22:29:04 nepto Exp $ |
# $Platon: scripts/shell/firewall/fw-universal.sh,v 2.124 2026/01/06 16:41:45 nepto Exp $ |
| # |
# |
| # Changelog: |
# Changelog: |
| # 2003-10-24 - created |
# 2003-10-24 - created |
| Riadok 187 get_first_ip_addr() |
|
| Riadok 187 get_first_ip_addr() |
|
| print_first `echo ${!varname} | sort -g` |
print_first `echo ${!varname} | sort -g` |
| } # }}} |
} # }}} |
| |
|
| |
normalize_portspec() |
| |
{ # {{{ |
| |
local spec="$1" |
| |
local out="" |
| |
local part="" |
| |
local old_ifs="$IFS" |
| |
local start="" |
| |
local end="" |
| |
|
| |
if [ -z "$spec" ]; then |
| |
echo "ERROR: empty port specification" >&2 |
| |
return 1 |
| |
fi |
| |
|
| |
if [ "x$spec" = "xALL" ]; then |
| |
echo "$spec" |
| |
return 0 |
| |
fi |
| |
|
| |
IFS=',' |
| |
for part in $spec; do |
| |
if [ -z "$part" ]; then |
| |
IFS="$old_ifs" |
| |
echo "ERROR: invalid port specification '$spec' (empty list element)" >&2 |
| |
return 1 |
| |
fi |
| |
|
| |
if [[ "$part" =~ ^([0-9]+)-([0-9]+)$ ]]; then |
| |
start="${BASH_REMATCH[1]}" |
| |
end="${BASH_REMATCH[2]}" |
| |
if [ "$start" -gt "$end" ]; then |
| |
IFS="$old_ifs" |
| |
echo "ERROR: invalid port range '$part' in '$spec' (start > end)" >&2 |
| |
return 1 |
| |
fi |
| |
if [ "$start" -gt 65535 ] || [ "$end" -gt 65535 ]; then |
| |
IFS="$old_ifs" |
| |
echo "ERROR: invalid port range '$part' in '$spec' (port > 65535)" >&2 |
| |
return 1 |
| |
fi |
| |
part="$start:$end" |
| |
elif [[ "$part" =~ ^([0-9]+):([0-9]+)$ ]]; then |
| |
start="${BASH_REMATCH[1]}" |
| |
end="${BASH_REMATCH[2]}" |
| |
if [ "$start" -gt "$end" ]; then |
| |
IFS="$old_ifs" |
| |
echo "ERROR: invalid port range '$part' in '$spec' (start > end)" >&2 |
| |
return 1 |
| |
fi |
| |
if [ "$start" -gt 65535 ] || [ "$end" -gt 65535 ]; then |
| |
IFS="$old_ifs" |
| |
echo "ERROR: invalid port range '$part' in '$spec' (port > 65535)" >&2 |
| |
return 1 |
| |
fi |
| |
elif [[ "$part" =~ ^[0-9]+$ ]]; then |
| |
if [ "$part" -gt 65535 ]; then |
| |
IFS="$old_ifs" |
| |
echo "ERROR: invalid port '$part' in '$spec' (port > 65535)" >&2 |
| |
return 1 |
| |
fi |
| |
fi |
| |
|
| |
if [ -z "$out" ]; then |
| |
out="$part" |
| |
else |
| |
out="$out,$part" |
| |
fi |
| |
done |
| |
IFS="$old_ifs" |
| |
|
| |
echo "$out" |
| |
} # }}} |
| |
|
| |
normalize_portspec_var() |
| |
{ # {{{ |
| |
local varname="$1" |
| |
local normalized="" |
| |
|
| |
normalized="$(normalize_portspec "${!varname}")" || return 1 |
| |
printf -v "$varname" '%s' "$normalized" |
| |
} # }}} |
| |
|
| |
validate_legacy_peer_port_token() |
| |
{ # {{{ |
| |
local token="$1" |
| |
local peer="$2" |
| |
local port="$3" |
| |
local colons="" |
| |
|
| |
case "$token" in |
| |
*:* ) |
| |
colons="${token//[^:]/}" |
| |
if [ "${#colons}" -ne 1 ] || [ -z "$peer" ] || [ -z "$port" ]; then |
| |
echo "ERROR: invalid legacy peer:port token '$token' (use 'peer:port' or range with dash, e.g. peer:2000-2010)" >&2 |
| |
return 1 |
| |
fi |
| |
if [[ "$token" =~ ^[0-9]+:[0-9]+$ ]]; then |
| |
echo "ERROR: ambiguous token '$token' in peer:port rule (use range with dash, e.g. ${peer}-${port}, or specify a real host/IP)" >&2 |
| |
return 1 |
| |
fi |
| |
;; |
| |
esac |
| |
|
| |
return 0 |
| |
} # }}} |
| |
|
| read_config_ips() |
read_config_ips() |
| { # {{{ |
{ # {{{ |
| PARSE_CONFIG=$1 $PERL -ne 'if (m/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/(\d+)$/g) { print; } elsif ($_ !~ m/^\s*#/ && $_ !~ m/^\s*$/ ) { print STDERR "ERROR: $ENV{PARSE_CONFIG}:$.: ignored string $_\n"; }' $1 |
PARSE_CONFIG=$1 $PERL -ne 'if (m/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/(\d+)$/g) { print; } elsif ($_ !~ m/^\s*#/ && $_ !~ m/^\s*$/ ) { print STDERR "ERROR: $ENV{PARSE_CONFIG}:$.: ignored string $_\n"; }' $1 |
|
|
| (NF == 3) { remote_ip = $2; remote_port = $1; local_port = $3; } \ |
(NF == 3) { remote_ip = $2; remote_port = $1; local_port = $3; } \ |
| END { printf "remote_ip=%s; remote_port=%s; local_port=%s;", remote_ip, remote_port, local_port; }'` |
END { printf "remote_ip=%s; remote_port=%s; local_port=%s;", remote_ip, remote_port, local_port; }'` |
| print_info -en " $remote_port>>$remote_ip:$local_port(tcp)" |
print_info -en " $remote_port>>$remote_ip:$local_port(tcp)" |
| |
remote_port_match="$(normalize_portspec "$remote_port")" || exit 1 |
| $IPTABLES -t nat -A PREROUTING -p TCP \ |
$IPTABLES -t nat -A PREROUTING -p TCP \ |
| -i $NAT_SUBNET_IFACE \ |
-i $NAT_SUBNET_IFACE \ |
| --dport $remote_port -j REDIRECT --to-port $local_port |
--dport $remote_port_match -j REDIRECT --to-port $local_port |
| done |
done |
| for redirect in $NAT_UDP_PORT_REDIRECT; do |
for redirect in $NAT_UDP_PORT_REDIRECT; do |
| #eval `echo $redirect | $AWK -v FS=: '{ printf "remote_port=%s; local_port=%s;", $1, $2; }'` |
#eval `echo $redirect | $AWK -v FS=: '{ printf "remote_port=%s; local_port=%s;", $1, $2; }'` |
|
|
| (NF == 3) { dnat = "yes" ; remote_ip = $2; remote_port = $1; local_port = $3; } \ |
(NF == 3) { dnat = "yes" ; remote_ip = $2; remote_port = $1; local_port = $3; } \ |
| END { printf "dnat=%s; remote_ip=%s; remote_port=%s; local_port=%s;", dnat, remote_ip, remote_port, local_port; }'` |
END { printf "dnat=%s; remote_ip=%s; remote_port=%s; local_port=%s;", dnat, remote_ip, remote_port, local_port; }'` |
| print_info -en " $remote_port>>$remote_ip:$local_port(udp)" |
print_info -en " $remote_port>>$remote_ip:$local_port(udp)" |
| |
remote_port_match="$(normalize_portspec "$remote_port")" || exit 1 |
| |
local_port_match="$(normalize_portspec "$local_port")" || exit 1 |
| if [ "x$dnat" = "xyes" ]; then |
if [ "x$dnat" = "xyes" ]; then |
| $IPTABLES -t nat -A PREROUTING -p UDP -i $NAT_SUBNET_IFACE -d ! $ip \ |
$IPTABLES -t nat -A PREROUTING -p UDP -i $NAT_SUBNET_IFACE -d ! $ip \ |
| --dport $local_port -j DNAT --to $remote_ip:$remote_port |
--dport $local_port_match -j DNAT --to $remote_ip:$remote_port |
| $IPTABLES -A FORWARD -p UDP -i $NAT_SUBNET_IFACE -d ! $ip --dport $local_port -j ACCEPT |
$IPTABLES -A FORWARD -p UDP -i $NAT_SUBNET_IFACE -d ! $ip --dport $local_port_match -j ACCEPT |
| else |
else |
| $IPTABLES -t nat -A PREROUTING -p UDP \ |
$IPTABLES -t nat -A PREROUTING -p UDP \ |
| -i ! $NAT_LAN_IFACE -d ! $lan_ip \ |
-i ! $NAT_LAN_IFACE -d ! $lan_ip \ |
| --dport $remote_port -j REDIRECT --to-port $local_port |
--dport $remote_port_match -j REDIRECT --to-port $local_port |
| fi |
fi |
| done |
done |
| |
|
|
|
| if [ ! -z "$NAT_FORWARD_TCP_PORTS" ]; then |
if [ ! -z "$NAT_FORWARD_TCP_PORTS" ]; then |
| print_info -en "\tAccepting FORWARD TCP ports:" |
print_info -en "\tAccepting FORWARD TCP ports:" |
| for port in $NAT_FORWARD_TCP_PORTS; do |
for port in $NAT_FORWARD_TCP_PORTS; do |
| |
normalize_portspec_var port || exit 1; |
| print_info -en " $port" |
print_info -en " $port" |
| $IPTABLES -A FORWARD -p TCP --dport $port -m conntrack --ctstate NEW -j ACCEPT |
$IPTABLES -A FORWARD -p TCP --dport $port -m conntrack --ctstate NEW -j ACCEPT |
| done |
done |
|
|
| if [ ! -z "$NAT_FORWARD_UDP_PORTS" ]; then |
if [ ! -z "$NAT_FORWARD_UDP_PORTS" ]; then |
| print_info -en "\tAccepting FORWARD UDP ports:" |
print_info -en "\tAccepting FORWARD UDP ports:" |
| for port in $NAT_FORWARD_UDP_PORTS; do |
for port in $NAT_FORWARD_UDP_PORTS; do |
| |
normalize_portspec_var port || exit 1; |
| print_info -en " $port" |
print_info -en " $port" |
| $IPTABLES -A FORWARD -p UDP --dport $port -m conntrack --ctstate NEW -j ACCEPT |
$IPTABLES -A FORWARD -p UDP --dport $port -m conntrack --ctstate NEW -j ACCEPT |
| done |
done |
|
|
| (NF == 4) { src_ip = $1 ; src_port = $2; local_machine = $3; dest_port = $4; } \ |
(NF == 4) { src_ip = $1 ; src_port = $2; local_machine = $3; dest_port = $4; } \ |
| END { printf "src_ip=%s; src_port=%s; local_machine=%s; dest_port=%s;", src_ip, src_port, local_machine, dest_port; }'` |
END { printf "src_ip=%s; src_port=%s; local_machine=%s; dest_port=%s;", src_ip, src_port, local_machine, dest_port; }'` |
| print_info -en " $src_ip:$src_port -> $local_machine:$dest_port" |
print_info -en " $src_ip:$src_port -> $local_machine:$dest_port" |
| |
src_port_match="$(normalize_portspec "$src_port")" || exit 1 |
| |
dest_port_match="$(normalize_portspec "$dest_port")" || exit 1 |
| $IPTABLES -t nat -A PREROUTING -p TCP -i $NAT_LAN_IFACE -d $src_ip \ |
$IPTABLES -t nat -A PREROUTING -p TCP -i $NAT_LAN_IFACE -d $src_ip \ |
| --dport $src_port -j DNAT --to $local_machine:$dest_port |
--dport $src_port_match -j DNAT --to $local_machine:$dest_port |
| $IPTABLES -A FORWARD -p TCP -i $NAT_LAN_IFACE -d $local_machine --dport $dest_port -j ACCEPT |
$IPTABLES -A FORWARD -p TCP -i $NAT_LAN_IFACE -d $local_machine --dport $dest_port_match -j ACCEPT |
| done |
done |
| print_info " done." |
print_info " done." |
| fi |
fi |
|
|
| (NF == 4) { src_ip = $1 ; src_port = $2; local_machine = $3; dest_port = $4; } \ |
(NF == 4) { src_ip = $1 ; src_port = $2; local_machine = $3; dest_port = $4; } \ |
| END { printf "src_ip=%s; src_port=%s; local_machine=%s; dest_port=%s;", src_ip, src_port, local_machine, dest_port; }'` |
END { printf "src_ip=%s; src_port=%s; local_machine=%s; dest_port=%s;", src_ip, src_port, local_machine, dest_port; }'` |
| print_info -en " $src_port -> $local_machine:$dest_port" |
print_info -en " $src_port -> $local_machine:$dest_port" |
| |
src_port_match="$(normalize_portspec "$src_port")" || exit 1 |
| |
dest_port_match="$(normalize_portspec "$dest_port")" || exit 1 |
| $IPTABLES -t nat -A PREROUTING -p UDP -i $NAT_LAN_IFACE -d $lan_ip \ |
$IPTABLES -t nat -A PREROUTING -p UDP -i $NAT_LAN_IFACE -d $lan_ip \ |
| --dport $src_port -j DNAT --to $local_machine:$dest_port |
--dport $src_port_match -j DNAT --to $local_machine:$dest_port |
| $IPTABLES -A FORWARD -p UDP -i $NAT_LAN_IFACE -d $local_machine --dport $dest_port -j ACCEPT |
$IPTABLES -A FORWARD -p UDP -i $NAT_LAN_IFACE -d $local_machine --dport $dest_port_match -j ACCEPT |
| done |
done |
| print_info " done." |
print_info " done." |
| fi |
fi |
|
|
| if [ ! -z "$DROP_OUTPUT_TCP" ]; then |
if [ ! -z "$DROP_OUTPUT_TCP" ]; then |
| print_info -en "$riface: Dropping outgoing packets from ports:" |
print_info -en "$riface: Dropping outgoing packets from ports:" |
| for port in $DROP_OUTPUT_TCP; do |
for port in $DROP_OUTPUT_TCP; do |
| |
normalize_portspec_var port || exit 1; |
| print_info -en " $port" |
print_info -en " $port" |
| |
|
| if [ "X$XEN_MODE" = "Xon" ]; then |
if [ "X$XEN_MODE" = "Xon" ]; then |
|
|
| if [ ! -z "$DROP_OUTPUT_UDP" ]; then |
if [ ! -z "$DROP_OUTPUT_UDP" ]; then |
| print_info -en "$riface: Dropping outgoing packets from ports:" |
print_info -en "$riface: Dropping outgoing packets from ports:" |
| for port in $DROP_OUTPUT_UDP; do |
for port in $DROP_OUTPUT_UDP; do |
| |
normalize_portspec_var port || exit 1; |
| print_info -en " $port" |
print_info -en " $port" |
| |
|
| if [ "X$XEN_MODE" = "Xon" ]; then |
if [ "X$XEN_MODE" = "Xon" ]; then |
|
|
| if [ ! -z "$ALL_DROP_INPUT_TCP" ]; then |
if [ ! -z "$ALL_DROP_INPUT_TCP" ]; then |
| print_info -en "Drop ALL INPUT TCP connections on ports:" |
print_info -en "Drop ALL INPUT TCP connections on ports:" |
| for port in $ALL_DROP_INPUT_TCP; do |
for port in $ALL_DROP_INPUT_TCP; do |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
|
|
| if [ ! -z "$ALL_DROP_INPUT_UDP" ]; then |
if [ ! -z "$ALL_DROP_INPUT_UDP" ]; then |
| print_info -en "Drop ALL INPUT UDP connections on ports:" |
print_info -en "Drop ALL INPUT UDP connections on ports:" |
| for port in $ALL_DROP_INPUT_UDP; do |
for port in $ALL_DROP_INPUT_UDP; do |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
|
|
| if [ ! -z "$REAL_DROP_INPUT_TCP" ]; then |
if [ ! -z "$REAL_DROP_INPUT_TCP" ]; then |
| print_info -en "Drop REAL all INPUT TCP connections for ALL interfaces on ports:" |
print_info -en "Drop REAL all INPUT TCP connections for ALL interfaces on ports:" |
| for port in $REAL_DROP_INPUT_TCP; do |
for port in $REAL_DROP_INPUT_TCP; do |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
|
|
| if [ ! -z "$REAL_DROP_INPUT_UDP" ]; then |
if [ ! -z "$REAL_DROP_INPUT_UDP" ]; then |
| print_info -en "Drop REAL all INPUT UDP connections for ALL interfaces on ports:" |
print_info -en "Drop REAL all INPUT UDP connections for ALL interfaces on ports:" |
| for port in $REAL_DROP_INPUT_UDP; do |
for port in $REAL_DROP_INPUT_UDP; do |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 919 reject_input() |
|
| Riadok 1040 reject_input() |
|
| if [ ! -z "$ALL_REJECT_INPUT_TCP" ]; then |
if [ ! -z "$ALL_REJECT_INPUT_TCP" ]; then |
| print_info -en "Reject ALL INPUT TCP connections on ports:" |
print_info -en "Reject ALL INPUT TCP connections on ports:" |
| for port in $ALL_REJECT_INPUT_TCP; do |
for port in $ALL_REJECT_INPUT_TCP; do |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 936 reject_input() |
|
| Riadok 1058 reject_input() |
|
| if [ ! -z "$ALL_REJECT_INPUT_UDP" ]; then |
if [ ! -z "$ALL_REJECT_INPUT_UDP" ]; then |
| print_info -en "Reject ALL INPUT UDP connections on ports:" |
print_info -en "Reject ALL INPUT UDP connections on ports:" |
| for port in $ALL_REJECT_INPUT_UDP; do |
for port in $ALL_REJECT_INPUT_UDP; do |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 953 reject_input() |
|
| Riadok 1076 reject_input() |
|
| if [ ! -z "$REAL_REJECT_INPUT_TCP" ]; then |
if [ ! -z "$REAL_REJECT_INPUT_TCP" ]; then |
| print_info -en "Reject REAL all INPUT TCP connections for ALL interfaces on ports:" |
print_info -en "Reject REAL all INPUT TCP connections for ALL interfaces on ports:" |
| for port in $REAL_REJECT_INPUT_TCP; do |
for port in $REAL_REJECT_INPUT_TCP; do |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 968 reject_input() |
|
| Riadok 1092 reject_input() |
|
| if [ ! -z "$REAL_REJECT_INPUT_UDP" ]; then |
if [ ! -z "$REAL_REJECT_INPUT_UDP" ]; then |
| print_info -en "Reject REAL all INPUT UDP connections for ALL interfaces on ports:" |
print_info -en "Reject REAL all INPUT UDP connections for ALL interfaces on ports:" |
| for port in $REAL_REJECT_INPUT_UDP; do |
for port in $REAL_REJECT_INPUT_UDP; do |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
|
| Riadok 1115 allow_input() |
|
| print_info -e "Accepting ALL INPUT TCP connections on ports:" |
print_info -e "Accepting ALL INPUT TCP connections on ports:" |
| for port in $ALL_ACCEPT_INPUT_TCP; do |
for port in $ALL_ACCEPT_INPUT_TCP; do |
| src_ip="" |
src_ip="" |
| |
port_token="$port" |
| eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
| |
validate_legacy_peer_port_token "$port_token" "$src_ip" "$port" || exit 1 |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 1024 allow_input() |
|
| Riadok 1152 allow_input() |
|
| print_info -e "Accepting ALL INPUT UDP connections on ports:" |
print_info -e "Accepting ALL INPUT UDP connections on ports:" |
| for port in $ALL_ACCEPT_INPUT_UDP; do |
for port in $ALL_ACCEPT_INPUT_UDP; do |
| src_ip="" |
src_ip="" |
| |
port_token="$port" |
| eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
| |
validate_legacy_peer_port_token "$port_token" "$src_ip" "$port" || exit 1 |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 1064 allow_input() |
|
| Riadok 1195 allow_input() |
|
| last_port=""; |
last_port=""; |
| for port in $REAL_ACCEPT_INPUT_TCP; do |
for port in $REAL_ACCEPT_INPUT_TCP; do |
| src_ip="" |
src_ip="" |
| |
port_token="$port" |
| eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
| |
validate_legacy_peer_port_token "$port_token" "$src_ip" "$port" || exit 1 |
| if [ -n "$last_port" -a "$last_port" != "$port" -a -n "$src_ip" ]; then |
if [ -n "$last_port" -a "$last_port" != "$port" -a -n "$src_ip" ]; then |
| counter=0; |
counter=0; |
| print_info ""; |
print_info ""; |
| Riadok 1072 allow_input() |
|
| Riadok 1205 allow_input() |
|
| print_info -en " $port(ALL)"`[ ! -z "$src_ip" ] && echo "[$src_ip]"` |
print_info -en " $port(ALL)"`[ ! -z "$src_ip" ] && echo "[$src_ip]"` |
| if [ $(( ++counter )) -ge 5 ]; then counter=0; print_info ""; fi; |
if [ $(( ++counter )) -ge 5 ]; then counter=0; print_info ""; fi; |
| last_port="$port"; |
last_port="$port"; |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 1092 allow_input() |
|
| Riadok 1226 allow_input() |
|
| last_port=""; |
last_port=""; |
| for port in $REAL_ACCEPT_INPUT_UDP; do |
for port in $REAL_ACCEPT_INPUT_UDP; do |
| src_ip="" |
src_ip="" |
| |
port_token="$port" |
| eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
| |
validate_legacy_peer_port_token "$port_token" "$src_ip" "$port" || exit 1 |
| if [ -n "$last_port" -a "$last_port" != "$port" -a -n "$src_ip" ]; then |
if [ -n "$last_port" -a "$last_port" != "$port" -a -n "$src_ip" ]; then |
| counter=0; |
counter=0; |
| print_info ""; |
print_info ""; |
| Riadok 1100 allow_input() |
|
| Riadok 1236 allow_input() |
|
| print_info -en " $port(ALL)"`[ ! -z "$src_ip" ] && echo "[$src_ip]"` |
print_info -en " $port(ALL)"`[ ! -z "$src_ip" ] && echo "[$src_ip]"` |
| if [ $(( ++counter )) -ge 5 ]; then counter=0; print_info ""; fi; |
if [ $(( ++counter )) -ge 5 ]; then counter=0; print_info ""; fi; |
| last_port="$port"; |
last_port="$port"; |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 1148 allow_input() |
|
| Riadok 1285 allow_input() |
|
| (NF == 3) { remote_ip = $1; from_port = $2; to_port = $3; } \ |
(NF == 3) { remote_ip = $1; from_port = $2; to_port = $3; } \ |
| END { printf "remote_ip=%s; from_port=%s; to_port=%s;", remote_ip, from_port, to_port; }'` |
END { printf "remote_ip=%s; from_port=%s; to_port=%s;", remote_ip, from_port, to_port; }'` |
| print_info -en " $remote_ip:$from_port->$to_port" |
print_info -en " $remote_ip:$from_port->$to_port" |
| |
from_port_match="$(normalize_portspec "$from_port")" || exit 1 |
| if [ "X$iface" = "Xlo" ]; then |
if [ "X$iface" = "Xlo" ]; then |
| $IPTABLES -t nat -A OUTPUT -p TCP -s $remote_ip -d $ip --dport $from_port -j REDIRECT --to-port $to_port |
$IPTABLES -t nat -A OUTPUT -p TCP -s $remote_ip -d $ip --dport $from_port_match -j REDIRECT --to-port $to_port |
| else |
else |
| $IPTABLES -t nat -A PREROUTING -p TCP -i ${!riface} -s $remote_ip -d $ip --dport $from_port -j REDIRECT --to-port $to_port |
$IPTABLES -t nat -A PREROUTING -p TCP -i ${!riface} -s $remote_ip -d $ip --dport $from_port_match -j REDIRECT --to-port $to_port |
| fi |
fi |
| done |
done |
| print_info " done." |
print_info " done." |
| Riadok 1166 allow_input() |
|
| Riadok 1304 allow_input() |
|
| (NF == 3) { remote_ip = $1; from_port = $2; to_port = $3; } \ |
(NF == 3) { remote_ip = $1; from_port = $2; to_port = $3; } \ |
| END { printf "remote_ip=%s; from_port=%s; to_port=%s;", remote_ip, from_port, to_port; }'` |
END { printf "remote_ip=%s; from_port=%s; to_port=%s;", remote_ip, from_port, to_port; }'` |
| print_info -en " $remote_ip:$from_port->$to_port" |
print_info -en " $remote_ip:$from_port->$to_port" |
| |
from_port_match="$(normalize_portspec "$from_port")" || exit 1 |
| if [ "X$iface" = "Xlo" ]; then |
if [ "X$iface" = "Xlo" ]; then |
| $IPTABLES -t nat -A OUTPUT -p UDP -s $remote_ip -d $ip --dport $from_port -j REDIRECT --to-port $to_port |
$IPTABLES -t nat -A OUTPUT -p UDP -s $remote_ip -d $ip --dport $from_port_match -j REDIRECT --to-port $to_port |
| else |
else |
| $IPTABLES -t nat -A PREROUTING -p UDP -i ${!riface} -s $remote_ip -d $ip --dport $from_port -j REDIRECT --to-port $to_port |
$IPTABLES -t nat -A PREROUTING -p UDP -i ${!riface} -s $remote_ip -d $ip --dport $from_port_match -j REDIRECT --to-port $to_port |
| fi |
fi |
| done |
done |
| print_info " done." |
print_info " done." |
| Riadok 1180 allow_input() |
|
| Riadok 1319 allow_input() |
|
| print_info -en "$iface: Rejecting INPUT TCP connections on ports:" |
print_info -en "$iface: Rejecting INPUT TCP connections on ports:" |
| for port in $REJECT_INPUT_TCP; do |
for port in $REJECT_INPUT_TCP; do |
| src_ip="" |
src_ip="" |
| |
port_token="$port" |
| eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
| |
validate_legacy_peer_port_token "$port_token" "$src_ip" "$port" || exit 1 |
| print_info -en " $port"`[ ! -z "$src_ip" ] && echo "[$src_ip]"` |
print_info -en " $port"`[ ! -z "$src_ip" ] && echo "[$src_ip]"` |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 1204 allow_input() |
|
| Riadok 1346 allow_input() |
|
| print_info -en "$iface: Rejecting INPUT UDP connections on ports:" |
print_info -en "$iface: Rejecting INPUT UDP connections on ports:" |
| for port in $REJECT_INPUT_UDP; do |
for port in $REJECT_INPUT_UDP; do |
| src_ip="" |
src_ip="" |
| |
port_token="$port" |
| eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
| |
validate_legacy_peer_port_token "$port_token" "$src_ip" "$port" || exit 1 |
| print_info -en " $port"`[ ! -z "$src_ip" ] && echo "[$src_ip]"` |
print_info -en " $port"`[ ! -z "$src_ip" ] && echo "[$src_ip]"` |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 1232 allow_input() |
|
| Riadok 1377 allow_input() |
|
| last_port=""; |
last_port=""; |
| for port in $ACCEPT_INPUT_TCP; do |
for port in $ACCEPT_INPUT_TCP; do |
| src_ip="" |
src_ip="" |
| |
port_token="$port" |
| eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
| |
validate_legacy_peer_port_token "$port_token" "$src_ip" "$port" || exit 1 |
| if [ -n "$src_ip" -a "$port" = "0" ]; then |
if [ -n "$src_ip" -a "$port" = "0" ]; then |
| port="ALL"; |
port="ALL"; |
| fi |
fi |
| Riadok 1243 allow_input() |
|
| Riadok 1390 allow_input() |
|
| print_info -en " $port"`[ ! -z "$src_ip" ] && echo "[$src_ip]"` |
print_info -en " $port"`[ ! -z "$src_ip" ] && echo "[$src_ip]"` |
| if [ $(( ++counter )) -ge 5 ]; then counter=0; print_info ""; fi; |
if [ $(( ++counter )) -ge 5 ]; then counter=0; print_info ""; fi; |
| last_port="$port"; |
last_port="$port"; |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 1269 allow_input() |
|
| Riadok 1417 allow_input() |
|
| print_info -en "$iface: Accepting INPUT UDP connections on ports:" |
print_info -en "$iface: Accepting INPUT UDP connections on ports:" |
| for port in $ACCEPT_INPUT_UDP; do |
for port in $ACCEPT_INPUT_UDP; do |
| src_ip="" |
src_ip="" |
| |
port_token="$port" |
| eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
eval `echo $port | awk -v FS=: '/:/ { printf "src_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
| |
validate_legacy_peer_port_token "$port_token" "$src_ip" "$port" || exit 1 |
| if [ -n "$src_ip" -a "$port" = "0" ]; then |
if [ -n "$src_ip" -a "$port" = "0" ]; then |
| port="ALL"; |
port="ALL"; |
| fi |
fi |
| |
normalize_portspec_var port || exit 1; |
| echo $port | grep -q , |
echo $port | grep -q , |
| multiport="$?"; |
multiport="$?"; |
| if [ "$multiport" -eq 0 ]; then |
if [ "$multiport" -eq 0 ]; then |
| Riadok 1312 allow_input() |
|
| Riadok 1463 allow_input() |
|
| if [ "X$XEN_MODE" = "Xon" ]; then |
if [ "X$XEN_MODE" = "Xon" ]; then |
| print_info -ne " XEN_MODE "; |
print_info -ne " XEN_MODE "; |
| else |
else |
| |
traceroute_src_ports="$(normalize_portspec "$TRACEROUTE_SRC_PORTS")" || exit 1 |
| |
traceroute_dest_ports="$(normalize_portspec "$TRACEROUTE_DEST_PORTS")" || exit 1 |
| $IPTABLES -A OUTPUT -o $ANTISPOOF_IFACE -p UDP \ |
$IPTABLES -A OUTPUT -o $ANTISPOOF_IFACE -p UDP \ |
| --sport $TRACEROUTE_SRC_PORTS --dport $TRACEROUTE_DEST_PORTS \ |
--sport $traceroute_src_ports --dport $traceroute_dest_ports \ |
| -s $ip -d $ANYWHERE -j ACCEPT |
-s $ip -d $ANYWHERE -j ACCEPT |
| |
|
| for iface in $TRACEROUTE_IFACE; do |
for iface in $TRACEROUTE_IFACE; do |
| |
|
| $IPTABLES -A FORWARD -p UDP -i $iface --sport $TRACEROUTE_SRC_PORTS \ |
$IPTABLES -A FORWARD -p UDP -i $iface --sport $traceroute_src_ports \ |
| --dport $TRACEROUTE_DEST_PORTS -j ACCEPT |
--dport $traceroute_dest_ports -j ACCEPT |
| done |
done |
| fi |
fi |
| print_info " done." |
print_info " done." |
| Riadok 1360 allow_output() |
|
| Riadok 1513 allow_output() |
|
| done |
done |
| fi |
fi |
| else |
else |
| print_info -en "$iface: Accepting OUTPUT UDP connections to ports:" |
counter=0; |
| |
multiline_output_ports=0; |
| |
for _port_preview in $ACCEPT_OUTPUT_UDP; do |
| |
if [ $(( ++counter )) -gt 5 ]; then |
| |
multiline_output_ports=1; |
| |
break; |
| |
fi |
| |
done |
| |
counter=0; |
| |
if [ "$multiline_output_ports" -eq 1 ]; then |
| |
print_info -e "$iface: Accepting OUTPUT UDP connections to ports:" |
| |
else |
| |
print_info -en "$iface: Accepting OUTPUT UDP connections to ports:" |
| |
fi |
| for port in $ACCEPT_OUTPUT_UDP; do |
for port in $ACCEPT_OUTPUT_UDP; do |
| dest_ip="" |
dest_ip="" |
| |
port_token="$port" |
| eval `echo $port | awk -v FS=: '/:/ { printf "dest_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
eval `echo $port | awk -v FS=: '/:/ { printf "dest_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
| |
validate_legacy_peer_port_token "$port_token" "$dest_ip" "$port" || exit 1 |
| if [ -n "$dest_ip" -a "$port" = "0" ]; then |
if [ -n "$dest_ip" -a "$port" = "0" ]; then |
| port="ALL"; |
port="ALL"; |
| fi |
fi |
| print_info -en " $port"`[ ! -z "$dest_ip" ] && echo "[$dest_ip]"` |
display_port="$port" |
| |
normalize_portspec_var port || exit 1; |
| |
print_info -en " $display_port"`[ ! -z "$dest_ip" ] && echo "[$dest_ip]"` |
| |
if [ "$multiline_output_ports" -eq 1 ] && [ $(( ++counter )) -ge 5 ]; then counter=0; print_info ""; fi; |
| if [ -z "$dest_ip" ]; then |
if [ -z "$dest_ip" ]; then |
| $IPTABLES -A OUTPUT -o ${!riface} -p UDP --dport $port -j ACCEPT |
$IPTABLES -A OUTPUT -o ${!riface} -p UDP --dport $port -j ACCEPT |
| else |
else |
| Riadok 1378 allow_output() |
|
| Riadok 1549 allow_output() |
|
| fi |
fi |
| fi |
fi |
| done |
done |
| |
if [ "$multiline_output_ports" -eq 1 ] && [ $counter -gt 0 ]; then |
| |
print_info ""; |
| |
fi |
| print_info " done." |
print_info " done." |
| fi |
fi |
| |
|
| Riadok 1390 allow_output() |
|
| Riadok 1564 allow_output() |
|
| done |
done |
| fi |
fi |
| else |
else |
| print_info -en "$iface: Accepting OUTPUT TCP connections to ports:" |
counter=0; |
| |
multiline_output_ports=0; |
| |
for _port_preview in $ACCEPT_OUTPUT_TCP; do |
| |
if [ $(( ++counter )) -gt 5 ]; then |
| |
multiline_output_ports=1; |
| |
break; |
| |
fi |
| |
done |
| |
counter=0; |
| |
if [ "$multiline_output_ports" -eq 1 ]; then |
| |
print_info -e "$iface: Accepting OUTPUT TCP connections to ports:" |
| |
else |
| |
print_info -en "$iface: Accepting OUTPUT TCP connections to ports:" |
| |
fi |
| for port in $ACCEPT_OUTPUT_TCP; do |
for port in $ACCEPT_OUTPUT_TCP; do |
| dest_ip="" |
dest_ip="" |
| |
port_token="$port" |
| eval `echo $port | awk -v FS=: '/:/ { printf "dest_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
eval `echo $port | awk -v FS=: '/:/ { printf "dest_ip=\"%s\"; port=\"%s\";", $1, $2; }'` |
| |
validate_legacy_peer_port_token "$port_token" "$dest_ip" "$port" || exit 1 |
| if [ -n "$dest_ip" -a "$port" = "0" ]; then |
if [ -n "$dest_ip" -a "$port" = "0" ]; then |
| port="ALL"; |
port="ALL"; |
| fi |
fi |
| print_info -en " $port"`[ ! -z "$dest_ip" ] && echo "[$dest_ip]"` |
display_port="$port" |
| |
normalize_portspec_var port || exit 1; |
| |
print_info -en " $display_port"`[ ! -z "$dest_ip" ] && echo "[$dest_ip]"` |
| |
if [ "$multiline_output_ports" -eq 1 ] && [ $(( ++counter )) -ge 5 ]; then counter=0; print_info ""; fi; |
| if [ -z "$dest_ip" ]; then |
if [ -z "$dest_ip" ]; then |
| $IPTABLES -A OUTPUT -o ${!riface} -p TCP --dport $port -j ACCEPT |
$IPTABLES -A OUTPUT -o ${!riface} -p TCP --dport $port -j ACCEPT |
| else |
else |
| Riadok 1408 allow_output() |
|
| Riadok 1600 allow_output() |
|
| fi |
fi |
| fi |
fi |
| done |
done |
| |
if [ "$multiline_output_ports" -eq 1 ] && [ $counter -gt 0 ]; then |
| |
print_info ""; |
| |
fi |
| print_info " done." |
print_info " done." |
| fi |
fi |
| |
|
| Riadok 1563 do_ip_accounting() |
|
| Riadok 1758 do_ip_accounting() |
|
| if [ ! "x$DO_LOCAL_IP_ACCOUNTING" = "xno" ]; then |
if [ ! "x$DO_LOCAL_IP_ACCOUNTING" = "xno" ]; then |
| accountig_ports=`echo "$NAT_TCP_PORT_REDIRECT " | $AWK -v RS=' ' -v FS=: '{ print $2; }' | sort -u -r -g ` |
accountig_ports=`echo "$NAT_TCP_PORT_REDIRECT " | $AWK -v RS=' ' -v FS=: '{ print $2; }' | sort -u -r -g ` |
| for port in $accountig_ports; do |
for port in $accountig_ports; do |
| |
normalize_portspec_var port || exit 1; |
| $IPTABLES -I INPUT -i $NAT_SUBNET_IFACE -p TCP --dport $port -j $IPACCT_NAME |
$IPTABLES -I INPUT -i $NAT_SUBNET_IFACE -p TCP --dport $port -j $IPACCT_NAME |
| $IPTABLES -I INPUT -i $NAT_SUBNET_IFACE -p UDP --dport $port -j $IPACCT_NAME |
$IPTABLES -I INPUT -i $NAT_SUBNET_IFACE -p UDP --dport $port -j $IPACCT_NAME |
| $IPTABLES -I OUTPUT -o $NAT_SUBNET_IFACE -p TCP --sport $port -j $IPACCT_NAME |
$IPTABLES -I OUTPUT -o $NAT_SUBNET_IFACE -p TCP --sport $port -j $IPACCT_NAME |