CentOS 7의 방화벽 관리 데몬은 firewalld입니다. 설정은 firewall-cmd 명령어로 합니다.
* 방화벽 실행 여부 확인
firewall-cmd --state
실행 중이면 running, 실행 중이 아니면 not running을 출력합니다.
* 방화벽 다시 로드
firewall-cmd --reload
방화벽 설정 후 다시 로드해야 적용됩니다.
[ 서비스나 포트 추가/삭제하고 꼭 리로드해야 리스트에 뜨고 적용된다]
* 존(Zone) 출력하기
firewall-cmd --get-zones
존(zone) 목록을 출력합니다.
firewall-cmd --get-default-zone
기본 존을 출력합니다.
firewall-cmd --get-active-zones
활성화된 존을 출력합니다.
* 사용 가능한 서비스/포트 출력하기
firewall-cmd --list-all
사용 가능한 모든 서비스/포트 목록을 출력합니다.
firewall-cmd --zone=public --list-all
public 존에 속한 사용 가능한 모든 서비스/포트 목록을 출력합니다.
* 서비스/포트 추가/제거
firewall-cmd --permanent --zone=public --add-port=포트번호/tcp
firewall-cmd --add-service=ftp
ftp 서비스를 추가합니다.
firewall-cmd --remove-service=ftp
ftp 서비스를 제거합니다.
firewall-cmd --add-port=21/tcp
21 tcp 포트를 추가합니다.
firewall-cmd --remove-port=21/tcp
21 tcp 포트를 제거합니다.
* 특정 IP 허용 방법
firewall-cmd --permanent --add-source=IP주소
* 특정 포트에 대한 IP주소 허용
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="ip주소" port protocol="tcp" port="포트번호" accept"
* 특정 IP 차단 방법
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="IP주소" drop"
* 특정 포트에 대한 IP주소 차단
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="IP주소" port protocol="tcp" port="포트번호" drop"
* 정책 삭제 방법
firewall-cmd --permanent --remove-port=포트번호/tcp
--zone=<zone>
zone 옵션이 없으면 기본 존(default zone)에 추가 또는 삭제를 합니다. 다른 존에 작업하고 싶으면 zone 옵션을 추가합니다. 예를 들어 firewall-cmd --zone=trusted --add-service=ftp 는 trusted 존에 ftp 서비스를 추가합니다.
--permanent
시스템 재부팅 또는 방화벽 재시작 후에도 적용되도록 하려면 --permanent 옵션을 붙입니다.
firewall-cmd --permanent --add-service=ftp
3) 매치(match)
iptables에서 패킷을 처리할때 만족해야 하는 조건을 가리킨다. 즉, 이 조건을 만족시키는 패킷들만 규칙을 적용한다.
--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) : 특정 모듈과의 매치
4) 타겟(target)
iptables는 패킷이 규칙과 일치할 때 동작을 취하는 타겟을 지원한다.
-ACCEPT : 패킷을 받아들인다.
-DROP : 패킷을 버린다(패킷이 전송된 적이 없던 것처럼).
-REJECT : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송한다.
-LOG : 패킷을 syslog에 기록한다.
-RETURN : 호출 체인 내에서 패킷 처리를 계속한다.
REJECT는 서비스에 접속하려는 사용자의 액세스를 거부하고 connection refused라는 오류 메시지를 보여주는 반면 DROP은 말 그대로 telnet 사용자에게 어떠한 경고 메시지도 보여주지 않은 채 패킷을 드롭한다. 관리자의 재량껏 이러한 규칙을 사용할 수 있지만 사용자가 혼란스러워하며 계속해서 접속을 시도하는 것을 방지하려면 REJECT를 사용하는 것이 좋다.
5) 연결 추적(Connection Tracking)
iptables는 연결 추적(connection tracking)이라는 방법을 사용하여 내부 네트워크 상 서비스 연결 상태에 따라서 그 연결을 감시하고 제한할 수 있게 해준다. 연결 추적 방식은 연결 상태를 표에 저장하기 때문에, 다음과 같은 연결 상태에 따라서 시스템 관리자가 연결을 허용하거나 거부할 수 있다.
NEW : 새로운 연결을 요청하는 패킷, 예, HTTP 요청
ESTABLISHED : 기존 연결의 일부인 패킷
RELATED : 기존 연결에 속하지만 새로운 연결을 요청하는 패킷, 예를 들면 접속 포트가 20인 수동 FTP의 경우 전송 포트는 사용되지 않은 1024 이상의 어느 포트라도 사용 가능하다.
INVALID : 연결 추적표에서 어디 연결에도 속하지 않은 패킷
상태에 기반(stateful)한 iptables 연결 추적 기능은 어느 네트워크 프로토콜에서나 사용 가능하다. UDP와 같이 상태를 저장하지 않는 (stateless) 프로토콜에서도 사용할 수 있다.
6) 명령어(commond)
-A (--append) : 새로운 규칙을 추가한다.
-D (--delete) : 규칙을 삭제한다.
-C (--check) : 패킷을 테스트한다.
-R (--replace) : 새로운 규칙으로 교체한다.
-I (--insert) : 새로운 규칙을 삽입한다.
-L (--list) : 규칙을 출력한다.
-F (--flush) : chain으로부터 규칙을 모두 삭제한다.
-Z (--zero) : 모든 chain의 패킷과 바이트 카운터 값을 0으로 만든다.
-N (--new) : 새로운 chain을 만든다.
-X (--delete-chain) : chain을 삭제한다.
-P (--policy) : 기본정책을 변경한다.
'Linux OS > Redhat (CentOS & Rocky Linux)' 카테고리의 다른 글
CentOS 6 -> CentOS 7로 OS 업그레이드(repo 이용) (0) | 2023.03.09 |
---|---|
CentOS 6 EoS로 인한 yum repo 주소로 변경 (0) | 2023.03.09 |
CentOS 8, Rocky Linux 8 네트워크 명령어 nmcli (0) | 2023.03.09 |
Cent OS 기본적인 설치 및 설정 (0) | 2023.03.05 |
CentOS 언어셋 설정 (0) | 2022.11.16 |
댓글