A correctly functioning firewall is the most crucial part of the complete Linux system security. By default, Debian and Ubuntu distribution comes with a firewall configuration tool called UFW (Uncomplicated Firewall), is a most popular and easy-to-use command line tool for configuring and managing a firewall on Ubuntu and Debian distributions.
이 기사에서는 UFW 방화벽을 Ubuntu 및 Debian 배포판에 설치하고 설정하는 방법에 대해 설명하겠습니다.
전제 조건
이 기사를 시작하기 전에 sudo 사용자로 Ubuntu 또는 Debian 서버에 로그인했는지 또는 루트 계정으로 로그인했는지 확인하십시오. sudo 사용자가 없는 경우 다음 지침에 따라 루트 사용자로 만들 수 있습니다.
# adduser username # usermod -aG sudo username # su - username $ sudo whoami
Ubuntu 및 Debian에 UFW 방화벽 설치
UFW (간편한 방화벽)은 Ubuntu 및 Debian에 기본적으로 설치되어 있어야 합니다. 그렇지 않은 경우 다음 명령을 사용하여 APT 패키지 관리자를 통해 설치하십시오.
$ sudo apt install ufw
UFW 방화벽 확인
설치가 완료되면 다음을 입력하여 UFW 상태를 확인할 수 있습니다.
$ sudo ufw status verbose
첫 번째 설치시 UFW 방화벽은 기본적으로 비활성화되어 있으며 출력은 다음과 유사합니다.
Status: inactive
UFW 방화벽 활성화
다음 명령을 사용하여 UFW 방화벽을 활성화하거나 활성화할 수 있으며, 이 명령은 방화벽을 로드하고 부팅시 시작되도록 활성화합니다.
$ sudo ufw enable
UFW 방화벽 비활성화하려면 다음 명령을 사용하여 방화벽을 언로드하고 부팅시 시작되지 않도록 비활성화합니다.
$ sudo ufw disable
UFW 기본 정책
기본적으로, UFW 방화벽은 모든 들어오는 연결을 거부하고, 서버로 的所有 外bound 연결을 허용한다. 这意味着, 除非 您 特定 port를 열고 있어야 하는 否则 没有人 可以 访问 您 的 服务器, 同时 运行 服务 或者 应用 您 的 服务器 可以 能够 访问 外部 网络。
The default UFW firewall policies are placed in the /etc/default/ufw
file and can be altered using the following command.
$ sudo ufw default deny incoming $ sudo ufw default allow outgoing
UFW Application Profiles
When installing a software package using APT package manager, it will include an application profile in /etc/ufw/applications.d
directory that defines the service and hold UFW settings.
You can list all available application profiles on your server using the following command.
$ sudo ufw app list
Depending upon software package installations on your system the output will look similar to the following:
Available applications: APACHE APACHE Full APACHE SECURE CUPS OpenSSH Postfix Postfix SMTPS Postfix Submission
If you want to get more information about a particular profile and defined rules you can use the following command.
$ sudo ufw app info 'Apache'
Profile: Apache Title: Web Server Description: Apache V2 is the next generation f the omnipresent Apache web server. Ports: 80/tcp
Enable IPv6 with UFW
If your server is configured with IPv6, make sure that your UFW is configured with IPv6 and IPv4 support. To verify it, open the UFW configuration file using your favorite editor.
$ sudo vi /etc/default/ufw
Then make sure “IPV6” is set to "yes"
in the configuration file as shown.
IPV6=yes
Save and quit. Then restart your firewall with the following commands:
$ sudo ufw disable $ sudo ufw enable
Allow SSH Connections on UFW
지금까지 UFW 방화벽을 활성화한 경우 모든 들어오는 연결이 차단되며, 원격 위치에서 서버에 SSH로 연결되고 있으면 다시 연결할 수 없게 됩니다.
이를 방지하기 위해 다음 명령을 사용하여 서버에 SSH 연결을 활성화합니다.
$ sudo ufw allow ssh
사용자 정의 SSH 포트를 사용하는 경우 (예: 포트 2222) UFW 방화벽에서 해당 포트를 열어야 합니다.
$ sudo ufw allow 2222/tcp
모든 SSH 연결을 차단하려면 다음 명령을 입력하세요.
$ sudo ufw deny ssh/tcp $ sudo ufw deny 2222/tcp [If using custom SSH port]
UFW에서 특정 포트 활성화
특정 서비스로의 연결을 허용하기 위해 방화벽에서 특정 포트를 열 수도 있습니다. 예를 들어, 기본적으로 포트 80 (HTTP)와 443 (HTTPS)에서 수신 대기하는 웹 서버를 설정하려는 경우입니다.
아래는 Apache 서비스에 대한 수신 연결을 허용하는 몇 가지 예시입니다.
UFW에서 80번 포트(HTTP) 열기
$ sudo ufw allow http [By service name] $ sudo ufw allow 80/tcp [By port number] $ sudo ufw allow 'Apache' [By application profile]
UFW에서 443번 포트(HTTPS) 열기
$ sudo ufw allow https $ sudo ufw allow 443/tcp $ sudo ufw allow 'Apache Secure'
UFW에서 포트 범위 허용
일부 응용 프로그램을 일련의 포트(5000-5003)에서 실행하려는 경우, 다음 명령을 사용하여 이러한 포트를 모두 추가할 수 있습니다.
sudo ufw allow 5000:5003/tcp sudo ufw allow 5000:5003/udp
특정 IP 주소 허용
특정 IP 주소 192.168.56.1에서 모든 포트로의 연결을 허용하려면 IP 주소 앞에 from을 지정해야 합니다.
$ sudo ufw allow from 192.168.56.1
특정 IP 주소에서 특정 포트로의 연결 허용
특정 포트(22 포트 예시)로부터 홈 머신의 IP 주소인 192.168.56.1으로 연결을 허용하려면, IP 주소 뒤에 임의의 포트와 포트 번호를 추가해야 합니다.
$ sudo ufw allow from 192.168.56.1 to any port 22
네트워크 서브넷을 특정 포트에 허용
192.168.1.1에서 192.168.1.254까지의 특정 IP 주소에 22 포트(SSH) 연결을 허용하려면 다음 명령을 실행하세요.
$ sudo ufw allow from 192.168.1.0/24 to any port 22
특정 네트워크 인터페이스에 연결 허용
특정 네트워크 인터페이스 eth2에 22 포트(SSH) 연결을 허용하려면 다음 명령을 실행하세요.
$ sudo ufw allow in on eth2 to any port 22
UFW에서 연결 거부
기본적으로 모든 들어오는 연결은 차단되며, UFW에서 연결을 명시적으로 열지 않는 한 예외는 없습니다. 예를 들어, 포트 80과 443를 열었으며 웹 서버가 알 수 없는 네트워크 11.12.13.0/24로부터 공격을 받고 있다고 가정합니다.
이 특정 11.12.13.0/24 네트워크 범위에서 모든 연결을 차단하려면 다음 명령을 사용할 수 있습니다.
$ sudo ufw deny from 11.12.13.0/24
포트 80와 443에서 연결을 차단하려면 다음 명령을 사용할 수 있습니다.
$ sudo ufw deny from 11.12.13.0/24 to any port 80 $ sudo ufw deny from 11.12.13.0/24 to any port 443
UFW 규칙 삭제
UFW 규칙을 삭제하는 방법은 규칙 번호와 실제 규칙 두 가지가 있습니다.
규칙 번호를 사용하여 UFW 규칙을 삭제하려면 먼저 다음 명령을 사용하여 규칙을 번호로 나열해야 합니다.
$ sudo ufw status numbered
샘플 출력
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere
룰 번호 1을(를) 삭제하려면 다음 명령을 사용하세요.
$ sudo ufw delete 1
두 번째 방법은 실제 룰을 사용하여 룰을 삭제하는 것입니다. 예를 들어, 다음과 같이 프로토콜과 포트 번호를 지정하여 룰을 삭제할 수 있습니다.
$ sudo ufw delete allow 22/tcp
UFW 규칙 시뮬레이션
--dry-run
플래그를 사용하여 시스템 방화벽에 실제로 변경 사항을 적용하지 않고 UFW 명령을 실행할 수 있습니다. 이렇게 하면 변경 사항이 발생했을 것으로 예상되는 내용이 표시됩니다.
$ sudo ufw --dry-run enable
UFW 방화벽 초기화
어떤 이유에서든 방화벽 규칙을 모두 삭제하거나 초기화하려면 다음 명령을 입력하십시오. 이렇게 하면 모든 변경 사항이 취소되고 처음부터 다시 시작됩니다.
$ sudo ufw reset $ sudo ufw status
UFW 고급 기능
UFW 방화벽은 iptables가 수행하는 모든 작업을 처리할 수 있습니다. 이는 단순한 iptables-restore 텍스트 파일인 서로 다른 규칙 파일 세트를 사용하여 수행할 수 있습니다.
UFW 방화벽의 조정 또는 추가적인 iptables 명령을 ufw 명령을 통해 허용하지 않으며, 다음 텍스트 파일을 수정하는 것만으로 가능합니다.
- /etc/default/ufw: 미리 정의된 규칙이 있는 메인 구성 파일입니다.
- /etc/ufw/before[6].rules: 이 파일에는 ufw 명령을 통해 추가하기 전에 규칙이 계산됩니다.
- /etc/ufw/after[6].rules: 이 파일에는 ufw 명령을 통해 추가한 후에 규칙이 계산됩니다.
- /etc/ufw/sysctl.conf: 이 파일은 커널 네트워크를 조정하는 데 사용됩니다.
- /etc/ufw/ufw.conf: 이 파일은 부팅 시 ufw를 활성화합니다.
그게 다야! UFW는 iptables에 대한 훌륭한 프론트 엔드로, 단일 ufw 명령으로 복잡한 규칙을 정의하기 위한 사용자 친화적 인터페이스를 제공합니다.
이 ufw 문서에 대한 질문이나 생각이 있다면, 아래의 코멘트 양식을 사용하여 저희에게 연락해주세요.
Source:
https://www.tecmint.com/setup-ufw-firewall-on-ubuntu-and-debian/