Server/Cent OS

Linux 방화벽 - iptable / firewall

heyoon2j 2019. 7. 8. 04:59

■ Linux 방화벽 - iptable / firewall

ㆍiptable

- 위에서부터 차례로 각 규칙에 대해 검사한다.

- CentOS 6 버전에서 사용된다.

 => 파일 위치: /etc/sysconfig/iptables 

 => 참고 [1]

 

1) Chain

 ① INPUT: 외부에서 호스트 컴퓨터로 들어오는 패킷

 ② OUTPUT: 호스트 컴퓨터에서 외부 나가는 패킷

 ③ FORWARD: Server가 목적지는 아니고 통과하는 지점인 패킷

 

2) iptables 명령어 (Ex> iptables -L)

 ① -A (--append): 새로운 규칙을 추가(맨 아래에 추가)

 ② -I (--insert): 새로운 규칙 삽입(맨 앞쪽에 삽입)

 ③ -R (--replace): 새로운 규칙으로 교체

 ④ -D (--delete): 규칙을 삭제

 ⑤ -C (--check): 패킷을 테스트 

 ⑥ -L (--list): 적용되어 있는 목록을 출력.

 ⑦ -N (--new): 새로운 chain을 만든다.

 ⑧ -X (--delete-chain): chain을 삭제한다.

 ⑨ -P (--policy): 정책을 변경한다(Target(ACCEPT 등)으로 변경 가능, 보통은 Policy를 DROP으로 설정하고 규칙에서 ACCEPT를 해준다. )

 ⑩ -F (--flush): chain으로부터 모든 규칙을 삭제

 

3) 제어 옵션

 ① -s (--source): 출발지 주소

 ② -d (--destination): 목적지 주소

 ③ --sport: 출발지 포트번호

 ④ --dport: 목적지 포트번호

 ⑤ -p (--protocol): 프로토콜(tcp, udp 등)

 ⑥ -i (--in-interface): 패킷이 들어오는 네트워크 인터페이스

 ⑦ -o (--out-interface): 패킷이 나가는 네트워크 인터페이스

 ⑧ --state: 연결 상태와의 매칭

 ⑨ -m (--match): 특정 모듈과의 매치(보통 state와 쓰이면, tcp, limit 등도 있다.)

 ⑩ -j (--jump): 규칙에 맞는 패킷을 어떻게 처리할 것인가(Target)를 명시한다.

   Ex> iptables -A INPUT -m state --state ESTABLISHED, RELATED -m tcp -p tcp --dport 22 -j ACCEPT

     => INPUT 패킷에 대해 상태가 ESTABLISHED이거나 RELATED이고, TCP 패킷에 Destination 포트가 22번인 경우 패킷을 허용한다는 의미

 

4) Target

 ① ACCEPT: 패킷을 받아들인다.

 ② DROP: 패킷을 버린다(REJECT와 다르게 전송된 것이 없던 것처럼 아무런 응답을 하지 않는다.)

 ④ REJECT: 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다. REJECT 시 기본적으로 송신자에게 icmp-port-unreachable 이 전달되며 --rejct-with 옵션 뒤에 송신할 ICMP 에러 유형을 지정할 수 있으며 icmp-net-unreachable, icmp-host-unreachable,icmp-proto-unreachable, icmp-net-prohibited 등이 있다.

 ④ LOG: 패킷을 syslog에 기록한다.

  => https://www.lesstif.com/pages/viewpage.action?pageId=18219518

 

 

ㆍfirewall

- 방화벽 관리 데몬

- CentOS 7부터는 iptable 대신 firewall을 사용한다.

 

○ 명령어 정리

 ① #firewall-cmd --state: 방화벽 실행 여부 확인

 ② #firewall-cmd --reload: 방화벽 다시 로드, 설정 후 바로 적용

 

 ③ #firewall-cmd --get-zones: 모든 Zone 리스트 출력

 ④ #firewall-cmd --get-default-zone: 기본 Zone 출력

 ⑤ #firewall-cmd --get-active-zone: 현재 활성화된 Zone 출력

 ⑥ #firewall-cmd --list-all-zones: 모든 Zone 설정 정보 출력

 ⑦ #firewall-cmd --list-all: 현재 활성화된 Zone 설정 정보 출력

 ⑧ #firewall-cmd --set-default-zone=[Zone name]: 해당 Zone으로 기본 Zone 변경

 ⑨ #firewall-cmd --permanent --new-zone=[Zone name]: Zone 생성 

 

 ⑩ #firewall-cmd --add-service=[Service name]: 해당 Service 추가 

   => firewall-cmd --add-service=http

 ⑪ #firewall-cmd --remove-service=[Service name]: 해당 Service를 삭제

 ⑫ #firewall-cmd --add-port=[Port Number/Protocol]: 해당 Port를 추가

   => firewall-cmd --add-port=80/tcp

 ⑬ #firewall-cmd --remove-port=[Port Number/Protocol]: 해당 Port를 삭제

 

 ⑭ #firewall-cmd --permanent --add-service=ftp: --permanent를 사용해야 시스템 재부팅 또는 방화벽 재시작 후에도 지속적으로 적용시키니다. permanent를 사용하지 않으면 일회성으로 사용된다.

 ⑮ #firewall-cmd --zone=[Zone name] --add-service=ftp: --zone, 해당 Zone에 Service를 추가

 

 

 

참고

[1] https://webdir.tistory.com/170

 

 

'Server > Cent OS' 카테고리의 다른 글

Linux Server - DHCP(설치 & 설정)  (0) 2019.07.08
Linux 패키지 설치 - YUM & Source  (0) 2019.07.08
Linux 네트워크 카드 추가  (0) 2019.07.08
Linux 디스크 관리 - Quota  (0) 2019.07.08
Linux 디스크 관리  (0) 2019.07.05