#!/bin/sh ############################################################################### # Переменные echo "Назначаю переменные" ############################################################################### # SYSCTL SYSCTL="/sbin/sysctl -w" # IPTables Переменные IPT="/sbin/iptables" IPTS="/sbin/iptables-save" IPTR="/sbin/iptables-restore" # Интернет интерфейсы INET_IFACE1="eth0" INET_ADDRESS1="192.168.48.97" INET_IFACE2="eth2" INET_ADDRESS2="xxx.xxx.xxx.xxx" # Local Interface Information LOCAL_IFACE="eth1" LOCAL_IP="192.168.222.7" LOCAL_NET="192.168.222.0/24" LOCAL_BCAST="192.168.222.255" # Open VPN NET_VPN="10.0.0.0/255.255.255.0" VPN_IFACE="tun0" VPN_PORT="2022" # Пробрасываемые порты # Веб-морда почтового # сервака MAILSRV="192.168.222.5" MAILPORT="443" # RDP # RDPSRV="192.168.222.10" # RDPPORT="3389" # Localhost Interface LO_IFACE="lo" LO_IP="127.0.0.1" ############################################################################### # Загрузка нужных модулей echo "Подгружаю модули для ядра ..." ############################################################################### /sbin/depmod -a # Обязательные модули /sbin/modprobe ip_tables /sbin/modprobe ip_conntrack /sbin/modprobe iptable_filter /sbin/modprobe iptable_mangle /sbin/modprobe iptable_nat # /sbin/modprobe ipt_LOG # /sbin/modprobe ipt_limit /sbin/modprobe ipt_state ### Не обязательные модули # /sbin/modprobe ipt_unclean # /sbin/modprobe multiport # /sbin/modprobe ipt_tcpmss # /sbin/modprobe ipt_mark # /sbin/modprobe ipt_owner # /sbin/modprobe ipt_REJECT /sbin/modprobe ipt_MASQUERADE /sbin/modprobe ip_conntrack_ftp # /sbin/modprobe ip_conntrack_irc /sbin/modprobe ip_nat_ftp # /sbin/modprobe ip_nat_irc ############################################################################### # Настройки параметров ядра echo "Настраиваю ядро ..." ############################################################################### if [ "$SYSCTL" = "" ] then echo "1" > /proc/sys/net/ipv4/ip_forward else $SYSCTL net.ipv4.ip_forward="1" fi ############################################################################ # This enables SYN flood protection. The SYN cookies activation allows your system to accept an unlimited # number of TCP connections while still trying to give reasonable service during a denial of service attack. ############################################################################ if [ "$SYSCTL" = "" ] then echo "1" > /proc/sys/net/ipv4/tcp_syncookies else $SYSCTL net.ipv4.tcp_syncookies="1" fi ########################################################################### # The following kernel settings were suggested by Alex Weeks. Thanks! This kernel parameter instructs the # kernel to ignore all ICMP echo requests sent to the broadcast address. This prevents a number of smurfs # and similar DoS nasty attacks. ########################################################################### if [ "$SYSCTL" = "" ] then echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts else $SYSCTL net.ipv4.icmp_echo_ignore_broadcasts="1" fi ########################################################################### # This option can be used to accept or refuse source routed packets. It is usually on by default, but is # generally considered a security risk. This option turns it off. ########################################################################### if [ "$SYSCTL" = "" ] then echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route else $SYSCTL net.ipv4.conf.all.accept_source_route="0" fi ########################################################################### # This option can disable ICMP redirects. ICMP redirects are generally considered a security risk and # shouldn't be needed by most systems using this generator. ########################################################################## # if [ "$SYSCTL" = "" ] then # echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects else $SYSCTL # net.ipv4.conf.all.accept_redirects="0" fi ########################################################################## # However, we'll ensure the secure_redirects option is on instead. This option accepts only from gateways in # the default gateways list. ########################################################################## if [ "$SYSCTL" = "" ] then echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects else $SYSCTL net.ipv4.conf.all.secure_redirects="1" fi ############################################################################### # Обнулить все настройки iptables echo "Стираю все правила ..." ############################################################################### # Сбросить все стандартные политики $IPT -P INPUT ACCEPT $IPT -P FORWARD ACCEPT $IPT -P OUTPUT ACCEPT $IPT -t nat -P PREROUTING ACCEPT $IPT -t nat -P POSTROUTING ACCEPT $IPT -t nat -P OUTPUT ACCEPT $IPT -t mangle -P PREROUTING ACCEPT $IPT -t mangle -P OUTPUT ACCEPT # Сбросить все правила $IPT -F $IPT -t nat -F $IPT -t mangle -F # Сбросить все пользовательские цепочки $IPT -X $IPT -t nat -X $IPT -t mangle -X ############################################################################### # НАСТРОЙКА ПРАВИЛ echo "Добавляю правила Брандмауера" ############################################################################### # Таблица filter # Цепочка INPUT echo "--Таблица filter--" echo "-----Цепочка INPUT" ############################################################################### # настройка политик $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP # Настройки фильтра при сканировании $IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP $IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP $IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP $IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP $IPT -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP # localhost $IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT # DOCSIS compliant cable modems Drop them without logging. $IPT -A INPUT -p ALL -d 224.0.0.1 -j DROP # Сбросить netbios $IPT -A INPUT -p UDP -s 0/0 --destination-port 137 -j DROP $IPT -A INPUT -p UDP -s 0/0 --destination-port 138 -j DROP # DNS # $IPT -A INPUT -p udp --sport 53 -j ACCEPT # $IPT -A INPUT -p tcp --sport 53 -j ACCEPT # $IPT -A INPUT -p udp --dport 53 -j ACCEPT # Разрешить ssh $IPT -A INPUT -p tcp --dport 2002 -j ACCEPT $IPT -A OUTPUT -p tcp --sport 2002 -j ACCEPT # Postfix $IPT -A INPUT -p tcp --dport 25 -j ACCEPT $IPT -A OUTPUT -p tcp --sport 25 -j ACCEPT # $IPT -A INPUT -i $INET_IFACE2 -p tcp --dport 25 -j ACCEPT # FTP $IPT -A INPUT -p tcp --dport 21 -j ACCEPT $IPT -A OUTPUT -p tcp --sport 21 -j ACCEPT # $IPT -A INPUT -i $INET_IFACE2 -p tcp --dport 21 -j ACCEPT # VPN $IPT -A INPUT -p udp --dport 2022 -j ACCEPT $IPT -A INPUT -i $VPN_IFACE -j ACCEPT # ICMP $IPT -A INPUT -m state -p icmp --state INVALID -j DROP $IPT -A INPUT -p icmp --icmp-type any -j ACCEPT # # eth0 $IPT -A INPUT -p ALL -i $INET_IFACE1 -m state --state ESTABLISHED,RELATED -j ACCEPT # eth2 $IPT -A INPUT -p ALL -i $INET_IFACE2 -m state --state ESTABLISHED,RELATED -j ACCEPT # Rules for the private network (accessing gateway system itself) $IPT -A INPUT -p ALL -i $LOCAL_IFACE -s $LOCAL_NET -j ACCEPT $IPT -A INPUT -p ALL -i $LOCAL_IFACE -d $LOCAL_BCAST -j ACCEPT ################################################################################ # Цепочка OUTPUT echo "-----Цепочка OUTPUT" ################################################################################ # localhost $IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT $IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT # Доверяет на выходе но неправильные ICMP пакеты должны # быть сброшены для предотвращения использования эксплойта $IPT -A OUTPUT -m state -p icmp --state INVALID -j DROP $IPT -A OUTPUT -p icmp --icmp-type any -j ACCEPT # To internal network $IPT -A OUTPUT -p ALL -s $LOCAL_IP -j ACCEPT $IPT -A OUTPUT -p ALL -o $LOCAL_IFACE -j ACCEPT # To internet $IPT -A OUTPUT -p ALL -o $INET_IFACE1 -j ACCEPT $IPT -A OUTPUT -p ALL -o $INET_IFACE2 -j ACCEPT # $IPT -A OUTPUT -p ALL -m state --state RELATED,ESTABLISHED -j ACCEPT ################################################################################ # Цепочка FORWARD echo "-----Цепочка FORWARD" ################################################################################ # icmp $IPT -A FORWARD -m state -p icmp --state INVALID -j DROP # $IPT -A FORWARD -p icmp -j ACCEPT # http $IPT -A FORWARD -p ALL -j ACCEPT # Разрешить запрос в интернет из локальной сети $IPT -A FORWARD -m state -p icmp --state INVALID -j DROP $IPT -A FORWARD -p tcp -i $LOCAL_IFACE -j ACCEPT # Deal with responses from the internet $IPT -A FORWARD -i $INET_IFACE1 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -i $INET_IFACE2 -m state --state ESTABLISHED,RELATED -j ACCEPT # OpenVPN $IPT -A FORWARD -i $VPN_IFACE -o $LOCAL_IFACE -j ACCEPT $IPT -A FORWARD -i $LOCAL_IFACE -o $VPN_IFACE -j ACCEPT # Пророс порта 443 $IPT -A FORWARD -p tcp -i $INET_IFACE2 --destination-port $MAILPORT --destination $MAILSRV -j ACCEPT # Пророс порта 3389 # $IPT -A FORWARD -p tcp -i $INET_IFACE2 --destination-port $RDPPORT # --destination $RDPSRV -j ACCEPT ################################################################################ # Таблица nat # Цепочка PREROUTING echo "--Таблица nat--" echo "-----Цепочка PREROUTING" ################################################################################ # Пророс порта 443 $IPT -t nat -A PREROUTING -p tcp --dst $INET_ADDRESS2 --dport $MAILPORT -j DNAT --to-destination $MAILSRV:$MAILPORT $IPT -t nat -A PREROUTING -p tcp -i $LOCAL_IFACE --destination-port $MAILPORT --destination $INET_ADDRESS2 -j DNAT --to-destination $MAILSRV:$MAILPORT # Пророс порта 3389 # $IPT -t nat -A PREROUTING -p tcp --dst $INET_ADDRESS2 --dport $RDPPORT # -j DNAT --to-destination $RDPSRV # # $IPT -t nat -A PREROUTING -p tcp -i $LOCAL_IFACE --destination-port $RDPPORT # --destination $INET_ADDRESS2 -j DNAT --to-destination $RDP:$RDPPORT # Redirect HTTP for a transparent proxy $IPT -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 3128 ################################################################################ # Цепочка PREROUTING echo "-----Цепочка POSTROUTING" ################################################################################ # Пророс порта 443 $IPT -t nat -A POSTROUTING -p tcp --dst $MAILSRV --dport $MAILPORT -j SNAT --to-source $INET_ADDRESS2 # Пророс порта 3389 # $IPT -t nat -A POSTROUTING -p tcp --dst $RDPSRV --dport $RDPPORT # -j SNAT --to-source $INET_ADDRESS2 # Маскардинг # $IPT -t nat -A POSTROUTING -o $INET_IFACE1 -j MASQUERADE # $IPT -t nat -A POSTROUTING -o $INET_IFACE2 -j MASQUERADE $IPT -t nat -A POSTROUTING -s $NET_VPN -o $INET_IFACE2 -j MASQUERADE # Маршрутизация с подменой адреса # eth0 $IPT -t nat -A POSTROUTING -o $INET_IFACE1 -j SNAT --to-source $INET_ADDRESS1 $IPT -t nat -A POSTROUTING -o $LOCAL_IFACE -j SNAT --to-source $INET_ADDRESS1 # eth2 $IPT -t nat -A POSTROUTING -o $INET_IFACE2 -j SNAT --to-source $INET_ADDRESS2 $IPT -t nat -A POSTROUTING -o $LOCAL_IFACE -j SNAT --to-source $INET_ADDRESS2 ################################################################################ # Таблица mangle # Цепочка OUTPUT echo "--Таблица mangle--" echo "-----Цепочка OUTPUT" ################################################################################ # Set the TTL $IPT -t mangle -A OUTPUT -o $INET_IFACE1 -j TTL --ttl-set 128 $IPT -t mangle -A OUTPUT -o $INET_IFACE2 -j TTL --ttl-set 128 ################################################################################ # END echo "Настройка Брандмауера завершена!" ################################################################################ rasdark