LinuxForum.Fans
Тема

Помощь в настройке iptables в Slackware 12.2

Автор: mil612 38 сообщений 13658 просмотров
#223015

Нет параметров в:
$IPT -F
$IPT -X

Перед -p и --dport нет пробелов.

При вашей схеме правил отдельная цепочка (POLICY) представляется лишней.

#223026

Проблема оказалась в лишних символах в скрипте, которые появились после редактирования в виндовом редакторе.
Ура Firewall заработал :D и я поумнел на 28 копеек smile, теперь хочу осилить уменьшение количества правил этим путем

text
for N in $(seq 115 221) ; do
  $IPT -A tcp_inbound -s 192.168.$N.0/24 -j ACCEPT
done

for N in $(seq 115 221) ; do $IPT -A udp_inbound -s 192.168.$N.0/24 -j ACCEPT done

или установкой ipcalc который взял на slackbuilds.org и который не знаю как установить применительно к моему фаерволлу
поправьте если я не правильно мыслю, если использовать подсказку bormant'а, то скрипт будет выглядеть так

text
#!/bin/bash

IPT="/usr/sbin/iptables" IPTS="/usr/sbin/iptables-save" IPTR="/usr/sbin/iptables-restore"

#flush policy $IPT -F $IPT -X

#default policy $IPT -P FORWARD ACCEPT $IPT -P OUTPUT ACCEPT $IPT -P INPUT DROP

#create custom chain $IPT -N POLICY

# INPUT policy $IPT -A INPUT -i lo -j ACCEPT

$IPT -A INPUT -s 127.0.0.1 -j ACCEPT $IPT -A INPUT -d 127.0.0.1 -j ACCEPT

$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $IPT -A INPUT -p icmp -j ACCEPT

#jump to chain $IPT -A INPUT -j POLICY

#chain policy ##$IPT -A POLICY -p tcp -m tcp --dport 53 -j ACCEPT ##$IPT -A POLICY -p udp -m udp --dport 53 -j ACCEPT ##$IPT -A POLICY -p tcp -m tcp --dport 22 -j ACCEPT ##$IPT -A POLICY -p tcp -m tcp --dport 80 -j ACCEPT ##$IPT -A POLICY -p tcp -m tcp --dport 443 -j ACCEPT

#dobavit kogo nuzhno, kakie seti ili ip ne ukazani sdes dostupa ne imeut for N in $(seq 115 221) ; do $IPT -A POLICY -s 192.168.$N.0/24 -j ACCEPT done $IPT -A POLICY -s 10.0.0.0/8 -j DROP $IPT -A POLICY -s 192.168.0.0/16 -j ACCEPT

#223030
bormant написал:
Нет параметров в:
$IPT -F
$IPT -X

Перед -p и --dport нет пробелов.

При вашей схеме правил отдельная цепочка (POLICY) представляется лишней.

Пробелы были поправлены, просто тут забыл это сделать.
"отдельная цепочка (POLICY) представляется лишней"
Почему?
$IPT -t nat - X и F
$IPT -t mangle -X и F

Вот эти параметры имелись ввиду?

#223034

Вариант с seq 115 221 плох -- пачка правил, через которые придётся гнать пакеты, больше всего будут сажать производительность пакеты из последней сети.
Лучше как уже показывал:

text

# deaggregated 192.168.115.0 - 192.168.221.255
NET_OK="192.168.115.0/24 192.168.116.0/22 192.168.120.0/21 192.168.128.0/18 192.168.192.0/20 192.168.208.0/21 192.168.216.0/22 192.168.220.0/23"

for N in $NET_OK ; do $IPT -A POLICY -p ALL -s $N -j ACCEPT done

Другой, полностью равноценный вариант -- дать список через запятую в ключе -s (--src), эффект ровно тот же, те же самые 8 правил по числу элементов в списке (по крайней мере, так написано в man iptables и легко проверяется).

По INPUT --> POLICY пакеты следуют тупо друг за другом, всё из INPUT переливается в POLICY без исключения, из POLICY возвратов в INPUT нет. То есть линейная структура просто разломана посередине. Единственно, зачем это могло бы быть нужно, вычислять разницу между счётчиками INPUT и POLICY, но для чего может быть полезна эта величина в существующей конструкции -- не представляю.

