◇ 옵션 :
-A 체인에 새로운 규칙 추가
-D 체인의 어떤 지점의 규칙 삭제
-F 체인으로부터 모든 규칙 삭제
-L 어떤 체인의 규칙 보기
-I 체인의 어떤 지점에 규칙을 삽입
-i ( input interface, // i eth0 는 eth0로 들어오는 모든 패킷 )
-o ( output interface )
-R 체인의 어떤 지점의 규칙을 교환
-s 출발지 주소 ( 패킷 출처 IP 지정/도메인 또는 192.168.10.0/24 처럼 지정할수 있다 )
-d 목적지 주소 ( 패킷 도착지 IP 지정 )
--sport 출발지 포트 번호 제어
--dport 목적지 포트 번호 제어
-p 프로토콜 제어 ( p옵션의 인자는 TCP,UDP,ICMP 가 될수 있다 )
-j 규칙 설정
※ 참고
INPUT 은 패킷이 들어오는 체인에
DROP 은 패킷을 버리라는 뜻
iptables.sh라는 셀스크립트를 하나 생성하자.
--------------------------------------------------
#!/bin/sh
## iptables를 초기화
iptables -F
## 랜카드 사용을 모두 허용
iptables -A INPUT -p ALL -i eth0 -j ACCEPT
iptables -A OUTPUT -p ALL -o eth0 -j ACCEPT
iptables -A INPUT -p ALL -i eth1 -j ACCEPT
iptables -A OUTPUT -p ALL -o eth1 -j ACCEPT
예) iptables -A INPUT -p ALL -s 192.168.0.10 -j ACCEPT
(192.168.0.10번의 모든 네트웍을 허용)
iptables -A INPUT -p tcp --dport 21 -s 192.168.0.11 -j ACCEPT
(192.168.0.11 번의 21번포트만 허용)
iptables -A INPUT -p TCP --dport 21 -j DROP
(그외의 모든 21번 포트는 막음)
## TELNET 포트 막음
iptables -A INPUT -p TCP --dport 23 -s ip앞 세자리.0/24 -j ACCEPT
iptables -A INPUT -p TCP --dport 23 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p TCP --dport 23 -j DROP
## FTP 포트 막음
iptables -A INPUT -p TCP --dport 21 -s ip앞 세자리.0/24 -j ACCEPT
iptables -A INPUT -p TCP --dport 21 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p TCP --dport 21 -j DROP
## SSH 포트 막음
iptables -A INPUT -p TCP --dport 22 -s ip앞 세자리.0/24 -j ACCEPT
iptables -A INPUT -p TCP --dport 22 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p TCP --dport 22 -j DROP
--------------------------------------------------------
service iptables save
(iptables 를 저장)
iptables -L
(저장되어있는 방화벽 룰을 보여줌)
=================================================================
추가적 내용.....
Iptables 하면서 팁은 위에서부터 아래로 적용 됨
방화벽 설정 파일 경로
#vi /etc/sysconfig/iptables |
설정 파일 파악
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT |
아래 설명은 22번 포트를 제외한 모든 포트를 막는다
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
즉 3306 포트가 설정이 되어 있어도 위와 붉은색 글씨의 소스가 들어 있으면 3306포트가
방화벽 상태가 됨.
재시작~!
# /etc/init.d/iptables restart 명령을 사용하여 재시작 해준다.
################## 아래는 참고 ##############
# iptables 명령어(옵션) 간단한 설명
~]#vi /etc/sysconfig/iptables
~]#iptables -L :리스트보기
~]#iptables -P INPUT DROP : -P 기본정책, INPUT의 기본정책을 DROP으로 하겠다.
<v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f><o:lock aspectratio="t" v:ext="edit"></o:lock>
현재 FORWARD 기본정책은 ACCEPT
~]#iptables -A : -A 는 추가할떄
~]#iptables -I INPUT 3 : -I 는 원하는 라인에 추가, 3번쨰 라인에 추가한다는말임.
~]#iptables -A INPUT -p tcp : -p 는 프로토콜 정하기
~]#iptables -A INPUT -p tcp -s : -s 는 src ip
~]#iptables -A INPUT -p tcp -s 192.168.81.63 --dport 80: --dport 는 dst port
~]#iptables -A INPUT -p tcp -d 192.168.81.62: -d 는 dst ip
~]#iptabels -A INPUT -p tcp --sport 80: --sport 는 src port
~]#iptables -A INPUT -p tcp -dport 80 -j ACCEPT : -j 는 대응 방법(ACCEPT, DROP, REJECT 등),
*REJECT는 DOS 공격시 부하가 걸리므로 권장하지 않음
~]#iptables -A INPUT –m : -m은 man 페이지를 참조 하길..옵션이 너무 많아요..
#서비스 시작/정지/재시작/저장
*iptables 는 save 명령어를 쳐주지 않으면 시스템 재부팅 후 정책이 초기화 됩니다.
~]#service iptables start
~]#service iptables stop
~]#service iptables restart
~]#service iptables save
예제 참조는
0. 기본정책을 ACCEPT로 설정
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
1. 현재 자신의 방화벽 규칙을 볼 수 있는 명령
iptables -L
iptables --list
2. 21.23.25.80 포트를 차단하는 정책(각각 하나씩 규칙을 만들것)
iptables -A INPUT -p tcp --dport 21 -j DROP
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A INPUT -p tcp --dport 25 -j DROP
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp -m multiport --destination-port 21,23,25,80 -j DROP
3.첫번쨰 정책을 삭제
iptabels -D INPUT 1
4. 세번째 정책의 출발지 IP를 192.168.1.0/24로 수정
iptables -R INPUT 3 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
5. 출발지 IP가 A클래스 사설 IP 일 경우 차단하는 정책
iptables -A INPUT -s 10.0.0.0./8 -j DROP
6. 출발지 IP 192.168.10.1 부터 192.168.10.100, 그리고 192.168.150.0/24이고 목적지IP 는 192.168.10.170이고 목적지 포트는 3306일 경우 차단하는 정책
iptables -A INPUT -p tcp -s 192.168.150.0/24 -d 192.168.10.170 --dport 3306 -j DROP
iptables -A INPUT -p tcp -m iprange --src-range 192.168.10.1-192.168.10.100 -d 192.168.10.170 --dport 3306 -j DROP
7. tcp 패킷이 초당 10개가 올경우 차단하는 정책(limit match 이용)
iptables -A INPUT -p tcp -m limit --limit 10/s -j DROP
8. 하나의 세션에서 10개의 패킷이 매치된 후 tcp 패킷이 분당 100개가 올 경우 차단하는 정책
iptables -A INPUT -p tcp -m limit --limit 100/m --limit-burst 10 -j DROP
9. 옆사람의 윈도우와 리눅스에서 SSH 접속을 차단하도록 설정, 윈도우에서 연결은DROP, 리눅스는 REJECT
iptables -A INPUT -p tcp -s 172.17.24.140 --dport 22 -j DROP
iptables -A INPUT -p tcp -s 172.17.24.170 --dport 22 -j REJECT --reject-with tcp-reset
10. ICMP 라는 체인을 생성
-icmp 패킷이 들어올 경우 ICM 체인으로 전달
-icmp 체인에 ping에 대한 응답하지 않는 정책 추가
iptables -N ICMP
iptables -A INPUT -p icmp -j ICMP
iptables -A ICMP -p icmp --icmp-type 8 -j DROP
11. 기본정책을 DROP으로 설정
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
본인의 윈도우에서 ssh연결이 되도록 설정하고 이미 연결된 상태나 연광성이 있는 연결은 별도의 정책 대신 state 매치를 이용하여 계쏙 사용할수 있도록 설정
iptables -I INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp -s 172.17.24.130 --dport 22 -j ACCEPT
12. TCP FLAG 중 전체를 보고 그 중 SYN 과 FIN이 있을 경우 차단하는 정책
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j DROP
13. TCP FLAG 중 전체를 보고 그 중 PSH 과 FIN이 있을 경우 차단하는 정책
iptables -A INPUT -p tcp --tcp-flags ALL FIN,FIN -j DROP
#########################################################
#특정 IP의 차단을 해제하려면
iptables -D INPUT -s 172.18.45.200 -j DROP 을 실행하시면 됩니다
or
iptables파일에 아래추가
-A INPUT -s 172.18.45.200 -j DROP
iptables -A INPUT -s 172.18.45.200 -j ACCEPT
# 허용할 IP
iptables -A -i eth0 -s 172.18.0.0/16 -j ACCEPT
# 나머지 모든 것을 막음.
iptables -A INPUT -j REJECT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 172.18.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -s 172.18.0.0/24 -j ACCEPT
적용
service iptables save
iptables -D INPUT -s 172.18.0.0/24 -j DROP
# 허용할 IP
iptables -A -i eth0 -s 192.168.0.1 -j ACCEPT
iptables -A -i eth0 -s 192.168.0.2 -j ACCEPT
...
iptables -A -i eth0 -s 192.168.0.10 -j ACCEPT
# 나머지 모든 것을 막음.
iptables -A INPUT -j REJECT
172.18로 시작하는 사설 네트웍 전체를 허용하려면
일일이 IP 주소를 적어줄 필요없이 다음과 같이 간단하게 할 수도 있습니다.
# 허용할 IP
iptables -A -i eth0 -s 172.18.0.0/16 -j ACCEPT
# 나머지 모든 것을 막음.
iptables -A INPUT -j REJECT
[출처] centOs iptables 방화벽 설정|작성자 이성민
'내가 하는일 > 시스템(서버)' 카테고리의 다른 글
DV7 데스크노트(17인치) 액정교체 (0) | 2012.08.14 |
---|---|
윈도우에서 톰캣 6.0 설정 방법이어요~ (0) | 2012.06.22 |
sharepoint server 2010 로컬계정으로 세팅하기 (0) | 2011.05.20 |
2008 R2 원격시스템 리붓 command (0) | 2011.05.15 |
IE9 버그..... ㅠㅠ (0) | 2010.10.15 |