메뉴 건너뛰기

서버/호스팅

휘즈 2018.06.25 12:49
조회 수 : 1886

RHEL 7 부터 방화벽을 관리하는 데몬이 firewalld 로 변경되었습니다.

방화벽 설정은 복잡한 iptables 명령어대신 firewall-cmd (콘솔), firewall-config(X-Windows) 명령어를 사용하는 것을 권장합니다.

firewalld는 iptables 를 대체하는 것이 아니라 iptables를 쓰기 쉽게 하는 wrapper입니다.

복잡한 규칙을 사용할 경우 --direct 옵션으로 iptables 내부에 직접 접근할 수 있습니다.

1. firewalld 실행 확인

firewalld 데몬상태를 보거나

systemctl status firewalld

firewall 상태를 보면 알 수 있습니다.

firewall-cmd --state

2. 설치 및 부팅시 실행

yum install firewalld

systemctl start firewalld

systemctl enable firewalld

3. 설정파일 변경시 재시작

firewall-cmd --reload

포트 추가/변경, IP 추가/변경는 --reload 옵션을 실행해야 반영됩니다.

4. 설정

firewalld 설정은 xml파일로 합니다.

특별한 경우가 아니면 대부분 'firewall-cmd' 명령어로 설정을 변경할 수 있습니다.

firewalld 설정 파일은 2곳에 위치하고 있습니다.

  • /usr/lib/firewalld/ : default 설정파일들이 있습니다. 이곳의 파일은 수정하지 마십시오. 패키지 업데이트시 덮어쓰기 때문에 변경한 설정이 초기화됩니다.
  • /etc/firewalld/ : 시스템설정 파일을 저장합니다. default 설정을 overwrite하기 때문에 이곳에 있는 파일이 실제 적용됩니다.

firewall-cmd명령어로 설정을 변경시 --permanent 옵션을 추가해주어야 시스템 리부팅 또는 firewall reload시 계속 적용됩니다.

permanent set :
sudo firewall-cmd --zone=public --add-service=http --permanent

runtime set :
sudo firewall-cmd --zone=public --add-service=http

5. firewall zones

존은 네트워크의 신뢰 레벨에 따라 사전에 룰셋을 만들어 놓은 것입니다.
보통의 경우(웹서버 용도) public을 default로 사용합니다.

존은 다른 네트워크 인터페이스에 적용할 수 있습니다.
예를 들어 내부 네트워크와 인터넷을 분리할 경우 internal zone에서 DHCP만 허용하고, external zone에서 HTTP와 SSH만 허용할 수 있습니다.

사전 정의된 존 목록 출력

firewall-cmd --get-zones

전체 존 목록을 상세하게 출력

firewall-cmd --list-all-zones

default 로 설정된 존 출력

firewall-cmd --get-default-zone

활성화된 존 출력(네트워크 인터페이스에서 사용하는)

firewall-cmd --get-active-zone

default zone 변경

firewall-cmd --set-default-zone=internal

6. Service 작업

제공되는 기본 설정 파일은 /usr/liv/firewalld/services 에 위치하고 있습니다.
사용자가 생성한 설정파일은 /etc.firewalld/services 에 저장합니다.

사전에 정의된(default) 서비스 목록은 아래 명령어로 알 수 있습니다.

firewall-cmd --get-services

예를들어 HTTP 서비스를 활성화(--add-service), 비활성화(--remove-service)는 아래와 같이 합니다.

firewall-cmd --zone=public --add-service=http --permanent

firewall-cmd --zone=public --remove-service=http --permanent

임의의 포트/프로토콜 허용(--add-port), 제거(--remove-port)

firewall-cmd --zone=public --add-port=12345/tcp --permanent

firewall-cmd --zone=public --remove-port=12345/tcp --permanent

7. Rich Rules

보다 복잡한 규칙 설정이 필요할 때, 
firewall-cmd에서 옵션을 제공하지 않을 경우 rich rule 언어를 사용하여 직접 방화벽 규칙을 설정할 수 있습니다.
(--add-rich-rule, --list-rich-rules, --remove-rich-rule)

IP 192.168.0.10의 ipv4 모든 트래픽 허용

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.0.10 accept'

IP 192.168.0.10의 ipv4 모든 트래픽 차단

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.0.10 drop'

8. Direct

--direct 옵션을 사용하여 iptables에 직접 접근할 수 있습니다. 
Direct rules는 Rich rules사용이 불가능한 경우 등 마지막에 사용하는 수단입니다.

 

 

 

 

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )