상태확인
sudo systemctl status ufw
active 상태부팅될 때 시작하지 않도록 설정
sudo systemctl disable --now ufw
reboot
다시 상태확인
sudo ufw status
inactive 이면 비활성화 완료.iptables 설치
sudo apt install iptables-persistent -y
설치 중에 현재 iptables 규칙을 저장할지 물어보면 "Yes"를 선택합니다.
현재 설정된 iptables 규칙이 아래 경로에 저장됩니다:
IPv4 규칙: /etc/iptables/rules.v4
IPv6 규칙: /etc/iptables/rules.v6
그리고 이 파일들은 부팅 시 자동으로 적용됩니다.
상태확인
sudo systemctl status iptables
active 상태sudo iptables -L

INPUT : 외부에서 서버로 들어올 때
FORWARD : 서버를 거쳐갈 때
OUTPUT : 서버에서 외부로 나갈 때
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
2 ACCEPT icmp -- anywhere anywhere
3 REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
sudo iptables -A [체인] -p [프로토콜] --dport [포트번호] -j [동작]
| 구성 요소 | 의미 |
|---|---|
-A 나 --append | 규칙 추가 (Append) |
[체인] | INPUT, OUTPUT, FORWARD 중 하나 |
-p | 프로토콜 (tcp, udp, icmp 등) |
--dport | 목적지 포트 번호 |
--sport | 출발지 포트번호(출발지포트는 랜덤이기 때문에 알 수 x ) |
-j | 동작(ACCEPT, DROP, REJECT 등) |
-s 나 --source | 출발지 IP 설정 |
-d 나 --destination | 목적지 IP 설정 |
주요 동작( -j 옵션)
| 동작 | 설명 |
|---|---|
ACCEPT | 패킷 허용 |
DROP | 패킷 버림 (상대방은 응답 없음) |
REJECT | 패킷 거부 + 거절 메시지 전송 (ICMP 등으로 응답) |
sudo apt update
sudo apt install apache2
sudo systemctl start apache2
wget localhostwget http://10.0.2.101 : 마스터에서 가져옴sudo iptables -A INPUT -p tcp --dport 80 -j DROPiptables -L
wget http://10.0.2.101sudo iptables -D INPUT -p tcp --dport 80 -j DROP일단 규칙이 전부 없는 상태로 시작한다.
구조:
iptables -A INPUT -p tcp -s 네트워크대역 --dport 포트번호 -j ACCEPT
설정:
iptables -A INPUT -p tcp -s 10.0.2.102/32 --dport 80 -j ACCEPT : 특정 IP 허용
sudo iptables -A INPUT -p tcp --dport 80 -j DROP : 모든 IP 막기

다른 IP는 막고 특정 IP(slave1, 10.0.2.102/32)만 허용했다.
룰은 위에서부터 적용되기 때문에 허용해주는 규칙이 모든 IP를 거부하는 규칙보다 위에 있어야한다.
iptables -D 체인 라인넘버 : 룰 삭제
sudo iptables -D INPUT 1iptables -F : 모든 규칙 제거
10.0.2.102와 10.0.2.103만 포트 80 (HTTP) 접근을 차단하려는 것.iptables -A INPUT -p tcp -s 10.0.2.102/31 --dport 80 -j DROP 10.0.2.102/31 이 의미하는 IP 범위/31은 서브넷 마스크가 255.255.255.254
이는 딱 두 개의 IP만 포함:
10.0.2.10210.0.2.10310.0.2.102 = 01100110
10.0.2.103 = 01100111
↑ 마지막 비트만 다름
/31 마스크는 마지막 비트만 호스트 비트이므로, 이 두 IP가 포함됨.
이 규칙을 적용하고 slave1(10.0.2.102) 과 slave2(10.0.2.103)에서 http 요청을 보내면 거부당한다.
하지만 이 네트워크 대역안에 없는 master1(10.0.2.104)는 http 요청이 가능하다
구조
sudo iptables -A INPUT -p all -m iprange --src-range 시작IP-끝IP -j DROP
사용
sudo iptables -A INPUT -p all -m iprange --src-range 10.0.2.102-10.0.2.103 -j DROP
이 규칙을 적용해도 slave1(10.0.2.102) 과 slave2(10.0.2.103)에서 http 요청을 보내면 거부당한다.
-m multiport --dports 시작포트-끝포트
-m multiport --sports 포트1 포트2 포트3 : 포트 나열
/etc/sysconfig/iptables 파일에 기록을 하면 된다.