Про -F и -X -- я ошибся, всё нормально, посмотрел в man-е, параметры действительно необязательные.

#223050


То есть линейная структура просто разломана посередине.

а что следовало бы изменить?

#223199

подскажите как добавить rc.firewall в автозагрузку после включении интерфейса eth0?
или он и так есть в автозагрузке здесь?

text
# If there is a firewall script, run it before enabling packet forwarding.
# See the HOWTOs on http://www.netfilter.org/ for documentation on
# setting up a firewall or NAT on Linux.  In some cases this might need to
# be moved past the section below dealing with IP packet forwarding.
if [ -x /etc/rc.d/rc.firewall ]; then
  /etc/rc.d/rc.firewall start
fi
#223217

Да, вы процитировали фрагмент из /etc/rc.d/rc.inet2. Для того, чтобы /etc/rc.d/rc.firewall выполнялся при старте ситемы, на нём должен быть установлен атрибут "выполнение". Сделать это несложно, от root-а:
[console]
# chmod a+x /etc/rc.d/rc.firewall
[/console]
Проверить наличие бита с помощью ls:
[console]
% ls -l /etc/rc.d/rc.firewall
[/console]

#223223

все сделал как было написано, получилось следющее
[console]-rwxr-xr-x 1 admin users 2219 2012-01-20 12:49 /etc/rc.d/rc.firewall
[/console]

#223253

вот еще такой момент я прописал это значение

text
if [ "$1" = "save" ]
then
    echo -n "Saving firewall to /etc/sysconfig/iptables ... "
    $IPTS > /etc/sysconfig/iptables
    echo "done"
    exit 0
elif [ "$1" = "restore" ]
then
    echo -n "Restoring firewall from /etc/sysconfig/iptables ... "
    $IPTR < /etc/sysconfig/iptables
    echo "done"
    exit 0
fi

но так и не нашел файла и каталога /etc/sysconfig/iptables. это так и должно быть? или сохранить iptables можно в другом месте?

#223314

[console]
# ls /etc/sysconfig
/bin/ls: невозможно получить доступ к /etc/sysconfig: Нет такого файла или каталога
[/console]И какого чуда вы от него хотите?
Хотите, чтоб лежал файл с сохранёнными правилами внутри /etc/sysconfig, создайте этот каталог.
Хотите, чтобы лежал в другом месте -- пропишите вывод/загрузку в/из другого места.

Никакой магии, всё честно.

#223349

bormant,
подскажи пожалуйста, чтобы добавить защиту от SYN-flood нужны эти значения?

text
$IPT -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
$IPT -A INPUT -p tcp --syn -j DROP

и если да, в эту часть скрипта добавить ?

text
$IPT  -A  INPUT -m  state --state  RELATED,ESTABLISHED -j  ACCEPT
$IPT  -A  INPUT -p  icmp -j  ACCEPT
Показать
#!/bin/bash
# IPTables Location
IPT="/usr/sbin/iptables"
IPTS="/usr/sbin/iptables-save"
IPTR="/usr/sbin/iptables-restore"

# Save and Restore arguments handled here
if [ "$1" = "save" ]
then
echo -n "Saving firewall to /etc/rc.d/init.d/iptables ... "
$IPTS > /etc/rc.d/init.d/iptables
echo "done"
exit 0
elif [ "$1" = "restore" ]
then
echo -n "Restoring firewall from /etc/rc.d/init.d/iptables ... "
$IPTR < /etc/rc.d/init.d/iptables
echo "done"
exit 0
fi

#flush policy
$IPT -F
$IPT -X

#default policy
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P INPUT DROP

#create custom chain
$IPT -N POLICY

# INPUT policy
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -A INPUT -s 127.0.0.1 -j ACCEPT
$IPT -A INPUT -d 127.0.0.1 -j ACCEPT

$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p icmp -j ACCEPT

#jump to chain
$IPT -A INPUT -j POLICY

