본문 바로가기
OS/Linux

리눅스 iptables 명령어 방화벽 설정방법

by 나비와꽃기린 2020. 9. 10.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

방화벽설정

서버 보안을 위해서 방화벽을 설정한다.

우분투 서버는 ufw라는 방화벽 설정방법을 제공하지만 이 ufw는 리눅스의 기본 방화벽인 iptables의 규칙을 만들어주는 역할에 불과하다. ufw를 사용하기 보다는 iptables를 직접 다루는것이 더 강력하다.

 

기본동작

패킷에 대한 동작은 위에서부터 차례대로 각 규칙에 대해 검사.

그 규칙과 일치하는 패킷에 대해 타겟에 지정한 ACCEPT, DROP 등을 수행.

규칙이 일치하고 작업이 수행되면 그 패킷은 해당 규칙의 결과 에따라 처리하고 체인에서 추가 규칙을 무시.

패킷이 모든 규칙과 매치되지 않다면 기본정책이 수행됨.

일반적으로 기본정책은 모든 패킷에 대해 DROP을 설정하고, 특별히 지정된 포트와 ip에 대해서는 ACCEPT 작업을 수행하게 한다.

 

참고

CentOs 7.X 부터는 방화벽 명령어가 Iptables에서 firewall로 변경되었다.

따라서 OS 버전을 확인하여 설정하도록 한다.

* OS 버전 확인 명령어 : $cat /etc/*release*

 

설치방법

$sudo apt install iptables

 

iptables 옵션

-P 기본 정책을 설정하는 옵션, 세가지 기본 체인 INPUT,FORWARD, OUTPUT을 모두 허용함(ACCEPT)로 초기화 한다. $sudo iptable -P INPUT ACCEPT
$sudo iptable -P FORWARD ACCEPT
$sudo iptable -P OUTPUT ACCEPT
-Z 모든 체인값을 0으로 만듬  
-F 체인규칙 모두 삭제  
-X 세가지 기본체인  INPUT,FORWARD, OUTPUT을 제외한 모든 체인 삭제  
-S iptables에 설정된 내용을 출력  
-L INPUT 체인에 규칙이 생성된 것이 확인됨  

iptables 출력

기본출력

$sudo iptables -L 

 

상세한 네트워크 정보까지 모두 출력

$sudo iptables -nL

 

룰셋의 적용 순서까지 확인

$sudo iptables -nL --line-numbers

 

적용된 룰셋을 통한 인입 패킷 및 bytes 출력

$sudo iptables -L -v

iptables 설정 저장

기본저장 방법

$sudo service iptables save

 

설정을 파일로 저장

$sudo -s

$iptables-save > /etc/iptables.rules

 

iptables 재시작

$sudo service iptables stop

$sudo service iptables start

 

 

체인별 설정

INPUT 체인

localhost의 인터페이스에 들어오는 모든 패킷을 허용하는 규칙을 생성.

서버의 서비스를 위해 서버의 S/W와 localhost 어댑터와의 통신은 모두 허용하는것이 일반적인 설정이다.

 

기본설명 기능 체인 출발지ip 목적지ip 프로토콜 포트 매칭 동작
iptables -A(추가) INPUT -s -d -p -dport -j ACCEPT
-D(삭제) OUTPUT tcp 0~65535 DROP
-I(삽입) FORWARD udp,icmp REJECT

 

규칙생성예

1) iptables -A INPUT -p tcp --dport 80 -j ACCEPT

외부에서 모든 목적지의 tcp/80 포트로의 접근을 허용

 

2) iptables -A INPUT -d 111.11.11.11 -p tcp --dport 22 -j DROP

외부 모든 출발지에서 내부 111.11.11.11 목적지 서버의 tcp/80 포트로의 접근을 차단

 

3) iptables -A INPUT -s 111.11.11.111 -d 222.22.22.22 -p tcp --dport 53 -j DROP

111.11.11.111 출발지에서 내부 222.22.22.22 목적지 서버의 tcp/53포트로의 접근을 허용

 

4) iptables -I INPUT 1 -s 111.11.11.11 -p tcp --dport 2000 -j ACCEPT

INPUT 체인의 1번째 위치에 출발지 111.11.11.11에서 내부 모든 목적지의 tcp/2000을 오픈하는 규칙

 

5) iptables -A OUTPUT -s 111.11.11.11 -d 222.22.22.22 -p udp --dport 514 -j ACCEPT

111.11.11.11 출발지에서 222.22.22.22 로 514 udp접근을 허용