웹사이트 검색

Ubuntu 및 Debian 클라우드 서버에서 UFW로 방화벽을 설정하는 방법


소개

작동하는 방화벽을 설정하는 것은 클라우드 서버를 보호하는 데 중요합니다. 이전에는 복잡하거나 난해한 유틸리티를 통해 방화벽을 설정했습니다. 이러한 유틸리티 중 다수(예: iptables)에는 많은 기능이 내장되어 있지만 사용자가 이를 배우고 이해하려면 추가 노력이 필요합니다.

또 다른 옵션은 UFW 또는 복잡하지 않은 방화벽입니다. UFW는 다른 방화벽 관리 유틸리티보다 더 사용자 친화적인 인터페이스를 제공하는 것을 목표로 하는 iptables의 프런트 엔드입니다. UFW는 Linux 커뮤니티에서 잘 지원되며 일반적으로 많은 배포판에 기본적으로 설치됩니다.

이 튜토리얼에서는 Ubuntu 또는 Debian 클라우드 서버를 보호하기 위해 UFW를 사용하여 방화벽을 설정합니다. 또한 UFW 기본 규칙을 설정하여 포트 및 IP 주소에 대한 연결을 허용 또는 거부하고, 생성한 규칙을 삭제하고, UFW를 비활성화 및 활성화하고, 원하는 경우 모든 것을 기본 설정으로 다시 재설정하는 방법을 배우게 됩니다.

전제 조건

이 자습서를 따르려면 Ubuntu 또는 Debian을 실행하는 서버가 필요합니다. 서버에는 sudo 권한이 있는 루트가 아닌 사용자가 있어야 합니다. Ubuntu에 대해 이를 설정하려면 Debian 11을 사용한 초기 서버 설정에 대한 가이드를 따르십시오. 이 두 초기 서버 설정 가이드는 컴퓨터에 UFW가 설치되어 있고 방화벽 규칙 생성을 연습하는 데 사용할 수 있는 안전한 환경이 있는지 확인합니다. .

UFW와 함께 IPv6 사용

VPS(가상 사설 서버)가 IPv6용으로 구성된 경우 UFW가 IPv6을 지원하도록 구성되어 IPv4 및 IPv6 방화벽 규칙을 모두 구성하는지 확인하십시오. 이렇게 하려면 원하는 텍스트 편집기에서 UFW 구성 파일을 엽니다. 여기서는 nano를 사용합니다.

  1. sudo nano /etc/default/ufw

IPV6yes로 설정되었는지 확인합니다.

/etc/default/ufw
# /etc/default/ufw # # Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback # accepted). You will need to 'disable' and then 'enable' the firewall for # the changes to take affect. IPV6=yes

변경한 후 파일을 저장하고 종료합니다. nano를 사용하는 경우 CTRL + X, Y를 누른 다음 ENTER를 누릅니다.

이제 먼저 방화벽을 비활성화하여 방화벽을 다시 시작하십시오.

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

그런 다음 다시 활성화하십시오.

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

이제 UFW 방화벽이 적절한 경우 IPv4 및 IPv6 모두에 대해 방화벽을 구성하도록 설정되었습니다. 다음으로 방화벽 연결에 대한 기본 규칙을 조정합니다.

UFW 기본값 설정

연결 허용 및 거부에 대한 기본 규칙을 정의하여 방화벽의 효율성을 향상시킬 수 있습니다. UFW의 기본값은 모든 수신 연결을 거부하고 모든 발신 연결을 허용하는 것입니다. 즉, 서버에 도달하려는 사람은 연결할 수 없지만 서버 내의 모든 응용 프로그램은 외부에서 연결할 수 있습니다. UFW에서 설정한 기본 규칙을 업데이트하려면 먼저 들어오는 연결 규칙을 처리합니다.

  1. sudo ufw default deny incoming
Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)

다음으로 발신 연결 규칙을 처리합니다.

  1. sudo ufw default allow outgoing
Output
Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)

