안녕하세요. 하얀 도화지 남편입니다.
오늘은 리눅스 방화벽 설정과 관련하여 알아보려합니다.
리눅스 방화벽 설정에 사용되는 iptables와 firewalld를 중접적으로 설명하였습니다.
1. 리눅스 방화벽 개요
리눅스에서 보안을 강화하는 핵심 요소 중 하나는 방화벽 설정입니다. 방화벽은 외부 네트워크로부터의 불법적인 접근을 차단하고, 내부 네트워크의 보안을 유지하는 역할을 합니다. 리눅스에서는 주로 iptables
와 firewalld
가 방화벽 설정에 사용됩니다.
2. iptables와 firewalld의 차이점
리눅스 방화벽 관리에는 iptables
와 firewalld
두 가지 방법이 있습니다.
- iptables: 리눅스 커널의 네트워크 필터링 시스템을 직접 제어하는 전통적인 방식입니다.
- firewalld: 동적 방화벽 관리 도구로,
iptables
를 대체하며 서비스별 규칙을 쉽게 관리할 수 있습니다.
iptables vs firewalld 비교
항목 | iptables | firewalld |
---|---|---|
설정 방식 | 명령어 기반 | 서비스 기반 |
동적 설정 | 불가능 | 가능 |
사용 편의성 | 복잡함 | 상대적으로 쉬움 |
권장 환경 | 레거시 시스템 | 최신 배포판 |
3. iptables 방화벽 설정
iptables 설치
일부 리눅스 배포판에서는 기본적으로 iptables
가 설치되어 있지만, 없는 경우 다음 명령어로 설치할 수 있습니다.
sudo apt install iptables # Ubuntu, Debian
sudo yum install iptables # CentOS, RHEL
iptables 기본 규칙
iptables는 기본적으로 다음과 같은 체인으로 구성됩니다.
- INPUT: 들어오는 패킷을 제어
- OUTPUT: 나가는 패킷을 제어
- FORWARD: 경유하는 패킷을 제어
iptables 기본 정책 설정 예제
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
위 설정은 들어오는 트래픽과 포워딩되는 트래픽을 기본적으로 차단하고, 나가는 트래픽을 허용합니다.
특정 포트 허용
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # SSH 허용
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP 허용
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS 허용
iptables 설정 저장 및 적용
설정을 영구적으로 유지하려면 다음 명령어를 실행합니다.
sudo iptables-save > /etc/iptables/rules.v4
4. firewalld 방화벽 설정
firewalld 설치 및 활성화
sudo yum install firewalld # CentOS, RHEL
sudo systemctl start firewalld
sudo systemctl enable firewalld
firewalld 기본 명령어
sudo firewall-cmd --state # 방화벽 상태 확인
sudo firewall-cmd --list-all # 현재 설정 확인
특정 포트 허용
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload # 설정 적용
서비스 기반 허용 설정
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
firewalld 비활성화 (주의!)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
5. 방화벽 로그 설정 및 확인
방화벽의 동작을 확인하려면 로그를 활성화해야 합니다.
iptables 로그 활성화
sudo iptables -A INPUT -j LOG --log-prefix "[iptables] " --log-level 4
로그는 /var/log/syslog
또는 /var/log/messages
에서 확인할 수 있습니다.
firewalld 로그 활성화
sudo firewall-cmd --set-log-denied=all
로그는 /var/log/firewalld
에서 확인할 수 있습니다.
6. 방화벽 설정 초기화
iptables 초기화
sudo iptables -F # 모든 규칙 삭제
sudo iptables -X # 사용자 정의 체인 삭제
firewalld 초기화
sudo firewall-cmd --permanent --flush-all-rules
sudo firewall-cmd --reload
리눅스 방화벽 설정은 보안을 강화하는 필수 요소입니다. iptables
는 강력한 커스터마이징이 가능하지만 복잡하며, firewalld
는 보다 간편한 관리를 제공합니다. 서버 환경에 맞는 방화벽을 선택하여 설정하고, 지속적인 모니터링을 통해 보안 상태를 유지하는 것이 중요합니다.
감사합니다.