10장. 서버의 방화벽 설정/동작

장동민·2022년 6월 9일

1. 리눅스 서버의 방화벽 확인 및 관리

1-1. iptables 이해하기

  • 시스템 관리자는 iptables을 통해 서버에서 허용하거나 차단할 IP나 서비스 포트에 대한 정책을 수립, 수립된 정책은 정책 그룹으로 관리
  • 정책 그룹은 서버 기준의 트래픽 구간별로 만드는데 트래픽 구간은 서버로 유입되는 구간(INPUT), 서버에서 나가는 구간(OUTPUT), 서버를 통과하는 구간(FORWARD)으로 나뉨
  • 정책은 방향성에 따라 방향성과 관련된 정책 그룹으로 분류하고 이렇게 분류된 그룹들은 역할과 관련된 정책 그룹으로 다시 묶임
  • iptables에서 개별 정책의 방향성에 따라 구분한 그룹을 체인(Chain)이라고 하며 체인을 역할별로 구분한 그룹을 테이블(Table)이라고 함

						iptables 개념도와 매핑된 iptables의 구성 요소
  • iptables은 필터(Filter) 테이블, NAT 테이블, 맹글 테이블, 로 테이블, 시큐리티 테이블이 있음
  • 리눅스에서 방화벽의 역할을 위해 사용되는 것
    • Filter 테이블 : iptables에서 패킷을 허용하거나 차단하는 역할을 선언하는 영역
    • INPUT, OUTPUT, FORWARD 체인 : 호스트 기준으로 호스트로 들어오거나(INPUT) 호스트에서 나가거나(OUTPUT) 호스트를 통과할(FORWARD) 때 사용되는 정책들의 그룹
    • Match : 제어하려는 패킷의 상태 또는 정보 값의 정의, 정책에 대한 조건
    • Target : Match와 일치하는 패킷을 허용할지, 차단할지에 대한 패킷 처리 방식

										필터 테이블 개념도

1-2. 리눅스 방화벽 활성화/비활성화

  • firewalld 비활성화 및 서비스 중단
# systemctl disable firewalld
# systemctl stop firewalld
  • iptables 서비스 활성화 및 시작하기
# service iptables start (CentOS 6버전)
# systemctl start iptables.service (CentOS 7버전)
  • service 명령어로 iptables 활성화
# service iptables start

1-3. 리눅스 방화벽 정책 확인

  • iptables 정책 확인
# iptables -L
  • iptables 설정 확인
# iptables -S

1-4. 리눅스 방화벽 정책 관리

  • iptables에 http 허용 정책 추가
    • 정책 추가 시 -A나 -append 옵션 사용
    • 프로토콜 지정 시 -p 또는 --protocol 옵션 사용
    • 목적지 포트를 제어하기 위해 --dport 옵션 사용, 출발지 포트는 --sport 옵션 사용
    • 출발지나 목적지 IP 주소 제어 시 -s(--source), -d(--destination) 옵션 사용
    • 정책에 일치하는 패킷을 어떻게 처리할 것인지 정하는 타깃 지정은 -j 옵션 사용
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  • iptables의 정책 삭제
    • -A 대신 -D나 --delete 옵션 사용
# iptables -D INPUT -p tcp --dport 21 -j ACCEPT
  • iptables 출력 시 줄 번호 출력
# iptables -L --line-number
  • 특정 서비스 포트에 대해 특정 IP만 허용
# iptables -A INPUT -i eth0 -p tcp -s 172.16.10.10/32 --dport 22 -j ACCEPT
# iptables -A INPUT -i eth0 -p tcp --dport 22 -j DROP
  • 출발지 IP 주소를 범위로 지정
# iptables -A INPUT -p all -m iprange --src-range 192.168.0.0-192.168.255.255 -j DROP
  • 목적지 IP 주소를 범위로 지정
# iptables -A INPUT -p all -m iprange --dst-range 192.168.1.11-192.168.2.15 -j DROP
  • 서비스 포트를 범위로 지정1
# iptables -A INPUT -p tcp -m multiport --dports 3001:3010 -j DROP
  • 서비스 포트를 범위로 지정2
# iptables -A INPUT -p tcp -m multiport --sports 4001, 4003, 4005 -j DROP
  • iptables 적용된 정책 한꺼번에 삭제
# iptables -F
  • 체인의 기본 정책 변경
    • -p 옵션은 각 체인의 기본 정책을 변경
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT DROP

1-5. 리눅스 방화벽 로그 확인

# tail -f /var/log/iptables2.log
profile
나만의 데이터베이스

0개의 댓글