URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 91558
[ Назад ]

Исходное сообщение
"pf - сменил внешний ip - отвалились сервисы"

Отправлено tabr , 11-Май-11 21:56 
сменился внешний ip, в правила прописал новый и О УЖАС, извне перестали быть доступны сервисы на локальной машине, а те что работают на другой машине(почта) продолжают нормально работать. Проверял - если пробрасывать ssh на вторую машину - нормально коннектится, а на локальную не хочет. Из внутренней сети провайдера доступ получаю нормально,
ЗЫ: до смены работало нормально.
Подскажите, где искать?
вот конфиг pf:
cat pf_cut.conf
int_if                = "re0"
ext_if                = "stge0"
second_net_if         = "vr0" #внутренняя сеть провайдера
second_net_addr       = "192.168.4.238/32"
second_net_network    = "{192.168.0.0/16, 10.0.0.0/8}"
to_second_net_network = "{172.16.0.25}"
second_net_port       = "{22,80,27015,27016}"

nat_addr              = "{172.16.0.1, 172.16.0.25, 172.16.0.26, 172.16.0.37}"

mail_server           = "172.16.0.1/32"
mail_server_ports     = "{smtp, pop3, auth, imap, 8081, 8082}"
ext_addr              = "192.166.x.y/32"
ext_server_ports      = "{22, 80}"

icmp_types="{ echoreq, unreach}"

trusted_lan="172.16.0.0/24"
localnet="127.0.0.0/8"

set block-policy return
set skip on lo0
set skip on $int_if

scrub in all

rdr on $ext_if proto { tcp } from any to $ext_addr port $mail_server_ports -> $mail_server

nat on $ext_if from $nat_addr to !$trusted_lan -> $ext_addr
nat on $second_net_if from $to_second_net_network to $second_net_network -> $second_net_addr

antispoof quick for $ext_if

block all ## запрет всего по-умолчанию
pass out on $second_net_if from $second_net_if to $second_net_network keep state
pass in on $second_net_if proto {tcp} from $second_net_network to $second_net_addr port $second_net_port keep state

pass out on $ext_if from $ext_addr to any keep state
pass in on $ext_if inet proto { tcp } from any to $ext_addr keep state
pass out on $ext_if from $trusted_lan to any keep state
pass in on $ext_if proto { tcp } from any to $mail_server port $mail_server_ports keep state

pass log inet proto icmp all icmp-type $icmp_types

table <bruteforce> persist file "/var/db/blacklist"
pass in proto tcp from any to any port ssh flags S/SA keep state (source-track rule, max-src-conn-rate 2/10, overload <bruteforce> flush global)

block drop in quick from <bruteforce> to any
block out quick from any to <bruteforce>
##############################################################


да, nmap хоста извне:

PORT   STATE    SERVICE
22/tcp filtered ssh
25/tcp open     smtp
80/tcp filtered http

#ifconfig
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 40:61:86:0c:62:93
        inet 172.16.0.2 netmask 0xffffff00 broadcast 172.16.0.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
stge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=820db<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,POLLING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
        ether 00:18:f3:5a:aa:36
        inet 192.166.x.y netmask 0xfffffffc broadcast 192.166.x.135
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=82848<VLAN_MTU,POLLING,WOL_UCAST,WOL_MAGIC,LINKSTATE>
        ether 1c:bd:b9:83:73:5d
        inet 192.168.4.238 netmask 0xffffff00 broadcast 192.168.4.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
pfsync0: flags=0<> metric 0 mtu 1460
        syncpeer: 224.0.0.240 maxupd: 128
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33152
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x7
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>

#uname -a
FreeBSD host 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Wed Mar 30 03:39:33 EEST 2011     tabr@host:/usr/src/sys/amd64/compile/MY20110330  amd64

ipfw собран с
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPDIVERT
options         DUMMYNET


заранее спасибо


Содержание

Сообщения в этом обсуждении
"pf - сменил внешний ip - отвалились сервисы"
Отправлено LSTemp , 12-Май-11 02:29 
> сменился внешний ip, в правила прописал новый и О УЖАС, извне перестали
> быть доступны сервисы на локальной машине, а те что работают на
> другой машине(почта) продолжают нормально работать. Проверял - если пробрасывать ssh на
> вторую машину - нормально коннектится, а на локальную не хочет. Из
> внутренней сети провайдера доступ получаю нормально,
> ЗЫ: до смены работало нормально.
> Подскажите, где искать?

не смотря пакетный фильтр даже:

- в настройках сервисов посмотреть на каких адресах они работают (там может быть указан конкретный ИП)
- netstat  - посмотреть что сервис слушает на нужном ИП:порт


"pf - сменил внешний ip - отвалились сервисы"
Отправлено tabr , 12-Май-11 09:28 
# sockstat | grep httpd
www      httpd      2108  3  tcp4 6 *:80                  *:*
www      httpd      2108  4  tcp4   *:*                   *:*
www      httpd      2107  3  tcp4 6 *:80                  *:*
www      httpd      2107  4  tcp4   *:*                   *:*
www      httpd      2106  3  tcp4 6 *:80                  *:*
www      httpd      2106  4  tcp4   *:*                   *:*
www      httpd      2105  3  tcp4 6 *:80                  *:*
www      httpd      2105  4  tcp4   *:*                   *:*
www      httpd      2104  3  tcp4 6 *:80                  *:*
www      httpd      2104  4  tcp4   *:*                   *:*
root     httpd      2103  3  tcp4 6 *:80                  *:*
root     httpd      2103  4  tcp4   *:*                   *:*

