IP 주소와 Port 번호를 기반으로 필터링 정책(방화벽 룰 셋)에 따라 패킷 필터링을 수행하는 보안 장비
트래픽 방향 | 사용자 | 송신지 IP | 수신지 IP | 허용포트 | 시간대 |
---|---|---|---|---|---|
외부 → 내부 | |||||
외부 → DMZ | 모든 사용자 | 모든 네트워크 | DMZ 네트워크 | HTTP, SMTP, POP3 | 모든 시간대 |
내부 → 외부 | 내부 사용자 | 내부 네트워크 | 모든 네트워크 | 차단 권고하는 포트를 제외한 대부분의 포트를 허용 | 근무 시간에 특정 사이트에 대해 접속을 차단 |
내부 → DMZ | 인증을 거친 사용자 | 내부 네트워크 | DMZ 네트워크 | SSH, SFTP, HTTP, SMTP, POP3 | 모든 시간대 |
DMZ → 외부 | DMZ 네트워크 사용자 | DMZ 네트워크 | 모든 네트워크 | 차단 권고하는 포트를 제외한 대부분의 포트를 허용 | 모든 시간대 |
DMZ → 내부 | DMZ 네트워크의 특정 IP | 내부 네트워크의 특정 IP | 내부 네트워크의 서비스 포트로 제한 | 모든 시간대 |
iptables는 리눅스 시스템에서 네트워크 패킷을 필터링하고 조작하는 데 사용되는 유틸리티. 주로 방화벽 규칙을 설정하고 관리하는 데에 쓰인다. iptables는 커널 수준에서 네트워크 트래픽을 처리하며, 패킷을 검사하고 필터링하여 정책에 따라 허용하거나 거부한다.
iptables COMMAND <chain> -p <protocol> -s <source> -d <destination> -j <actioN>
COMMAND
<chain>
관련된 규칙(rule)의 모음
<protocol>
프로토콜
<source>
출발지 IP
<destination>
도착지 IP
<action>
조건(chain, protocol, source, dest)을 만족하는 패킷의 처리 방법
iptables-save : 규칙을 파일로 저작
iptables-restore : 규칙 파일을 규칙에 적용
명령어 예시
규칙 조회
sudo iptables -L
sudo iptables -L -v
sudo iptables -A OUTPUT -d "192.168.40.130" -j DROP
-A OUTPUT: OUTPUT 체인에 대한 규칙을 추가하는 옵션. OUTPUT 체인은 시스템에서 발생하는 패킷(시스템이 생성하는 패킷)을 필터링하는 데 사용된다.
-d "192.168.40.130": 패킷의 목적지 IP 주소가 "192.168.40.130"인 경우를 지정. 이 규칙은 목적지가 해당 IP 주소인 패킷을 대상으로 한다.
-j DROP: 매치되는 패킷에 대해 수행할 동작을 지정합니다. 여기서는 DROP으로 설정되어 있어, 매치되는 패킷을 버립니다(거부합니다).
예시로 만들어준 bee.box (192.168.40.130) 에서 발생되는 패킷은 DROP 한다. 그래서 curl 해도 아무것도 안나옴.
sudo iptables -D OUTPUT 2 ⇐ 삭제할 체인과 규칙 번호를 입력
저장
sudo iptables-save > ./iptables.rules
복원
sudo iptables-restore < ./iptables.rules