목차
본문으로 바로가기

[방화벽] iptables, firewalld 설정

category OS/Linux 2025. 5. 31. 17:43

사용 가능한 운영체제

  • Oracle Linux 6.x, 7.x, 8.x, 9.x
  • Red Hat Enterprise Linux (RHEL) 6.x, 7.x, 8.x, 9.x
  • CentOS 6.x, 7.x
  • Rocky Linux 8.x, 9.x
  • AlmaLinux 8.x, 9.x

단, RHEL 8/9, Oracle Linux 8/9 등 최신 버전에서는 firewalld가 기본 방화벽 도구로 사용되며, iptables는 비권장(Deprecated) 기능입니다.


운영체제 버전 확인

uname -r

방화벽 서비스 확인

OS 버전 명령어  
OL 6 `ps -ef grep iptables`
OL 7 `ps -ef grep firewalld`

Oracle Linux 6 (iptables)

포트 오픈 확인

iptables -nL

포트 추가

iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

특정 IP/포트 허용 & 삭제

# 허용
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 8080 -j ACCEPT

# 삭제
iptables -D INPUT -p tcp -s 192.168.1.100 --dport 8080 -j ACCEPT

저장 및 재시작

service iptables save
service iptables restart

포트 포워딩 설정

# IP 포워딩 활성화
/sbin/sysctl -w net.ipv4.ip_forward=1

# DNAT 예제
iptables -t nat -A PREROUTING -p tcp --dport 5500 -j DNAT --to-destination 10.0.30.2:5500

# SNAT 예제
iptables -t nat -A POSTROUTING -p tcp -d 10.0.30.2 --dport 5500 -j SNAT --to-source 10.0.13.2

# 저장 및 재시작
service iptables save
service iptables restart

Oracle Linux 7 (firewalld)

서비스 재시작 및 설정 확인

systemctl restart firewalld
firewall-cmd --list-all

포트 / 서비스 추가

# 서비스 추가
firewall-cmd --permanent --zone=public --add-service=http

# 포트 추가
firewall-cmd --permanent --zone=public --add-port=8080/tcp

포트 / 서비스 삭제

firewall-cmd --permanent --zone=public --remove-service=http
firewall-cmd --permanent --zone=public --remove-port=8080/tcp

포트 포워딩 설정

firewall-cmd --add-masquerade --permanent
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --zone=public --add-forward-port=port=1521:proto=tcp:toaddr=10.0.1.250:toport=1521 --permanent
firewall-cmd --reload

IP 제어 설정

허용 IP / 대역 추가 및 삭제

# 단일 IP
firewall-cmd --permanent --add-source=192.168.0.100
firewall-cmd --permanent --remove-source=192.168.0.100

# IP 대역
firewall-cmd --permanent --add-source=192.168.0.0/24
firewall-cmd --permanent --remove-source=192.168.0.0/24

차단 IP (rich rule)

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.100" drop'
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.0.100" drop'

특정 IP에 특정 포트만 허용

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.100" port port="8000" protocol="tcp" accept'
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.0.100" port port="8000" protocol="tcp" accept'

외부에서 8080 포트만 열기 (firewalld)

firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload

특정 IP(192.168.0.10)에만 MySQL 포트(3306) 허용

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.10" port port="3306" protocol="tcp" accept'
firewall-cmd --reload

마무리 및 보안 팁

  • 최소 허용 정책을 지키세요. 불필요한 포트는 반드시 차단해야 합니다.
  • --permanent 없이 설정하면 리부팅 시 사라집니다.
  • firewalld에서는 변경 후 항상 firewall-cmd --reload 필수입니다.
  • 사전에 OS 버전을 반드시 확인하고 적절한 방식(iptable or firewalld)을 선택하세요.