1. iptables : 방화벽 규칙 설정
형식 : iptables [-t table] action chain match [-j target]
-주요 action
-P : 사슬의 기본 정책 설정 (--policy)
-F : 사슬로부터 규칙 제거 (--flush) / 현재 테이블의 사슬에 설정되어있는 모든 정책 제거
-A : 사슬로부터 새로운 규칙 추가(--append) / 해당 사슬의 맨 마지막 규칙으로 등록
-R : 정책을 수정
-D : 정책을 삭제
-I : 정책 중간에 삽입
-L : 적용된 규칙 확인
-주요 match
-s : 출발지 IP 주소나 네트워크와 매칭(--source) / 도메인, IP주소, 넷마스크값을 이용하여 표기
-d : 목적지 IP 주소나 네트워크와 매칭(--destination) / 도메인, IP 주소, 넷마스크 값을 이용하여 표기
-p : 특정 프로토콜과 매칭(--destination) / TCP, UDP, ICMP와 같은 이름 사용 / 대소문자 구분 x
-i : 입력 인터페이스와 매칭 (--in-interface)
-o : 출력 인터페이스와 매칭(--out-interface)
-주요 target (-j , --jump)
-ACCEPT : 패킷 허가 / 본래 라우팅대로 진행
-DROP : 패킷 거부 / 더 이상 어떤 처리도 수행되지 않고 버림
-REJECT : 패킷을 버리고 동시에 적당한 응답 패킷 전달
#iptables ( -t filter) -F INPUT : 기본 테이블인 filter 테이블의 INPUT 사슬에 설정된 모든 정책 제거
#iptables -P INPUT DROP : 들어오는 모든 패킷에 대한 기본 정책을 거부로 설정
#iptables -R INPUT 2 : 기본 테이블인 filter 테이블의 INPUT 사슬에 대한 두 번째 정책을 수정
#iptables -D INPUT 5 : INPUT 사슬에 설정한 5 번째 정책 삭제
#iptables -I INPUT 2 -j LOG : INPUT 사슬에 설정한 두 번째 정책 이후와 연관된 로그를 기록하도록 설정
#iptables -A INPUT -s 192.168.5.13 -j ACCEPT : 해당 IP로부터 들어오는 패킷을 허가하는 정책 추가
#iptables -A INPUT -i lo -j ACCPT : INPUT 체인에 loopback 인터페이스에 들어오는 모든 패킷을 허용하는 정책 추가
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT : INPUT 체인에 tcp 프로토콜로 22번포트로 들어오는 패킷만 허용
#iptables -A INPUT -p tcp --dport 20:30 -j DROP : 포트번호 20번부터 30번까지 거부 메세지없이 무조건 차단
#iptables -A INPUT -P FORWARD DROP : 기본적인 포워딩 정책을 거부 메세지없이 무조건 거절하도록 설정
#iptables -L : 적용된 규칙 확인
2. iptables NAT : SNAT(Source NAT)와 DNAT(Destination NAT)로 구분
-SNAT : 패킷의 소스 주소인 발신지를 변경
- 공인 IP 주소 하나로 다수의 컴퓨터가 인터넷 접속이 가능하게 할 경우
- 라우팅 경로가 결정된 이후에 설정 / NAT 테이블의 POSTROUTING 사슬에 정책 설정
-DNAT : 패킷의 도착지 주소 변경
- 하나의 공인 IP 주소로 다수의 서버 운영
- 패킷의 목적지 주소가 먼저 변경되고 그 변경된 주소로 새로운 라우팅 경로를 찾음
- 라우팅 이전 단계에서 적용 / NAT 테이블의 PREROUTING 사슬에 정책을 설정
3. iptables의 확장 : '-p tcp'로 프로토콜 지정 후 추가 지정 옵션 선택
--sport : 발신지에서의 하나의 포트 또는 포트 범위 지정
--dport : 도착지의 포트 지정 / 설정 방법은 --sport와 동일
#iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.10.1 -d 0/0 -j ACCEPT
: iptables echo request 패킷을 허용
#iptables -A INPUT -p icmp --icmp-type echo-reply -s 0/0 -d 192.168.10.1 -j ACCEPT
: 외부에서 들어오는 icmp echo reply 패킷 허용
<하나의 공인 IP 주소를 이용하여 다수의 서버를 연결하여 구성>
#iptables -t NAT -A PREROUTING -p tcp -d 203.247.50.100 --dport 80 -j DNAT --to 192.168.0.4:80
: 외부로부터 들어오는 웹 서비스 요청을 내부의 사설 IP 주소가 192.168.0.4인 웹 서버로 전달
<하나의 공인 IP 주소를 공유하여 다수의 컴퓨터를 사용하는 환경 구축>
#iptables -t NAT -A POSTROUTING -o eth0 -j SNAT --to 203.247.40.100
: 장착된 이더넷 카드 2개 중 첫 번째 이더넷카드에서 나가는 패킷에 공인 ip 주소인 203.247.40.100 할당
4.iptables-save : 설정된 정책을 출력 / '>'와 결합하여 설정된 정책을 파일로 저장 가능
#iptables-save > firewall.sh
#service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables : [ok]
5.iptables-restor : 파일로 저장되어있는 정책을 불러와 반영
#iptables-restore < firewall.sh
연습 문제 풀이
문제 1. 다음은 방화벽 규칙(rule)을 설정하는 과정이다. 조건에 맞게 (괄호) 안에 알맞은 내용을 적으시오.
가. 현재 설정되어 있는 iptables의 규칙(rule)을 전부 제거한다.
#iptables ( 1 )
나. 들어오는 모든 패킷을 거부한다.
#iptables ( 2 ) INPUT ( 3 )
다. IP 주소가 192.168.5.13인 호스트로부터 들어오는 패킷을 허가한다.
#iptables ( 4 ) INPUT -s 192.168.5.13 ( 5 )
조건
- (1)~(5)번은 명령어의 옵션, 설정 값, 옵션 및 인자 값을 조건에 맞게 기입한다.
정답
1) -F
2) -P
3) DROP
4) -A
5) -j ACCEPT
문제 2. 다음 그림과 같이 하나의 공인 IP 주소를 이용해서 다수의 서버를 연결하여 구성한 상태이고, iptables를 이용해서 방화벽 규칙(rule)을 설정하는 과정이다. 조건에 맞게 (괄호) 안에 알맞은 내용을 적으시오.
외부로부터 들어오는 웹 서비스 요청을 내부의 사설 ip 주소가 192.168.0.4인 웹 서버로 전달한다.
#iptables -t ( 1 ) -A ( 2 ) -p ( 3 ) -d 203.247.50.100 ( 4 ) -j ( 5 ) --to ( 6 )
조건
- (1)~(6)번은 명령어의 옵션, 설정 값, 옵션 및 인자 값을 조건에 맞게 기입한다.
정답
1) NAT
2) PREROUTING
3) tcp
4) --dport 80
5) DNAT
6) 192168.0.4:80
문제 3. 다음은 방화벽 규칙(rule)을 확인하고 저장하는 과정이다. 조건에 맞게 (괄호) 안에 알맞은 내용을 적으시오.
가. 현재 설정되어있는 iptables 규칙(rule)을 firewall.sh 파일로 저장한다.
#( 1 ) ( 2 ) firewall.sh
나. 현재 설정되어있는 iptables 규칙(rule)을 전부 제거한다.
#iptables ( 3 )
다. firewall.sh 파일이 저장되어있는 iptables 규칙(rule)을 불러와서 반영한다.
#( 4 ) ( 5 ) firewall.sh
조건
- (1)번과 (4)번은 관련 명령어를 기입한다.
- (2)번과 (5)번은 해당 조건을 만족시킬 수 있는 명령어의 옵션이나 기호 등을 기입한다.
- (3)번은 관련 옵션을 기입한다.
정답
1) iptables-save
2) >
3) -F
4) iptables-restore
5) <
문제 4. 다음에서 iptables를 이용해서 포트 번호 20번부터 30번까지 차단하고, ssh 포트인 22번만 허가하는 정책을 설정하려고 한다. (괄호) 안에 알맞은 내용을 적으시오.
#iptables -F INPUT
#iptables -A INPUT -p tcp ( 1 ) ( 2 ) -j ( 3 )
#iptables -A INPUT -p tcp ( 1 ) ( 4 ) -j ( 5 )
조건
- 거부 메세지 없이 무조건 거절한다.
정답
1) --dport
2) 22
3) ACCEPT
4) 20:30
5) DROP
문제 5. 하나의 공인 IP 주소를 공유해서 다수의 컴퓨터를 사용하는 환경을 iptables를 이용해서 구축하려고 한다. (괄호) 안에 알맞은 내용을 적으시오.
#iptables -t ( 1 ) -A ( 2 ) ( 3 ) eth0 -j ( 4 ) --to 203.247.40.100
조건
- 해당 시스템에는 이더넷 카드가 두 개가 장착되어 있는데, 첫 번째 이더넷 카드에서 나가는 패킷에 대해 공인 IP 주소인 203.247.40.100을 할당한다.
정답
1) nat
2) POSTROUTING
3) -o
4) SNAT