Linux 19 (방화벽)

다원·2023년 2월 2일
0
post-custom-banner

iptables

모든 서비스는 별도로 보안 어플이나 설정을 추가적으로 해주지 않아도 기본으로 내장되어 있는 접근 통제 설정으로 네트워크로부터 안전하도록 설계되어있음
원치 않는 외부 사용자의 접속과 공격으로부터 시스템은 현실적으로 안전하지 않음
네트워크 보안 목적은 오직 권한 있는 사용자들만 서버의 서비스에 접속해서 허용된 범위 내에서 서비스를 이용하게 하는 것
외부 사용자는 인터넷이 연결된 어느 호스트라도 침투할 수 있고, 내부 로컬 네트워크에서도 소셜 엔지니어링 등으로 침투하여 들어올 수 있으므로 내부 네트워크 관리도 필수

내부인: Local Lan을 통해서 허가되지 않은 서비스에 접근하려는 사용자,
-> 민감한 정보를 서버에 저장하고 있기 때문에 로컬 사용자들도 접근하지 못하게 해두어야함
접근 권한이 없는 이들을 막기 위해서 방화벽을 걸어야됨 (ACL:Access Control List)

용어 정리

  • policy: 패킷에 적용되는 룰 정책
  • tables filter(필터), nat(주소변환),mangle(섞임),raw(순수형태)
    주로 filter 옵션을 사용하며 INPUT(들어옴) OUTPUT(나감), FORWORD(전달) 체인을 가짐
  • chain: 일단 룰을 말하는데 하나의 체인에 여러 룰이 한 줄에 하나씩 들어있음
  • match: 룰에서의 각 조건을 말함
    --s(source 출발지), --d(destination: 목적지), --prot(protocol), --syn(동기화) --frag(단편화) 등
  • stateful: 적용할 서비스에 대한 상태, NEW(새로연결), ESTABLISHED(기존 연결) 등이 있음
  • target: 룰과 일치할 때 행동으로 ACCEPT(받아줌),DROP(로그 파일없이 버림) 등이 있음

iptables 룰 생성 규칙

네트워크 인터페이스를 통해서 들어온 패킷은 서버의 커널을 거쳐 로컬 프로세스에게 전달
Linux에서 들어오는 패킷을 자체적으로 필터링 하는 기능이 바로 iptables
인터페이스로 들어오는 패킷의 헤더 정보를 보고 drop, reject, forward 중 하나의 행동을 수행

  • 외부->내부
  1. 패킷 헤더에서 목적지 주소를 확인하는 라우팅 과정
  2. 패킷의 목적지가 이 시스템이면 패킷을 ACCEPT 하고 INPUT 체인으로 보내서 CPU가 처리하게 함 (정책상 패킷을 처리할 수 없게 될 경우 reject or drop 수행)
  3. 목적지가 다른 네트워크나 시스템이라면 Forward 체인이 설정되어 있을 때 패킷을 해당 목적지로 전송
  • 내부->외부
    OUTPUT 체인으로 패킷 전송 한 뒤 라우터나 스위치가 패킷을 받아서 FORWARD 체인을 통해서 원하는 목적지로 라우팅하는 과정을 거쳐서 보냄

체인 룰(엔트리)대한 조작

Append: 추가로써 해당 체인의 룰에서 맨 끝에 자리
Insert: 끼워넣기로써 체인의 시작이나 어느 포인트도 자리할 수 있음, 지정하여 어느 곳에든 위치 가능 대부분 체인의 시작에 룰 둘 때 사용
Replace: 해당 룰이 새로운 룰로 대체됨
Delete: 체인 삭제
-C: 체인 규칙확인, -L: 체인 규칙보기, -F:지정한 체인내의 모든 규칙 제거 등

룰의 기본 구조

iptables -A INPUT -p tcp -m multiport --dports 80 -i eth0 -s 출발지_IP -d 도착지_IP -m state -state NEW,ESTABLISHED -j ACCETP

체인의 규칙

체인이 있는 룰(엔트리)는 처음부터 순차적으로 내려가면서 검사
매치되는 룰을 만나면 더이상 내려가지 않고 체인에서 벗어나 행동 적용
추가하면 맨 아래에 저장되며 변경과 교체가 가능
체인끝에는 암무적으로 deny 가 있음(즉, 위에서 풀어지지 않으면 거부)

체인의 경우 먼저 허가 룰을 지정하고 후에 거부 룰 지정 기본으로 룰을 버리고 사용자_지정 룰을 별도로 생성해서 사용, 하나의 호스트에 지정한 룰을 다른 호스트에 복사해서 적용하지는 못함

웹 서버 공격 방어

iptables -I INPUT 1 -p tcp -dport 80,443 -j DROP

DDoS

SYN Flooding 과 Smurf 공격을 받고 있다면
iptables

firewall

centos에서의 방화벽 설정

  • firewall-cmd --permanent --zone=public --add-prot
  • iptables -A INPUT -p tcp --dport -j REJCET
  • iptables-services 설치 후 /etc/sysconfig/iptables 파일 수정

ufw

ubuntu에서의 방화벽 설정
ufw deny from to any port 22 proto tcp 방식
allw, deny, reject, limit 등의 옵션이 있음
tcp 22번 포트로 10.10.10.0 ip를 사용해서 192.168.100.193으로 오는 것들을 허용

192.168.100.0으로 들어오는 어느 ip주소든 port 1234로 들어오면 허용

192.168.100.100으로 나가는 것들을 차단

rsyslog.conf

커널에 대한 모든 이벤트를 log파일을 생성해서 저장하도록 설정
info 발생 시 messages 출력하여 log저장하는데, info 대신 warn 으로 수정

경고 메시지를 /var/log/messages에 저장되도록 설정 (해당 파일에는 warn에대한 기록만 저장됨)
mail, authpriv,cron, kern에 대한 정보를 제외하고 저장
kern에 대한 모든 이벤트는 /var/log/iptables.log 파일에 저장되게 설정되어있음
iptables를 통해서 tcp로 들어오는 것들을 로그에 저장하게 됨

iptables를 통해서 LOG파일에 COMMNET를 달아서 저장할 수도 있음

profile
공부일지,
post-custom-banner

0개의 댓글