Self-Improvement

방화벽(iptables) 본문

리눅스/보안

방화벽(iptables)

JoGeun 2018. 10. 23. 22:26

*방화벽(Firewall)
어떤 기관의 내부 네트워크를 보호하기 위해서는 외부에서의 불법적인 트래픽이 들어오는 것을 막고, 허가하거나 인증된 트래픽만 허용하는 적극적인 방어 대책이라고 할 수 있다. 방화벽 시스템의 기본 목표는 네트워크 사용자에게 가능한 한 투명성을 보장하면서 위험 지대를 줄이고자 하는 적극적인 보안 대책을 제공하는 것

*iptables
리눅스 2.4커널 버전이상에서 사용되는 방화벽

(GUI) #system-config-securitylevel
(TUI) #system-config-securitylevel-tui
(CLI) iptables CMD, /etc/sysconfig/iptables

iptables 논리적인 3개의 사슬(chains)으로 구성되어 있고 각 INPUT, OUTPUT, FORWARD 라는 이름을 가지고 있다. (관리자가 정의하여 새로운 사슬 생성 가능)
-INPUT 사슬   : 리눅스 박스를 향해 들어오는 패킷들이 거치는 체인
-FORWARD 사슬 : 리눅스 박스를 거쳐 OUTPUT 체인을 향하는 체인
-OUTPUT 사슬  : 리눅스 박스를 나가는 패킷들이 들어가는 체인

#iptables -L


*iptables 정책
1.패킷 필터링 규칙
 - 들어오는 패킷을 수선대로 정의된 규칙들을 점검하고 처음 일치되는 규칙을 적용한다
 - 하나의 필터링 규칙에 여러가지 조건으로 지정하면 모든 조건에 일치해야 규칙 적용이 된다.
 - 내장된 체인 안을 모두 검사했지만 일치 항목이 없을 경우에는 체인의 기본 정책이 적용된다.

2.규칙 타겟
 내장 타겟
  - ACCEPT : 패킷을 허용하는 옵션이다
  - DROP   : 패킷을 완전히 무시한다

 확장 타겟
  - REJECT : 패킷을 허용하지 않는다는 메세지를 보내면서 거부한다.
  - LOG    : 시스템 로그 커널 장치로 연결한다 패킷을 syslog에 기록한다
  - 사용자 정의 체인 : 사용자가 정의하는 체인이다.

3.연결 추적
iptables는 연결 추적이라는 방법을 사용하여 내부 네트워크 상 서비스 연결 상태에 따라서 그 연결을 감시하고 제한할 수 있게 해준다.
 - NEW : 새로운 연결을 요청하는 패킷
 - ESTABLSHED : 기존 연결의 일부인 패킷
 - RELATED : 기존 연결에 속하지만 새로운 연결을 요청하는 패킷이다
   ex) 접속 포트가 20인 수동 FTP의 경우 전송 포트는 사용되지 않은 1024 이상의 어느 포트라도 사용 가능하다
 - INYALID : 연결 추적표에서 어디 연결에도 속하지 않은 패킷

*전체 사슬에 대한 명령어 정리
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)  : 기본정책을 변경한다.

*각 사슬에 대한 규칙 설정 명령어 정리
1. -s (--source) : 출발지 IP주소나 네트워크와의 매칭

2. -d (--destination)  : 목적지 ip주소나 네트워크와의 매칭

3. -p (--protocol)  : 특정 프로토콜과의 매칭

4. -i (--in-interface)  : 입력 인테페이스

5. -o (--out-interface) : 출력 인터페이스

6. --state   : 연결 상태와의 매칭

7. --string   : 애플리케이션 계층 데이터 바이트 순서와의 매칭

8. --comment   : 커널 메모리 내의 규칙과 연계되는 최대 256바이트 주석

9. -y (--syn)   : SYN 패킷을 허용하지 않는다.

10. -f (--fragment)  : 두 번째 이후의 조각에 대해서 규칙을 명시한다.

11. -t (--table)  : 처리될 테이블

12. -j (--jump)  : 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시한다.

13. -m (--match)  : 특정 모듈과의 매치

*iptables 간단한 명령어 실습
#iptables -L -v
 - iptables 설정을 자세히 보기


#iptables -F INPUT
 - INPUT 체인에 대한 설정 초기화

#iptables -P INPUT DROP
 - INPUT 체인에 대한 기본 정책 설정
#iptables -L INPUT


#iptables -A INPUT -p tcp --dport 23 -j ACCEPT
 - INPUT 체인에 규칙을 추가

#service iptables status
 - iptables 설정 상태 보기


#service iptables save
 - MEM안에 있는 iptables 설정을 파일(/etc/sysconfig/iptables)에 저장한다


#cat /etc/sysconfig/iptables

'리눅스 > 보안' 카테고리의 다른 글

File ACL, 디렉토리의 Default ACL  (0) 2018.10.24
sudo  (0) 2018.10.23
SELinux 기초 명령어 및 실습  (0) 2018.10.23
TCP_Wrappers 서비스  (0) 2018.10.23
방화벽(iptables)2 간단실습  (0) 2018.10.23