#!/bin/bash # clear / flush all iptables rules iptables -F # build new rules # allow established connections iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # allow incomming ssh connections iptables -A INPUT -p tcp --dport 22 -j ACCEPT # allow incomming dns port iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT # allow incomming port 80 iptables -A INPUT -p tcp --dport 80 -j ACCEPT # allow incomming port 443 iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp --dport 631 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j ACCEPT # allow incomming bitcoin iptables -A INPUT -p tcp --dport 8333 -j ACCEPT iptables -A INPUT -p tcp --dport 9000 -j ACCEPT # allow postgres iptables -A INPUT -p tcp --dport 5432 -j ACCEPT # allow openvpn connections iptables -A INPUT -p udp --dport 1194 -j ACCEPT # allow polipo proxy incomming connections iptables -A INPUT -p tcp --dport 8123 -j ACCEPT # allow apache couchdb (NoSql database) iptables -A INPUT -p tcp --dport 5984 -j ACCEPT # to redirect port 80 to 5984 use command below: #iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 5984 # list iptables #iptables -L iptables -A INPUT -p icmp -j ACCEPT # drop all incomming packets, not matching a rule iptables -A INPUT -j DROP # insert a row at postion 1 (first) for allowing loopback connections iptables -I INPUT 1 -i lo -j ACCEPT # list configuration in detail iptables -L -v ## save configuration iptables-save > iptables.rules ## restore configuration #iptables-restore ## log invalid packets #iptables -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 # ipv6 ip6tables -F ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT ip6tables -A INPUT -p icmpv6 -j ACCEPT ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT ip6tables -A INPUT -p tcp --dport 53 -j ACCEPT ip6tables -A INPUT -p udp --dport 53 -j ACCEPT ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT ip6tables -A INPUT -p tcp --dport 631 -j ACCEPT ip6tables -A INPUT -p tcp --dport 3306 -j ACCEPT ip6tables -A INPUT -p tcp --dport 5432 -j ACCEPT # allow apache couchdb (NoSql database) ip6tables -A INPUT -p tcp --dport 5984 -j ACCEPT # allow openvpn connections ip6tables -A INPUT -p udp --dport 1194 -j ACCEPT # allow polipo proxy incomming connections ip6tables -A INPUT -p tcp --dport 8123 -j ACCEPT ip6tables -A INPUT -j DROP # insert a row at postion 1 (first) for allowing loopback connections ip6tables -I INPUT 1 -i lo -j ACCEPT ip6tables -L -v ip6tables-save > ip6tables.rules (Run as root) #!/bin/bash cp iptables.rules /etc/ cp ip6tables.rules /etc/ (Run on system/network startup)
#!/bin/bash
#
# script for setup ip address, route and gateway
#
ip=/sbin/ip
action=$1
device=$2
gateway_v4="192.168.2.254"
static_v4="192.168.2.29/24"
static_v6="fc00::1/64"
function start()
{
stop
setup_firewall
$ip link set dev $device up
$ip addr add $static_v4 dev $device
$ip route add default via $gateway_v4
#$ip link show $device
$ip addr show $device
$ip -6 addr add $static_v6 dev $device
$ip -6 addr show $device
}
function stop()
{
$ip addr flush dev $device
$ip -6 addr flush dev $device
$ip link set dev $device down
}
function setup_firewall()
{
iptables-restore < /etc/iptables.rules
ip6tables-restore < /etc/ip6tables.rules
}
function main() {
if [ "$action" == "start" ]; then
echo Starting $device
start
fi
if [ "$action" == "stop" ]; then
echo Stopping $device
stop
fi
echo Finished
}
main
(Example systemd file)
[Unit]
Description=Wired network configuration
Wants=network.target
Before=network.target
BindTo=sys-subsystem-net-devices-enp2s0.device
After=sys-subsystem-net-devices-enp2s0.device
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/configscripts/network-setup start enp2s0
ExecStop=/etc/configscripts/network-setup stop enp2s0
[Install]
WantedBy=multi-user.target
21700cookie-checkIptables firewall configuration