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