[보안] IPTABLES 사용법
IPTABLES 사용법
iptables 명령어 실행시 시스템에 적용되는 시기
– iptables 명령어를 실행하면 재부팅하지 않더라도 즉시 시스템에 적용된다.
– iptables -A INPUT -s 0/0 -j DROP를 하면 그 즉시 모든 접속이 차단된다.
– iptables -D INPUT -s 0/0 -j DROP를 하면 그 즉시 접속 차단 명령이 삭제된다.
– iptables -L로 명령어가 시스템에 적용중인지 확인 가능
재부팅시 iptables 내용 보존하여 실행하기
1. 스크립트 파일 만들어서 실행
1) cd /etc/sysconfig
– 스크립트파일 만들어질 디렉토리로 이동 (다른 디렉토리에 만들어도 됨)
2) touch iptablesscript
– /etc/sysconfig디렉토리에 iptablesscript라는 파일이 생성됨
(다른 파일명으로 만들어도 됨)
3) vi /etc/sysconfig/iptablesscript
– 만들어진 파일을 open
4) /sbin/iptables -A INPUT -s 100.100.100.100 -j DROP
/sbin/iptables -A OUTPUT -s 200.200.200.200 -j ACCEPT
– 실행하고자 하는 내용을 입력
– 맨 윗줄에 #! /bin/bash나 맨 아랫줄에 exit 0는 입력할 필요 없음
5) chmod 700 iptablesscript
– 실행가능한 파일로 속성을 변경
6) vi /etc/rc.d/rc.local
– 재부팅시 자동으로 실행되는 내용이 들어가도록 하는 rc.local파일을 open
7) /etc/sysconfig/iptablesscript
– rc.local파일의 맨 아랫줄에 입력
8) 재부팅
2. /etc/rc.d/rc.local 파일에 직접 기록
/sbin/iptables -A INPUT -s 100.100.100.100 -j DROP
/sbin/iptables -A OUTPUT -s 200.200.200.200 -j ACCEPT
위 두줄을 /etc/rc.d/rc.local파일 맨 아랫줄에 직접 입력
(파일에 직접 기록하는 방식은 다른 자동 실행 파일이 있는 경우 혼동
가능성이 있으므로 스크립트 파일로 만드는 것이 좋음)
iptables -A INPUT -s 200.200.200.1 -j DROP
200.200.200.1 이라는 source IP(-s)로부터 오는(INPUT) 모든 패킷을
막는(DROP) 규칙을 추가(A)한다.
* ACCEPT : 패킷을 허용
* DENY : 패킷을 허용하지 않는다는 메시지를 패킷을 보낸 PC에 돌려보냄
* DROP : 패킷을 허용하지 않으며, 허용하지 않는다는 메시지 자체도 안보냄
* REJECT : match된 경우 ——– 거절한다는 에러 메시지를 돌려보냄
match되지 않은 경우 – DROP과 동일한 작동을 함
* INPUT : 내가 외부의 패킷을 받을지 결정
: INPUT을 막을 경우 외부에서 나한테 패킷을 보낼 수 없음
* OUTPUT : 내가 외부에 패킷을 보낼지 결정
: OUTPUT을 막을 경우 내가 외부에 패킷을 보낼 수 없음
* FORWARD : 내가 받을 패킷을 어디로 RELAY할지 결정
iptables -A INPUT -p tcp –sport 25 -j ACCEPT
25번이라는 source포트(–sport)에서 오는(INPUT) protocol이(-p) tcp인 모든 접속을
허락하는(ACCEPT) 규칙을 추가(A)한다.
iptables –A INPUT –s 200.200.200.1 –p tcp –destination-port telnet –j DROP
200.200.200.1 이라는 source IP(-s)로부터 오는(INPUT) protocol이(-p) tcp이고
목적지 port(–destination-port)가 telnet인 패킷의 접속을 막는(DROP) 규칙을
추가(A)한다.
iptables -A INPUT -i eth1 -s 192.168.1.0/24 -d 0/0 -j ACCEPT
192.168.1.0/24라는 source IP(-s)로부터 오는(INPUT)
서버안으로 들어오는 인터페이스(-i)가 eth1이고 destination IP(-d)가
어떤 IP라도(0/0) 접속을 허락하는(ACCEPT) 규칙을 추가(A)한다.
(서버자체에 대한 접속이 아니라 마스커레이딩등을 이용하여 랜카드 두 개를
장착한 경우 eth1에 연결된 내부 PC에서 외부로의 접속 허용)
* 0/0 : 모든 IP가 해당 (/뒤의 숫자는 서브넷마스크를 의미함)
/8 = /255.0.0.0 (/8이나 /255.0.0.0 중 어느 것을 입력해도 같음)
/9 = /255.128.0.0
/18 = /255.192.0.0
/24 = /255.255.255.0
/27 = /255.255.255.224
/28 = /255.255.255.240
/29 = /255.255.255.248
/30 = /255.255.255.252
* ‘/’다음에 숫자가 올 경우 비트가 1로 채워진 갯수를 의미하는데 /24인 경우
왼쪽에서 24개의 비트가 1이다.
(11111111.11111111.11111111.00000000 = 255.255.255.0)
따라서 192.168.1.0/24 는 192.168.1.0/255.255.255.0과 같다
iptables -A INPUT –p tcp –destination-port telnet –i ppp0 –j DROP
protocol이(-p) tcp이고 목적지 port(–destination-port)가 telnet이며,
서버안으로 들어오는 인터페이스(-i)가 ppp0인 패킷의 접속을 막는(DROP) 규칙을
추가(A)한다.
iptables -A INPUT -p icmp –icmp-type echo-request -j REJECT
iptables -A INPUT -p icmp –icmp-type 8 -j REJECT
protocol이(-p) icmp이고 icmp 의 type이 echo-request인 패킷이 오는(INPUT) 것을
거절하는(REJECT) 규칙을 추가(A)한다.
(외부에서의 ping을 거절하는 방