[System Hardening] UFW를 사용하여 네트워크 접근 제한하기

IMKUNYOUNG·2024년 6월 16일
0

CKS

목록 보기
35/70

이번 포스팅에서는 UFW(Uncomplicated Firewall)에 대해 알아보겠습니다. UFW는 사용하기 간편한 방화벽 도구로, 복잡한 IP tables 명령어를 사용하지 않고도 리눅스 시스템에서 네트워크 접근을 효과적으로 관리할 수 있습니다.

시나리오 설정

우리는 Ubuntu 서버인 app01의 네트워크 접근을 제한해야 하는 상황을 가정해보겠습니다. 이 서버는 두 가지 주요 요구사항이 있습니다:

  1. IP 주소 172.16.238.5인 단일 서버에서만 SSH 연결을 허용합니다.
  2. 포트 80에서 실행되는 웹 서버는 172.16.238.5의 점프 서버와 172.16.100.0/28 범위의 내부 사용자들에게만 접근을 허용합니다.

그 외에 서버 app01의 다른 모든 포트는 닫혀 있어야 하며, 모든 인바운드 접근을 차단해야 합니다.

UFW 설치 및 설정

UFW는 Ubuntu 시스템에 쉽게 설치할 수 있습니다. 다음 단계를 통해 UFW를 설치하고 설정합니다.

1. UFW 설치

먼저, 패키지 목록을 업데이트하고 UFW를 설치합니다:

$ sudo apt update
$ sudo apt-get install ufw

2. UFW 활성화 및 초기 상태 확인

설치가 완료되면 UFW를 활성화하기 전에 현재 상태를 확인합니다:

$ systemctl enable ufw

$ systemctl start ufw
Synchronizing state of ufw.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ufw
$ sudo ufw status
Status: inactive

3. 기본 규칙 설정

모든 인바운드 연결을 차단하고 아웃바운드 연결을 허용하는 기본 규칙을 설정합니다:

$ sudo ufw default deny incoming
Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)

$ sudo ufw default allow outgoing
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)

4. SSH 및 웹 서버 접근 허용 규칙 추가

이제 요구사항에 맞게 규칙을 추가합니다:

  • 점프 서버 172.16.238.5에서 SSH 연결을 허용합니다:
$ sudo ufw allow from 172.16.238.5 to any port 22 proto tcp
Rules updated
  • 점프 서버 172.16.238.5에서 포트 80으로의 연결을 허용합니다:
$ sudo ufw allow from 172.16.238.5 to any port 80 proto tcp
Rules updated
  • 172.16.100.0/28 범위의 내부 사용자들이 포트 80으로 접근을 허용합니다:
$ sudo ufw allow from 172.16.100.0/28 to any port 80 proto tcp
Rules updated

5. 불필요한 포트 차단

포트 8080을 차단합니다:

$ sudo ufw deny 8080
Rules updated

6. UFW 활성화

모든 규칙을 추가한 후 방화벽을 활성화합니다:

$ sudo ufw enable
Rules updated

7. 설정 확인

설정이 완료되면 현재 방화벽 규칙을 확인하여 올바르게 적용되었는지 점검합니다.

$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW 172.16.238.5
80/tcp ALLOW 172.16.238.5
80/tcp ALLOW 172.16.100.0/28
8080 DENY Anywhere
8080 (v6) DENY Anywhere (v6)

규칙 삭제

특정 규칙을 삭제하려면 규칙 번호를 확인한 후 삭제합니다. 예를 들어, 8080 포트 거부 규칙을 삭제하려면:

$ sudo ufw delete deny 8080
Rule deleted
Rule deleted (v6)


$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW 172.16.238.5
80/tcp ALLOW 172.16.238.5
80/tcp ALLOW 172.16.100.0/28

또는 규칙 번호를 사용하여 삭제할 수 있습니다:

$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW 172.16.238.5
80/tcp ALLOW 172.16.238.5
80/tcp ALLOW 172.16.100.0/28
8080 DENY Anywhere
8080 (v6) DENY Anywhere (v6)

$ sudo ufw delete [number] # ex. 5
Deleting:
deny 8080
Proceed with operation (y|n)? y
Rule deleted (v6)

$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW 172.16.238.5
80/tcp ALLOW 172.16.238.5
80/tcp ALLOW 172.16.100.0/28
8080 DENY Anywhere

결론

UFW를 사용하면 간편하게 리눅스 서버의 네트워크 접근을 관리할 수 있습니다. 복잡한 IP tables 명령어를 사용하지 않고도 손쉽게 방화벽 규칙을 설정하고 관리할 수 있으며, 이를 통해 서버의 보안을 강화할 수 있습니다.

0개의 댓글