이전 글(아치리눅스 설치 과정 18 - 일반 추천사항 : pacman 병렬 다운로드 활성화)에 이어...

 

이번 글은 아치위키 General recommendations 문서 내용 중

7-3. Setting up a firewall 가이드를 따를 겁니다.
갑자기 7번으로 크게 건너뛰는 이유는... 그만큼 중요하기 때문이에요.

방화벽은 윈도우에도 내장된 기능이라, 리눅스에도 필수적으로 설치하는 것이 좋습니다.

 

※ 참고 문서 :

https://wiki.archlinux.org/title/General_recommendations#Setting_up_a_firewall

 

배경 설명

리눅스 커널에 내장된 Netfilter(위키백과/홈페이지)와 연계해서 방화벽을 구현하는 프로그램은 iptablesnftables가 있습니다.


리눅스 실사용하시는 분들은 iptables 많이 들어 보셨을 겁니다. 일반 사용자 입장에서 조작하기 복잡하죠?
nftables가 iptables를 개량해서 나온 것이라 nftables 또한 복잡성은 비슷합니다.
(이해하기 쉽게 iptables를 레거시라고 적기도 하더군요.)

 

굳이 차이점을 비교하자면 nftables가 상대적으로 구문이 단순하고, 규칙 누적시 속도 저하가 적고, 방화벽을 다수의 Zone(영역)으로 구성할 수 있어서 유선랜/무선랜/서비스들마다 각각 다른 Zone를 연결함으로써 방화벽 규칙를 각각 다르게 적용시키는 것이 가능하다고 해요.

 

iptables와 nftables를 쉽게 제어하려는 목적의 프로그램이 개발되는데요,
iptables에는 ufw, nftables에는 firewalld가 그것입니다.

 

iptables가 백엔드라면 ufw는 프론트엔드입니다. Uncomplicated FireWall. 해석하면 "복잡함을 없앤 방화벽"(GUI 환경에서는 gufw).

nftables가 백엔드라면 firewalld는 프론트엔드입니다. (CLI에서는 firewall-cmd, GUI에서는 firewall-config)
(사실, firewalld는 iptables와 nftables를 모두 지원합니다. 하지만 firewalld 사용법도 제법 복잡해서 iptables를 직접 다루는 것이 낫지 않나 싶습니다.)

 

iptables+UFW 조합은 우분투 리눅스에서 채용되고 있는 구성이고, nftables+Firewalld 조합은 레드햇/페도라 리눅스 CentOS 쪽에서 채용되고 있는 구성입니다.

 

개념/성능이야 nftables+firewalld가 좋겠습니다만... 관리할 자신 없으면 설정하기 편한 iptables+UFW가 낫다고 봅니다. iptables 규칙을 직접 만질 생각이라면 차라리 nftables+firewalld 조합을 선택하는 것이 나을 것입니다.

 

아래 링크들은 firewalld에 대한 문서들인데, 적응할 수 있을 것 같으면 nftables 도전해 보시고요...

 

https://wiki.archlinux.org/title/Nftables#Simple_stateful_firewall

 

https://firewalld.org/

https://man.archlinux.org/man/firewall-config.1.en

https://tmjb.tistory.com/37

https://server-talk.tistory.com/333

https://blog.naver.com/jeffms1/221487465135

 

https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/7/html/security_guide/sec-installing_firewall-config

https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/9/html/configuring_firewalls_and_packet_filters/using-and-configuring-firewalld_firewall-packet-filters#when-to-use-firewalld-nftables-or-iptables_getting-started-with-firewalld

https://landoflinux.com/linux_firewall_config_tool.html

https://dwaves.de/2018/02/05/about-firewalld-applet-gui-terminal-centos7-open-port-in-firewall/

 

나의 선택 : iptables + ufw 설치

저는 일반사용자라 UFW로 포트 여닫는 수준만 돼도 감지덕지입니다.
고급 기능보다는 쉬운 설정이 더 좋아서 iptables+UFW 조합으로 갈게요.

(gufw는 GUI 설치 후에 별도로 설치하는 것으로 하겠습니다.)

 

※ 참고 문서 :

https://wiki.archlinux.org/title/Simple_stateful_firewall

https://wiki.archlinux.org/title/iptables

https://wiki.archlinux.org/title/Uncomplicated_Firewall

 

아치리눅스 iptables 문서를 보면 base 패키지의 dependency(의존성) 패키지로 iptables가 설치되었을 것이라고 하더군요. 앞에서 base 패키지 설치했었죠? 확인을 위해 base 패키지 설명 링크를 봤습니다.

 

https://archlinux.org/packages/core/any/base/

https://archlinux.org/packages/core/x86_64/iproute2/

 

iproute2 패키지에 Dependencies로 iptables가 붙어 있더군요.

 

▼ 아치리눅스 패키지 설치 확인 명령어 pacman -Qs 로 iptables 존재를 확인하고

pacman -S ufw

아치리눅스에 ufw 설치했습니다.

 

iptables + ufw 활성화

https://wiki.archlinux.org/title/Uncomplicated_Firewall#Installation

 

Start and enable ufw.service to make it available at boot. Note that this will not work if iptables.service is also enabled (and same for its ipv6 counterpart).

 

ufw.service를 enable 하고 start 하되, 동시에 iptables.service가 enable 되어 있으면 ufw도 작동하지 않을 것이라고 하니... 확인해 봤습니다.

 

▲ systemctl status iptables.service

disabled. 좋습니다.

 

혹시 몰라서...

systemctl stop iptables.service

systemctl disable iptables.service

 

systemctl enable ufw.service

systemctl start ufw.service

 

UFW 기본 규칙 정의, 추가 + UFW 적용

제가 실제로 입력한 것을 보여드리면서 설명할게요.

 

ufw status

(현재 어떻게 돌아가고 있는지 살펴봤습니다. inactive 상태.)

ufw default deny

(밖에서 들어오는 트래픽을 차단하는 것을 기본값으로 설정했습니다.)

ufw allow 22/tcp comment 'ssh'

(SSH 연결용으로 활용되는 22번 포트를 tcp만 열었습니다. 선택사항. 코멘트도 선택사항.)

ufw enable

(UFW를 적용했습니다.)

ufw status verbose

(상태를 망라해 봤습니다. active 되었고, 22번 포트로 들어오는(IN) 구멍이 열렸음을 확인했습니다.)

 

이런 식으로 진행하면 됩니다.

끝.

 

심화 과정이 필요하면 아래 문서들을 참고하세요.

 

※ 참고 문서 :

[우분투 18.04 데스크톱] UFW 방화벽을 서비스 기반으로 설정해볼까?

https://wiki.archlinux.org/title/Uncomplicated_Firewall

 

특히 아치위키 UFW 문서는 내용이 좋습니다.
VPN 사용할 때 UFW 포워딩 정책을 어떻게 구성하면 되는지, 앱 기반으로 UFW 등록하는 팁, 로그 안 남기는 방법, docker와 UFW 등등 참고할 것들이 많더군요.

 

다음글 : 아치리눅스 설치 과정 20 - 일반 추천사항 : GUI 설치 (GNOME)

반응형