Блог об openSUSE » SuSEfirewall2 http://sapfeer.ru Блог по созданию и настройке openSUSE безопасного хамелеона Tue, 15 Mar 2011 12:04:30 +0000 ru-RU hourly 1 http://wordpress.org/?v=3.4.2 Прозрачное проксирование в связке SQUID + SuSEfirewall2 http://sapfeer.ru/2011/01/15/742 http://sapfeer.ru/2011/01/15/742#comments Sat, 15 Jan 2011 11:13:21 +0000 Сергей http://sapfeer.ru/?p=742 sudo zypper install squid user@opensuse:~> [...]]]> Squid - прозрачное проксирование Здравствуйте, меня уже несколько человек просило написать о том, как настроить прозрачное проксирование траффика, например, на офисном шлюзе, который, естественно, работает на openSUSE. На самом деле, ничего сложного в настройке нет, и вы сами в этом убедитесь, повторяя все за мной.

1) Устанавливаем, добавляем в автозагрузку и запускаем squid:
user@opensuse:~> sudo zypper install squid
user@opensuse:~> sudo chkconfig squid on
user@opensuse:~> service squid start

2) Настраиваем squid. В файле /etc/squid/squid.conf находим строку http_port 3128, меняем ее на:
http_port 192.168.1.1:3128 transparent
Внимание! Вместое 192.168.1.1 вам необходимо вписать адрес сервера в вашей локальной сети.. Это мы делаем для того, чтобы если вы даже где-то и ошиблись с конфигурацией файрволла, то никто извне не смог пользоваться вашим прокси сервером.

3) Перезапускаем squid:
user@opensuse:~> service squid restart

4) Настраиваем SuSEfirewall2. Находим параметр FW_REDIRECT="" в файле /etc/sysconfig/SuSEfirewall2 и меняем на:
FW_REDIRECT="192.168.1.0/24,0/0,tcp,80,3128"
Внимание! Вместо 192.168.1.0/24 вам необходимо вписать адрес и маску вашей локальной сети.Этот параметр так же требует, чтобы FW_ROUTE="yes" , если у вас уже настроен роутинг то значит все окей, если нет, ищите параметр в этом же файле и выставляйте правильно.

5) Перезапускаем SuSEfirewall2:
service SuSEfirewall2_setup restart

Все, уже после этого, у вас весь траффик будет идти через squid.

Оптимизация кэширования

К выше сказанному хочется добавить несколько советов по оптимизации КЭШа. Добавьте в конец /etc/squid/squid.conf следующие опции:

# Максимальный размер файла который может быть сохранен в кэше.
maximum_object_size 64 MB
# Параметры определяет какие файлы в кэше будут заменены, когда необходимо место в кэше.
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF
# Описание
reload_into_ims on
# Оптимизация кэширования, путем игнорирования некоторых заголовков.
refresh_pattern -i (cam|kam|live|stream).*\.(gif|jpeg|jpg)(\?.*|)$ 10 20% 28800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth
refresh_pattern -i \.(gif|jpeg|jpg|swf|png|bmp|pic)$ 2880 20% 28800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth
refresh_pattern -i \.(html|php|asp|dll|htm|aspx|mspx|shtml|cgi|php3|jse|phtml|po|pl|fcgi|jsp|py|php4)$ 10 20% 28800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private
refresh_pattern -i \.(js|css|class|jar|xml|txt|cfm|doc|xls|pdf)$ 2880 20% 28800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth
refresh_pattern -i \.(exe|gz|tar|tgz|zip|arj|ace|bin|cab|msi)(\?.*|)$ 10 20% 2880 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth
refresh_pattern -i \.(mid|mp[234]|wav|ram|rm|au)(\?.*|)$ 2880 20% 28800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth
refresh_pattern -i \.(mpg|mpeg|avi|asf|wmv|wma)(\?.*|)$ 2880 20% 28800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth
refresh_pattern . 0 20% 2880 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private

Информация об опциях squid очень подробно расписана, разумеется, здесь

Подводные камни: если у вас в локальной сети есть свой вебсервер, вы столкнетесь с тем, что все внутренние клиенты будут иметь адрес шлюза. Вы можете использовать mod_rpaf(для apache) или немного модифицировать правила SuSEfirewall2

Тех, кто дочитал до конца, поздравляю с прошедшим старым новым годом! :-)

]]>
http://sapfeer.ru/2011/01/15/742/feed 3
Создание простейшего роутера из компьютера с openSUSE на борту http://sapfeer.ru/2010/11/10/707 http://sapfeer.ru/2010/11/10/707#comments Wed, 10 Nov 2010 14:50:25 +0000 Сергей http://sapfeer.ru/?p=707 Сегодня хочу показать как сделать простейший роутер из компьютера с ОС openSUSE в течении нескольких минут. Сделать это сможет каждый, кто хоть немного знаком с консолью и понимает для чего нужны IP адреса :) . На моей машине внутренним интерфейсом является eth0(192.168.1.1), а внешним eth1.

Начнем по порядку:

I) Настройка сервера DNS:

Устанавливаем:
user@opensuse:~> sudo zypper install bind
Теперь просто правим конфигурационный файл. Здесь я хочу сказать, что я изменил всего несколько строк в стандартном файле, привожу их здесь:
user@opensuse:~>sudo mcedit /etc/named.conf
# Слушаем на порту 53 на интерфейсах 127.0.0.1 и 192.168.1.1
listen-on port 53 { 127.0.0.1; 192.168.1.1; };
# Не слушаем на ipv6
listen-on-v6 { none; };
# Уменьшаем уровень логирования ошибок:
logging {
channel syslog_errors {
syslog user;
severity error;
};
category default { syslog_errors; };
};

