사용 가능한 운영체제
- 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)을 선택하세요.