메뉴 건너뛰기

조회 수 8220 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
*먼저 내 업무에서는 iptables와 hosts.allow 파일을 함께 이용 한다.
1. 방화벽 내용 넣고 > 방화벽 실행 > 방화벽 내용 저장
#cd /etc/sysconfig/
#vi iptables
(iptables 내용)
#service iptables restart
#/etc/init.d/iptables save

--------------▶ iptables 사용법

-
기본 모두 막고 시작하기-
# iptables -F
# iptables -X
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT DROP
-
루프백 허용
-
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A OUTPUT -o -lo -j ACCEPT
iptables [-t table] command [match] [target\jump]

-A(--append)            : 규칙을 추가한다.
-N(--new-chain)        : 새로운 체인 생성
-X(--delete-chain)     : 체인 제거
-P(--policy)              : 체인 기본정책 변경
-L(--list)                  : 체인의 규칙상태 보기
-F(--flush)               : 체인내의 모든 규칙 제거(방화벽 초기화)
-Z(--zero)                : 체인내의 모든 규칙의 패킷과 바이트의 카운트를 0으로 초기화
-D(--delete)             : 규칙을 삭제
-R(--replace)            : 새로운 규칙으로 대체
-I(--insert)               : 체인의 가장 처음에 규칙을 추가한다.
-E(--rename-chain)    : 체인의 이름을 변경한다.


2) iptables 체인 종류
INPUT : 로컬로 들어오는 패킷(입력 패킷)
FORWARD : INPUT OUTPUT 역할, 라우터에 방화벽을 적용할 때 쓰임
OUTPUT : 외부로 나가는 패킷(출력 패킷)

INPUT 체인에 사용자 정의로 체인을 추가하여 INPUT 체인 대신에 사용할 수 있는데, 페도라 코어의 경우는 RH-Firewall-1-INPUT라는 사용자 정의 체인을 사용한다. 3개의 기본 체인(INPUT, OUTPUT, FORWARD)은 수정이나 삭제가 불가능하며, 사용자 정의 체인은 다음과 같은 방법으로 생성해 줄 수 있다.




3) iptables 다루기

 방화벽 정책 초기화
# iptables -F
# iptables -X
# iptables -Z


 기본 정책 설정
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP


 사용자 정의 체인 생성 및 INPUT 체인에 추가
# iptables -N 사용자정의체인명
# iptables -A INPUT -j 사용자정의체인명


 허용 정책 설정
루프백 접속 허용
다른 곳과 네트워크가 연결되어 있지 않더라도 시스템의 기본 네트워크이며 로컬 호스트의 인터페이스인 루프백에 대해서는 접속이 이뤄질 수 있도록 해야 하므로, 다음과 같이 설정한다.
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


내부 네트워크 접속
iptables -A fedora -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT


내부 -> 외부 접속
iptables -A fedora -s 외부주소 -p tcp -m tcp --sport 포트번호 -j ACCEPT
iptables -A OUTPUT -d 외부주소 -p tcp -m tcp --dport 포트 -j ACCEPT


① DNS 포트 허용
iptables -A fedora -p udp -m udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

② ICMP 핑 허용
iptables -A OUTPUT -o eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A fedora -i eth0 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -o eth0 -p icmp --icmp-type echo-reply -j ACCEPT

③ SSH 포트 허용 ( 192.168.0.1 -> 172.16.1.20)
iptables -A fedora -s 172.16.1.20 -p tcp -m tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -d 172.16.1.20 -p tcp -m tcp --dport 22 -j ACCEPT

④ HTTP 포트 허용
iptables -A fedora -i eth0 -p tcp -m tcp --sport 80 --dport 1024:65535 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 80 -j ACCEPT

⑤ FTP 포트 허용
* 명령(제어) 포트(tcp 21) 접속
iptables -A fedora -i eth0 -p tcp -m tcp --sport 21 --dport 1024:65535 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 21 -j ACCEPT
*데이터 포트(tcp20) 접속(능동 모드 접속)
iptables -A fedora -i eth0 -p tcp -m tcp --sport 21 --dport 1024:65535 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 21 -j ACCEPT
*데이터 포트(tcp 1024이상의 포트) (Passive 모드 접속)
iptables -A fedora -i eth0 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT


