웹사이트 검색

Shorewall - Linux 서버를 위한 높은 수준의 방화벽


Linux에서 방화벽을 설정하는 것은 초보자나 iptables에 익숙하지 않은 사람에게는 매우 어려울 수 있습니다. 다행히 Shorewall에는 사용하기 매우 쉬운 솔루션이 있습니다.

여러 부분으로 구성된 이 튜토리얼에서는 Shorewall을 시작하고 이 멋진 방화벽 시스템에 대한 몇 가지 고급 주제를 안내해 드리겠습니다.

쇼월이란 무엇입니까?

Shorewall은 기본적으로 iptables의 프런트엔드이지만 구성을 위해 여러 텍스트 파일을 활용하는 명령줄 환경 프런트엔드입니다. Shorewall은 수많은 시스템을 서비스하는 대규모 네트워크로 확장할 수 있는 강력한 방화벽 시스템이지만 기본적인 2인터페이스 구성으로 시작하여 기본 사항을 정리하겠습니다.

2인터페이스 구성은 두 개의 이더넷 포트(하나는 로컬 네트워크로 들어오고 다른 하나는 나가는 포트)가 있는 시스템으로 구성됩니다.

Linux에 Shorewall 방화벽 설치

Shorewall은 apt 및 yum 패키지 관리자 도구를 사용하여 설치할 수 있습니다.

sudo apt install shorewall    [On Debian-based Sysems]
sudo yum install shorewall    [On RHEL-based Sysems]

설치 후에는 "/usr/share/doc/shorewall" 디렉터리에서 Shorewall의 기본 디렉터리인 "/etc/shorewall"로 샘플 구성을 복사해야 합니다.

sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall
cd /etc/shorewall

이 디렉토리를 살펴보면 여러 파일과 shorewall.conf 파일이 있습니다.

Shorewall은 네트워크를 서로 다른 영역의 그룹으로 간주하므로 우리가 살펴보고 싶은 첫 번째 파일은 "/etc/shorewall/zones" 파일입니다.

sudo nano /etc/shorewall/zones

여기서는 기본적으로 fw, netloc의 세 가지 영역이 정의되어 있음을 알 수 있습니다. Shorewall은 방화벽 시스템 자체를 자체 영역으로 취급하고 이를 $fw라는 변수에 저장한다는 점에 유의하는 것이 중요합니다.

"/etc/shorewall/zones" 파일은 설명이 매우 간단합니다. net zone(인터넷 연결 인터페이스), loc zone(LAN 연결 인터페이스) 및 fw가 있습니다. Strong>이 전부입니다.

이 설정은 다음을 포기합니다.

  • loc zone(LAN)에서 net zone(인터넷)으로의 모든 연결 요청을 허용합니다.
  • 넷 영역에서 방화벽LAN으로의 모든 연결 요청을 삭제(무시)합니다.
  • 다른 모든 요청을 거부하고 기록합니다.

LOG LEVEL 비트는 Apache, MySQL 또는 기타 다양한 FOSS 프로그램을 관리해 본 사람이라면 누구나 익숙할 것입니다. 이 경우 Shorewall에 로깅의 정보 수준을 사용하도록 지시합니다.

이제 영역과 정책이 설정되었으므로 인터페이스를 구성해야 합니다. "/etc/shorewall/interfaces" 파일을 편집하면 됩니다.

sudo nano /etc/shorewall/interfaces

여기서는 인터넷 연결 인터페이스를 net zone에 대한 eth0으로 설정했습니다. LAN 측에서는 다른 인터페이스인 eth1loc zone으로 설정했습니다. 구성에 맞게 이 파일을 조정하세요.

이러한 인터페이스 중 하나에 배치할 수 있는 다양한 옵션은 광범위하며 매뉴얼 페이지에 자세히 설명되어 있습니다.

man shorewall-interfaces

그 중 일부를 간단히 요약하면 다음과 같습니다.

  • nosmurfs – 브로드캐스트 주소를 소스로 사용하여 패킷을 필터링합니다.
  • logmartians – 불가능한 소스 주소로 패킷을 기록합니다.
  • routefilter – 스푸핑 방지를 위한 커널 경로 필터링입니다.

물론 이제 시스템에 방화벽이 설정되어 있으므로 수행해야 할 작업을 수행하려면 특정 연결을 허용해야 합니다. "/etc/shorewall/rules"의 규칙 파일에서 이를 정의합니다.

sudo nano /etc/shorewall/rules

이 파일은 처음에는 열이 겹쳐서 혼란스러워 보이지만 헤더는 설명이 매우 간단합니다. 먼저, 수행하려는 작업을 설명하는 ACTION 열이 있습니다.

다음으로, 패킷이 시작되는 영역을 정의하는 SOURCE 헤더가 있습니다. 그런 다음 대상의 영역 또는 IP 주소대상 또는 대상을 갖게 됩니다. 예를 들어보겠습니다.

IP 주소가 192.168.1.25인 시스템에서 방화벽 뒤에서 SSH 서버를 실행한다고 가정해 보겠습니다. 방화벽에서 포트를 열어야 할 뿐만 아니라 포트 22에서 들어오는 모든 트래픽이 22에 있는 시스템으로 라우팅되어야 함을 방화벽에 알려야 합니다. >192.168.1.25.

이를 포트 전달이라고 합니다. 이는 대부분의 방화벽/라우터의 일반적인 기능입니다. "/etc/shorewall/rules"에 다음과 같은 줄을 추가하면 됩니다.

SSH(DNAT)	net		loc:192.168.1.25

위에서는 net zone에서 방화벽으로 들어오는 모든 SSH 대상 패킷이 라우팅되어야 한다고 정의했습니다(DNAT Strong>) 주소가 192.168.1.25인 시스템의 포트 22입니다.

이를 네트워크 주소 변환 또는 NAT라고 합니다. "D "는 단순히 Shorewall에게 이것이 대상 주소에 대한 NAT임을 알려줍니다.

이것이 작동하려면 커널에서 NAT 지원을 활성화해야 합니다. NAT가 필요하지만 없으면 데비안 커널 재컴파일에 대한 튜토리얼을 참조하세요.

다음 기사에서는 다양한 Shorewall 구성 및 옵션을 살펴보겠습니다. 그러나 지금 당장 시작하는 데 도움이 되는 충분한 정보가 여기에 있습니다. 언제나 그렇듯, 더 자세한 내용을 보려면 매뉴얼 페이지를 참조하십시오.