# 용도및 활용

 - 서버 구축후에 외부 접속에 대한 보안 관리가 필요할때.
 - 인터넷이 접속되는 어느곳에서나 웹 브라우저를 이용하여, 해당 접속지 아이피에 대한 접근을 허용및 해제.

# 확장 가능 범위
 - 개인 서버및 기업 내의 소규모 동일 네트워크 대역의 서버들의 포트 개방 관리.
 
# 작업 진행 줄거리
 - Http 프로토콜의 기본 포트 80을 제외한 나머지 포트는 iptables 기본 정책에서 모두 차단.
 - iptables 정책에서 DNS 응답, localhost 등의 내부 네트웍에 대한 패킷을 허용.
 - ssh 접속을 위한 일반 계정을 생성, iptables 실행 권한만을 부여.
 - 웹 컨테이너에서 ssh 사용자의 계정으로 접속하여, 특정 포트에 대한 접속을 요청및 해제.
 - iptables 에서 접속지의 공인(유동,고정) 아이피에 대하여  등록을 하고 요청 포트를 개방및 차단.
 - 접속 계정, 접속지 아이피, 기타 정보등을 DBMS에 저장.
 - 24시 이전의 iptables에 접근 허용된 모든 정책은 crontab을 이용하여, 매일 24(00)시경에 초기정책 리셋.
 - 서버 리부팅시에도 외부에서의 접근및 관리를 위해 WAS, DBMS 등의 서비스를 자동 시작되도록 설정.
 - 사용하게될 WAS(Tomcat)는 되도록 웹 방화벽 전용, 독립적으로 사용하는것을 추천.
 
 
# 구축 환경
 - Linux     : 2.6(kernel)
 - iptables  : 1.4.7
 - OpenSSH   : 5.3
 - Apache    : 2.2.22
 - Tomcat    : 7.0.33
 - Mysql     : 5.5.28
 - Java      : 1.6
 - 웹 개발 언어 : JAVA & JSP

# 필요 준비사항
 - iptables 방화벽 초기 정책
 - SSH 접속 일반 계정
 - Apache & Tomcat 를 연동한 웹 서비스 또는 Java & Jsp 를 구동할 수 있는 기타 웹 컨테이너(80 포트 개방)
   

# 작업 진행

1) iptables 초기 정책 스크립트
[root@sunshiny script]# cat iptables_init.sh
#!/bin/sh

######################################################
### Iptables Init ###
######################################################

# 모든 Rule을 정리한다.
iptables -F

# 각각에 대한 정책을 세운다.
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# localhost에서의 traffic을 받아들인다.
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# DNS 응답을 받아들인다.
iptables -A INPUT -i eth0 -p tcp --source-port 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --source-port 53 -j ACCEPT

# icmp
iptables -A INPUT -p icmp -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT

# http 프로토콜 80 포트에 대한 접속 허용
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 로컬에서 외부 접속 : http
iptables -A INPUT -i eth+ -p tcp -m tcp --sport 80 -j ACCEPT

# SMTP 메일 전송
iptables -A INPUT -i eth+ -p tcp --sport 25 -j ACCEPT

# 내부 네트워크 접속
iptables -A  FORWARD -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

# Save Log
#iptables -A INPUT -j LOG -m comment --comment "LOGGING /etc/var/messages"
#iptables -A OUTPUT -j LOG -m comment --comment "LOGGING /etc/var/messages"

########## Manager IP ###########
# 내부 네트워크 대역 허용
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT


# 정책 반영후 조회
[root@sunshiny ~]# iptables -L -n --line
Chain INPUT (policy DROP)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:53
4    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp spt:53
5    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:80
----------- 초기 기본 설정 INPUT 정책 끝, 접속자 요청 시작 라인 num 8번 ------------------------
8    ACCEPT     tcp  --  123.17.13.12          0.0.0.0/0           tcp dpt:3690
9    ACCEPT     tcp  --  123.17.13.12          0.0.0.0/0           tcp dpt:22

Chain FORWARD (policy DROP)
num  target     prot opt source               destination         
1    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     all  --  192.168.0.0/24       192.168.0.0/24      

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     all  --  192.168.0.0/24       192.168.0.0/24  


2) iptables 초기 정책 스케줄 등록
[root@sunshiny etc]# cat /etc/crontab

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

# Every Day IPTables FireWall Open ReSet
01 00 * * * root /root/script/iptables_init.sh


3) 서버 리부팅후에 iptables 정책 리셋, DBMS, WAS 자동 실행 설정
 - 각 서비스별 /etc/init.d/ 에 등록되어서 부팅시 자동으로 실행이 되는 상황이면 건너뜀.
[root@sunshiny rc.d]# cat /etc/rc.d/rc.local
# Start Up Mysql Server
#su - mysql -c "/home/mysql/support-files/mysql.server start"

# Start Up FireWall Tomcat Was Server
su - tomcat -c "/home/sshuser/apache-tomcat-7.0.33/bin/startup.sh"

# Start Up Apache Web Server
/home/apache/bin/apachectl start

# Server FireWall Set
/root/script/iptables_init.sh


4) ssh 접속 계정 생성후 iptables 실행 권한 부여
[root@sunshiny etc]# vi /etc/sudoers
#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
# (1) tty(터미널접속) 에서만 sudo 실행 제한 해제
#Defaults    requiretty
#

......

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

# sshuser Add Policy iptables
sshuser  ALL=/sbin/iptables, /etc/init.d/iptables

# sshuser No Check Passwd, (2)리모트 접속 유저에게 패스워드 체크 요구 해제
Defaults:sshuser !authenticate


5) DBMS(Mysql) 데이터베이스, 테이블 생성 스크립트
 - 프로젝트 소스의 WorkMemo/DBMS_SET.sql 참고

6) 웹 서비스(WAS) 환경구축 설정은 기타 자료 참고.

7) 실행 이미지


사용자 삽입 이미지










# 프로젝트 소스





※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
02 3, 2013 14:22 02 3, 2013 14:22


Trackback URL : http://develop.sunshiny.co.kr/trackback/854

Leave a comment

« Previous : 1 : ... 157 : 158 : 159 : 160 : 161 : 162 : 163 : 164 : 165 : ... 648 : Next »

Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. Article writing is also a exciteme... 레깅스룸 02 16,
  2. I like reading an article that can... 부산고구려 02 16,
  3. Asking questions are truly nice th... 해운대룸싸롱 02 15,
  4. Pretty! This was an extremely wond... 분당셔츠룸 02 15,
  5. Wonderful beat ! I would like to a... 레깅스룸가격 02 14,

Recent Trackbacks

  1. london relocation ltd london relocation ltd 16 02
  2. extract your knowledge extract your knowledge 16 02
  3. dog cart dog cart 15 02
  4. This Site This Site 15 02
  5. massive action massive action 15 02

Calendar

«   02 2020   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2846534 HIT
TODAY 96 HIT
YESTERDAY 544 HIT