Skip to content

Commit

Permalink
2024-02-27
Browse files Browse the repository at this point in the history
  • Loading branch information
Lim committed Feb 27, 2024
1 parent 15204f1 commit c668f3a
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions docs/sk-lim19f/2024-02-27.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# 10. 서버의 방화벽 설정/동작

- 서버에 운영체제를 설치하면 리눅스나 윈도 서버 모두 운영체제의 자체 방화벽이 함께 설치됨
- 운영체제에서 동작하는 서버의 방화벽은 서버 보안을 강화하기 위해 최소한의 서비스 포트만 열어둔 채 대부분의 서비스는 차단함
- 방화벽은 일반적으로 필요한 IP 주소와 서비스 포트에 대해서만 열어주고 나머지는 모두 차단하는 화이트리스트 기반으로 정책을 관리함

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

- 리눅스에서는 호스트 방화벽 기능을 위해 보통 iptables을 많이 사용

### 10.1.1 iptables 이해하기

- 시스템 관리자는 iptables을 통해 서버에서 허용하거나 차단할 IP나 서비스 포트에 대한 정책을 수립함
- 이렇게 수립된 정책은 정책 그룹으로 관리함
- 정책 그룹은 서버 기준의 트래픽 구간별로 만드는데 여기서 말하는 트래픽 구간은 서버로 유입되는 구간(INPUT), 서버에서 나가는 구간(OUTPUT), 서버를 통과하는 구간(FORWARD) 등을 말함
- 그리고 이렇게 만들어진 방향성과 관련된 정책 그룹은 각 정책의 역할에 따라 다시 상위 역할 그룹에 속하게 됨
- 정리하면 정책은 방향성에 따라 방향성과 관련된 정책 그룹으로 분류하고 이렇게 분류된 그룹들은 역할과 관련된 정책 그룹으로 다시 묶이게 됨
- iptables에서 개별 정책의 방향성에 따라 구분한 그룹을 체인이라고 하며 체인을 역할별로 구분한 그룹을 테이블이라고 함
- 즉, 개별 정책의 그룹이 체인이 되고 체인 그룹이 테이블임
- iptables에는 필터 테이블, NAT 테이블, 맹글 테이블, 로 테이블, 시큐리티 테이블 이렇게 5가지 테이블이 있음
- 패킷을 허용하거나 차단하는 데 사용하는 테이블이 필터 테이블
- 여기서 다룰 리눅스의 호스트 방화벽은 이 필터 테이블을 통해 트래픽을 제어하는 것을 의미
- 테이블에는 방향성과 관련된 그룹이 있다고 했는데 이 그룹이 체인
- 필터 테이블에는 서버로 들어오는 트래픽, 나가는 트래픽, 통과하는 트래픽에 따라 INPUT 체인, OUTPUT 체인, FORWARD 체인이 있음
- 각 체인에는 해당 체인에 적용될 방화벽 정책을 정의
- 각 정책에는 정책을 적용하려는 패킷과 상태 또는 정보 값과의 일치 여부 조건인 매치와 조건과 일치하는 패킷의 허용(Accept)이나 폐기(Drop)에 대한 패킷 처리 방식을 결정하는 타깃으로 구성됨

- Filter 테이블
- iptables에서 패킷을 허용하거나 차단하는 역할을 선언하는 영역
- INPUT, OUTPUT, FORWARD 체인
- 호스트 기준으로 호스트로 들어오거나 호스트에서 나가거나 호스트를 통과할 때 사용되는 정책들의 그룹
- 패킷의 방향성에 따라 각 체인에 정의된 정책이 적용됨
- Match
- 제어하려는 패킷의 상태 또는 정보 값의 정의
- 정책에 대한 조건
- Target
- Match와 일치하는 패킷을 허용할지, 차단할지에 대한 패킷 처리 방식

10.1.2 리눅스 방화벽 활성화/비활성화

- CentOS 7, IPv4 기준

```
// firewalld 비활성화
$ systemctl disable firewalld
$ systemctl stop firewalld
```

```
// iptables 설치
$ yum install iptables-service
```

```
// service 명령어나 systemctl 명령어로 iptables 서비스를 활성화
$ service iptables start // CentOs 6
$ systemctl start iptables.service // CentOs 7
```

0 comments on commit c668f3a

Please sign in to comment.