본문 바로가기

시스템 보안

9. 서버보안 (iptables)

반응형

자 이제 드디어!! 시스템 보안에 있어 가장 중요한 단계에 도착했어
system 보안에 있어서 필요한 개념 세 가지가 있는데
1. 운영체제 2. client 보안 3. server 보안이야
오늘은 우리가 배울 부분이자 가장 중요한 server 보안에 대해 알아보도록 할꺼야!

 

1. 공격자의 system 침투단계


공격자가 네트워크를 타고 나의 system에 도달했을 때 거쳐야 하는 관문들이 있어
가장 먼저 통과하는 문은 바로 "방화벽"이야
방화벽은 네트워크 보안에서도 많이 다뤘지만 system 보안에서도 내부 방화벽이 존재해
system 방화벽은 "Netfilter" 라고 하는 커널에 의해 작동되고,
이를 활용하는 tool은 두 가지가 있어 바로 iptablesfirewalld
CentOS7 이상 버전에서는 firewalld로 사용하지만 그 이하 버전에서는 iptables를 사용하지
우리는 실습을 이제 CentOS6 버전에서 사용해보려고 해

자, 그러면 첫 번째 관문을 뚫었으니 두 번째 관문도 뚫어야겠지?
두 번째 관문이 바로 "TCP Wrapper"
이건 TCP 통신에 한해서 접근통제를 하는 소형 방화벽이라고 생각하면 돼

그리고 마지막 관문은 시스템 내부에서 작동되는 "서비스"
서비스 자체에서도 접근통제를 할 수 있는 기능이 있지
이렇게 세 개의 관문을 뚫어야 비로소 공격자는 사용자의 data를 확인할 수 있는거야!

오늘은 첫 번째 관문인 iptables에 대해 알아보려고 해
오늘부터 사용할 OS는 SUlinux로 CentOS 6 버전의 OS라고 생각하면 돼

공격자의 침투 순서
1. firewall >>> 2. TCP Wrapper >>> 3. service >>> 4. Data



2. iptables 구성


리눅스에 들어가면 iptables의 내용이 담겨있는 파일이 존재하는데
바로 /etc/sysconfig/iptables
해당 파일의 내용을 한 번 확인해볼께


자 봐도 복잡하기만 하지....?
해당 내용을 분석하기 전에 iptables의 구성이 어떻게 되어있는지 알아보고 가자
iptables는 chain이라는 규칙을 서로 연결한 table 구조
그래서 packet을 하나씩 대응하는 table을 chain(규칙)에 따라 처리하는 방식이지


1. table
chain을 포함한 전체 그룹
기본 table인 filter와 Nat, Mangle, Raw 이렇게 총 네가지 종류가 있어

Nat: network address translation, IP 주소변환
Mangle: 패킷 데이터를 변경하는 규칙
Raw: netfilter의 연결 추적 하위


2. chain
iptables에서 가장 중요한 부분으로
packet이 어떤 형태인지 나눠주는 기준이라고 볼 수 있어
주로 우리는 밑의 세 가지를 다룰꺼야

- INPUT : 시스템 외부에서 시스템 내부로 들어오는 packet
- OUTPUT : 시스템 내부에서 시스템 외부로 보내는 packet
- FORWARDING : 시스템을 경유하는 packet


3. rule
command, parameter, target으로 구성된 규칙
ex) -A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT : command로 chain을 조작하는 부분
A=append (규칙추가) D=delete (규칙삭제) I=insert (규칙삽입)
-i lo : parameter로 localhost 연결한다.
i= interface
-j ACCEPT : 일치한 target의 패킷 통과
j= jump (규칙 적용)


4. target
rule에서 보면 -j ACCEPT 부분이 바로 target이야
rule에 일치한 target의 처리를 말해

-ACCEPT: 패킷허용
-REJECT: 패킷거절 (통보는 함)
-DROP: 패킷폐기 (통보 안함)





현재 iptables에 대한 설정파일은 /etc/sysconfig/iptables에 존재하는데 여기서
무작위로 하나 뽑아서 iptables를 분석해볼께

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
INPUT과 FORWARD 규칙을 추가하는데 그 이름을 RH-Firewall-1-INPUT으로 적용한다.

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
RH-Firewall-1-INPUT 체인으로 다양한 상태와 새로운 세션 요청을 하는데
tcp 프로토콜을 사용하고 포트 또한 tcp포트를 사용하되 목적지 포트가 22번 포트를 허용
즉, 간단히 말해서 tcp 환경에서 ssh를 수용하겠다는 의미


이번에는 SSH가 ACCEPT 되어 있는 상황에서 DROP과 REJECT로 설정을 바꿔서
어떤 반응이 나오는지 확인해볼께 실습에 두 가지 OS를 가지고 실험해볼께
centos7: 192.168.10.100
sulinux: 192.168.10.135


1. ACCEPT
ssh 접근 허용



2. DROP
무응답 거절



3. REJECT
응답거절 대신 connection refused 통보는 보냄



여기서 주의할 점은 iptables의 내용을 바꾸고 나면 꼭 service iptables restart 명령을 실행시켜야 돼
변경내용을 적용시켜주는 명령이기 때문에 이를 실행하지 않으면 수정 내용이 적용되지 않게돼



여기까지가 오늘 iptables에 대한 내용이었어!
서버침투 단계 중 첫번째인 방화벽 침투및 차단을 배워봤는데
내일은 다음단계인 TCPWrapper에 대해서 알아보도록 할께

 

반응형

'시스템 보안' 카테고리의 다른 글

11. 데몬 (Daemon)  (0) 2021.12.26
10. TCPWrapper  (0) 2021.12.24
8. ICMP 필터  (0) 2021.12.22
7. ping 차단  (0) 2021.12.22
6. 리눅스 파일 권한 (2)  (0) 2021.12.21