Obsidian/Recognition/Programing/Linux/Ubuntu/방화벽 패키지 정리.md

2.6 KiB

iptables VS ufw VS firewalld

ufw

리눅스 방화벽 중 가장 많이 사용되는게 iptables 인데 iptables 의 작업을 간편화 해 주는 소프트웨어가 UFW(Uncomplicated Fore Wall = 복잡하지 않은 방화벽) 이다.

iptables

리눅스에서 가장 많이 사용하는 방화벽이다.

iptables 는 커널상에서 netfilter 패킷필터링 기능을 사용자가 제어할 수 있다.

패킷필터링이란 수신된 패킷의 헤더 정보를 보고 패킷을 폐기할지 수신할지를 결정하는 것을 말한다.

헤더에 필터링할 정보인 출발지 ip:port / 도착지 ip:port 등 프로토콜 옵션을 가지며 각각의 전송 데이터가 들어간다.

특정 조건을 가지고 있는 패킷에 대해 허용(ACCEPT) 및 차단(DROP)등을 지정할 수 있다.

# 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을 통해 설정을 적용한다.