1. 서론
디지털 시대에 네트워크 보안은 필수적입니다. 특히 웹 서버를 운영하는 경우, 외부의 공격으로부터 보호할 방화벽 설정이 중요합니다. 본 글에서는 Ubuntu 서버에서 iptables
를 이용한 네트워크 설정과 고급 방화벽 설정 방법에 대해 설명하겠습니다. 이 글의 목표는 독자가 실무에서 적용할 수 있는 집약적이고 종합적인 가이드를 제공하는 것입니다.
2. 네트워크 기본 설정
2.1. IP 주소 및 서브넷 설정
서버의 IP 주소를 설정하는 것이 첫 단계입니다. Ubuntu에서는 netplan
을 통해 네트워크 설정을 관리합니다. 일반적으로 설치 시 DHCP를 사용하지만, 고정 IP로 변경할 필요가 있습니다.
sudo nano /etc/netplan/01-netcfg.yaml
이 파일에서 다음과 같이 설정합니다:
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.10/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
저장 후, 다음 명령어로 변경 사항을 적용합니다:
sudo netplan apply
2.2. 방화벽 기본 설정
네트워크가 설정되면 기본 방화벽을 설정합니다. Ubuntu는 기본적으로 ufw
(Uncomplicated Firewall)를 제공합니다. 다음과 같이 기본 규칙을 설정할 수 있습니다:
sudo ufw allow OpenSSH
sudo ufw enable
이렇게 함으로써 SSH 접속을 허용하고 방화벽을 활성화합니다.
3. iptables 소개
iptables는 Linux 기반의 방화벽이다. 패킷 필터링, NAT(네트워크 주소 변환) 및 포트포워딩과 같은 기능을 제공하며, 고급 보안 설정을 구현할 수 있습니다. iptables는 기본적으로 4개의 체인을 가지고 있습니다:
- INPUT: 시스템으로 들어오는 패킷에 대한 규칙
- OUTPUT: 시스템에서 나가는 패킷에 대한 규칙
- FORWARD: 시스템을 통해 다른 네트워크로 전달되는 패킷에 대한 규칙
- PREROUTING: 패킷이 라우팅되는 경로를 변경하기 위해 사용
- POSTROUTING: 패킷이 전송된 후 규칙을 적용
4. iptables 설치 및 기본 사용법
4.1. iptables 설치
Ubuntu에 기본적으로 설치되어 있지만, 설치 상태를 확인하거나 설치할 수 있습니다:
sudo apt update
sudo apt install iptables
4.2. 기본 명령어
iptables의 기본적인 사용법을 소개합니다:
sudo iptables -L # 규칙 리스트 확인
sudo iptables -F # 모든 규칙 제거
sudo iptables -S # 규칙 확인
5. 고급 방화벽 설정
이제 고급 방화벽 설정을 위한 몇 가지 예제를 다룰 것입니다. 다양한 유형의 트래픽을 필터링하고, 특정 조건에 맞는 패킷을 차단하거나 허용할 수 있습니다.
5.1. 특정 IP 주소 차단
특정 IP 주소로부터의 접근을 차단할 수 있습니다:
sudo iptables -A INPUT -s 203.0.113.0 -j DROP
이 명령어는 203.0.113.0 IP 주소에서 오는 모든 패킷을 차단합니다.
5.2. 특정 포트 차단
특정 포트로의 접근을 차단할 때는 다음과 같이 설정합니다:
sudo iptables -A INPUT -p tcp --dport 23 -j DROP
이 명령어는 Telnet 포트(23번)를 차단합니다.
5.3. 특정 IP 주소에 대해서만 허용
특정 IP 주소에 대해서만 포트를 허용하려면, 다음과 같이 설정합니다:
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 80 -j ACCEPT
이 명령어는 192.168.1.100 IP 주소에서 오는 HTTP 요청을 허용합니다.
5.4. 포트 포워딩 설정
서버가 포트를 포워딩할 수 있도록 설정할 수도 있습니다. 예를 들어, 8080 포트로 들어오는 요청을 80 포트로 전달할 수 있습니다. 다음과 같이 설정합니다:
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
6. iptables 관리하기
6.1. iptables 규칙 저장
설정한 규칙을 영구적으로 저장하려면, iptables-persistent
패키지를 사용할 수 있습니다:
sudo apt install iptables-persistent
설치하는 동안 저장하길 원하는 규칙을 선택하게 됩니다.
6.2. 규칙 복원
다시 시작할 때 자동으로 iptables 규칙을 복원해야 할 경우, 저장된 규칙 파일을 이용할 수 있습니다. 다음 명령어로 복원합니다:
sudo iptables-restore < /etc/iptables/rules.v4
7. 모니터링 및 로그 설정
방화벽 로그를 통해 어떤 패킷이 차단되었는지 확인할 수 있습니다. iptables 로그를 설정하려면 다음과 같이 할 수 있습니다:
sudo iptables -A INPUT -j LOG --log-prefix "iptables: " --log-level 4
로그는 /var/log/syslog
파일에서 확인할 수 있습니다.
8. 결론
오늘날 보안 위협이 증가함에 따라, 서버에 대한 방화벽 설정은 필수적입니다. Ubuntu에서 iptables를 사용하여 네트워크를 보호하는 방법을 배웠습니다. 기본 설정부터 고급 설정까지 진행하며, 실무에서 유용하게 활용할 수 있도록 했습니다. 방화벽 규칙을 자주 검토하고, 필요에 따라 규칙을 업데이트하는 것이 중요합니다.