외부 -> 내부 접속
① SSH 포트 허용
iptables -A fedora -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -j ACCEPT

② http 포트 허용
iptables -A fedora -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o eth0 0p tcp -m tcp --sport 80 -j ACCEPT

③ ftp 포트 허용 ( passive mode)
iptables -A fedora -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 21 -j ACCEPT

iptables -A fedora -i eth0 -p tcp -m tcp --dport 1024:65535 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 -j ACCEPT


예제 :
중국발 해킹을 통하여 웹서버를 공격하고 있다는 사실을 알았다.
  
찾아낸 IP 10.10.1.1 ~ 10.10.1.255, 10.10.2.3, 10.10.3.5 와 같으며 접근통제정책을 통하여
  위의 IP에 대하여 web 접속을 거부하라. , 10.10.1.33 IP web 접속을 허락하여야 한다.
/sbin/iptables -A INPUT -s 10.10.1.33  -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -s 10.10.1.1/10.10.1.255  -p tcp --dport 80 -j DROP
/sbin/iptables -A INPUT -s 10.10.2.3  -p tcp --dport 80 -j DROP
/sbin/iptables -A INPUT -s 10.10.3.5  -p tcp --dport 80 -j DROP

/sbin/iptables -A INPUT -s 202.190.123.68  -p tcp --dport 21 -j DROP

/sbin/iptables -A INPUT -s 118.217.12.35  -p tcp --dport 1:65535 -j DROP
- PING 명령어는 서버 내부에서는 사용가능해야 하며, 192.168.1.13, 192.168.1.11 IP를 제외하고는
  
모두 거부하라.

/sbin/iptables -A INPUT -s 192.168.1.13 -p icmp --icmp-type echo-request  -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.11 -p icmp --icmp-type echo-request  -j ACCEPT
/sbin/iptables -A INPUT  -p icmp --icmp-type echo-request  -j DROP

- 110포트와 143포트는 localhost 192.168.1.13, 192.168.1.11 에서는 허용하고
   
외부에서는 차단하라.

/sbin/iptables -A INPUT -s 192.168.1.13  -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.11  -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 110 -j DROP

/sbin/iptables -A INPUT -p tcp -m tcp --dport 110 -j DROP

/sbin/iptables -A INPUT -s 192.168.1.13  -p tcp --dport 143 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.11  -p tcp --dport 143 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 143 -j DROP

- ssh ftp에 대해서는 iptables 를 통하여 문제 2번에 해당하는 정책을 사용하여 똑 같이 적용하라.
/sbin/iptables -A INPUT -s 192.168.0.0/24  -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.13  -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.11  -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -j

개요

설치

솔라리스 10의 경우는 설치할 필요 없다. (이미 설치되어있다) 여기서는 솔라리스 9 이하를 기준으로 설명한 것이다.

·         설치

