Рубрики
Linux

Файрвол iptables

Прочитано: 170

Для начала создать папку и файл /etc/iptables/iptables

#!/bin/bash
#
# Объявление переменных
export IPT="iptables"

# Активный сетевой интерфейс
export WAN=eth0
export WAN_IP=172.16.10.5

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Установим политики по умолчанию для трафика, не соответствующего ни
одному из правил
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# разрешаем пинги
$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# Разрешаем исходящие соединения самого сервера
$IPT -A OUTPUT -o $WAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным, обрубаем
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Открываем порт для http
$IPT -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT
# Открываем порт для https
$IPT -A INPUT -i $WAN -p tcp --dport 443 -j ACCEPT
# Открываем порт для smtp
$IPT -A INPUT -i $WAN -p tcp --dport 25 -j ACCEPT
# Ведение лога пакетов для ssh (положение команды имеет значение)
#$IPT -A INPUT -i $WAN -p tcp --dport 22 -j LOG --log-prefix "Iptables 22:"
# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
# Открываем порт для ftp
$IPT -A INPUT -i $WAN -p tcp --dport 21 -j ACCEPT
# Можно открыть, при необходимости, диапазон пассивных портов ftp
#$IPT -A INPUT -i $WAN -p tcp -m multiport --dports 54000:55000 -j ACCEPT

Команды:

mkdir /etc/iptables #создать папку
echo "...содержимое файла..." > /etc/iptables/iptables #создать файл с содержимым
или
touch /etc/iptables/iptables #создать новый файл
nano /etc/iptables/iptables #редактировать файл (сохранить 'Ctrl-X' 'Y' 'Enter')


Cоздать файл /etc/rsyslog.d/iptables.conf
:msg, contains, "Iptables 22: " -/var/log/iptables/iptables22.log
& ~

И добавить строку в файл ротации /etc/logrotate.d/rsyslog
/var/log/syslog
/var/log/iptables/iptables22.log
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
Перезагрузить service rsyslog restart

Создать файл /etc/iptables/iptables_empty

#!/bin/bash
#
# Объявление переменных
export IPT="iptables"

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# открываем всё
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT


Для создания таблицы правил запускаем скрипт в командной строке
sh /etc/iptables/iptables

Посмотреть таблицу правил, выполнив команду
iptables -L -v -n

Сохранить правила в файл
/sbin/iptables-save > /etc/iptables/rules

Для сброса таблицы правил запустить файл
sh /etc/iptables/iptables_empty


Добавляем файл /etc/network/if-pre-up.d/iptables для восстановления правил, например, после перезагрузки системы

#!/bin/bash
/sbin/iptables-restore < /etc/iptables/rules

И меняем права к файлу chmod +x /etc/network/if-pre-up.d/iptables



Материалы

Добавить комментарий

Ваш адрес email не будет опубликован.

семь − 5 =