반응형

안녕하세요 유똥입니다.

오늘은 리눅스 IPTABLES 설정 스크립트에 대해서 알아보겠습니다.

 

IPTABLES 설정에 앞서 IPTABLES에 대해서 간략하게 말씀드리겠습니다.

 

 IPTABLES란?

넷필터(netfilter) 프로젝트에서 개발했으며 광범위한 프로토콜 상채 추적, 패킷 애플리케이션 계층검사, 속도 제한, 필터링 정책을 명시하기 위한 강력한 매커니즘을 제공합니다.

IPTABLES 논리적인 3개의 사슬(Chains)으로 구성되어 있고, 각각 INPUT, OUTPUT, FORWARD 라고합니다.
※ 관리가자 정의하여 새로운 사슬로 생성하여 방화벽 정책을 구성할 수 있습니다.

Chain INPUT → 서버로 들어오는 정책
Chain FORWARD → Linux Server가 목적지가 아닌 패킷이 통과하는 Chain이다. (FORWARD Chain은 NAT(네트워크 공유) 기능 사용을 위해 사용된다.) 
Chain OUTPUT → 서버에서 나가는 기본 정책

 

 패킷 필터링 규칙(Packet Filtering Rule)에 대하여

들어 오는 패킷을 순서대로 정의된 규칙(Rule)들을 점검하고 처음 일치되는 규칙을 적용
하나의 필터링 규칙에 여러가지 조건으로 지정하면 모든 조건에 일치해야 규칙 적용
내장된 체인(Chain) 안을 모두 검사했지만 일치 항목이 없을 경우에는 체인의 기본 정책이 적용

 "사용자 정의 체인"의 경우 일치 항목이 없을 경우에는 제어권은 "사용자 정의 체인"이 호출되었던 체인으로 다시 돌아간다.

규칙 타겟(Rule Target) : iptables는 패킷이 규칙과 일치할 때 동작을 취하는 타겟을 지원한다.
내장 타겟
    ACCEPT : 패킷을 허용하는 옵션이다. (Allow)
    DROP : 패킷을 완전히 무시한다. (Deny)

확장 타겟
    REJECT : 패킷을 허용하지 않는다는 메세지를 보내면서 거부한다. 사슬 전체 정책 설정(-P)에서는 
    사용할 수 없 다. 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.
    
LOG : 시스템 로그 커널 장치로 연결한다. 패킷을 syslog에 기록한다.
    사용자 정의 체인 : 사용자가 정의하는 체인이다.

 

 사용방법

스크립트 실행
sh iptables.sh



적용 룰 확인
iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   76  5996 WHITELIST  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 STRING     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
   75  5668 SSH        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 MYSQL      tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3306
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            자신 IP      multiport dports 80,443
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    1   328 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 43 packets, 5304 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 DROP       tcp  --  *      lo      0.0.0.0/0            0.0.0.0/0            tcp dpt:22

Chain MYSQL (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      *      내 IP      0.0.0.0/0           
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain SSH (1 references)
 pkts bytes target     prot opt in     out     source               destination               
    0     0 ACCEPT     all  --  *      *      자신 IP      0.0.0.0/0           
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain STRING (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "pma_user" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "wget" ALGO name bm TO 65535

Chain WHITELIST (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      *       127.0.0.1            0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       자신 IP      0.0.0.0/0    

       

 

해당 설정 스크립트를 돌리게되면, 
SSH, MYSQL, WHITELIST  각각의 체인이 생성되며

서버 IP를 제외하고 SSH, MySQL 및 FTP 설정 관련하여 외부에서 접근이 불가합니다.

 

아래의 명령어를 이용하여 서버 원격 접속 하실 경우 아래와 같이 참조하여 설정하시면 됩니다.

iptables -I WHITELIST -s [ 원격 접속 IP ] -j ACCEPT

 

리눅스의 IPTABLES 방화벽 설정을 해놓으면, 외부에서 접근하는 이력들의 대하여 원격 차단을 할 수 있으며,

자신의 IP로만 원격이 가능하게도 설정이 가능합니다.

 

IPTABLES 방화벽 설정만으로도 현재 내가 사용하는 PC 및 Server가 외부로의 위협 [ 무작위 대입 공격 ]에서 보호를 받을수 있으십니다.

 

여기까지 완료되었으면 IPTABLES 설정 스크립트에 대하여 알아보았습니다.

 

도움이 되셨다면 구독 좋아요

궁금하신 내용이 있으시면 댓글 부탁드리겠습니다.

 

iptables.sh
0.00MB

반응형

'IT > Linux' 카테고리의 다른 글

Ubuntu 20.04 LTS 서버버전 설치  (0) 2021.12.25
log4j2 보안 문제 대응 방안  (0) 2021.12.20
IPTABLES 개념 및 명령어  (0) 2021.06.20
Nginx + PHP + MySQL 설치 스크립트  (0) 2021.06.18
아파치 + 톰캣 설치 스크립트  (0) 2021.06.18
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
});