-
[ubuntu] iptables 명령어 정리CI-CD/Ubuntu 2022. 6. 10. 23:48반응형
Iptables란?
iptables란 ip를 관리 하는 table이다. 그냥 방화벽을 설정하는 것이라고 보면 되는데, 방화벽 설정할 때 우리는 어떤 포트를 접근을 할 것인지, 어떤 포트는 막을 것인지 어디서 들어오는지 관리하고 접근 권한을 주는 것을 세부적으로 관리할 수 있게 도와준다. 요약하자면 아래로 요약할 수 있다.
- 리눅스 패킷 필터링 도구로 방화벽 구성이나 NAT에 사용함
- 패킷의 헤더를 보고 전체의 패킷을 인지 한다음 제어하는 역할을 함
- 패킷의 수락 차단 라우팅 포워딩을 도와주는 역할을 함
iptables 기본 명령어
# iptables [-t table] [action] [chain] [matches] [-j target]
table
- filter, nat, mangle, raw가있으며 주로 사용하는 필터링 규칙에는 filter테이블을 사용한다.
- 생략하게 되면 자동으로 filter로 적용된다.
action - 정책을 어떻게 할지 정하는 것 , 정책 추가, 삭제, 변경 등
- -A(—append) : 새로운 정책 추가
- -I(—insert) : 위치를 선택하여 정책을 삽입
- -D(—delete) : 정책을 삭제합니다.
- -R(—replace) : 정책을 교체합니다.
- -F(—flush) : 체인으로부터 모든 정책 삭제합니다.
- -P(—policy) : 기본 정책을 설정합니다.
- -L(—list) : 정책 목록을 확인합니다.
chain - 체인이란 패킷에 대한 정보를 라우팅을 해주는 방법을 정하는 것
- INPUT : 호스트(서버) 컴퓨터를 향한 모든 패킷(서버로 들어오는 패킷은 Input Chain을 통과)
- OUTPUT : 호스트(서버) 컴퓨터에서 발생하는 모든 패킷(서버에서 나가는 패킷을 output chain을 통과)
- FORWARD : 호스트(서버) 컴퓨터가 목적지가 아닌 모든 패킷, 즉 라우터로 사용되는 호스트 컴퓨터를 통과하는 패킷
matches - 출발지와 목적지를 매칭해주는 방법을 정하는 것
- -s(—source, —src) : 출발지 매칭, 도메인, IP 주소, 넷마스크 값을 이용하여 표기
- -d(—destination, —dst) : 목적지 매칭, 도메인, IP주소, 넷마스크 값을 이용하여 표기
- -p : 프로토콜과 매칭, TCP, UDP, ICMP와 같은 이름을 사용하고 대소문자는 구분하지 않음
- -i(—in-interface) : 입력 인터페이스와 매칭
- -o(—out-interface) : 출력 인터페이스와 매칭
- -j(—jump) : 매치되는 패킷을 어떻게 처리할지 지정
- -f(—fragment) : 분절된 패킷
- —sport : 송신지 포트와 매칭
- —dport : 수신지 포트와 매칭
-j target - 패킷이 규칙과 일치하르 대 취하는 동작을 지정합니다.
ACCEPT : 패킷을 허용합니다.
DROP : 패킷을 버립니다.
REJECT : 패킷을 버리고 이와 동시에 적절한 응답 패킷을 전송합니다.
LOG : 패킷을 syslog에 기록합니다.
RETURN : 호출 체인 내에서 패킷 처리를 계속한다.
iptables 설치
1. yum을 이용해 설치해 줍니다. # yum install -y iptables-services 2. iptables를 실행해 줌 # systemctl start iptables 3. 재부팅 시에도 자동으로 실행되도록 서비스를 등록 # systemctl enable iptables
iptables 데몬 제어 명령어
1. 실행 # systemctl start iptables # service iptables start 2. 중지 # systemctl stop iptables # service iptables stop 3. 재시작 # systemctl restart iptables # service iptables restart 4. 상태 확인 # systemctl status iptables # service iptables status 5. 정책 저장 # service iptables save
Linux 내부에 구동중인 포트 확인
포트 검색하기 netstat -nap 특정 포트 검색하기 netstat -nap | grep :80
PREROUTING 내용 확인
포트 모든 내용 확인 sudo iptables -nL -t nat 포트 PREROUTING 번호로 확인 sudo iptables -nL PREROUTING -t nat --line-numbers 포트 내용 삭제 sudo iptables -t nat -D PREROUTING {number}
포트 허용(ACCEPT)
# sudo iptables -nL 포트 22, 80, 443, 53, 25 허용 # sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT # sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT INPUT chain 기본 정책 차단으로 변경 # sudo iptables -p INPUT DROP 서비스 저장 재시작 # sudo service iptables save # sudo service iptables restart 정책 리스트 확인 # sudo iptables - nL Chain INPUT (policy DROP) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
포트 차단(DROP)
INPUT chain 기본 정책 허용으로 변경 # iptables -P INPUT ACCEPT 설정한 정책을 모두 삭제 합니다. # iptables -F 포트 80, 443 차단 # iptables -A INPUT -p tcp --dport 80 -j DROP # iptables -A INPUT -p tcp --dport 443 -j DROP # iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
정책 삭제(-D)
정책 등록 하는 법 -A 옵션
정책 삭제 하는 법 -D 옵션
# 정책 조회 포트 80, 443 허용 상태 $ iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination # 등록한 정책 삭제 $ iptables -D INPUT -p tcp --dport 80 -j DROP $ iptables -D INPUT -p tcp --dport 443 -j DROP $ service iptables save $ service iptables restart $ iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
반응형'CI-CD > Ubuntu' 카테고리의 다른 글
[Ubuntu] shell script 작성법 (0) 2022.06.15 [Ubuntu] ssh로 외부 원격에 명령어 실행하기 (0) 2022.06.15 [Ubuntu] SCP(secure copy)를 이용하여 파일 전송하기 (0) 2022.06.08 [Ubuntu] mysql 명령어 정리 (0) 2022.05.21 [Ubuntu]iptables 특정 포트 열기, 닫기 (0) 2022.05.07