SELinux, apache (ограничение ip,port)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

distress
Сообщения: 84
ОС: RHEL5

SELinux, apache

Сообщение distress »

Приветствую. Есть один сервер с apache и SELinux в принудительном режиме. апачу необходимо коннектить на управляющий 3434 порт одного сервиса:

Код: Выделить всё

type=AVC msg=audit(1287491843.001:167): avc:  denied  { name_connect } for  pid=2305 comm="httpd" dest=3434 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket

чтобы разрешить соединение на этот порт, я сделал 2 модуля SELinux. 1) создал объект 'порт'.

Код: Выделить всё

module myservicecontrol_port 1.0;
require
{
    attribute port_type;
}
type myservicecontrol_port_t, port_type;

добавил значение в объект:

Код: Выделить всё

semanage port -a -t myservicecontrol_port_t -p tcp 3434

2) разрешил апачу доступ к новому объекту

Код: Выделить всё

module httpd_myservicecontrol_connect 1.0;
require
{
    type httpd_t;
    type myservicecontrol_port_t;
    class tcp_socket name_connect;
}
#allow
allow httpd_t myservicecontrol_port_t:tcp_socket name_connect;
#log(does not actually grant it, it just logs that it is granted)
auditallow httpd_t myservicecontrol_port_t:tcp_socket name_connect;


теперь, как положено, в audit.log я вижу

Код: Выделить всё

type=AVC msg=audit(1287504285.791:20723): avc:  granted  { name_connect } for  pid=5810 comm="httpd" dest=3434 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:myservicecontrol_port_t:s0 tclass=tcp_socket

всё работает и апач может присоединиться к 3434 порту любого хоста.
вопрос: как разрешить доступ только к определенными ip адресами? т.е. 192.168.1.56,57:3434 например.
Спасибо сказали:
patrius
Сообщения: 337
ОС: Debian (4 & 5) -> Gentoo

Re: SELinux, apache

Сообщение patrius »

distress
вопрос: как разрешить доступ только к определенными ip адресами? т.е. 192.168.1.56,57:3434 например.

Для этого можно использовать iptables OUTPUT.
Спасибо сказали:
distress
Сообщения: 84
ОС: RHEL5

Re: SELinux, apache

Сообщение distress »

patrius писал(а):
22.10.2010 16:02
Для этого можно использовать iptables OUTPUT.

можно.
если подразумевается что-то вроде

Код: Выделить всё

iptables -t filter -a OUTPUT -d 192.168.1.56 --dport 3434 -j ACCEPT

то это разрешит соединения всем, а не только апачу.
Спасибо сказали:
Аватара пользователя
taaroa
Сообщения: 1319

Re: SELinux, apache

Сообщение taaroa »

distress писал(а):
22.10.2010 17:09
это разрешит соединения всем, а не только апачу.

iptables -m owner -h
:wq
Спасибо сказали:
distress
Сообщения: 84
ОС: RHEL5

Re: SELinux, apache

Сообщение distress »

taaroa писал(а):
22.10.2010 17:18
iptables -m owner -h

годно. будет запасным вариантом.

все равно интересует вариант решения именно через SELinux. Неужели никто не пытался настроить его под себя? Сделать что-то вроде application firewall?
Спасибо сказали:
patrius
Сообщения: 337
ОС: Debian (4 & 5) -> Gentoo

Re: SELinux, apache

Сообщение patrius »

distress писал(а):
22.10.2010 17:09
patrius писал(а):
22.10.2010 16:02
Для этого можно использовать iptables OUTPUT.

можно.
если подразумевается что-то вроде

Код: Выделить всё

iptables -t filter -a OUTPUT -d 192.168.1.56 --dport 3434 -j ACCEPT

то это разрешит соединения всем, а не только апачу.


Учитывая, что порт достаточно специфичен и речь идет только о

Код: Выделить всё

iptables -t filter -a OUTPUT
.
Т.е. разрешение только для сервера и его приложений.
Спасибо сказали:
Аватара пользователя
Manko
Сообщения: 5

Re: SELinux, apache

Сообщение Manko »

Можно воспользоваться netlabel_tools, там можно настроить маску сети.
Спасибо сказали: