목적지가 방화벽 => input에 설정
출발지가 방화벽 => output설정
iptables 명령어 사용법
ptables [-t table명] 명령어 [매칭옵션] [타겟]
1. iptables [ table 구문 ]
# iptables ( -t filter ) -D INPUT -p tcp --dport 80 -j DROP
# iptables -t nat -D INPUT -p tcp --dport 80 -j DROP
# iptables -t mangle -D INPUT -p tcp --dport 80 -j DROP
# iptables -A INPUT [-p tcp] [-s 주소] [multiport] [--sport 1024:]
[-d 주소] [multiport] [--dport 21]
[-m state]
[--state NEW,ESTABLISHED,RELATED]
-j ACCEPT
iptables 명령어
-A, --apend
룰의 제일 마지막에 추가 , 체인에 새로운 룰 추가하기
# iptables -A INPUT -p tcp --dport 80 -j DROP
-D ,--delete
<방법1>
# iptables -A INPUT -p tcp --dport 80 -j DROP
# iptables -D INPUT -p tcp --dport 80 -j DROP => 삭제
<방법2>
# iptables -L --line
# iptables -D INPUT 1
-I , --insert
룰의 제일 앞에 추가
# iptables -I INPUT -p tcp --dport 80 -j DROP
-L , --list
chain의 모든 룰 목록을 보여준다.
-모든 IP및 포트번호에 대해 reverse lookup 실행 0
( IP->호스트이름, 포트번호->포트이름 변환 )
# iptables -L INPUT
- 모든 IP및 포트번호에 대해 reverse lookup 실행 X
# iptables -L INPUT -n
- 해당 룰에 매칭된 패킷의 개수 와 바이트 출력
# iptables -L INPUT -v
-F , --flush
- 모든 룰을 삭제한다.
# iptables ( -t filter ) -F
# iptables -t nat -F
# iptables -t mangle -F
- 일부 chain의 룰만 삭제한다.
# iptables ( -t filter ) -F INPUT
※ -P 로 지정한 기본정책은 변경되지 않는다.
-N , --new-chain
새로운 chain을 생성한다.
# iptables -N TEST
# iptables -A TEST -p tcp --dport 80 -j DROP
# iptables -A TEST -p tcp --dport 21 -j DROP
# iptables -A INPUT -j TEST
# iptables -A OUTPUT -j TEST
# iptables -A FORWARD -j TEST
-X , --delete-chain
존재하는 chain을 삭제한다.
# iptables -N TEST
# iptables -L
# iptables -X TEST
-P, --policy
INPUT 테이블에 있는 모든 룰에 매칭 되지 않을 경우에는 기본정책인 -P 에서 지정된 정책이 적용된다.
# iptables -P INPUT -j DROP
새롭게 생성한 chain에는 기본정책(-P)을 설정할수 없다.
iptables 매칭 옵션
-p, --protocol
# iptables -A INPUT -p [ tcp / udp / icmp ]
# iptables -A INPUT -p ! tcp
- /etc/protocols 정의된 tcp(6), udp(17), icmp(1)와 같이 number로 지정해도 된다.
# iptables -A INPUT -p 6
-s, --source
- S 출발지 ip 주소
- s를 지정하지 않은 경우 모든 IP를 의미한다.
# iptables -A INPUT -s 0/0
# iptables -A INPUT -s any/0
# iptables -A INPUT -s anywhere
# iptables -A INPUT -s 0.0.0.0/0.0.0.0
- 특정 네트워크 지정하기
# iptables -A INPUT -s 211.175.185.0/24
# iptables -A INPUT -s 211.175.185.1/32
-d, --destination
-d 목적지 ip 주소
- d를 지정하지 않은 경우 모든 IP를 의미한다.
# iptables -A INPUT -d 211.175.185.1
# iptables -A INPUT -s 1.1.1.1 -d 2.2.2.2
-i, -o
- 특정 인터페이스에 규칙을 적용한다.
. INPUT chain 은 -o 사용할수 없다.
. OUTPUT chain은 -i 사용할수 없다.
- 인터페이스 지정
. 1개의 인터페이스 : 인터페이스 지정 할 필요 없다.
. 다중의 인터페이스 : 인터페이스 지정 없으면 모든 인 터페이스에 룰이 적용된다.
# iptables -A INPUT -i eth0
--sport, --dport
- 표현방법
1024:65535 = 1024 ~ 65535
1024: = 1024 ~ 65535
:1024 = 0 ~ 1024
! 1024:65535 = 0 ~ 1023
-j (--jump)
-j: 매치되는 패킷을 어떻게 처리할지 지정 (--jump)
-j ACCEPT / -j DROP
# iptables -A INPUT -i eth0 -p TCP -s 1.1.1.1 --sport 1024:65535 --dport 161
iptable - m 옵션
-m match extended match (may load extension)
iptables에서 확장 모듈을 활성화 하기 위해 사용하는 플래그
state 모듈 4가지 (new, established, related ,invaild)
-m state 옵션
연결상태에 따른 패킷을 것을 다루는데, 아래의 3가지 형태의 연결상태에 따른 패킷 확인하여 패킷 필터링 합니다.
new : 이전에 없던 패킷의 새로운 첫 연결 요청이 client pc로 부터 들어오는 패킷
established : new 상태를 거친 이후의 패킷 / 새로운 연결 요청에 관한 그 후 의 패킷들이 오고가는 상태를 의미related : 새로운 연결 요청이지만, 기존의 연결과 관련된 패킷을 의미
invaild : 이전 상태 중에 어떠한 것도 적용되지 않으며 패킷의 상태를 invaild로 표시( 비정상적인 접근)
iptables -[opiton][체인이름] -m state --state[연결상태] -p [프로토콜] -j [정책]
정책 => accept/drop
- 방화벽 정보 추력하기
# iptables -nL -- 숫자 형태로 화면에 출력한다.
# iptables -L --line-numbers -- rule의 순서를 확인할 수 있다.
# iptables -L -v -- 자세한 정보 출력하기
# iptables -vnL -- 패킷 카운터 확인하기
# iptables -Z -- 패킷 카운터 모든 체인 초기화하기
실습 디자인 : FORWARD 필터 구성하기
# set up 명령어를 입력하면 아래와 같은 화면이 나옵니다.
firewall configuration 을 선택하여
security level을 enabled로 바꾸어줍니다.
위의 설정을 해주면 iptables가 생성됩니다.
# vi /etc/sysconfig/iptables
# service iptables stop
# service iptables start
- filter 테이블의 기본정책 허용하기
# iptables -P FORWARD DROP
# service iptables save
SAVE를 하지 않으면 /etc/sysconfig/iptables에 적용되지 않고 메모리에만 남아있습니다.
save를 해주면 업데이트 되어 올라간다.
- FORWARD 필터 구성하기
<확인1>
# iptables -A FORWARD -s 1.1.1.1 -p tcp --dport 80 -j ACCEPT
# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# service iptables save
# vi /etc/sysconfig/iptables
<forward 활성화 하기>
# vi /etc/sysctl.conf net.ipv4.ip_forward=1 --7행
# /sbin/sysctl -p
결과
-- srv01 에서 확인하자!
# http 1.1.1.2 -- 0 (INPUT -> OUTPUT)
# ping 2.1.1.1 -- x (FORWARD -> FORWARD)
# httpd 2.1.1.1 -- 0 (FORWARD -> FORWARD)
-- srv03 에서 확인하자!
# http 1.1.1.1 -- x (FORWARD -> FORWARD)
# http 2.1.1.2 -- 0 (INPUT -> OUTPUT)
-- cent02 에서 확인하자!
# http 1.1.1.1 -- 0 (OUTPUT -> INPUT)
# http 2.1.1.1 -- 0 (OUTPUT -> INPUT)
'Server > Linux Server' 카테고리의 다른 글
[Linux Server] iptables 적용하기 (0) | 2023.04.07 |
---|---|
[Linux Server] 서비스 유형 - standalone 방식, xinet 방식(telnet서버) (0) | 2023.04.06 |
[Linux Server] FTP server (0) | 2023.04.06 |
댓글