Правила Iptables для основанного на Ubuntu 16.04 Брандмауэра

Я пытаюсь установить правила iptables в своем сервере для использования его в качестве основанного на Ubuntu 16.04 Брандмауэра. У меня есть справедливое знание в Ubuntu. Я сделал некоторый поиск в сайте справки Ubuntu и в Askubuntu. Я придумал следующие правила, которые могут быть сохранены в файле и выполнены как корень (sudo sh файл):

#!/bin/bash

WAN_IF="enp2s0"
WAN_IP=$(/sbin/ip addr show dev "$WAN_IF" | perl -lne 'if(/inet (\S+)/){print$1;last}');
LAN_IF="enp4s9"
LAN_IP=$(/sbin/ip addr show dev "$LAN_IF" | perl -lne 'if(/inet (\S+)/){print$1;last}');
##### Internal network address (in CIDR notation)
LAN_NET="192.168.17.0/24"

echo
echo "[WAN Interface: $WAN_IF] [WAN IP: $WAN_IP]"
echo "[LAN Interface: $LAN_IF] [LAN IP: $LAN_IP] [Network: $LAN_NET]"
echo
echo -n "Enabling IP Forwarding...\n"

##### Enabling IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

echo
echo -n "Loading Firewall Rules...\n"
echo -n "Enabling NAT Rewriting on IN/OUT Packets...\n"

/sbin/iptables-restore <<-EOF;
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

##### INPUT RULES
-A INPUT -i lo -j ACCEPT
-A INPUT -i $LAN_IF -j ACCEPT
-A INPUT -i $WAN_IF -s $LAN_NET -j DROP
-A INPUT -i $WAN_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

##### FORWARD RULES
-A FORWARD -i $LAN_IF -o $WAN_IF -j ACCEPT
-A FORWARD -i $WAN_IF -o $LAN_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

##### OUTPUT RULES
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o $WAN_IF -d $LAN_NET -j DROP
-A OUTPUT -o $LAN_IF -s $LAN_IP -d $LAN_NET -j ACCEPT
-A OUTPUT -o $WAN_IF -s $WAN_IP -j ACCEPT

##### All Other Requests are DROPPED
-A OUTPUT -j DROP
-A INPUT -j DROP
COMMIT


##### NAT Rewriting on IN/OUT Packets
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o $WAN_IF -j MASQUERADE
COMMIT
EOF


echo -n "Bloacking IP6...\n"
/sbin/ip6tables-restore <<-EOF;
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT
EOF

echo
echo "Done!"
echo

Мои вопросы:

У меня есть следующая топология сети:

Интернет>>>>> [WAN <<<>>> СЕРВЕР <<<>>> LAN] <<<<<Локальные пользователи

  1. На моем сервере я хочу заблокировать весь входящий трафик в WAN (включая ping и другое исследование и/или взламывающие запросы), но позволить интернет-трафику проходить для СЕРВЕРА и для Локальных пользователей на LAN. Вышеупомянутый код хорошо с такими правилами?

  2. У меня есть некоторые сервисы на мой СЕРВЕР (как MySQL и SSH), которым я управляю непосредственно с самого СЕРВЕРА, я хочу заблокировать локальных пользователей на LAN и Интернет в WAN от доступа или соединения с сервисами и всем на моем СЕРВЕРЕ. Вышеупомянутый код хорошо с таким правилом?

  3. Есть ли какие-либо дефекты примечаний или безопасности, которые могут быть в корпусе по вышеупомянутым правилам?

  4. Действительно ли безопасно открыть порт SSH для Интернета в WAN, если я использую следующее правило? (Отметьте: Я буду использовать ssh аутентификацию с открытым ключом только, никакие пароли в виде открытого текста.)

    -A INPUT -i $WAN_IF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -d $WAN_IP --dport 22 -j ACCEPT
    

Большое спасибо парни.

3
задан 14 June 2017 в 06:25

0 ответов

Другие вопросы по тегам:

Похожие вопросы: