Назад | Перейти на главную страницу

iptable - конфигурация исходящего трафика из локальной сети

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

  1. Просмотр Интернета не работает, если фильтрация содержимого отключена. Раньше я мог просматривать сайты без использования прокси-сервера, но это больше не работает, если не включен веб-прокси. То же самое для ssh-трафика.

  2. Это гораздо серьезнее: локальная сеть не может подключаться к внешним ssh-серверам. Кажется, порт 22 не разрешен, но у меня установлен брандмауэр, разрешающий весь внешний трафик.

Соответствующая конфигурация размещена ниже, список маршрутов и iptables.

iptable:

[root@alcastraz ~]# iptables --list -n -v
Chain INPUT (policy DROP 223 packets, 9229 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  eth0   *       0.0.0.0/0            46.241.27.20        
    0     0 DROP       all  --  eth0   *       46.241.27.20         0.0.0.0/0           
    0     0 DROP       all  --  eth0   *       0.0.0.0/0            196.29.120.73       
    0     0 DROP       all  --  eth0   *       196.29.120.73        0.0.0.0/0           
   88  3768 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID 
    0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x12/0x12 state NEW reject-with tcp-reset 
   18  1602 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:!0x17/0x02 state NEW 
    0     0 DROP       all  --  eth0   *       127.0.0.0/8          0.0.0.0/0           
    0     0 DROP       all  --  eth0   *       169.254.0.0/16       0.0.0.0/0           
 9422 2499K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  pptp+  *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  tun+   *       0.0.0.0/0            0.0.0.0/0           
14099 2515K ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     udp  --  eth2   *       0.0.0.0/0            192.168.0.50        udp spt:68 dpt:67 
    0     0 ACCEPT     tcp  --  eth2   *       0.0.0.0/0            192.168.0.50        tcp spt:68 dpt:67 
    0     0 ACCEPT     udp  --  eth2   *       192.168.0.0/24       192.168.0.50        udp dpt:53 
    0     0 ACCEPT     tcp  --  eth2   *       192.168.0.0/24       192.168.0.50        tcp dpt:53 
   35  1015 ACCEPT     icmp --  eth0   *       0.0.0.0/0            0.0.0.0/0           icmp type 0 
    0     0 ACCEPT     icmp --  eth0   *       0.0.0.0/0            0.0.0.0/0           icmp type 3 
    0     0 ACCEPT     icmp --  eth0   *       0.0.0.0/0            0.0.0.0/0           icmp type 8 
    0     0 ACCEPT     icmp --  eth0   *       0.0.0.0/0            0.0.0.0/0           icmp type 11 
   76 25624 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           udp spt:67 dpt:68 
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp spt:67 dpt:68 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.50        tcp dpt:80 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            96.22.88.25         tcp dpt:80 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.50        tcp dpt:443 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            96.22.88.25         tcp dpt:443 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.50        tcp dpt:22 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            96.22.88.25         tcp dpt:22 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.0.50        tcp dpt:1875 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            96.22.88.25         tcp dpt:1875 
    0     0 ACCEPT     udp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           udp dpts:1024:65535 state RELATED,ESTABLISHED 
    0     0 ACCEPT     tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp dpts:1024:65535 state RELATED,ESTABLISHED 
  438 56397 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           udp dpts:1024:65535 state RELATED,ESTABLISHED 
18645 6458K ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpts:1024:65535 state RELATED,ESTABLISHED 

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  eth0   *       0.0.0.0/0            46.241.27.20        
    0     0 DROP       all  --  eth0   *       46.241.27.20         0.0.0.0/0           
    0     0 DROP       all  --  eth0   *       0.0.0.0/0            196.29.120.73       
    0     0 DROP       all  --  eth0   *       196.29.120.73        0.0.0.0/0           
    0     0 ACCEPT     icmp --  *      *       192.168.0.0/24       0.0.0.0/0           icmp type 0 
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            192.168.0.0/24      icmp type 0 
    0     0 ACCEPT     icmp --  *      *       192.168.0.0/24       0.0.0.0/0           icmp type 3 
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            192.168.0.0/24      icmp type 3 
    4   336 ACCEPT     icmp --  *      *       192.168.0.0/24       0.0.0.0/0           icmp type 8 
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            192.168.0.0/24      icmp type 8 
    0     0 ACCEPT     icmp --  *      *       192.168.0.0/24       0.0.0.0/0           icmp type 11 
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            192.168.0.0/24      icmp type 11 
    0     0 DROP       icmp --  *      *       192.168.0.0/24       0.0.0.0/0           
    0     0 DROP       icmp --  *      *       0.0.0.0/0            192.168.0.0/24      
    0     0 ACCEPT     all  --  *      *       192.168.0.0/24       192.168.0.0/24      state RELATED,ESTABLISHED 
    0     0 DROP       all  --  *      *       192.168.0.0/24       192.168.0.0/24      
    0     0 ACCEPT     all  --  *      *       192.168.0.0/24       192.168.0.0/24      
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    0     0 ACCEPT     all  --  eth2   *       0.0.0.0/0            0.0.0.0/0           
   84  4754 ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  pptp+  *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  tun+   *       0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 9440 2500K ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  *      pptp+   0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  *      tun+    0.0.0.0/0            0.0.0.0/0           
15382 6989K ACCEPT     all  --  *      eth1    0.0.0.0/0            0.0.0.0/0           
   35  1015 ACCEPT     icmp --  *      eth0    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     udp  --  *      eth0    0.0.0.0/0            0.0.0.0/0           udp spt:68 dpt:67 
    0     0 ACCEPT     tcp  --  *      eth0    0.0.0.0/0            0.0.0.0/0           tcp spt:68 dpt:67 
    0     0 ACCEPT     tcp  --  *      eth2    192.168.0.50         0.0.0.0/0           tcp spt:80 
    0     0 ACCEPT     tcp  --  *      eth0    96.22.88.25          0.0.0.0/0           tcp spt:80 
    0     0 ACCEPT     tcp  --  *      eth2    192.168.0.50         0.0.0.0/0           tcp spt:443 
    0     0 ACCEPT     tcp  --  *      eth0    96.22.88.25          0.0.0.0/0           tcp spt:443 
    0     0 ACCEPT     tcp  --  *      eth2    192.168.0.50         0.0.0.0/0           tcp spt:22 
    0     0 ACCEPT     tcp  --  *      eth0    96.22.88.25          0.0.0.0/0           tcp spt:22 
    0     0 ACCEPT     tcp  --  *      eth2    192.168.0.50         0.0.0.0/0           tcp spt:1875 
    0     0 ACCEPT     tcp  --  *      eth0    96.22.88.25          0.0.0.0/0           tcp spt:1875 
    0     0 ACCEPT     all  --  *      eth2    0.0.0.0/0            0.0.0.0/0           
21153 3140K ACCEPT     all  --  *      eth0    0.0.0.0/0            0.0.0.0/0           

Chain drop-lan (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0  

маршрут:

[root@alcastraz ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     *               255.255.255.0   U     0      0        0 eth1
192.168.0.0     *               255.255.255.0   U     0      0        0 eth2
96.22.88.0      *               255.255.255.0   U     0      0        0 eth0
default         modemcable001.8 0.0.0.0         UG    0      0        0 eth0

Любая помощь или информация, чтобы решить эту проблему, были бы весьма признательны.

Спасибо!

Это набор правил, созданных вручную?

Выскакивает одно: сеть 192.168.0.0/24 включена два интерфейсы: eth1 и eth2 - что почти наверняка не то, что вам нужно.

Для общей отладки вы также можете использовать эту команду:

watch -d iptables -L -v -n

(или какой-то его вариант.) Затем вы можете наблюдать, как количество пакетов увеличивается по мере прохождения трафика. Это действительно хорошо только для сетей с низким трафиком, где у вас мало постороннего трафика.

Еще нужно включить ведение журнала для некоторых записей брандмауэра: используйте LOG целевое расширение.

Еще одна вещь: сбросьте счетчики и посмотрите, что падает - или еще лучше, используйте это LOG цель в сочетании с правилами, которые DROP. В вашем списке есть только два правила, которые были сопоставлены и потеряли пакеты (вытаскивание правил из контекста):

Chain INPUT (policy DROP 223 packets, 9229 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   88  3768 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID 
   18  1602 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:!0x17/0x02 state NEW 

Может быть, это следует исследовать?

Чтобы полностью избавиться от этого беспорядка, я бы предложил использовать Конструктор межсетевого экрана, отличный дизайнер мульти-брандмауэра на основе графического интерфейса. Вы можете спроектировать брандмауэр где угодно и разместить его там, где он будет выполнять свою работу - у fwbuilder даже есть способы перенести брандмауэр на удаленный хост.

Я бы подумал об использовании построителя брандмауэра для создания вашего брандмауэра. Что-то вроде Shorewall, которое хорошо документировано и имеет несколько хороших примеров конфигураций, могло бы облегчить вам жизнь. При беглом рассмотрении конфигурация с тремя интерфейсами (зонами) может стать для вас хорошей отправной точкой. Ключевыми файлами для Shorewall являются зоны, интерфейсы, хосты, политика и правила. Существует ряд макросов, которые генерируют закомментированные правила по имени, а не по порту.

Обычно ваш state RELATED,ESTABLISHED правила будут в верхней части списка. Использование отдельных цепочек для различных потоков трафика может помочь понять, что происходит.

Похоже, только два адреса имеют открытый доступ к порту 80, что объясняет вашу проблему просмотра. Один должен быть контент-фильтром. Другой может быть адрес, с которого вы могли просматривать, минуя контент-фильтр.