LINUX.ORG.RU
ФорумAdmin

простой вопрос по настройке фаервола iptables

 , ,


1

1

Здравствуйте. Разбираюсь с настройками фаервола iptables. Настроил. Работает. Но так как я человек не опытный, то не уверен в том правильно ли я понял принцип. Само ТЗ не сложное. Есть сервер в локальной сети (подключен через eth0), который раздаёт инэт (поступает по ppp0) через squid. Проброса пакетов нет. Собственно всё. Вот правила:

        # Политики по умолчанию.
        iptables -P INPUT DROP
        iptables -P FORWARD DROP
        iptables -P OUTPUT DROP
        
        iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
        iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
        
        # SSH eth0
        iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
        iptables -A INPUT -p tcp -i eth0 --dport 2222 -j ACCEPT

        # SAMBA eth0
        iptables -A INPUT -p TCP -i eth0 --dport 137:139 -j ACCEPT
        iptables -A INPUT -p UDP -i eth0 --dport 137:139 -j ACCEPT
        # SQUID eth0
        iptables -A INPUT -p TCP -i eth0 --dport 3128 -j ACCEPT
        iptables -A OUTPUT -p UDP -o eth0 --sport 3128 -j ACCEPT
        # HTTP
        iptables -A OUTPUT -p tcp -o ppp0 --dport 80 -j ACCEPT
        iptables -A OUTPUT -p tcp -o ppp0 --dport 443 -j ACCEPT

Достаточно ли этого для защиты или есть ещё какие-то вещи, которые надо погуглить. Спасибо!

Лучше изменять правила через iptables-save и iptables-restore. Они работают атомарно, и это значит что:

  • при загрузке правил у тебя никогда не возникнет ситуация «голой жопой в интернет» из-за того, что старые правила уже удалились, а новые ещё не загрузились;
  • если в правилах обнаружится ошибка, они не будут загружены вообще, а старый набор правил продолжит работать дальше.
Deleted ()
Ответ на: комментарий от TOTOIIIUr

для серверов с ssh иптейблс на момент теста можно ресетить по крону. все все гуд. то ресетилку в кроне комментят и все =)

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

кто отменял вот это?

    iptables -t filter -P INPUT ACCEPT
    iptables -t filter -P FORWARD ACCEPT
    iptables -t filter -P OUTPUT ACCEPT

    iptables -t nat -F
    iptables -t nat -X
    iptables -t mangle -F
    iptables -t mangle -X
    iptables -t filter -F
    iptables -t filter -X
MikeDM ★★★★★ ()
Ответ на: комментарий от Deleted

если в правилах обнаружится ошибка, они не будут загружены вообще, а старый набор правил продолжит работать дальше.

Это действует только в рамках таблицы. Если в файле всё нормально с таблицей filter, но косяк с таблицей nat, то filter-правила загрузятся.

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

включил сохранение правил, но после перезагрузки сервера пакеты через прокси не идут. Вот вывод команды

iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    7   508 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpts:137:139
    0     0 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            udp dpts:137:139
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3128

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    4   608 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      eth0    0.0.0.0/0            0.0.0.0/0            tcp spt:3128
    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:20
    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:21
    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:53
Здесь при попытках выйти в инэт с локальных машин увеличивается счётчик пакетов по первому правилу, которое RELATED,ESTABLISHED.

При этом если я отчищу iptables и выйду в инет, а потом снова загружу правила, не перегружая комп, то инэт работает какое-то время со всеми правилами, но потом снова останавливается.

iptables -nvL
Chain INPUT (policy DROP 11 packets, 838 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  824  323K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpts:137:139
    0     0 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            udp dpts:137:139
   12   720 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3128

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  912  584K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      eth0    0.0.0.0/0            0.0.0.0/0            tcp spt:3128
   37  2220 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    1    60 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:20
    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:21
    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0            tcp dpt:53
Раньше я этого не замечал, так как применял правила на лету. С чем это может быть связано.

TOTOIIIUr ()
Ответ на: комментарий от TOTOIIIUr

а всё разобрался. SQUID не получал DNS запросов по 53 порту. Надо было на нём разрешить не только tcp, но и udp протокол.

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