# 용도및 활용

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

# 확장 가능 범위
 - 개인 서버및 기업 내의 소규모 동일 네트워크 대역의 서버들의 포트 개방 관리.
 
# 작업 진행 줄거리
 - 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. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. villa los cabos villa los cabos %M
  2. click Here click Here %M
  3. metal building fabricator metal building fabricator %M
  4. best metal building contractor best metal building contractor %M
  5. Mysql - mysql 설치후 Character set... 멀고 가까움이 다르기 때문 %M

Calendar

«   03 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 30 31        

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 2894712 HIT
TODAY 436 HIT
YESTERDAY 1378 HIT