UFW для ленивых. Упрощаем и стандартизируем настройку файрвола.

Как правило сервер должен светить в мир или локальную сеть ограниченным списком портов и доступ к серверу необходим ограниченному списку сетей. Также включать и настраивать файрвол как правило лень и это часто откладывается на потом. Решил упростить себе жизнь и сделал простой скрипт который открывает доступ к определенным портам для определенных сетей. Для других сетей сервер будет не доступен. Можно изменить скрипт чтобы некоторые порты были доступны для всех, но на текущий момент мне такое не требуется.

Cкрипт сбрасывает в дефолт текущие настройки файрвола и создает правила для списка IP и портов, которые указаны в переменных ALLOW_IP и ALLOW_PORT. Сам скрипт ниже:

#!/usr/bin/env bash

    n=$(tput sgr0);
    bold=$(tput bold);
    red='\033[0;31m'

if [ "$1" != "yes" ]
then
echo -e ${red}${bold}"This script reconfigure your firewall. Please, before running check variables ALLOW_IP and ALLOW_PORT"
echo "Also script must be run from root user"
echo "For running script enter in terminal ./en-ufw-firewall.sh yes"${n}
exit
fi
ALLOW_IP='10.111.60.0/24 10.111.63.252 192.168.200.165 10.27.0.0/24 10.1.0.0/16'

ALLOW_PORT='22 443 8080 10050'

ufw reset

#load default settings
sudo ufw default deny incoming
sudo ufw default allow outgoing

#
# create rules for IPs
#

for IP in $ALLOW_IP; do

#
# add allowed ports to allowed IPs
#

for PORT in $ALLOW_PORT; do

ufw allow from $IP to any port $PORT

done

done

ufw enable
ufw status numbered