이 글에서 사용된 명령어와 예시는 CentOS8을 기준으로 작성된 것입니다.
급하게 명령어가 필요하신 분들은 본문 하단에 명령어 관련 내용 위치해 있으니 참고해주세요.
방화벽 (Firewall)
방화벽이란 그 단어에서 주는 느낌대로 네트워크 환경의 내부와 외부 경계에 위치하며, 외부의 네트워크의 침입으로부터 내부 네트워크를 보호하기 위해 사용된다. 미리 정의된 보안 룰에 따라 들어오고 나가는 네트워크 트래픽을 모니터링, 제어하는 네트워크 보안시스템이다.
- iptables
▶ CentOS6 까지 사용되던 방화벽으로 설정과 기능이 iptables에 의해서 제공
▶ 설정 변경시에 서비스 중지 및 설정 변경 (모든 룰이 삭제되서 다시 적용)
- firewalld
▶ 동적인 방화벽으로 언제든지 설정 변경, 실행 (방화벽 재로딩이 불필요하여 기존 네트워크 연결 중단 발생 x)
▶ 방화벽 설정 관련 내용은 /etc/sysconfig/iptables에 저장 x, 파일이 존재하지도 않음
▶ 대신, /usr/lib/firewalld 및 /etc/firewalld 디렉토리에 있는 다양한 파일에 저장
▶ 가상화, 클라우드 환경에서의 필터링 정책 동적 추가 기능
▶ DBUS API(Application간의 통신을 지원하는)를 통한 정보 공유를 통해 정책이 충돌하던 문제 해결
CentOS8 버전부터는 firewalld를 사용하므로 이 글은 firewalld에 대한 내용을 서술하고자 한다.
[사전 정의된 영역]
: firewalld는 사전 정의된 영역이 존재하며, 그 영역을 지정도 가능하다. 기본적으로는 모든 영역의 시스템에서 나가는 모든 트래픽과 들어오는 일부 트래픽을 허용한다.
[사전 정의된 영역 설명]
Zone Name | 설명 |
trusted | 모든 네트워크 연결이 허용하고 네트워크의 모든 컴퓨터를 신뢰 |
home | 네트워크의 다른 컴퓨터는 일반적으로 신뢰하고 선택한 수신 연결만 허용 |
internal | 시스템이 게이트웨이 또는 라우터 역할을 하는 경우 내부 네트워크에서 사용. 네트워크의 다른 시스템은 일반적으로 신뢰하고 선택한 수신 연결만 허용 |
work | 네트워크의 다른 컴퓨터는 일반적으로 신뢰하고 선택한 수신 연결만 허용 |
public | 신뢰할 수 없는 공용 영역에서 사용. 네트워크의 다른 컴퓨터를 신뢰하지는 않지만 선택한 수신 연결을 허용 |
external | 시스템이 게이트웨이 또는 라우터 역할을 할 때 NAT 위장 기능을 사용하도록 설정된 외부 네트워크에서 사용하고 선택한 수신 연결만 허용 |
dmz | 네트워크의 나머지 부분에 대한 액세스가 제한된 비무장 지대에 위치한 컴퓨터에 사용하고 선택한 수신 연결만 허용 |
block | 들어오는 모든 연결은 IPv4에 대해 immp-호스트 금지 메시지와 IPv6n에 대해 immp6-adm 금지 메시지로 거부되고 나가는 연결만 허용 |
drop | 들어오는 모든 트래픽을 삭제하고 나가는 연결만 허용 |
[사전 정의된 서비스]
Zone Name | 설명 |
ssh | (22/tcp) 로컬 ssh 서버에 대한 22/tcp 트래픽 |
dhcpv6-client | (546/udp) 로컬 DHCPv6 클라이언트 fe80::/64 |
ipp-client | (641/udp) 로컬 IPP 인쇄 |
samba-client | (137/udp, 138/udp) 로컬 Windows 파일 및 인쇄 공유 클라이언트 |
mdns | (5353/udp) mDNS(Multi-cast DNS) 로컬 링크 이름 확인 |
firewall-cmd 명령어 예제
* firewall-cmd 명령으로 --permanent 옵션을 추가하면 영구적으로 추가
[firewalld 설치]
◈ firewalld 설치
# yum install firewalld
◈ firewalld 실행
# systemctl start firewalld
◈ firewalld 부팅시 자동 실행
# systemctl enable firewalld
[zone 관련 명령어]
◈ 사전 정의된 firewall zone 정보 확인
# firewall-cmd --get-zones
◈ 기본 설정 zone 확인
# firewall-cmd --get-default-zone
◈ 기본 zone 변경
# firewall-cmd --set-default-zone=external
◈ 전체 zone 목록 상세 확인
# firewall-cmd --list-all-zones
◈ 네트워크 인터페이스에 적용된 zone list 확인
# firewall-cmd --get-active-zone
◈ 신규 zone 추가
# firewall-cmd --permanent --new-zone=test
◈ 기존 zone 삭제
# firewall-cmd --permanent --delete-zone=test
◈ default zone 정보 확인 및 변경하는 경우
# firewall-cmd --get-default
# firewall-cmd --set-default-zone=public
[서비스 관리 명령어]
◈ 사전 등록된 서비스 목록 확인
# firewall-cmd --get-services
◈ 특정 zone에 허용된 서비스 리스트 확인
# firewall-cmd --list-service --zone=public
◈ 여러가지 서비스 등록/삭제하는 방법
# firewall-cmd --permanent --add-service=http --add-service=https // <WEB 추가>
# firewall-cmd --permanent --add-service=ftp // <FTP 추가>
# firewall-cmd --permanet --add-service=mysqld // <Mysql/MariaDB 추가>
# firewall-cmd --permanent --zone=public --remove-service=telnet // <telnet 삭제>
(+)
# firewall-cmd --reload
[IP 관리 명령어]
◈ 허용 IP 리스트 확인
# firewall-cmd --list-sources --zone=public
◈ 허용 IP 추가 방법
# firewall-cmd --permanent --zone=public --add-source=192.168.10.0/24
# firewall-cmd --reload
◈ 허용 IP 삭제 방법
# firewall-cmd --permament --zone=public --remove-source=192.168.10.0/24
# firewall-cmd --reload
[Port 관리 명령어]
◈ 허용 port 리스트 확인
# firewall-cmd --list-port --zone=public
◈ 포트 등록하는 방법
# firewall-cmd --permanent --add-port=1521/tcp // port 추가
# firewall-cmd --reload # firewall-cmd --permanent --add-port=8888-9999/tcp // port 다중 추가
# firewall-cmd --reload # firewall-cmd --permanent --remove-port=1521/tcp // port 삭제
(+)
# firewall-cmd --reload
'운영체제 > Linux' 카테고리의 다른 글
[Linux_개념] rpm, yum, dnf 의미와 차이 (0) | 2023.03.10 |
---|---|
[Linux_개념] 마운트(Mount) (0) | 2023.02.24 |
[Linux_개념] 파일 시스템(File System) (0) | 2023.02.22 |
[Linux_개념] 쉘 변수(지역변수), 환경 변수(전역변수) (0) | 2023.02.21 |
[Linux_개념] 쉘 (Shell) (0) | 2023.02.21 |
댓글