IPTABLES 란 무엇일까요 ??
iptables 는 시스템 관리자가 리눅스 방화벽이 제공하는 테이블 들과 그것을 저장하는
체인, 규칙들을 구성 할 수 있는 응용프로그램으로써 프로토콜 상태 추적, 필터링 정책 등을 넣을 수 있습니다.
쉽게 iptables 는 리눅스 방화벽입니다.
iptables 를 잘 사용하기 위해선selinux 를 비활성화를 시켜야합니다.
비활성화를 시키는 이유는
다양한 보안설정을 적용 시켜야 하고, 직접관리를 해야 하기 때문에 selinux 를 비활성화를 시킵니다.
* Selinux 는 어떤 것일까요 ?
사용자 프로세스는 주로 SELinux에 제한되지 않는 영역에서 실행되지만 리눅스 접근 권한에 제한을 받습니다.
이러한 이유로 selinux 를 비활성화를 시킵니다.
selinux 를 비활성화를 하는 방법
vi /etc/sysconfig/selinux // selinux 설정 파일
selinux=enabled // AS - IS
selinux=disabled // TO - BE
IPTABLES 의 용어에 대해서 알아보겠습니다.
1) 테이블(tables)
테이블은 filter, nat, mangle, raw 같은 4개의 테이블로 구성되며
아무것도 명시하지 않을 경우 기본적으로 filter 테이블입니다.
2) 체인(chain)
filter 테이블에는 세가지의 체인이 존재하는데 이는 INPUT, OUTPUT, FORWARD 이다.
이 체인들은 어떠한 네트워크 트래픽(IP 패킷)에 대하여 정해진 규칙들을 수행한다.
들어오는 패킷(INPUT)에 대하여 허용(ACCEPT)할 것인지, 거부(REJECT)할 것인지, 버릴(DROP)것인지를 결정한다.
INPUT : 호스트 A를 향한 모든 패킷
OUTPUT : 호스트 A에서 목적지로 향한 모든 패킷
FORWARD : 호스트 A가 목적지가 아닌 모든 패킷, 즉 라우터로 사용되는 호스트 A를 통과하는 패킷
3) 매치(match)
조건을 만족시키는 패킷들만 규칙을 적용한다.
-- s (source) : 출발지 IP주소나 네트워크와의 매칭
-- d (destination) : 목적지 ip주소나 네트워크와의 매칭
-- p (protocol) : 특정 프로토콜과의 매칭
-- i (in-interface) : 입력 인테페이스
-- o (out-interface) : 출력 인터페이스
-- state : 연결 상태와의 매칭
-- string : 애플리케이션 계층 데이터 바이트 순서와의 매칭
-- comment : 커널 메모리 내의 규칙과 연계되는 최대 256바이트 주석
-- y (syn) : SYN 패킷을 허용하지 않는다.
-- f (fragment) : 두 번째 이후의 조각에 대해서 규칙을 명시한다.
-- t (table) : 처리될 테이블
-- j (jump) : 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시한다.
-- m (match) : 특정 모듈과의 매치
4) 타겟(target)
패킷이 규칙과 일치할 때 동작을 취하는 타겟을 지원한다.
ACCEPT : 패킷을 받아들인다.
DROP : 패킷을 버린다(패킷이 오기도 전에 버리기 때문에 패킷이 없던 것처럼 보인다.).
REJECT : 패킷을 버리고 이와 동시에 connection refused 라는 메시지 출력.
LOG : 패킷을 syslog에 기록한다.
RETURN : 호출 체인 내에서 패킷 처리를 계속한다.
사용자가 혼란스러워하며 계속해서 접속을 시도하는 것을 방지하려면 REJECT를 사용하는 것이 좋다.
5) 연결 추적(Connection Tracking)
시스템 관리자가 연결을 허용하거나 거부할 수 있고
내부 네트워크 상 서비스 연결 상태에 따라서 그 연결을 감시하고 제한합니다.
NEW : 새로운 연결을 요청하는 패킷
ESTABLISHED : 기존 연결의 일부인 패킷
RELATED : 기존 연결에 속하지만 새로운 연결을 요청하는 패킷
INVALID : 연결 추적표에서 어디 연결에도 속하지 않은 패킷
6) 명령어(commond)
1. -A (--append) : 새로운 규칙을 추가한다.
2. -D (--delete) : 규칙을 삭제한다.
3. -C (--check) : 패킷을 테스트한다.
4. -R (--replace) : 새로운 규칙으로 교체한다.
5. -I (--insert) : 새로운 규칙을 삽입한다.
6. -L (--list) : 규칙을 출력한다.
7. -F (--flush) : chain으로부터 규칙을 모두 삭제한다.
8. -Z (--zero) : 모든 chain의 패킷과 바이트 카운터 값을 0으로 만든다.
9. -N (--new) : 새로운 chain을 만든다.
10. -X (--delete-chain) : chain을 삭제한다.
11. -P (--policy) : 기본정책을 변경한다.
* iptables 방화벽 확인 명령어
1) iptables -L
2) cat /etc/sysconfig/iptables
* IPTABELS 의 예시문
1.iptables -A INPUT -s 215.124.136.0/24 -j ACCEPT
= 215.124.136.0 의 C 클래스 대역으로 패킷을 허용한다.
2. iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP
= 22번 포트로 들어오는 패킷을 전부 버린다.
3. iptables -A HTTP -p tcp --dport 80 -m recent --update --seconds 60 --hitcount 15 -j drop
= 같은 IP 주소에서 60초 동안 15번이상 접속을 시도하면 DROP 시키는 정책을 추가
'시스템(Linux)' 카테고리의 다른 글
TCP Dump 에 대해 알아보도록 하겠습니다. (2) | 2022.12.23 |
---|---|
리눅스 시스템보안에 대해 알아보겠습니다. (0) | 2022.12.19 |
/etc/passwd /etc/passwd 파일 구조와 의미에 대해 알아보겠습니다 (2) | 2022.12.07 |
리눅스(linux) hostname 변경 방법 (CentOS 6, 7) (0) | 2022.11.29 |
TCP Wrapper 란? (0) | 2022.11.25 |