Готово! Теперь ставим named в автозапуск:
user@opensuse:~>sudo chkconfig named on
Ставим права на рабочую директорию named
user@opensuse:~>sudo chown -R named:named /var/lib/named/
Запускаем DNS сервер
user@opensuse:~>sudo /etc/init.d/named start
Можно прописать его в resolv.conf для использования по умолчанию, но, мне кажется, лучше оставить DNS провайдера на сервере.

II) Настройка сервера DHCP

Устанавливаем его в систему
user@opensuse:~> sudo zypper install dhcp-server
Убираем текущий /etc/dhcpd.conf и создаем его заново
user@opensuse:~> sudo mv /etc/dhcpd.conf /etc/dhcpd.conf.old && sudo touch /etc/dhcpd.conf
В него вписываем следующие строки:
user@opensuse:~> sudo mcedit /etc/dhcpd.conf
# IP сервера указано тут потому что мы подняли собственный DNS. Вы можете использовать тут DNS провайдера.
option domain-name-servers 192.168.1.1;
# Отключаем динамические обновления DNS
ddns-update-style none;
ddns-updates off;
log-facility local7;
# Наша подсеть
subnet 192.168.1.0 netmask 255.255.255.0 {
# Диапазон выдаваемых IP адресов.
range 192.168.1.2 192.168.1.254;
# Дефолтный gateway
option routers 192.168.1.1;
# Время обновления адресов(12 часов).
default-lease-time 43200;
max-lease-time 86400;
}

*UPDATE*
Необходимо указать интерфейс, на котором будет слушать DHCPD - в /etc/sysconfig/dhcpd:
DHCPD_INTERFACE=»ethX»

Все, теперь запускаем сервис
user@opensuse:~>sudo /etc/init.d/dhcpd start
И добавляем его в автозагрузку.
user@opensuse:~>sudo chkconfig dhcpd on

III) Настройка NAT

Все необходимые настройки заключены в одном файле /etc/sysconfig/SuSEfirewall2. Открываем его с помощью любимого текстового редактора и начинаем править ( в моем случае - mcedit ):
user@opensuse:~> sudo mcedit /etc/sysconfig/SuSEfirewall2

В секции 2 вам нужно указать ваши интерфейсы, какие из них будут внешними, какие внутренними:
# Внешние ( в принципе можно не указывать, по умолчанию все интерфейсы являются внешними):
FW_DEV_EXT="any eth1"
# Внутренние:
FW_DEV_INT="eth0"

В секции 5 находятся еще два нужных нам параметра:
# Включаем роутинг в ядре
FW_ROUTE="yes"
# Разрешаем маскардинг
FW_MASQUERADE="yes"

В секции 6 указываем вашу подсеть, в моем случае - это 192.168.1.0/24:
FW_MASQ_NETS="192.168.1.0/24"

Готово! Теперь осталось применить правила и насладиться результатом:
user@opensuse:~> sudo /etc/init.d/SuSEfirewall2_setup restart

После выполнения данных действий все ваши компьютеры в сети смогут получать автоматический IP адрес, будут использовать ваш собственный DNS сервер и иметь доступ в интернет. В принципе, я потратил на это все минут 20, канал в интернет не очень широкий :-) В следующий раз расскажу о подсчете траффика для клиентов, я еще сам разобраюсь с данной темой. Если вдруг вы увидите какую-то ошибку в статье или выполняя все инструкции вы не получили желаемого результата, пишите, я постараюсь помочь.

]]>
http://sapfeer.ru/2010/11/10/707/feed 22
Настройка портов для сервисов в SuSEfirewall2 http://sapfeer.ru/2009/10/27/472 http://sapfeer.ru/2009/10/27/472#comments Tue, 27 Oct 2009 12:59:07 +0000 Сергей http://sapfeer.ru/?p=472 SuSEfirewall2 Очень удобная штука - YaST. А в ней есть неменее удобная функция управления файрволлом. Хочу сегодня поделится опытом, как сделать процесс управления доступом приложений к сети еще более удобным. У SuSEfirewall2 существуют свои конфигурационные файлы. Предлагаю вам заглянуть в директорию /etc/sysconfig/SuSEfirewall2.d/services/. Там вы увидите несколько файлов, например apache2, cups, postfix, sshd и др. Эти файлы отвечают за порты для демонов.
А если у вас на сервере запущен какой-то нестандартный демон? К примеру, CS Source сервер, вы можете создать собственный конфиг и управлять доступом к нему через YaST -> Брэндмауэр -> Разрешенные Службы

Вот так например выглядит конфиг для стандартного сервера CSS:

admin@linuxserver:~> cat /etc/sysconfig/SuSEfirewall2.d/services/cssource
## Name: Counter Strike: Source
## Description: Server for CS:Source

# space separated list of allowed TCP ports
TCP="27015"

# space separated list of allowed UDP ports
UDP="27005 27015 27020"

# space separated list of allowed RPC services
RPC=""

# space separated list of allowed IP protocols
IP=""

# space separated list of allowed UDP broadcast ports
BROADCAST=""

В той же папке лежит файл TEMPLATE, используя его вы можете создать свой конфиг для вашего сервиса.

]]>
http://sapfeer.ru/2009/10/27/472/feed 2