·         root@wl ~ # wget http://coombs.anu.edu.au/~avalon/ip_fil4.1.33.tar.gz
·         root@wl ~ # wget http://coombs.anu.edu.au/~avalon/pfil-2.1.13.tar.gz
·         root@wl ~ # tar xvfz ip_fil4.1.33.tar.gz
·         root@wl ~ # tar xvfz pfil-2.1.13.tar.gz
·         root@wl ~ # cd pfil
·         root@wl ~/pfil # /usr/ccs/bin/make SunOS32 1)
·         root@wl ~/pfil # /usr/ccs/bin/make package 1)
·         root@wl ~/pfil # pkgadd -d /tmp/pfil.pkg 2)
·         root@wl ~/pfil # ifconfig -a
·         lo0: flags=1000849 mtu 8232 index 1
·                 inet 127.0.0.1 netmask ff000000
·         pcn0: flags=1000843 mtu 1500 index 2
·                 inet 192.168.0.11 netmask ffffff00 broadcast 192.168.0.255
·                 ether 0:c:29:d4:e0:bd
·         root@wl ~/pfil # cat /etc/opt/pfil/iu.ap 3)
·                 pcn     -1      0       pfil
·         root@wl ~/pfil # cd ..
·         root@wl ~ # cd ip_fil4.1.33
·         root@wl ~/ip_fil4.1.33 # /usr/ccs/bin/make solaris
·         root@wl ~/ip_fil4.1.33 # cd SunOS5
·         root@wl ~/ip_fil4.1.33/SunOS5 # /usr/ccs/bin/make package 4)
·         root@wl ~/ip_fil4.1.33/SunOS5 # sync; sync; reboot 5)
1) 반드시 /usr/ccs/bin/make 를 사용한다. 만약 gnu make를 사용하고 있으면 컴파일이 되지 않는다. 64bit 솔라리스를 사용하고 있다면 32대신 64를 입력한다.2) 자동으로 설치되는 것이 아니라 패키지파일이 생성된다. 패키지 파일은 그냥 설치해주면 된다.3) 패키지 파일을 인스톨 한 후 /etc/opt/pfil/iu.ap 파일을 확인한다. 시스템에 설치되어있는 NIC 종류별로 (lo제외) 한줄씩 /etc/opt/pfil/iu.ap에 등록되어있어야 한다. 같은 종류의 NIC가 두개 설치되어 있어도 한 종류이므로 한 줄만 들어가게 된다.4) make package하면 자동으로 패키지가 생성되고 인스톨 된다. (SunOS5디렉토리에 ipf.pkg 파일이 생성된다) 바이너리는 /opt/ipf, 설정파일은/etc/opt/ipf에 있다.5) pfil 을 설치한 후, 반드시 재시작해야 한다. (ipf 때문에 재시작하는 것이 아니다)

·         실행

재시작 하면 IPFilter 가 이미 실행되어있을 것이다. 아래는 제대로 설치되었는지 확인하기 위함이다.
root@wl ~ # /etc/init.d/ipfboot start 1)
Set 0 now inactive
filter sync'd
0 entries flushed from NAT table
0 entries flushed from NAT list
filter sync'd
root@wl ~ # ndd /dev/pfil qif_status 2)
ifname ill q OTHERQ ipmp num sap hl nr nw bad copy copyfail drop notip nodata notdata
QIF1 0x0 0xd40d2cf0 0xd40d2d74 0x0 1 806 0 3 14 0 0 0 0 0 0 0
pcn0 0xd3c49a9c 0xd4054180 0xd4054204 0x0 0 800 14 695 572 0 0 0 0 0 0 0
root@wl ~/pfil # strconf < /dev/pcn 2)
pfil
pcn
root@wl ~ #
1) 시작하기. /etc/rc2.d/S65ipfboot에 등록되어있다.2) pfil장치와 이에 연결된 pcn 디바이스(시스템마다 다르다) IPFilter가 제대로 연결되어있는지 확인한다.

List of Articles
번호 제목 날짜 조회 수
156 웹서버 모니터링 툴 awststs 2014.03.26 10147
155 apache 컴파일시 동시 접속자 제한 변경하기 2014.03.26 8155
154 yum으로 phpmyadmin 설치 2014.03.26 7536
153 싱글모드 부팅 후, fstab read only 발생시 2014.03.26 8513
152 긴급 스왑 메모리 추가 하기 2014.03.26 7622
151 리눅스 한글 설정 2014.03.26 8239
150 iconv 추가 설치 2014.03.26 8602
149 apache vhost deny 설정 2014.03.26 7583
148 리눅스 서버 백업 - Crontab 2014.03.26 7619
147 Linux 시스템 백업과 복원 2014.03.26 7862
146 리눅스서버 시간 한국 시간(한국표준시;KST)으로 변경 2014.03.26 8017
145 netstat [option] 2014.04.12 7238
144 리눅스 Iptables 보안정책 2014.04.23 7776
143 리눅스 보안 - 시작 프로그램 수동 등록 및 서버 표준시간 설정 2014.04.23 7814
142 iptables 접속 차단 스크립트 2014.04.23 7665
» 리눅스 방화벽 iptables 설정 2014.04.23 8220
140 find - 파일 검색 2014.04.29 7200
139 문자셋 설정, charset 2014.04.29 7480
138 리눅스 기본보안설정(1-8) 2014.05.15 7630
137 리눅스 기본보안설정(9) file 2014.05.15 7507
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 12 Next
/ 12

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved