회사에서 많은 개발자, 운영자분들이 CentOS를 사용하면서 로컬방화벽에 대한 이해를 돕기 위해 내용을 정리 합니다.
CentOS 6를 주로 사용하다가 CentOS 7 으로 넘어오게 되면
iptables를 바로 찾아보기 어렵다는 점을 느낄 수 있습니다.
그 이유는 CentOS 7부터 방화벽으로 iptables를 사용하지 않고 firewalld를 사용하게 되어서 그렇습니다.
사실 정확하게 말하면 아래 표와 같습니다.
[OS 버전별 방화벽 정리]
OS | ~ CentOS 6 | CentOS 7 | CentOS 8 ~ |
방화벽 설정 도구 | iptables | Firewalld | Firewalld |
방화벽 기능 | iptables | iptables | nftables |
CentOS 6에서는 방화벽 기능은 iptables라는 유틸리티에 의해서 제공되고,
command도 iptables에 의해서 제공되었습니다.
CentOS 7에서는 방화벽 기능은 iptables에서 제공되지만,
설정 도구는 기본적으로 firewalld를 통해서 설정을 합니다.
Command로 보면 "firewall-cmd" 와 같습니다.
현재도 CentOS 8이 나와있지만, 이후 주로 CentOS8을 사용하게 된다면,
방화벽 설정도구는 firewalld를 쓰게 되겠지만,
실제 방화벽 기능은 nftables를 통해 제공될것이라는걸 알아두어야 합니다.
Iptables와 Firewalld의 주요 차이점은 다음과 같습니다.
- Firewalld는 방화벽 설정에 대한 자세한 내용은 /etc/sysconfig/iptables에 저장되어 있지 않고 이 파일이 존재하지도 않습니다. 대신 설정 상세 정보는 /usr/lib/firewalld 및 /etc/firewalld 디렉토리에 있는 다양한 파일에 저장됩니다.
- Iptables 방화벽 시스템에서는 설정 변경 사항이 있을 때 마다 "모든 규칙이 삭제되고 다시 적용"되는데 반해, firewalld는 "설정 차이만을 적용"합니다. 그 결과 firewalld는 기존 연결을 중단하지 않고 런타임 동안 설정을 변경할 수 있습니다.
그렇다면, CentOS7 부터 사용하게 될 Firewalld의 주요 명령어 사용법을 알아보겠습니다.
[Firewalld 명령어]
전체 존 목록을 상세하게 출력(List)
$ firewall-cmd --list-all-zones
새로운 존 추가/삭제(Create / Delete)
--new-zone=ZONENAME 으로 추가
--delete-zone=ZONENAME 으로 삭제
$ firewall-cmd --permanent --new-zone=webserver
$ firewall-cmd --permanent --delete-zone=webserver
포트 추가/삭제
--permanent는 영구적으로 적용 옵션
--add-port=<portid>[-<portid>]/<protocol> 옵션을 사용하여 포트 추가
--remove-port=<portid>[-<portid>]/<protocol> 옵션 사용
$ firewall-cmd --permanent --zone=public --add-port=4000-4100/tcp
$ firewall-cmd --permanent --zone=public --add-port=8080/tcp
$ firewall-cmd --permanent --zone=public --remove-port=8080/tcp
포트 추가/변경, IP 추가/변경는 --reload 옵션을 실행해야 반영됨.
재구동
서비스 재구동시 service iptables restart 대신 firewall-cmd 명령어를 사용합니다.
$ firewall-cmd --reload
참고자료 :
'IT Knowledge > 보안' 카테고리의 다른 글
Nginx 80 redirect 443(force redirect to HTTPS) (0) | 2022.01.07 |
---|---|
How to create self-signed wildcard certificate(OpenSSL) (0) | 2021.10.01 |
OpenSSL을 사용하여 self-signed 인증서 체인 만들기 (0) | 2021.09.25 |
Nginx client authentication with multiple certificates (2) | 2021.09.17 |
OpenSSL Self-signed 인증서 만들기(create) (4) | 2021.09.17 |
댓글