LINUX.ORG.RU
ФорумAdmin

Покритикуйте настройки iptables

 


0

1

Всем доброго времени суток!

Долгое время я пользовался на шлюзе настройками iptables, при которых внутренняя сеть — доверенная. Вот конфиг: http://pastebin.com/D79jJEFM

Однако, это не очень удобно, особенно потому, что количество устройств за шлюзом выросло уже примерно до двухсот. Поэтому я переписал его так: http://pastebin.com/Mivrd8fv

Честно говоря, я ещё ни разу не писал сам так много правил iptables. Как-то страшно запускать и проверять на работающем серваке. Особенно, учитывая, что мне до него полкилометра идти, если ошибусь, и мне отключит SSH-доступ :)

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

Заранее благодарен за помощь!

★★★★★

Как-то страшно запускать и проверять на работающем серваке. Особенно, учитывая, что мне до него полкилометра идти, если ошибусь, и мне отключит SSH-доступ :)

В таких случаях просто перед применением правил iptables запускаешь баш скрипт, который через 5-10 минут их откатит обратно.

xtraeft ★★☆☆
()

А что за шлюз? Ось/железо?

dvrts ★★★
()
Ответ на: комментарий от xtraeft

Пасиб, за идею. Воспользуюсь.
Особенно интересует в правильном ли порядке идут строки 140, 141?

dvrts>А что за шлюз? Ось/железо?

А это принципиально? Slackware, x86, старенький IBM-комп. Две сетевые карты. С одной стороны гигабитная локалка, заторможенная вайфаем, с другой 10Мб в интернет. На всех маловато, приходится с tc и connlimit-above связываться.

anton_jugatsu>iptables-apply

command not found: iptables-apply

Что это должно быть?

fractaler ★★★★★
() автор топика
Последнее исправление: fractaler (всего исправлений: 1)
Ответ на: комментарий от Bad_ptr
$  sudo netstat -tpan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:37              0.0.0.0:*               LISTEN      610/inetd           
tcp        0      0 0.0.0.0:10000           0.0.0.0:*               LISTEN      738/perl            
tcp        0      0 0.0.0.0:113             0.0.0.0:*               LISTEN      610/inetd           
tcp        0      0 62.148.138.160:53       0.0.0.0:*               LISTEN      618/named           
tcp        0      0 192.168.100.1:53        0.0.0.0:*               LISTEN      618/named           
tcp        0      0 192.168.1.22:53         0.0.0.0:*               LISTEN      618/named           
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      618/named           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      615/sshd            
tcp        0    232 192.168.1.22:22         192.168.1.150:45472     ESTABLISHED 2939/sshd: user [pr 
tcp6       0      0 :::22                   :::*                    LISTEN      615/sshd

Кстати, ipv6 и named на внешнем интерфейсе надо бы убрать...

fractaler ★★★★★
() автор топика

IMHO, не лишним будет доп. фильтрация по источнику из внутренней сети IP-адреса, как-то так

$IPTABLES -A FORWARD -s $LAN_IP_RANGE -i $LAN_IFACE -o $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

Насчёт v6, можно и ip6tables правила поднастроить. Сейчас v6 самый модерновый протокол ).

Посоветовал бы еще открыть для себя iptables-save / iptables-restore, кстати и для v6 есть аналоги этих команд. Но поскольку приведённый в старте скрипт достаточно развит, будет тяжело и извращённо переходить на эти утилиты. Например, придётся sed-ом редактировать, если поменяется имя интерфейса и т. п.

Infra_HDC ★★★★★
()

В Debian есть iptables-apply. Но правила нужны в виде дампа iptables-save, шелл-скрипт не подойдёт. Или сам напиши скрипт-автооткатывалку, это несколько строчек.

selivan ★★★
()
Последнее исправление: selivan (всего исправлений: 1)
Ответ на: комментарий от Infra_HDC

$IPTABLES -A FORWARD -s $LAN_IP_RANGE -i $LAN_IFACE -o $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

Это вместо 181 строки? А как же тогда будет устанавливаться соединение? Тогда ведь запрос на соединение не пройдёт. Или я слишком сонный и чего-то не вижу?

Сейчас v6 самый модерновый протокол ).

Так-то оно так, но провайдер не поддерживает, а в отдельно взятой локалке ipv6 разводить нецелесообразно. Тем более, что для этого ещё и свитчи/точки доступа частично менять нужно.

Посоветовал бы еще открыть для себя iptables-save / iptables-restore

Раньше пользовался, потом как-то плавно перешёл на скрипты. Есть какие-то серьёзные различия/преимушества?

fractaler ★★★★★
() автор топика
Ответ на: комментарий от fractaler

Это вместо 181 строки? А как же тогда будет устанавливаться соединение? Тогда ведь запрос на соединение не пройдёт. Или я слишком сонный и чего-то не вижу?

Если убрать -m state --state ESTABLISHED,RELATED то пройдёт наверняка.

Раньше пользовался, потом как-то плавно перешёл на скрипты. Есть какие-то серьёзные различия/преимушества?

Ну разве что отлаживать. Готовую конфигурацию сейвить. Вобще, это дело привычки.

Infra_HDC ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.