Linux에서 서비스별 방화벽을 어떻게 구성할 수 있나요?

Linux에서 서비스별 방화벽을 어떻게 구성할 수 있나요?

특정 프로그램만 시스템(가급적 RHEL)의 열린 포트를 사용하도록 허용하는 일종의 방화벽을 어떻게 구성할 수 있습니까?

예를 들어, 정상적으로 연결하고 업데이트하고 싶지만 yum탐색과 같은 아웃바운드 웹 요청을 차단하려는 경우 포트 80, 443, 53 및 UDP-53이 열려 있어야 합니다.

yum그러나 웹 브라우저를 구별하려면 방화벽이 필요합니다 .

답변1

iptables프로그램의 사용자를 확인하는 기능이 있습니다.

--uid-owner또는 플래그를 사용하면 --gid-owner네트워크를 지정된 사용자(루트?)로만 제한할 수 있으며 웹 서버(로 실행될 수 있음 www-data) 패킷이 삭제됩니다.

물론 이는 프로그램별이 아닌 사용자/그룹별로 제한되지만 오늘날 대부분의 서비스는 자체 사용자 및 그룹으로 실행됩니다.

예:

iptables -I OUTPUT -m owner --uid-owner www-data -jDROP

루트를 제외한 모든 사람에게 아웃바운드 네트워킹을 제한하는 예:

iptables -P OUTPUT DROP
iptables -I OUTPUT -m owner --uid-owner root -jALLOW

SELinux또 다른 접근 방식은 (일반적으로 RedHat 제품과 함께 번들로 제공됨) 규칙을 설정하는 것입니다 . 개인적으로는 관리하기가 더 어려울 것 같아요.

관련 정보