참고: 더 엄격하게 하려면 모든 발신 요청을 거부할 수 있습니다. 이 옵션은 개인 취향에 따라 결정됩니다. 예를 들어 공용 클라우드 서버가 있는 경우 모든 종류의 원격 셸 연결을 방지하는 데 도움이 될 수 있습니다. 하지만 나가는 모든 연결에 대한 규칙도 설정해야 하기 때문에 방화벽 관리가 더 번거로워집니다. 다음을 사용하여 이를 기본값으로 설정할 수 있습니다.

  1. sudo ufw default deny outgoing

방화벽에 대한 연결 허용

연결을 허용하려면 방화벽 규칙을 변경해야 하며 터미널에서 명령을 실행하여 수행할 수 있습니다. 예를 들어 지금 방화벽을 켜면 들어오는 모든 연결이 거부됩니다. SSH를 통해 서버에 연결하는 경우 서버가 잠기므로 문제가 될 수 있습니다. 서버에 대한 SSH 연결을 활성화하여 이러한 일이 발생하지 않도록 하십시오.

  1. sudo ufw allow ssh

변경에 성공하면 다음과 같은 결과가 표시됩니다.

Output
Rule added Rule added (v6)

UFW는 이전 예제에서 사용된 ssh 명령과 같은 일부 기본값과 함께 제공됩니다. 또는 동일한 작업을 수행하기 위해 TCP(Transmission Control Protocol)를 사용하는 포트 22/tcp로 들어오는 연결을 허용할 수 있습니다.

  1. sudo ufw allow 22/tcp

그러나 이미 allow ssh를 실행한 후에 이를 시도하면 규칙이 이미 존재하므로 다음 메시지가 표시됩니다.

Output
Skipping adding existing rule Skipping adding existing rule (v6)

SSH 서버가 포트 2222에서 실행 중인 경우 동일한 구문으로 연결을 허용할 수 있지만 포트 2222로 교체하십시오. 포트 번호를 단독으로 사용하는 경우 tcpudp에도 영향을 미칩니다.

  1. sudo ufw allow 2222/tcp
Output
Rule added Rule added (v6)

웹 서버 보안

파일 전송 프로토콜(FTP) 액세스로 웹 서버를 보호하려면 포트 80/tcp에 대한 연결을 허용해야 합니다.

포트 80에 대한 연결을 허용하면 HTTP 연결 요청을 수신하는 Apache 및 Nginx와 같은 웹 서버에 유용합니다. 이렇게 하려면 포트 80/tcp에 대한 연결을 허용하십시오.

  1. sudo ufw allow 80/tcp

UFW는 일반적으로 웹 서버가 작동하는 데 필요한 규칙을 프로파일에 제공합니다. 그렇지 않은 경우 다음 예와 같이 웹 서버 프로필이 "WWW”로 저장되고 ftp 또는 tcp로 열릴 수 있습니다.

  1. sudo ufw allow www

ftp 또는 포트 21을 사용하여 FTP 연결을 허용할 수도 있습니다.

  1. sudo ufw allow ftp
  1. sudo ufw allow 21/tcp

FTP 연결의 경우 포트 20에 대한 연결도 허용해야 합니다.

  1. sudo ufw allow 20/tcp

조정은 열어야 하는 포트와 서비스에 따라 달라지며 테스트가 필요할 수 있습니다. SSH 연결도 허용된 상태로 두어야 합니다.

포트 범위 지정

UFW로 허용하거나 거부할 포트 범위를 지정할 수도 있습니다. 이렇게 하려면 먼저 범위의 하한에서 포트를 지정하고 콜론(:) 다음에 범위의 상한을 지정해야 합니다. 마지막으로 규칙을 적용할 프로토콜(tcp 또는 udp)을 지정해야 합니다.

예를 들어 다음 명령은 1000에서 2000까지의 모든 포트에 대한 TCP 액세스를 허용합니다.

  1. sudo ufw allow 1000:2000/tcp

마찬가지로 다음 명령은 1234에서 4321까지의 모든 포트에 대한 UDP 연결을 거부합니다.

  1. sudo ufw deny 1234:4321/udp

IP 주소 지정

다음과 같이 특정 IP 주소의 연결을 허용할 수 있습니다. IP 주소를 자신의 정보로 바꾸십시오.

  1. sudo ufw allow from your_server_ip

