79 lines
2.6 KiB
Markdown
79 lines
2.6 KiB
Markdown
#### iptables VS ufw VS firewalld
|
|
|
|
### ufw
|
|
리눅스 방화벽 중 가장 많이 사용되는게 iptables 인데 iptables 의 작업을 간편화 해 주는 소프트웨어가 UFW(Uncomplicated Fore Wall = 복잡하지 않은 방화벽) 이다.
|
|
|
|
### iptables
|
|
리눅스에서 가장 많이 사용하는 방화벽이다.
|
|
|
|
iptables 는 커널상에서 netfilter 패킷필터링 기능을 사용자가 제어할 수 있다.
|
|
|
|
패킷필터링이란 수신된 패킷의 헤더 정보를 보고 패킷을 폐기할지 수신할지를 결정하는 것을 말한다.
|
|
|
|
헤더에 필터링할 정보인 출발지 ip:port / 도착지 ip:port 등 프로토콜 옵션을 가지며 각각의 전송 데이터가 들어간다.
|
|
|
|
특정 조건을 가지고 있는 패킷에 대해 허용(ACCEPT) 및 차단(DROP)등을 지정할 수 있다.
|
|
|
|
```bash
|
|
# iptables 초기화
|
|
iptables -F
|
|
|
|
|
|
# 설정 내용 출력
|
|
iptables -nL
|
|
|
|
|
|
# TCP port 22 를 열어 ssh 접속을 가능하도록 설정
|
|
iptables -A INPUT -p tcp -m tcp --drpot 22 -j ACCEPT
|
|
|
|
|
|
# localhost 접속 허용
|
|
iptables -A INPUT -i lo -j ACCEPT
|
|
|
|
|
|
# DNS TCP 53 / UDP 53
|
|
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
|
|
iptables -A INPUT -p udp --dport 53 -j ACCEPT
|
|
|
|
|
|
# 80 443 포트 개방
|
|
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
|
|
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
|
|
|
|
|
|
# iptables 는 등록 순서에 영향을 받는다. 먼저 등록한 정책이 우선순위가 높다.
|
|
# 나중에 추가로 추가할 경우 순서를 설정해서 추가할 수 있다. 1번으로 등록하는 예시이다.
|
|
# -A 옵션 대신 -I 옵션을 쓰고 번호를 지정해 주면 된다.
|
|
iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
|
|
|
|
|
|
# ip 차단
|
|
iptables -I INPUT -s 111.222.33.44 -j DROP
|
|
|
|
|
|
# 포워딩
|
|
iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 8080
|
|
|
|
|
|
# 확인
|
|
iptables -t nat -L
|
|
|
|
|
|
# 제거
|
|
iptables -D INPUT 1 -p tcp --dport 443 -j ACCEPT
|
|
|
|
|
|
# 변경후 저장을 해 주어야 os 재시작시 동일한 설정이 적용된다.
|
|
netfilter-persistent save
|
|
netfilter-persistent reload
|
|
```
|
|
|
|
|
|
### firewalld
|
|
CentOS7 부터 iptables 를 대체하여 새롭게 선보인 패킷 필터링 방화벽이다.
|
|
|
|
firewalld도 netfilter 모듈기능을 둔 방화벽으로 설정에 대한 변경을 언제든지 할 수 있고,
|
|
|
|
변경 사항을 저장할 필요 없이 즉시 적용하기 때문에 iptables 가 정적(static)인 반면 firewalld는 동적(dynamic) 방화벽인 점이 차이점이다.
|
|
|
|
iptables가 INPUT OUTPUT FORWARD 같은 체인을 이용해 방화벽을 설정하지만 firewalld 는 네트워크 인터페이스에 기초한 zone을 통해 설정을 적용한다. |