#sockstat | grep sshd
/*убраны существующие подключения*/
root     sshd       1925  3  tcp6   *:22                  *:*
root     sshd       1925  4  tcp4   *:22                  *:*

#grep -R old.ip /etc
/*пусто*/

# grep -R 77.222 /usr/local/etc/
/*пусто*/

#tcpdump -n | grep ip.с.которого.ломлюсь
/*пусто, только пакеты ssh, т.к. на другой хост подключаюсь по ssh и делаю wget*/


"pf - сменил внешний ip - отвалились сервисы"
Отправлено tabr , 12-Май-11 13:47 
да, еще при wget-e с удаленного хоста
# pfctl -s state | grep ip.с.которого.ломлюсь
all tcp 192.166.x.y:80 <- ip.с.которого.ломлюсь:49373       CLOSED:SYN_SENT
all tcp 192.166.x.y:80 <- ip.с.которого.ломлюсь:57200       CLOSED:SYN_SENT

"pf - сменил внешний ip - отвалились сервисы"
Отправлено reader , 12-Май-11 14:05 
ваш новый ip случайно в /var/db/blacklist не попал?

"pf - сменил внешний ip - отвалились сервисы"
Отправлено tabr , 12-Май-11 14:43 

> ваш новый ip случайно в /var/db/blacklist не попал?

так ведь rdr успешно отрабатывает - почта приходит.

# cat /var/db/blacklist
/*пусто*/

# pfctl -t bruteforce -T show
/*пусто*/

#pfctl -d
тоже не помогает

#ipfw show
65535 5788162 4563928719 allow ip from any to any

ЗЗЫ: при подключении канала на машину с win7 и nmap -PN -p1-10000 находится штук 5-7 открытых портов.


"pf - сменил внешний ip - отвалились сервисы"
Отправлено reader , 12-Май-11 15:11 
>> ваш новый ip случайно в /var/db/blacklist не попал?
> так ведь rdr успешно отрабатывает - почта приходит.

по моему сначала rdr , а потом правила фильтров, так что после rdr вашего внешнего адреса в пакете уже не будет

> # cat /var/db/blacklist
> /*пусто*/
> # pfctl -t bruteforce -T show
> /*пусто*/
> #pfctl -d
> тоже не помогает
> #ipfw show
> 65535 5788162 4563928719 allow ip from any to any
> ЗЗЫ: при подключении канала на машину с win7 и nmap -PN -p1-10000
> находится штук 5-7 открытых портов.

поставьте pftop, там наглядно видно как срабатывают счетчики правил.
можно логировать блокирующие правила и смотреть попали или под них пакеты


"pf - сменил внешний ip - отвалились сервисы"
Отправлено tabr , 12-Май-11 17:01 
ЗАРАБОТАЛО!
узрел такую картину
#######################
RULE  ACTION   DIR LOG Q IF     PR        K     PKTS    BYTES   STATES   MAX INFO
   0  Block    In      Q !stge0                    0        0        0       drop inet from 192.166.x.y/30 to any
   1  Block    In      Q                           0        0        0       drop inet from 192.166.x.y/32 to any
...
  23  Pass     Out       stge0            K     2378  1052100       73       inet from 192.166.x.y/32 to any  flags S/SA
#######################

в rc.conf поменял инизиализацию интерфейса с
ifconfig_stge0="inet 192.166.x.y netmask 255.255.255.252 polling"
на
ifconfig_stge0="inet 192.166.x.y netmask 255.255.255.255 polling"

после чего правила приняли вид:
#######################
RULE  ACTION   DIR LOG Q IF     PR        K     PKTS    BYTES   STATES   MAX INFO
   0  Block    In      Q !stge0                    0        0        0       drop inet from 192.166.x.y/32 to any
   1  Block    In      Q                           0        0        0       drop inet from 192.166.x.y/32 to any
...
  23  Pass     Out       stge0            K     1515   231476       66       inet from 192.166.x.y/32 to any  flags S/SA
#######################
но как-то смущает двойной дроп... как оно должно быть ПО-ПРАВИЛЬНОМУ?


"pf - сменил внешний ip - отвалились сервисы"
Отправлено LSTemp , 15-Май-11 01:29 
>[оверквотинг удален]
> from 192.166.x.y/32 to any
> ...
>   23  Pass     Out  
>     stge0      
>      K     1515
>   231476       66  
>      inet from 192.166.x.y/32 to any  
> flags S/SA
> #######################
> но как-то смущает двойной дроп... как оно должно быть ПО-ПРАВИЛЬНОМУ?

я конечно могу быть не прав, но это ИМХО должна быть это элементарная защита от спуффинга. по идее первое правило должно блокировать все адреса, которые пришли не с задданного интерфейса (не с локального). а второе правило должно было бы блокировать неиспользуемые локальные адреса, пришедшие с локального интерфейса.

на счет реализации сами разбирайтесь - я не знаю этот пакетный фильтр.

ADD
видимо я не прав - маска-то 32... тогда вообхе хз.. если один адрес блокируется вторым правилом однозначно, то первое вроде бы и не нужно (может его при тестах забыли?).