IP TABLES

ShadoWx

Новичок
Репутация
0 / 97
Настройка iptables

Для настройки рекомендую не писать все руками, а использовать скрипт. Это даст наглядность и простоту в редактировании правил. Создайте файл (я сделал в домашнем каталоке файл iptables-apply-rules) и сделайте его запускаемым.

И добавьте в него строчки ниже. После этого будем их редактировать под определенные нужды.

Код:
#!/bin/sh
#########
# VARIBLES #
########
WAN_ADDR=xxx.xxx.xxx.xxx
WAN_DEV=eth0
LAN_DEV=eth1
LAN_GATE=10.10.10.1
LAN_SUBNET=10.10.10.0/24
###########
# RESET RULES #
##########
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
# reset the default policies in the nat table.
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
# reset the default policies in the mangle table.
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
# flush all the rules in the filter and nat tables.
iptables -F
iptables -t nat -F
iptables -t mangle -F
# erase all chains that's not default in filter and nat table.
iptables -X
iptables -t nat -X
iptables -t mangle -X
###########
# LOCAL RULES #
###########
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m tcp -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT
###########
# NAT OUTPUT #
###########
iptables -t nat -A POSTROUTING -o ${WAN_DEV} -j SNAT --to-source ${WAN_ADDR}
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p icmp -s ${LAN_SUBNET} -j ACCEPT
iptables -A FORWARD -p tcp -m tcp --dport 53 -s ${LAN_SUBNET} -j ACCEPT
iptables -A FORWARD -p udp -m udp --dport 53 -s ${LAN_SUBNET} -j ACCEPT
iptables -A FORWARD -p tcp -m tcp --dport 80 -s ${LAN_SUBNET} -j ACCEPT
##########
# SERVER PUB #
##########
#www in
iptables -t nat -A PREROUTING -d ${WAN_ADDR} -p tcp --dport 80 -j DNAT --to-destination 10.10.10.11
iptables -A FORWARD -p tcp -m tcp --dport 80 -d 10.10.10.11 -j ACCEPT
#ftp in
iptables -t nat -A PREROUTING -d ${WAN_ADDR} -p tcp --dport 21 -j DNAT --to-destination 10.10.10.11
iptables -A FORWARD -p tcp -m tcp --dport 21 -d 10.10.10.11 -j ACCEPT
#PosrgreSQL
iptables -t nat -A PREROUTING -d ${WAN_ADDR} -p tcp --dport 5432 -j DNAT --to-destination 10.10.10.11
iptables -A FORWARD -p tcp -m tcp --dport 5432 -d 10.10.10.11 -j ACCEPT
##########
# FOR OTHER #
##########
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
######
# SAVE #
######
iptables-save > /etc/iptables.rules

Пояснения к скрипту для настройки iptables:

Раздел VARIBLES содержит переменные, которые будут использлваться в скрипте.

WAN_ADDR – ip адрес, который смотрит в интернет
WAN_DEV – имя устройства, которое смотрит в интернет
LAN_DEV – имя устройства, которое смотрит в локальную сеть
LAN_GATE – ip адрес, который смотрит в локалку
LAN_SUBNET – локальная подсеть

Раздел RESET RULES сбрасывает текущие настройки iptables. Его менять не надо.

В разделе LOCAL RULES настроены правила, относящиеся к самому шлюзу, который мы настраиваем. Например

iptables -A INPUT -m tcp -s xxx.xxx.xxx.xxx -p tcp –dport 22 -j ACCEPT

Разрешает подключаться к шлюзу из интернета. Например, можно указать домашний ip адрес и настраивать шлюз из дома.

В разделе NAT OUTPUT настраиваем NAT для раздачи интернета локальной сети. В данном примере открыт 80 порт и доступ к провайдерским DNS серверам.

В разделе SERVER PUB публикуется сервер. Т.е.сам сервер из интернета не виден, а происходит перенаправление портов со шлюза на нужную машину. Например так можно опубликовать WEB сервер.

В данном примере внешние подключения на ftp, http и PostgreSQL перенаправляются на внутренний сервер с ip адресом 10.10.10.11

В разделе FOR OTHER закрываем весь остальной трафик.

В разделе SAVE, как не трудно догадаться, сохраняется конфиг, что бы после перезагрузки шлюза настройки iptables восстановились автоматически.
 
Сверху