IPTables
커널의 IP 패킷 필터링 기능을 하는 Netdilter에 규칙을 설정하고 관리하는 도구
체인이라고 불리는 방향성을 가진 규칙을 연결한 테이블
주의 | 방화벽이 아니다. 대신 방화벽을 관리하는 명령모음이다.
Packet Filtering
네트워크를 통과하는 모든 패킷들을 패킷 헤더에 출발지와 목적지,
그리고 어떤 프로토콜을 이용할지에 관한 정보를 담고 있다.
이러한 패킷의 헤더 정보를 보고, 호스트로 들어오는
들어오는 패킷( INPUT )과 나가는 패킷 ( OUTPUT ), 통과하는 패킷 ( FORWARD ) 등을 TABLE과 검사하여
불필요한 패킷이나 잘못된 패킷을 폐기하고 ( DROP ) 규칙과 일치하는 패킷만 허용하는 ( ACCPECT ) 기능을 한다.
또한 패킷을 거부할 수도 있고 ( REJECT ), 로그를 출력할 수도 있다. ( LOG )
패킷 필터링 설정 순서
체인의 기본동작을 설정하고,( 허용, 거부 )
패킷을 검사할 규칙을 체인에 추가한다.
( INPUT ) ( OUTPUT ) ( FORWARD ) 는 체인이라고 하며
( DROP ) ( ACCPECT ) ( REJECT ) ( LOG )은 대상(Target)의 종류다
대상(Target)은 필터링 규칙에 맞는 패킷에 대한 처리를 뜻한다.
체인에는 사용자가 자유롭게 만들 수 있는 체인과 ( nat ) ( mangle ) ( raw )
처음부터 준비되어 있는 내장 체인이 있다. ( filter )
테이블의 종류는 4가지가 있다.
filter : 패킷 필터링에 사용되는 테이블(기본값)
nat : 출발지 및 목적지 IP 주소와 포트 번호를 변환하는 NAT에서 사용되는 테이블
mangle : 패킷 헤더의 특별한 갱신에 사용되는 테이블
raw : 연결을 추적하지 않는 패킷의 처리에 사용되는 테이블
iptable 시작 방법 [ 접기문구 ]
# service iptables start
# chkconfig iptables on
iptable 옵션 [ 접기문구 ]
# iptables -L
# iptables -nL
# iptables -L --line-numbers ( 라인번호 + 리스트 형태로출력) 규칙 제거시 유용.
# iptables -D INPUT 2 ( INPUT 체인의 2번을 삭제 )
# iptables -S ( 체인에 설정된 규칙을 명령행 형태로 출력 = </etc/sysconfig/iptables>)
기본 정책 설정 및 데몬 관리 [ 접기문구 ]
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
***중요***
IPTables 명령으로 설정한 내용은 시스템을 재부팅하면 사라진다
때문에 설정내용을 저장하려면 해당 명령어를 입력해야한다.
# service iptable save
규칙 작성 예제
-p tcp : TCP 프로토콜
-s 192.168.0.0/24 : 출발지 IP주소
--sport 22 : 출발치 포트번호가 22
-d : 목적지 IP주소
기본 설청 파일 외 다른 파일에 저장 시에는 iptables-save 명려어를 사용한다.
# iptables-save > /etc/iptables.tmp ( 이 파일에 iptables-save 내용을 덮어쓰기 )
해당 파일의 내용으로 설정을 되돌리려면 iptables-restore 명령어를 사용한다.
# iptables-restore < /etc/iptables.tmp ( iptables-restore에 이 파일 내용을 입력 )
=== 실습 ===
필자는 그동안 Xshell로 서버를 관리했다.
만약 이 실습을 하면 Xshell 이 끊길것이다.
( 초기화면)
# iptables -P FORWARD DROP
# iptables -P INPUT DROP
# iptables -P OUTPUT ACCEPT
# iptables -F
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
( 초기 설정 삭제후 자신이원하는 설정을 적용한 모습 )
# service iptables save
# service iptables restart
# iptables-save > /root/iptables_basic_config 백업 파일 생성
# iptables-restore > /root/iptables_basic_config 백업 불러오기
iptables을 적용하자 Xshell이 끊겼다.
다시 통신하기 위해서 규칙을 추가해보자.
필자는 Xshell과 SSH로 통신하므로 22번포트와 tcp를 허용하도록 설정해준다.
( INPUT을추가하는 tcp로통신하고도착지포트 22(SSH)인것만허용한다. )
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 클라이언트로부터 도착한 패킷은 INPUT 체인의 규칙을 통과해야한다.
- 요청한 서비스는 SSH이므로 서버에서는 SSH 데몬과 22번 포트가 동작해야한다 (소켓생성)
- 방화벽에서는 패킷의 목적지 포트가 22번인 경우에 허용하는 규칙을 설정해야한다.
결과) Xshell과 연결됬다!
iptables 와 연결추적( Connection Tracking )
- 서비스 연결 상태에 따라서 그 연결을 감시하거나 제한할 수 있다.
- 연결 추적 방식은 연결 상태를 저장하므로 시스템 관리자가 연결을 허용/거부할 수 있다.
연결 상태 종류
NEW : 새로운 연결을 요청하는 패킷
ESTABLISHED : 기존 연결의 일부인 패킷
RELATED : 기존 연결에 속하지만 새로운 연결을 요청하는 패킷
# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
= # iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
# iptables -A INPUT -p icmp icmp-type echo-reply -j ACCEPT
= # iptables -A INPUT -p icmp icmp-type 0 -j ACCEPT
3 : 목적지 접근 불가 - 데이터그램을 목적지로 전달할 수 없다는것을 나타낸다
11 : 시간 초과 - TTL 필드가 만료하여 데이터그램이 전송 중 버려질 때 송신된다.
8 : 에코요청 - 장비가 인터네트워크의 다른 장비와 연결성을 테스트하는데 쓰인다.
0 : 에코 응답 - 에코 요청 메세지에 대한 응답으로 전송된다. 연결을 테스트 하는데 쓴다.
'OS > Cent OS' 카테고리의 다른 글
아파치(Apach) 인증 종류와 방법 (0) | 2017.03.12 |
---|---|
아파치 서버 서비스 시작과 PHP 사용 (0) | 2017.03.12 |
NFS (0) | 2017.03.05 |
NTP - 시간 동기화 프로토콜 (0) | 2017.03.04 |
FTP 보안설정2 ( Passive Mode ) (0) | 2017.03.04 |
FTP 보안 설정1 ( ftpusers, Pam, Chroot ) (0) | 2017.03.04 |
댓글