iptables를 사용하여 나가는 연결 차단

iptables를 사용하여 나가는 연결 차단

쉘 액세스(루트가 아님)가 있는 외부 후원자가 있는 (비프로덕션) 머신이 있습니다. 나는 그들이 이 컴퓨터에서 우리 네트워크로 더 이상 iptables를 사용하는 것을 방지하고 싶습니다.

"일반" 방화벽 GUI는 들어오는 트래픽만 차단합니다. "들어오는 모든 트래픽(및 응답)을 허용하지만 특정 대상에 대해 나가는 새로운 트래픽만 허용합니다(예: 서버의 snmp-trap 모니터링)"와 같은 규칙을 어떻게 설정합니까?

운영 체제는 CentOS 5입니다.

답변1

들어오는 TCP 트래픽만 허용한다고 가정하면 다음 규칙을 사용하여 설정된 TCP 연결(외부에서 시작해야 함)과 LAN 외부의 IP 주소로 나가는 트래픽을 제한할 수 있습니다.

iptables -A INPUT -p tcp -i lo -j ACCEPT
iptables -A INPUT -p tcp -p 22 -j ACCEPT   # repeat for other ports you want to allow
iptables -P INPUT -j DENY
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -p tcp \! -d 10.0.0.0/8 -j ACCEPT  # replace by your LAN's network(s)
iptables -A OUTPUT -p tcp \! --syn -j ACCEPT
iptables -P OUTPUT -j DENY

요구 사항에 따라 서포터가 수행하는 프로세스에 특별히 몇 가지 규칙을 적용하는 것을 선호할 수도 있습니다. supporters그룹 에 속해 있다고 가정하면 다음 규칙은 LAN 내에서 지원자(및 지원자만)의 모든 연결(수신 또는 발신)을 거부합니다.

iptables -I INPUT \! -i lo -s 10.0.0.0/8 -m owner --gid-owner supporters -j DENY
iptables -I OUTPUT \! -o lo -d 10.0.0.0/8 -m owner --gid-owner supporters -j DENY

gid-owner테스트 과정 에 주의를 기울이세요FSGID, 이는 거의 항상유효한 GID. 프로세스를 실행하지 않는 한설정또는 유효 GID를 다음으로 전환하십시오.보충 그룹, 사용자의 기본 그룹(예: 사용자 데이터베이스에 기록됨 /etc/passwd)이 적용됩니다.

답변2

"수락됨"으로 명시적으로 정의한 트래픽을 제외하고 나가는 모든 트래픽을 삭제하는 방법에는 두 가지가 있습니다. 첫 번째는 OUTPUT 체인 폐기에 대한 기본 정책을 설정하는 것입니다.

iptables -P OUTPUT DROP

이 접근 방식의 단점은 체인이 새로 고쳐질 때(모든 규칙 제거) 모든 아웃바운드 트래픽이 삭제된다는 것입니다. 또 다른 방법은체인.

iptables -A OUTPUT -j DROP

귀하에게 필요한 것이 무엇인지 정확히 알지 못하면 무엇을 받아들여야 하는지에 대한 조언을 드릴 수 없습니다. 제가 개인적으로 사용하는 방법은 체인 끝에 기본 DROP 규칙을 배치하는 것입니다. GUI가 규칙을 설정하는 방법을 조사해야 할 수도 있습니다. 그렇지 않으면 시작 시 규칙을 복원하는 기존 CLI 방식(예: /etc/sysconfig/iptables)과 충돌할 수 있습니다.

답변3

설치를 고려해보세요부두 벽방화벽 빌더로서. 단일 인터페이스 예제를 시작점으로 사용하고 불필요한 나가는 액세스 규칙을 제공하지 마세요. 필수 ICMP 유형을 허용합니다.

최소한 발신 DNS(이름 조회) 및 NTP(시간 동기화) 액세스 규칙을 제공해야 할 수도 있습니다.

관련 정보