주요정보통신기반시설가이드/LINUX 취약점 점검
[U-18(상)] 2. 파일 및 디렉토리 관리 > 2.14 접속 IP 및 포트 제한
JITSU
2025. 4. 29. 22:19
작업 환경
- VMware Workstation Pro (17.6.2 ver)
- Server
- Rocky_Linux(8.10 ver) : NAT
U-17 (상) | 2. 파일 및 디렉토리 관리 > 2.14 접속 IP 및 포트 제한 |
취약점 개요 | |
점검 내용 | 허용할 호스트에 대한 접속 IP 주소 제한 및 포트 제한 설정 여부 점검 |
점검 목적 | 허용한 호스트만 서비스를 사용하게 하여 서비스 취약점을 이용한 외부자 공격을 방지하기 위함 |
보안 위협 | 허용할 호스트에 대한 IP 및 포트제한이 적용되지 않은 경우, Telnet, FTP같은 보안에 취약한 네트워크 서비스를 통하여 불법적인 접근 및 시스템 침해 사고가 발생할 수 있음 |
판단 기준 | 양호 : 접속을 허용할 특정 호스트에 대한 IP 주소 및 포트 제한을 설정한 경우 취약 : 접속을 허용할 특정 호스트에 대한 IP 주소 및 포트 제한을 설정하지 않 은 경우 |
참고 | ※ 접속 IP 및 포트제한 애플리케이션 종류 예시 TCP Wrapper : 네트워크 서비스에 관련한 트래픽을 제어하고 모니터링 할 수 있는 UNIX 기반의 방화벽 툴 IPtables: 리눅스 커널 방화벽이 제공하는 테이블들과 그것을 저장하는 체인, 규칙들을 구성할 수 있게 해주는 응용프로그램 IPFilter : 유닉스 계열에서 사용하는 공개형 방화벽 프로그램으로써 Packet Filter로 시스템 및 네트워크 보안에 아주 강력한 기능을 보유한 프로그램 |
파일 확인법
1. TCP Warrper 사용할 경우
All deny 적용 확인 및 접근 허용 IP 적절성 확인
cat /etc/hosts.deny
cat /etc/hosts.allow
2. IPtables 사용할 경우(Linux)
iptables -L
3. IPfilter 사용할 경우(SOLARIS) - 생략
LINUX
1. TCP Wrapper 사용하는 경우
- Step 1) vi 편집기를 이용하여 "/etc/hosts.deny" 파일 열기 (해당 파일이 없는 경우 새로 생성)
- Step 2) 아래와 같이 수정 또는 ,신규 삽입 (ALL Deny 설정)
- (수정 전) 설정 없음
- (수정 후) ALL:ALL
- Step 3) vi 편집기를 이용하여 "/etc/hosts.allow" 파일 열기 (해당 파일이 없을 경우 생성)
- (수정 전) 설정 없음
- (수정 후) sshd : 192.168.0.148, 192.168.0.6
- (다른 서비스도 동일한 방식으로 설정
2. IPtables 사용하는 경우
- Step 1) iptables 명령어를 통해 접속할 IP 및 포트 정책 추가
- SSH 서비스 제한(예시)
- iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
- iptables -A INPUT -p tcp --dport 22 -j DROP
- SSH 서비스 제한(예시)
- Step 2) iptables 설정 저장
- /etc/rc.d/init.d/iptables save
참고
- TCP Wrapper 접근제어 가능 서비스
- SYSTAT, FINGER, FTP, TELNET, RLOGIN, RSH, TALK, EXEC, TFTP, SSH
- TCP Wrapper는 다음 두 파일에 의해 접근이 제어됨
- /etc/hosts.deny : 시스템 접근을 제한할 IP 설정
- /etc/hosts.allow : 시스템 접근을 허용할 IP 설정
📢 IPtables 란
→ 리눅스에서 네트워크 패킷을 필터링하거나 제어하기 위해 사용하는 방화벽 도구
용어 정의
용어 | 기능 |
체인(Chain) | 패킷 흐름 경로(INPUT, OUTPUT, FORWARD) |
Rule | 특정 조건에 대해 허용/차단 등을 수행 |
Target | 조치(ACCEPT, DROP, REJECT 등) |
Table | 어떤 역할을 하는 규칙 모임(filter, nat, mangle, raw) |
1. 체인
체인(Chain) | 기능 |
INPUT | 이 시스템으로 들어오는 트래픽 제어 |
OUTPUT | 이 시스템에서 나가는 트래픽 제어 |
FORWARD | 이 시스템을 거쳐가는 트래픽 제어 |
2. Rule
Rule | 기능 |
-A (--append) | 규칙 추가 |
-P (--policy) | 기본 정책을 변경 |
-F (--flush) | chain으로부터 규칙을 모두 삭제 |
-D (--delete) | 규칙 삭제 |
-C (--check) | 패킷을 테스트 |
-R (--replace) | 새로운 규칙으로 교체한다 |
-I (--insert) | 새로운 규칙을 삽입 |
-L (--list) | 규칙 출력 |
-Z (--zero) | 모든 chain의 패킷과 바이트 카운터 값을 0으로 만듦 |
-N (--new) | 새로운 chain을 만듦 |
-X (--delete-chain) | chain을 삭제 |
3. 장치 및 상태 옵션
옵션 | 기능 |
-s (--source) | 출발지 IP주소/네트워크 |
-d (--destination) | 목적지 IP주소/네트워크 |
-p (--protocol) | 프로토콜 |
-m (--match) | --state <연결상태> <연결상태 목록> ESTABLISHED : 연결이 되어있는 패킷 NEW : 새로운 연결을 요청하는 패킷 RELATED : 기존 연결 외에 다른 새로운 연결요청 |INVALID : 어디에도 속하지 않는 패킷 |
-i (--in-interface) | 입력장치(내부장치) |
-i (--out-interface) | 출력장치(외부장치) |
-m tcp | --dport --sport |
-j (--jump) | 규칙 적용 ACCEPT : 허가 REJECT : 반송 DROP : 폐기 LOG : 로그기록 RETURN : 룰 연계 |
IPtables 적용 순서
먼저 적용된 것이 무조건 우선된다!
IPtables 예
# SSH 연결 허용 정책
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
- -A : 규칙추가
- INPUT : 이 시스템으로 들어오는 트래픽 제어
- -p tcp : 프로토콜 tcp
- --dport 22 : 도착지포트 22(SSH)
- -m state --state NEW,ESTABLISHED : 새로운 연결을 요청하거나, 연결이 되어있는 패킷
- -j ACCEPT : 허용 규칙 적용