#chain policy
##$IPT -A POLICY -p tcp -m tcp --dport 53 -j ACCEPT
##$IPT -A POLICY -p udp -m udp --dport 53 -j ACCEPT
##$IPT -A POLICY -p tcp -m tcp --dport 22 -j ACCEPT
##$IPT -A POLICY -p tcp -m tcp --dport 80 -j ACCEPT
##$IPT -A POLICY -p tcp -m tcp --dport 443 -j ACCEPT

#dobavit kogo nuzhno, kakie seti ili ip ne ukazani sdes dostupa ne imeut
#deaggregated 192.168.115.0 - 192.168.221.255
$IPT -A POLICY -s 10.116.15.192/30 -j ACCEPT
$IPT -A POLICY -s 10.116.15.196/31 -j ACCEPT
$IPT -A POLICY -s 10.60.15.155/32 -j ACCEPT
NET_OK="192.168.115.0/24 192.168.116.0/22 192.168.120.0/21 192.168.128.0/18 192.168.192.0/20 192.168.208.0/21 192.168.216.0/22 192.168.220.0/23 192.168.221.0/32"

for N in $NET_OK ; do
$IPT -A POLICY -p ALL -s $N -j ACCEPT
done
#224694

после перезагрузки правила iptables так и не восстанавливаются :( приходится заново запускать rc.firewall а затем iptables-save

#224705

[console]
# ls -l /etc/rc.d/rc.firewall
-rwxr-xr-x 1 root root 28562 2011-09-19 07:53 /etc/rc.d/rc.firewall

# grep /rc.firewall /etc/rc.d/rc.inet2
if [ -x /etc/rc.d/rc.firewall ]; then
/etc/rc.d/rc.firewall start

# ls -l /etc/rc.d/rc.inet2
-rwxr-xr-x 1 root root 4914 2010-11-11 12:30 /etc/rc.d/rc.inet2

# grep rc.inet2 /etc/rc.d/rc.M
if [ -x /etc/rc.d/rc.inet2 ]; then
. /etc/rc.d/rc.inet2

# grep -F /rc.M /etc/inittab
rc:2345:wait:/etc/rc.d/rc.M
[/console]

При старте системы запускается init, который читает inittab, на 2345 уровнях запуска стартует /etc/rc.d/rc.M, который при наличии атрибута исполнения запускает /etc/rc.d/rc.inet2, который при наличии атрибута исполнения запускает /etc/rc.d/rc.firewall start.

"rc.firewall save" и "rc.firewall restore" в системных скриптах изначально не используются.

Проверяйте, что у вас не так.

#224714

ввел представленные выше команды, результат следующий

[console]# ls -l /etc/rc.d/rc.firewall
-rwxr-xr-x 1 admin users 2385 2012-01-26 12:56 /etc/rc.d/rc.firewall

# grep /rc.firewall /etc/rc.d/rc.inet2
if [ -x /etc/rc.d/rc.firewall ]; then
/etc/rc.d/rc.firewall start

# grep /rc.firewall /etc/rc.d/rc.inet2
if [ -x /etc/rc.d/rc.firewall ]; then
/etc/rc.d/rc.firewall start

# ls -l /etc/rc.d/rc.inet2
-rwxr-xr-x 1 root root 4847 2007-09-18 02:07 /etc/rc.d/rc.inet2

# grep rc.inet2 /etc/rc.d/rc.M
if [ -x /etc/rc.d/rc.inet2 ]; then
. /etc/rc.d/rc.inet2

# grep -F /rc.M /etc/inittab
rc:2345:wait:/etc/rc.d/rc.M
[/console]
и в скрипе я вроде указал что и откуда брать

text
# Save and Restore arguments handled here
if [ "$1" = "save" ]
then
    echo -n "Saving firewall to /etc/rc.d/init.d/iptables ... "
    $IPTS > /etc/rc.d/init.d/iptables
    echo "done"
    exit 0
elif [ "$1" = "restore" ]
then
    echo -n "Restoring firewall from /etc/rc.d/init.d/iptables ... "
    $IPTR < /etc/rc.d/init.d/iptables
    echo "done"
    exit 0
fi
#224721

Ваш скрипт содержит действия только на "save" и "restore", но не содержит реакции на "start".
При старте машины вызывается /etc/rc.d/rc.firewall с параметром "start", при таком вызове ваш скрипт ничего не делает (если он тут приведён целиком).

text

if [ "$1" = "save" ]       # "start" = "save"? нет
elif [ "$1" = "restore" ]  # "start" = "restore"? нет
fi

А как уже говорил выше

bormant написал:
"rc.firewall save" и "rc.firewall restore" в системных скриптах изначально не используются.

Что делать - решать вам. Можно поправить /etc/rc.d/rc.inet2 на предмет вызова с параметром "restore" вместо start. Можно поправить скрипт, дописав реакцию на start как на restore. Можно ещё что угодно. Но решать вам.

#227173

Не слушай их. Из 4-5 графических настройщиков файерволов самый доходчивый оказался kguarddog.
Файервол в Юниксе должен быть обязательно!
Зайди на фтр сайт ftp://nobody:nobody@109.87.162.170/pub/linux/kguarddog/kguarddog-2.5-i486-1.tgz скачай и установи.
Он требует qt3. Версия 2.6 изменила знак галок.

#233133

SOS!
Подскажите как правильно написать логирование, чтобы там были записи о всех резаных пакетах?
Я так понял, что нужно прописать это
[console]iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "INPUT packet: " [/console]
и что нужно добавить в syslog-ng.conf?
сам скрипт ниже

Показать
#!/bin/bash

# rc.firewall script started
firewall_start() {
if [ -x /etc/rc.d/rc.firewall ]; then
echo "Starting rc.firewall: /etc/rc.d/rc.firewall"
. /etc/rc.d/rc.firewall start
fi
}

# IPTables Location
IPT="/usr/sbin/iptables"
IPTS="/usr/sbin/iptables-save"
IPTR="/usr/sbin/iptables-restore"

# Save and Restore arguments handled here cat /etc/rc.d/init.d/iptables
if [ "$1" = "save" ]
then
echo -n "Saving firewall to /etc/rc.d/init.d/iptables ... "
$IPTS > /etc/rc.d/init.d/iptables
echo "done"
exit 0
elif [ "$1" = "restore" ]
then
echo -n "Restoring firewall from /etc/rc.d/init.d/iptables ... "
$IPTR < /etc/rc.d/init.d/iptables
echo "done"
exit 0
fi

# flush policy
$IPT -F
$IPT -X

# default policy
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P INPUT DROP

# create custom chain
$IPT -N POLICY

# INPUT policy
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -A INPUT -s 127.0.0.1 -j ACCEPT
$IPT -A INPUT -d 127.0.0.1 -j ACCEPT

$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p icmp -j ACCEPT

# jump to chain
$IPT -A INPUT -j POLICY

# chain policy
#$IPT -A POLICY -p tcp -m tcp --dport 53 -j ACCEPT
#$IPT -A POLICY -p udp -m udp --dport 53 -j ACCEPT
#$IPT -A POLICY -p tcp -m tcp --dport 22 -j ACCEPT
#$IPT -A POLICY -p tcp -m tcp --dport 80 -j ACCEPT
#$IPT -A POLICY -p tcp -m tcp --dport 443 -j ACCEPT

# dobavit kogo nuzhno, kakie seti ili ip ne ukazani sdes dostupa ne imeut
# deaggregated 192.168.115.0 - 192.168.221.255
$IPT -A POLICY -s 10.116.15.192/30 -j ACCEPT
$IPT -A POLICY -s 10.116.15.196/31 -j ACCEPT
$IPT -A POLICY -s 10.60.15.155/32 -j ACCEPT
$IPT -A POLICY -s 10.60.16.37/32 -j ACCEPT
$IPT -A POLICY -s 192.168.38.137/32 -j ACCEPT
$IPT -A POLICY -s 192.168.15.62/32 -j ACCEPT
NET_OK="192.168.115.0/24 192.168.116.0/22 192.168.120.0/21 192.168.128.0/18 192.168.192.0/20 192.168.208.0/21 192.168.216.0/22 192.168.220.0/23 192.168.221.0/32"

for N in $NET_OK ; do
$IPT -A POLICY -p ALL -s $N -j ACCEPT
done

# Включить перенаправление пакетов через ядро
echo "1" > /proc/sys/net/ipv4/ip_forward
Войдите или зарегистрируйтесь, чтобы ответить.