이러한 예에서 알 수 있듯이 특정 포트 및 IP 주소 연결을 선택적으로 허용하여 방화벽 규칙을 조정할 때 많은 유연성이 있습니다. 특정 IP 주소 또는 서브넷에서 들어오는 연결을 허용하는 방법에 대해 자세히 알아보려면 가이드를 확인하십시오.

연결 거부

서버의 모든 포트를 열려면(권장하지 않음) 모든 연결을 허용한 다음 액세스를 허용하지 않으려는 포트를 거부할 수 있습니다. 다음 예는 포트 80에 대한 액세스를 거부하는 방법입니다.

  1. sudo ufw deny 80/tcp

규칙 삭제

관리한 규칙 중 일부를 삭제하려면 delete를 사용하고 제거할 규칙을 지정하십시오.

  1. sudo ufw delete allow 80/tcp
Output
Rule deleted Rule deleted (v6)

규칙이 길고 복잡하다면 대체 2단계 접근 방식이 있습니다. 먼저 현재 규칙의 번호가 매겨진 목록을 생성합니다.

  1. sudo ufw status numbered

그런 다음 이 번호 목록을 사용하여 현재 허용되는 규칙을 검토하고 해당 번호를 참조하여 규칙을 삭제합니다.

  1. sudo ufw delete number
Output
Status: active To Action From -- ------ ---- [ 1] OpenSSH ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 2222/tcp ALLOW IN Anywhere [ 4] 80 ALLOW IN Anywhere [ 5] 20/tcp ALLOW IN Anywhere …

예를 들어 포트 80이 목록에서 4번이면 다음 구문을 사용합니다. 작업을 계속하려면 질문이 표시될 수도 있습니다. 예 y 또는 아니오 n을 결정할 수 있습니다.

  1. sudo ufw delete 4
Output
Deleting: allow 80 Proceed with operation (y|n)? y Rule deleted (v6)

UFW 활성화

방화벽에 적용하려는 모든 규칙을 정의한 후에는 UFW를 활성화하여 적용을 시작할 수 있습니다. SSH를 통해 연결하는 경우 연결을 수신할 수 있도록 SSH 포트(일반적으로 포트 22)를 설정해야 합니다. 그렇지 않으면 서버에서 자신을 잠글 수 있습니다.

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

변경 사항이 적용되었는지 확인하려면 상태를 확인하여 규칙 목록을 검토하십시오.

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 22/tcp ALLOW Anywhere 2222/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 80/tcp DENY Anywhere …

보다 포괄적인 출력을 위해 verbose를 사용할 수도 있습니다.

  1. sudo ufw status verbose

UFW를 비활성화하려면 다음을 실행하십시오.

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

기본 설정 재설정

어떤 이유로 클라우드 서버의 규칙을 기본 설정으로 재설정해야 하는 경우 ufw reset 명령을 사용하면 됩니다. 기존 SSH 연결을 방해할 수 있으므로 모든 것을 재설정하기 전에 y 또는 n을 작성하라는 메시지가 표시됩니다.

  1. sudo ufw reset
Output
Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (y|n)? y Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530' Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530' Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530' Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530' Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530' Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'

기본 설정으로 재설정하면 UFW가 비활성화되고 이전에 정의한 모든 규칙이 삭제됩니다. 그러나 기본 설정은 수정한 경우 원래 설정으로 변경되지 않습니다. 이제 UFW로 새로 시작하고 원하는 대로 규칙과 연결을 사용자 정의할 수 있습니다.

결론

이 자습서에서는 포트 또는 IP 주소의 하위 집합에 대한 액세스를 허용하거나 제한하도록 클라우드 서버를 설정하고 구성하는 방법을 배웠습니다. 또한 더 이상 원하지 않는 규칙을 삭제하고 UFW 방화벽을 비활성화한 다음 활성화하여 이러한 변경 사항이 설명되었는지 확인했습니다. 마지막으로 UFW 방화벽을 기본 설정으로 다시 재설정하는 방법을 배웠습니다. UFW로 가능한 것에 대해 자세히 알아보려면 UFW 필수 사항: 일반 방화벽 규칙 및 명령에 대한 가이드를 확인하십시오.