|
Правила для PF
| |
rm-rf | Дата: Среда, 17.03.2010, 16:26 | Сообщение # 1 |
Admin
Группа: Администраторы
Сообщений: 37
Статус: Offline
| Здесь пишу копипасты из рабочего фаервола PF на freebsd. Показывать буду очень подробно. Открыть SSH из локальной сети В макросах int_if="192.168.1.254" lan="192.168.1.0/24" sshadmin="192.168.1.33" В правилах # SSH to this server pass quick on $int_if inet proto tcp from $lan to $int_if port ssh pass quick on $int_if inet proto tcp from $int_if port ssh to $lan Комментарии В случае жесткого контроля можно прописать в правила вместо макроса $lan макрос $sshadmin WHOIS с сервера В макросах ext_if="свой внешний фейс" В правилах #### WHOIS SERVICES pass out on $ext_if inet proto tcp from $ext_if to any port 43 Комментарии Тут просто открыть порт 43 наружу с внешнего интерфейса Открыть ICQ через PF В макросах int_if="внутренний фейс" im_users="192.168.1.33" im_ports="{443, 5190, 5222}" ext_if="внешний фейс" В правилах #### #### ICQ from LAN nat on $ext_if inet from $lan to any port $im_ports -> $ext_if pass in on $int_if inet proto tcp from $im_users to any port $im_ports pass out on $ext_if inet proto tcp from $im_users to any port $im_ports pass out on $ext_if inet proto tcp from $ext_if to any port $im_ports Комментарии Нужно натить порты $im_ports, не забывайте про это Клиент Steam из локальной сети через фаервол В макросах int_if="внутренний фейс" ext_if="внешний фейс" admins="ип админа" steam_ports="{27017, 27030:27039}" В правилах #### #### STEAM pass in on $int_if inet proto tcp from $admins to any port $steam_ports pass out on $ext_if inet proto tcp from $ext_if to any port $steam_ports pass in on $int_if inet proto udp from $admins port 5000 to any port 27017 pass out on $ext_if inet proto udp from $ext_if to any port 27017 Комментарии Мало кому это надо, но чтоб не забыть Доступ к игровым серверам извне В макросах ext_if="внешний фейс" В правилах #### #### L4D server pass in quick on $ext_if inet proto {tcp,udp} from any to $ext_if port 27015 keep state pass out quick on $ext_if inet proto {tcp,udp} from $ext_if port 27015 to any Комментарии Тоже может пригодиться
|
|
| |
rm-rf | Дата: Пятница, 26.03.2010, 19:23 | Сообщение # 2 |
Admin
Группа: Администраторы
Сообщений: 37
Статус: Offline
| Вот мой конфиг для отладки: Code ext_if="re0" int_if="age0" lan="192.168.1.0/24" ext_dns1="217.195.65.9" ext_dns2="217.195.66.253" lan="192.168.1.0/24"
nat on $ext_if from $int_if:network to any port {5190, 5222}-> ($ext_if)
#### DO NOT DELETE block log all pass quick on $int_if inet proto tcp from $lan to $int_if port ssh pass quick on $int_if inet proto tcp from $int_if port ssh to $lan #### DO NOT DELETE
#### DNS pass out on $ext_if inet proto udp from $ext_if to any port domain #### ICQ+JABBER pass in quick on $int_if inet proto tcp from $lan to any port {5222, 5190} pass out quick on $ext_if inet proto tcp from $ext_if to any port {5222, 5190} В принципе, этого достаточно. Сидел недавно не мог понять, почему не работает, потом вспомнил. Часто на системах с ОС FreeBSD прописывают альясами другие внешние адреса, например: Code # INTERFACES defaultrouter="192.203.162.217" ifconfig_age0="inet 192.168.1.2 netmask 255.255.255.0" ifconfig_re0="inet 182.203.162.219 netmask 255.255.255.248" ifconfig_re0_alias0="inet 182.203.162.222 netmask 255.255.255.248" Так и у меня, после перехода на фрю оказался ещё один адрес, причем основной шлюз был один для всех, старый, а второй адрес повесили для того, чтобы работали некоторые сервисы, которые запрашивают именно тот, второй. Вот все правила прописал, а аська не работает, сидел думал. ПФ по умолчанию брал второй адрес (который альяс), а не первый, соотв. аська отказывалась работать. С этой минимальной конфигурацией заработала. Поэтому в обычных правилах надо прописать не только $ext_if, а ещё и $ext_ip1 и $ext_ip2 и, соответственно конкретизировать правила.
|
|
| |
rm-rf | Дата: Пятница, 26.03.2010, 20:29 | Сообщение # 3 |
Admin
Группа: Администраторы
Сообщений: 37
Статус: Offline
| Собственно, что же делать, если нужно пропустить аську для сервера, у которого два внешних адреса? Я рассуждал так: Запускаю tcpdump -i re0 (чтобы слушал на интерфейсе re0 - внешний). Выбираю пакеты в которых присутствует aol.com. Начал смотреть почему не пускает. Вот лог: Code gw# tcpdump -i re0 | grep aol.com tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on re0, link-type EN10MB (Ethernet), capture size 96 bytes 19:51:14.978650 IP bos-m012c-sdr2.blue.aol.com.aol > mail.skpg.ru.63963: Flags [S.], seq 4108467479, ack 336030270, win 16384, options [mss 1360], length 0 19:51:14.978812 IP mail.skpg.ru.63963 > bos-m012c-sdr2.blue.aol.com.aol: Flags [.], ack 1, win 65535, length 0 19:51:15.116384 IP bos-m012c-sdr2.blue.aol.com.aol > mail.skpg.ru.63963: Flags [P.], ack 1, win 16384, length 10 19:51:15.116848 IP mail.skpg.ru.63963 > bos-m012c-sdr2.blue.aol.com.aol: Flags [P.], ack 11, win 65525, length 342 19:51:15.255131 IP bos-m012c-sdr2.blue.aol.com.aol > mail.skpg.ru.63963: Flags [R.], seq 11, ack 343, win 16384, length 0 19:51:21.008430 IP 84.204.166.222.56135 > bucp-d1-vip.blue.aol.com.aol: Flags [S], seq 1632397192, win 65535, options [mss 1460,nop,wscale 3,nop,nop,sackOK], length 0 19:51:21.146428 IP bucp-d1-vip.blue.aol.com.aol > 84.204.166.222.56135: Flags [S.], seq 2219374174, ack 1632397193, win 16384, options [mss 1360], length 0 19:51:21.146599 IP 84.204.166.222.56135 > bucp-d1-vip.blue.aol.com.aol: Flags [.], ack 1, win 65535, length 0 19:51:21.285310 IP bucp-d1-vip.blue.aol.com.aol > 84.204.166.222.56135: Flags [P.], ack 1, win 16384, length 10 19:51:21.285641 IP 84.204.166.222.56135 > bucp-d1-vip.blue.aol.com.aol: Flags [P.], ack 11, win 65525, length 18 19:51:21.423800 IP bucp-d1-vip.blue.aol.com.aol > 84.204.166.222.56135: Flags [.], ack 19, win 16384, length 0 19:51:21.423947 IP 84.204.166.222.56135 > bucp-d1-vip.blue.aol.com.aol: Flags [P.], ack 11, win 65525, length 29 19:51:21.561720 IP bucp-d1-vip.blue.aol.com.aol > 84.204.166.222.56135: Flags [.], ack 48, win 16384, length 0 19:51:21.565006 IP bucp-d1-vip.blue.aol.com.aol > 84.204.166.222.56135: Flags [P.], ack 48, win 16384, length 27 19:51:21.565485 IP 84.204.166.222.56135 > bucp-d1-vip.blue.aol.com.aol: Flags [P.], ack 38, win 65498, length 122 19:51:21.703736 IP bucp-d1-vip.blue.aol.com.aol > 84.204.166.222.56135: Flags [.], ack 170, win 16384, length 0 19:51:21.709345 IP bucp-d1-vip.blue.aol.com.aol > 84.204.166.222.56135: Flags [P.], ack 170, win 16384, length 321 19:51:21.709682 IP 84.204.166.222.56135 > bucp-d1-vip.blue.aol.com.aol: Flags [P.], ack 359, win 65177, length 6 19:51:21.709701 IP 84.204.166.222.56135 > bucp-d1-vip.blue.aol.com.aol: Flags [F.], seq 176, ack 359, win 65177, length 0 19:51:21.847794 IP bucp-d1-vip.blue.aol.com.aol > 84.204.166.222.56135: Flags [R.], seq 359, ack 176, win 16384, length 0 19:51:22.200138 IP mail.skpg.ru.62020 > bos-d026c-rdr2.blue.aol.com.aol: Flags [S], seq 736850467, win 65535, options [mss 1460,nop,wscale 3,nop,nop,sackOK], length 0 19:51:22.338803 IP bos-d026c-rdr2.blue.aol.com.aol > mail.skpg.ru.62020: Flags [S.], seq 3845231042, ack 736850468, win 16384, options [mss 1360], length 0 19:51:22.338963 IP mail.skpg.ru.62020 > bos-d026c-rdr2.blue.aol.com.aol: Flags [.], ack 1, win 65535, length 0 19:51:22.477559 IP bos-d026c-rdr2.blue.aol.com.aol > mail.skpg.ru.62020: Flags [P.], ack 1, win 16384, length 10 19:51:22.477960 IP mail.skpg.ru.62020 > bos-d026c-rdr2.blue.aol.com.aol: Flags [P.], ack 11, win 65525, length 347 19:51:22.617144 IP bos-d026c-rdr2.blue.aol.com.aol > mail.skpg.ru.62020: Flags [R.], seq 11, ack 348, win 16384, length 0 ^C535 packets captured 562 packets received by filter 0 packets dropped by kernel
gw#
|
|
| |
rm-rf | Дата: Пятница, 26.03.2010, 20:29 | Сообщение # 4 |
Admin
Группа: Администраторы
Сообщений: 37
Статус: Offline
| Вижу, что от нас то пакеты уходят и через mail.skpg.ru и через 84.204.166.222 (ип 84.204.166.219 и соотв. 84.204.166.222) Code mail.skpg.ru.63963 > bos-m012c-sdr2.blue.aol.com.aol 84.204.166.222.56135 > bucp-d1-vip.blue.aol.com.aol Собственно, мне этого не надо, оставим один интерфейс, через который всё должно ходить. Для этого исправим правило в нате: Было: Code nat on $ext_if from $int_if:network to any port $im_ports -> $ext_if Стало: Code nat on $ext_if from $int_if:network to any port $im_ports -> $ext_ip1 То есть все запросы из локальной сети куда угодно на порты для мессенджеров будут натиться на $ext_ip1. Итого, в случае двух внешних адресов на шлюзе, правила примут вид: Code ext_if="re0" int_if="age0" lan="192.168.1.0/24" ext_ip1="84.204.166.219" ext_ip2="82.204.166.222" ext_dns1="217.195.65.9" ext_dns2="217.195.66.253" lan="192.168.1.0/24" im_ports="{443, 5190, 5222}"
nat on $ext_if from $int_if:network to !$int_if port $im_ports -> $ext_ip1
#### DO NOT DELETE block log all pass quick on $int_if inet proto tcp from $lan to $int_if port ssh pass quick on $int_if inet proto tcp from $int_if port ssh to $lan #### DO NOT DELETE
#### DNS pass out on $ext_if inet proto udp from $ext_if to any port domain
pass in quick on $int_if inet proto tcp from $lan to any port $im_ports pass out quick on $ext_if inet proto tcp from $ext_if to any port $im_ports modulate state В принципе, после этого, можно будет подключаться напрямую на порт 5190 и 5222. Все должно работать.
|
|
| |
jsand | Дата: Пятница, 12.11.2010, 22:56 | Сообщение # 5 |
админ я
Группа: Администраторы
Сообщений: 29
Статус: Offline
| Да кстати, названия протоколов в FreeBSD содержится в /etc/protocols. Названия сервисов содержится в /etc/services.
|
|
| |
|
|