centos7 iptables 설정 firewalld 비활성화

CentOS7에서 iptables 설정하는 방법

centos7에서는 기본적으로 Firewalld가 실행되어 있기 때문에 이 서비스를 중지 시켜줘야 iptables 사용이 정상적으로 가능합니다.
firewalld는 룰 변경시 서비스 중지 없이 설정 변경이 가능합니다.

하지만 출발지 목적지의 설정이 명확치 않아 중급자 이상이라면 iptables 사용을 권장합니다.

Firewall 데몬 끄기

firewalld 서비스 확인

# systemctl stop firewalld
# systemctl mask firewalld

firewalld 서비스를 stop 해주고, 실행되지 않도록 mask 설정을 해주세요

firewalld 마스크 확인

# systemctl status firewalld

- 데몬 상태 확인

firewalld 서비스가 정상적으로 stop 되었는지 데몬을 확인해 줍니다.
- 정상적으로 죽어있습니다.

Install Iptables Service in CentOS/RHEL 7

처음에는 iptables 서비스가 설치되어 있지 않기 때문에 iptables command not found 명령어가 나오며 명령어가 실행되지 않을 수 있습니다. 먼저 iptables-services 서비스를 설치를 진행해 줍니다.

# yum install iptables-services -y

yum 명령어가 정상적으로 실행되지 않는 분들은 네트워크가 정상적이지 않거나 레포지토리가 정상적이지 않는 경우가 대다수 입니다. 레포지토리가 문제일 경우 아래의 글을 참고하셔서 레포지토리를 재설정 해주세요

[IT/리눅스(Linux)] - 리눅스 레포지토리(repository) 추가해서 yum 사용하는 방법

리눅스 레포지토리(repository) 추가해서 yum 사용하는 방법

yum 명령어가 사용이 불가한 이유는 여러가지가 있습니다. 네트워크가 안정적이지 못하거나 yum 서비스가 없거나 yum이 사용할 repository가 제대로 설정되어 있지 않거나 하는 이유들 입니다. 그 중

coconuts.tistory.com

iptables 서비스 활성화

iptables 서비스 활성화

iptables 서비스를 부팅 시에도 실행될 수 있게 enable 해주고 start로 실행해 줍니다.

# systemctl enable iptables
# systemctl start iptables

# systemctl status iptables

- iptables 데몬 상태 확인

iptables 데몬 상태 확인

- 정상적으로 활성화 되어있습니다

# iptables -L

- 기본 룰 확인

iptables의 룰을 처음 보시면 뭐가 뭔지 잘 모르시는게 당연합니다. 각 항목들이 어떤 것을 의미하는지 알려드리겠습니다.

Chain INPUT : 서버로 들어오는 기본 정책
Chain FORWARD : 서버에서 forwarding 기본 정책
Chain OUTPUT : 서버에서 나가는 기본 정책

명령어를 통한 기본 정책 변경

규칙에 명시되지 않은 패킷에 대한 처리를 어떻게 할 것 인지에 대한 기본정책을 수립합니다.

# iptables -P INPUT REJECT  // INPUT 체인에 대한 기본 정책을 REJECT로 변경
# iptables -P INPUT ACCEPT  // OUTPUT 체인에 대한 기본정책을 ACCEPT로 변경

# iptables -P FORWAD DROP  // FORWAD 체인에 대한 기본정책을 DROP으로 변경


체인에 정의된 모든 규칙 삭제

# iptables -F
# iptables -F INPUT // INPUT 체인의 모든 규칙 삭제

# iptables -F OUTPUT // OUTPUT 체인의 모든 규칙 삭제

# iptables -F FORWAD // FORWAD 체인의 모든 규칙 삭제

[저장]

# service iptables save

[재시작]

# service iptables stop
# service iptables start
or
# service iptables restart

iptables rule settings

# cat /etc/sysconfig/iptables

- 룰 설정파일 확인

config를 수정해서 사용할 경우 command로 등록한 것과 혼용해서 사용할 수 없습니다. 만약 iptables save 를하게 되면 파일로 작성한 내용은 모두 사라지게 됩니다.

모든 방화벽은 순차으로 정책이 적용 됩니다.
등록 순서에 따라서 먼저 등록한 부분이 유효하기 때문에 모든 입출력 패킷에 대해 거부하는 설정이 우선수위가 먼저 등록되면 그 이후에 포트를 열어주는 설정을 하여도 효과가 없습니다.
따라서 허용하는 정책을 먼저 정의한 다음 거부하는 정책을 설정해야 합니다.

iptables 정책 항목 설명

ACCEPT : 패킷을 받아들인다.

DROP : 패킷을 버린다(패킷이 전송된 적이 없던 것처럼).

REJECT : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.

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

RETURN : 호출 체인 내에서 패킷 처리를 계속한다.

Reject의 경우 사용자 단에서는 connection refused라는 오류 메시지가 나오게 됩니다.

--source (-s) : 출발지 IP주소나 네트워크와의 매칭

--destination (-d) : 목적지 ip주소나 네트워크와의 매칭

--protocol (-p) : 특정 프로토콜과의 매칭

--in-interface (i) : 입력 인테페이스

--out-interface (-o) : 출력 인터페이스

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

--string : 애플리케이션 계층 데이터 바이트 순서와의 매칭

--comment : 커널 메모리 내의 규칙과 연계되는 최대 256바이트 주석

--syn (-y) : SYN 패킷을 허용하지 않는다.

--fragment (-f) : 두 번째 이후의 조각에 대해서 규칙을 명시한다.

--table (-t) : 처리될 테이블

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

--match (-m) : 특정 모듈과의 매치

특정 IP 또는 IP블럭을 거부하고자 할 때

-A INPUT -s 177.91.82.23 -j DROP

-A INPUT -s 177.91.82.0/24 -j DROP

특정 포는 특정 IP 또는 IP블럭에게만 허가하기

-A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT


일반적으로 서버는 아래와 같이 룰을 많이 세우게 됩니다.

# iptables -A INPUT -p TCP –dport 특정포트 -m state –state NEW,ESTABLISHED -j ACCEPT

- 기본 설정 룰

# systemctl restart iptables

- 룰 수정후에 재시작으로 적용을 해주어야 합니다.

댓글

Designed by JB FACTORY