Initial configurations for Bender.
This commit is contained in:
parent
6720861726
commit
0b63587655
53 changed files with 14071 additions and 3 deletions
5
etc/rc.d/.gitignore
vendored
Normal file
5
etc/rc.d/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
init.d/
|
||||
rc.*
|
||||
!rc.firewall
|
||||
!rc.inet1.conf
|
||||
rc?.d/
|
||||
167
etc/rc.d/rc.firewall
Executable file
167
etc/rc.d/rc.firewall
Executable file
|
|
@ -0,0 +1,167 @@
|
|||
#!/bin/bash
|
||||
# Version: 0.2.0
|
||||
# Copyright (c) 2022:
|
||||
# Darren 'Tadgy' Austin <darren (at) afterdark.org.uk>
|
||||
# Licensed under the terms of the GNU General Public License version 3.
|
||||
|
||||
# The name of the main external interface.
|
||||
EX_IF="eth0"
|
||||
|
||||
# The IP ranges from where to accept unfiltered connections
|
||||
# |-- UK Servers --| |---------------------------------- UK2 -----------------------------------| |-- Linode ---| |- L'Servers --| |----- Home -----|
|
||||
UNFILTERED_RANGES_V4=('5.101.171.210/28' '91.109.244.7' '91.109.244.8' '91.109.244.9' '91.109.244.10' '91.109.244.11' '88.80.191.137' '185.176.90.169' 'afterdark.org.uk')
|
||||
# |---- UK Servers -----| |------- UK2 --------| |----------- Linode -----------| |---- LoveServers -----|
|
||||
UNFILTERED_RANGES_V6=('2a01:a500:2981:1::/64' '2a02:2498:1:227::/64' '2a01:7e00::f03c:93ff:fe86:afae' '2a07:4580:b0d:57f::169')
|
||||
|
||||
|
||||
start_firewall() {
|
||||
# Disable ICMP redirects.
|
||||
# Note: Redirects are used when a router believes a packet is being routed sub optimally and it would like to inform
|
||||
# the sending host that it should forward subsequent packets to that same destination through a different gateway.
|
||||
echo 0 >"/proc/sys/net/ipv4/conf/$EX_IF/accept_redirects"
|
||||
echo 0 >"/proc/sys/net/ipv6/conf/$EX_IF/accept_redirects"
|
||||
echo 0 >"/proc/sys/net/ipv4/conf/$EX_IF/send_redirects"
|
||||
|
||||
# Flush old rules.
|
||||
iptables -F
|
||||
ip6tables -F
|
||||
iptables -t nat -F
|
||||
ip6tables -t nat -F
|
||||
iptables -t mangle -F
|
||||
ip6tables -t mangle -F
|
||||
|
||||
# Delete any custom chains.
|
||||
iptables -X
|
||||
ip6tables -X
|
||||
iptables -t nat -X
|
||||
ip6tables -t nat -X
|
||||
iptables -t mangle -X
|
||||
ip6tables -t mangle -X
|
||||
|
||||
# Drop invalid packets on all interfaces.
|
||||
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
|
||||
ip6tables -A INPUT -m conntrack --ctstate INVALID -j DROP
|
||||
|
||||
# Drop unroutable IPs on the external interface.
|
||||
iptables -A INPUT -i "$EX_IF" -s 127.0.0.0/8 -j DROP
|
||||
ip6tables -A INPUT -i "$EX_IF" -s ::1/128 -j DROP
|
||||
|
||||
# Allow local nets if our IP is in the same range.
|
||||
if [[ "$(ip -br a s "$EX_IF" | awk -e '{printf $3}' | cut -d. -f1)" == "10" ]]; then
|
||||
iptables -A INPUT -i "$EX_IF" -s 10.0.0.0/8 -j ACCEPT
|
||||
else
|
||||
iptables -A INPUT -i "$EX_IF" -s 10.0.0.0/8 -j DROP
|
||||
fi
|
||||
if [[ "$(ip -br a s "$EX_IF" | awk -e '{printf $3}' | cut -d. -f1,2)" == "172.16" ]]; then
|
||||
iptables -A INPUT -i "$EX_IF" -s 172.16.0.0/12 -j ACCEPT
|
||||
else
|
||||
iptables -A INPUT -i "$EX_IF" -s 172.16.0.0/12 -j DROP
|
||||
fi
|
||||
if [[ "$(ip -br a s "$EX_IF" | awk -e '{printf $3}' | cut -d. -f1,2)" == "192.168" ]]; then
|
||||
iptables -A INPUT -i "$EX_IF" -s 192.168.0.0/16 -j ACCEPT
|
||||
else
|
||||
iptables -A INPUT -i "$EX_IF" -s 192.168.0.0/16 -j DROP
|
||||
fi
|
||||
|
||||
# Allow all loopback traffic.
|
||||
iptables -A INPUT -i lo -j ACCEPT
|
||||
ip6tables -A INPUT -i lo -j ACCEPT
|
||||
|
||||
# Allow unrestricted access from our IPs.
|
||||
for ENTRY in "${UNFILTERED_RANGES_V4[@]}"; do
|
||||
iptables -A INPUT -i "$EX_IF" -s "$ENTRY" -j ACCEPT
|
||||
done
|
||||
for ENTRY in "${UNFILTERED_RANGES_V6[@]}"; do
|
||||
ip6tables -A INPUT -i "$EX_IF" -s "$ENTRY" -j ACCEPT
|
||||
done
|
||||
|
||||
# Allow packets of established connections and those related to them.
|
||||
iptables -A INPUT -i "$EX_IF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
ip6tables -A INPUT -i "$EX_IF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
|
||||
# Allow pings.
|
||||
iptables -A INPUT -i "$EX_IF" -p icmp -m icmp --icmp-type echo-request -j ACCEPT
|
||||
ip6tables -A INPUT -i "$EX_IF" -p icmpv6 --icmpv6-type echo-request -j ACCEPT
|
||||
iptables -A INPUT -i "$EX_IF" -p icmp --icmp-type echo-reply -j ACCEPT
|
||||
ip6tables -A INPUT -i "$EX_IF" -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
|
||||
|
||||
# Allow certain types of ICMP informational packets.
|
||||
iptables -A INPUT -i "$EX_IF" -p icmp --icmp-type destination-unreachable -j ACCEPT
|
||||
ip6tables -A INPUT -i "$EX_IF" -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
|
||||
iptables -A INPUT -i "$EX_IF" -p icmp --icmp-type time-exceeded -j ACCEPT
|
||||
ip6tables -A INPUT -i "$EX_IF" -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
|
||||
iptables -A INPUT -i "$EX_IF" -p icmp --icmp-type parameter-problem -j ACCEPT
|
||||
ip6tables -A INPUT -i "$EX_IF" -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
|
||||
ip6tables -A INPUT -i "$EX_IF" -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
|
||||
ip6tables -A INPUT -i "$EX_IF" -p icmpv6 --icmpv6-type neighbour-solicitation -j ACCEPT
|
||||
ip6tables -A INPUT -i "$EX_IF" -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT
|
||||
|
||||
# Allow SSH (from anywhere).
|
||||
iptables -A INPUT -i "$EX_IF" -p tcp --syn -m multiport --dports 22,9922 -m conntrack --ctstate NEW -j ACCEPT
|
||||
ip6tables -A INPUT -i "$EX_IF" -p tcp --syn -m multiport --dports 22,9922 -m conntrack --ctstate NEW -j ACCEPT
|
||||
|
||||
# Set default policies.
|
||||
iptables -P INPUT DROP
|
||||
ip6tables -P INPUT DROP
|
||||
iptables -P OUTPUT ACCEPT # We don't firewall outgoing connections.
|
||||
ip6tables -P OUTPUT ACCEPT # We don't firewall outgoing connections.
|
||||
iptables -P FORWARD DROP
|
||||
ip6tables -P FORWARD DROP
|
||||
}
|
||||
|
||||
stop_firewall() {
|
||||
# Set default policies to ACCEPT.
|
||||
iptables -P INPUT ACCEPT
|
||||
ip6tables -P INPUT ACCEPT
|
||||
iptables -P OUTPUT ACCEPT
|
||||
ip6tables -P OUTPUT ACCEPT
|
||||
iptables -P FORWARD ACCEPT
|
||||
ip6tables -P FORWARD ACCEPT
|
||||
|
||||
# Flush rules.
|
||||
iptables -F
|
||||
ip6tables -F
|
||||
iptables -t nat -F
|
||||
ip6tables -t nat -F
|
||||
iptables -t mangle -F
|
||||
ip6tables -t mangle -F
|
||||
|
||||
# Delete any custom chains.
|
||||
iptables -X
|
||||
ip6tables -X
|
||||
iptables -t nat -X
|
||||
ip6tables -t nat -X
|
||||
iptables -t mangle -X
|
||||
ip6tables -t mangle -X
|
||||
|
||||
# Reset ICMP redirects.
|
||||
cat /proc/sys/net/ipv4/conf/default/accept_redirects >"/proc/sys/net/ipv4/conf/$EX_IF/accept_redirects"
|
||||
cat /proc/sys/net/ipv6/conf/default/accept_redirects >"/proc/sys/net/ipv6/conf/$EX_IF/accept_redirects"
|
||||
cat /proc/sys/net/ipv4/conf/default/send_redirects >"/proc/sys/net/ipv4/conf/$EX_IF/send_redirects"
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
'start')
|
||||
start_firewall
|
||||
;;
|
||||
'stop')
|
||||
stop_firewall
|
||||
;;
|
||||
'restart')
|
||||
stop_firewall
|
||||
sleep 0.5
|
||||
start_firewall
|
||||
;;
|
||||
*)
|
||||
echo "Usage: ${BASH_SOURCE[0]} <start|stop|restart>" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Unless the system is booting, restart fail2ban to re-create the ban chains.
|
||||
[[ "$PREVLEVEL" != "N" ]] && {
|
||||
[[ -x /etc/rc.d/rc.fail2ban ]] && /etc/rc.d/rc.fail2ban restart >/dev/null
|
||||
}
|
||||
|
||||
exit 0
|
||||
240
etc/rc.d/rc.inet1.conf
Normal file
240
etc/rc.d/rc.inet1.conf
Normal file
|
|
@ -0,0 +1,240 @@
|
|||
# /etc/rc.d/rc.inet1.conf
|
||||
#
|
||||
# This file contains the configuration settings for network interfaces.
|
||||
#
|
||||
# If USE_DHCP[interface] is set to "yes", this overrides any other settings.
|
||||
# If you don't have an interface, leave the settings null ("").
|
||||
#
|
||||
# You can configure network interfaces other than eth0,eth1... by setting
|
||||
# IFNAME[interface] to the interface's name. If IFNAME[interface] is unset
|
||||
# or empty, it is assumed you're configuring eth<interface>.
|
||||
#
|
||||
# Several other parameters are available; the end of this file contains a
|
||||
# comprehensive set of examples.
|
||||
#
|
||||
# Important note for IPv6 stateless auto configuration (SLAAC) users:
|
||||
# From Slackware 15.0 onwards, you need to set USE_SLAAC[0]="yes" below.
|
||||
|
||||
# =============================================================================
|
||||
|
||||
# IPv4 config options for eth0:
|
||||
IPADDRS[0]="5.101.171.211/28 5.101.171.215/28 5.101.171.216/28"
|
||||
USE_DHCP[0]=""
|
||||
# IPv6 config options for eth0:
|
||||
IP6ADDRS[0]="2a01:a500:2981:1::d3/64 2a01:a500:2981:1::d7/64 2a01:a500:2981:1::d8/64"
|
||||
USE_SLAAC[0]=""
|
||||
USE_DHCP6[0]=""
|
||||
# Generic options for eth0:
|
||||
DHCP_HOSTNAME[0]=""
|
||||
|
||||
# IPv4 config options for eth1:
|
||||
IPADDRS[1]=""
|
||||
USE_DHCP[1]=""
|
||||
# IPv6 config options for eth1:
|
||||
IP6ADDRS[1]=""
|
||||
USE_SLAAC[1]=""
|
||||
USE_DHCP6[1]=""
|
||||
# Generic options for eth1:
|
||||
DHCP_HOSTNAME[1]=""
|
||||
|
||||
# IPv4 config options for eth2:
|
||||
IPADDRS[2]=""
|
||||
USE_DHCP[2]=""
|
||||
# IPv6 config options for eth2:
|
||||
IP6ADDRS[2]=""
|
||||
USE_SLAAC[2]=""
|
||||
USE_DHCP6[2]=""
|
||||
# Generic options for eth2:
|
||||
DHCP_HOSTNAME[2]=""
|
||||
|
||||
# IPv4 config options for eth3:
|
||||
IPADDRS[3]=""
|
||||
USE_DHCP[3]=""
|
||||
# IPv6 config options for eth3:
|
||||
IP6ADDRS[3]=""
|
||||
USE_SLAAC[3]=""
|
||||
USE_DHCP6[3]=""
|
||||
# Generic options for eth3:
|
||||
DHCP_HOSTNAME[3]=""
|
||||
|
||||
# IPv4 default gateway IP address:
|
||||
GATEWAY="5.101.171.209"
|
||||
# IPv6 default gateway IP address:
|
||||
GATEWAY6="2a01:a500:2981:1:ff:ff:ff:ff"
|
||||
|
||||
# =============================================================================
|
||||
|
||||
# Example of how to configure a bond (link aggregation) interface.
|
||||
# Note the addition of the BONDNICS and BONDMODE parameters.
|
||||
# BONDNICS is a space delimited list of interfaces to add to this bond. The
|
||||
# BONDNICS interfaces will be brought up and configured while bringing up the
|
||||
# bond interface, so do not need to be previously defined in rc.inet1.conf.
|
||||
# BONDMODE sets the bonding mode for this interface. If not specified when
|
||||
# BONDNICS has been used, the default is 'balance-rr'.
|
||||
# IFOPTS is a pipe (|) delimited list of bonding module specific settings to be
|
||||
# applied to the interface, and should always include the 'miimon' option when
|
||||
# configuring bonding - not using this option will result in network
|
||||
# degradation. In 'active-backup' mode, the 'primary' option should also be
|
||||
# supplied. When using '802.3ad' mode, set "lacp_rate fast" for faster
|
||||
# recovery from an interface failure. In other modes, the 'xmit_hash_policy'
|
||||
# should be set. See the /usr/src/linux/Documentation/networking/bonding.txt
|
||||
# file (search for "Bonding Driver Options") for the full set of options.
|
||||
#IFNAME[0]="bond0"
|
||||
#BONDNICS[0]="eth0 eth1"
|
||||
#BONDMODE[0]="balance-rr"
|
||||
#IFOPTS[0]="xmit_hash_policy layer2+3 | miimon 100"
|
||||
#IPADDRS[0]="192.168.0.1/24"
|
||||
#USE_DHCP[0]=""
|
||||
#DHCP_HOSTNAME[0]=""
|
||||
#IP6ADDRS[0]=""
|
||||
#USE_SLAAC[0]=""
|
||||
#USE_DHCP6[0]=""
|
||||
|
||||
# =============================================================================
|
||||
|
||||
# Example of how to configure a VLAN interface:
|
||||
# The VLAN ID is taken from the full interface name, which is comprised of the
|
||||
# underlying interface name, a period (.) and then the VLAN ID.
|
||||
# IFOPTS is a pipe (|) delimited list of VLAN module specific settings to be
|
||||
# applied to the interface. See the ip-link(8) man page (search for "VLAN Type
|
||||
# Support") for details of the options available. This option is not required
|
||||
# for a standard VLAN to be configured.
|
||||
#IFNAME[0]="eth0.10"
|
||||
#IFOPTS[0]=""
|
||||
#IPADDRS[0]="192.168.10.1/24"
|
||||
#USE_DHCP[0]=""
|
||||
#DHCP_HOSTNAME[0]=""
|
||||
#IP6ADDRS[0]=""
|
||||
#USE_SLAAC[0]=""
|
||||
#USE_DHCP6[0]=""
|
||||
|
||||
# =============================================================================
|
||||
|
||||
# Example of how to configure a bridge:
|
||||
# Note the added "BRNICS" variable which contains a space-separated list
|
||||
# of the physical or virtual network interfaces you want to add to the bridge.
|
||||
# IFOPTS is a pipe (|) delimited list of bridge module specific settings to be
|
||||
# applied to the interface. See the ip-link(8) man page (search for "BRIDGE
|
||||
# Type Support") for details of the options available. This option is not
|
||||
# required for a standard bridge to be configured.
|
||||
#IFNAME[0]="br0"
|
||||
#BRNICS[0]="eth0"
|
||||
#IFOPTS[0]=""
|
||||
#IPADDRS[0]="192.168.0.1/24"
|
||||
#USE_DHCP[0]=""
|
||||
#DHCP_HOSTNAME[0]=""
|
||||
|
||||
# =============================================================================
|
||||
|
||||
# Virtual interfaces to create - these are created before any address
|
||||
# configuration or bridge setup is done, so you may use these interfaces
|
||||
# as IFNAME or BRNICS values. These can be tun or tap interfaces:
|
||||
# adjust VIRTIFNAME and VIRTIFTYPE accordingly.
|
||||
# Starting with VIRTIFNAME[0] is mandatory, and each next one must be
|
||||
# incremented by one, so VIRTIFNAME[1], VIRTIFNAME[2], and so on.
|
||||
# Virtual tap interface example
|
||||
#VIRTIFNAME[0]="tap0"
|
||||
#VIRTIFTYPE[0]="tap"
|
||||
#VIRTIFUSER[0]="root"
|
||||
#VIRTIFGROUP[0]="root"
|
||||
|
||||
# Virtual tun interface example
|
||||
#VIRTIFNAME[1]="tun0"
|
||||
#VIRTIFTYPE[1]="tun"
|
||||
#VIRTIFUSER[1]="someuser"
|
||||
#VIRTIFGROUP[1]="somegroup"
|
||||
|
||||
# =============================================================================
|
||||
|
||||
# Example config information for wlan0:
|
||||
# Uncomment the lines you need and fill in your data. You may not need all of
|
||||
# these for your wireless network.
|
||||
#IFNAME[4]="wlan0"
|
||||
#IPADDRS[4]=""
|
||||
#USE_DHCP[4]="yes"
|
||||
#DHCP_HOSTNAME[4]="icculus-wireless"
|
||||
#DHCP_KEEPRESOLV[4]="yes"
|
||||
#DHCP_KEEPNTP[4]="yes"
|
||||
#DHCP_KEEPGW[4]="yes"
|
||||
#DHCP_IPADDR[4]=""
|
||||
#WLAN_ESSID[4]=DARKSTAR
|
||||
#WLAN_MODE[4]=Managed
|
||||
#WLAN_RATE[4]="54M auto"
|
||||
#WLAN_CHANNEL[4]="auto"
|
||||
#WLAN_KEY[4]="D5A31F54ACF0487C2D0B1C10D2"
|
||||
#WLAN_IWPRIV[4]="set AuthMode=WPAPSK | set EncrypType=TKIP | set WPAPSK=96389dc66eaf7e6efd5b5523ae43c7925ff4df2f8b7099495192d44a774fda16"
|
||||
#WLAN_WPA[4]="wpa_supplicant"
|
||||
#WLAN_WPADRIVER[4]="wext"
|
||||
#WLAN_WPAWAIT[4]=30
|
||||
|
||||
# =============================================================================
|
||||
|
||||
# Some examples of additional network parameters that you can use.
|
||||
#IFNAME[4]="wlan0" # Use a different interface name instead of
|
||||
# the default 'eth4'
|
||||
#IFOPTS[4]="" # A pipe (|) delimited list of interface type
|
||||
# specific options to apply. These options
|
||||
# can be found in the ip-link(8) man page in
|
||||
# the approprite section for the interface
|
||||
# type being configured.
|
||||
#HWADDR[4]="00:01:23:45:67:89" # Overrule the card's hardware MAC address
|
||||
#MTU[4]="" # The default MTU is 1500, but you might need
|
||||
# 1360 when you use NAT'ed IPSec traffic.
|
||||
#PROMISCUOUS[4]="yes" # Set promiscuous mode on the interface.
|
||||
#DHCP_TIMEOUT[4]="15" # The default timeout for the DHCP client to
|
||||
# wait for server resonse is 15 seconds, but
|
||||
# you might want a shorter or longer wait.
|
||||
#DHCP_KEEPRESOLV[4]="yes" # If you don't want /etc/resolv.conf overwritten
|
||||
#DHCP_KEEPNTP[4]="yes" # If you don't want ntp.conf overwritten
|
||||
#DHCP_KEEPGW[4]="yes" # If you don't want the DHCP server to change
|
||||
# your default gateway
|
||||
#DHCP_IPADDR[4]="" # Request a specific IP address from the DHCP
|
||||
# server
|
||||
#DHCP_DEBUG[4]="yes" # Make dhcpcd show verbose diagnostics
|
||||
#DHCP_NOIPV4LL[4]="yes" # Do not assign an ipv4ll address when a DHCP
|
||||
# server is not found (ipv4ll link-local
|
||||
# adresses in the IP range 169.254.0.0/16 are
|
||||
# also known as "zeroconf" addresses)
|
||||
#SLAAC_TIMEOUT[4]="15" # The default timeout for auto configuration to
|
||||
# wait for the interface to come up is 15 sec.
|
||||
# Increase the timeout if required.
|
||||
#SLAAC_PRIVIPGEN[4]="yes" # When assigning addresses via SLAAC, use the
|
||||
# 'private' (RFC7217) address generation method.
|
||||
# It is advisable to also set SLAAC_SECRET[x].
|
||||
#SLAAC_SECRET[4]="xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx"
|
||||
# When SLAAC_PRIVIPGEN[x]="yes" is set, this is
|
||||
# the secret to be used. This must be in the
|
||||
# form of an IPv6 address. When left unset, a
|
||||
# random secret is used (this is the default).
|
||||
#SLAAC_TEMPADDR[4]="yes" # Use a temporary address with SLAAC to enhance
|
||||
# security.
|
||||
#USE_RA[4]="yes" # Accept router advertisements even when SLAAC
|
||||
# is disabled on the interface.
|
||||
#WLAN_ESSID[4]="DARKSTAR" # An example of how you can override _any_
|
||||
# parameter defined in rc.wireless.conf, by
|
||||
# prepending 'WLAN_' to the parameter's name.
|
||||
# Useful with multiple wireless interfaces.
|
||||
#WLAN_IWPRIV[4]="set AuthMode=WPAPSK | set EncrypType=TKIP | set WPAPSK=thekey"
|
||||
# Some drivers require a private ioctl to be
|
||||
# set through the iwpriv command. If more than
|
||||
# one is required, you can place them in the
|
||||
# IWPRIV parameter (separated with the pipe (|)
|
||||
# character, see the example).
|
||||
#WLAN_WPA[4]="wpa_supplicant" # Run wpa_supplicant for WPA support
|
||||
#WLAN_WPADRIVER[4]="ndiswrapper"# Tell wpa_supplicant to specifically use the
|
||||
# ndiswrapper driver (if you leave this empty
|
||||
# the 'wext' driver is used by default)
|
||||
#WLAN_WPAWAIT[4]="30" # In case it takes long for the WPA association
|
||||
# to finish, you can increase the wait time
|
||||
# (defaults to 10 seconds)
|
||||
|
||||
# =============================================================================
|
||||
|
||||
# Change this to "yes" for debugging output to syslog (if available, stdout if
|
||||
# not).
|
||||
DEBUG_ETH_UP="no"
|
||||
|
||||
# MAXNICS is the maximum number of interfaces that will be configured.
|
||||
# You may need to increase the MAXNICS value if you have many interfaces, or
|
||||
# you use multiple VLANs and/or bridges. The default is 6.
|
||||
#MAXNICS="6"
|
||||
Loading…
Add table
Add a link
Reference in a new issue