저번에는 중국 ip만 차단하는 방법을 알아봐따...이번엔 대한민국 ip 만 열어주고 외국ip는 모조리 막아보겠다. 우선 아래 사이트에가서 최신 ip대역 db를 받는다. 아래 사이트는 ip 자료가 자주 업데이트됩니다. 한번씩 업뎃 해주세용. 국가별 최신 IP대역 DB 받는 곳 : http://geolite.maxmind.com/download/geoip/database/ GeoIPCountryCSV.zip 파일을 받아서 /root밑에 다운받는다 그리고 압축을 푼다. 압축을 풀면 /root/GeoIPCountryWhois.csv 파일이 보인다. 여기까지 확인. 그리고 아래파일을 생성한다. # vi /root/only-Korea-IP-Allow.sh ------------------------------------------------------------------------------------- #!/bin/bash DATA=/root/GeoIPCountryWhois.csv IPT=/sbin/iptables for IPRANGE in `egrep "Korea" $DATA | cut -d, -f1,2 | sed -e 's/"//g' | sed -e 's/,/-/g'` do $IPT -A INPUT -p all -m iprange --src-range $IPRANGE -j ACCEPT done /sbin/iptables -P INPUT DROP ------------------------------------------------------------------------------------ 스크립트 내용은 한국 ip대역을 모조리 열어주고 그리고 마지막에 INPUT 정책을 막아주는거다. 그리고 실행권한을 준다. # chmod 700 /root/only-Korea-IP-Allow.sh 이 스크립트를 실행하기전에 반드시 iptables -F 를 해서 iptables 를 초기화한다. 그리고나서 # sh only-Korea-IP-Allow.sh 를 실행한다. 그리고나서 iptables -L 를 실행하면 상태가 보일것이다. 추가로 열어줄 외국아이피가있으면 스크립트에서 /sbin/iptables -P INPUT DROP 전에 ACCEPT로 넣어주면된다. 혹시나 해서 적습니다. 위에 iptables 설정 초기화 하실때 1. iptables -P INPUT ACCEPT 2. iptables -F 원격에서 iptables -F 만 하시다가 접속 팅깁니다. IDC들어가야 할지도...ㅋㅋㅋ 또 하나 참고로 yum -y update 할때 당연히 업데이트 안됩니다.. 외국ip 모조리 막혀서 외국ip 작업할 일 있을때 만 열어주고 작업후 다시 닫아주세용.ㅋㅋㅋ 서버 최적화 설정후 이걸 적용해주시면 아주 유용하겠죠... |
호스팅사용자를 위한 서버셋팅 * 신규 호스팅가입자 서버셋팅 개론 호스팅사용자가 새로 가입하였을 때에 리눅스서버에서 셋팅해야하는 내용들과 절차들을 살펴보고 실제로 리눅스서버에서 셋팅해 보도록 하겠다. 먼저 한명의 호스팅사용자를 위한 서버셋팅리스트이다. - 사용자 ID, 패스워드 생성 - 사용자 호스팅용 홈디렉토리구성하기 - DNS에 사용자도메인 설정하기 - 아파치에 가상호스트 설정하기 - 일hit 수와 일트랙픽량 제한 설정하기 - 메일사용을 위한 메일설정하기 - 데이터베이스 사용을 위한 MYSQL 설정하기 - 웹로그분석서비스를 위한 webalizer 설정하기 - 디스크사용량 제한을 위한 Quota 설정하기 - 가상 FTP 호스팅을 위한 proftpd의 가상호스트 설정하기 - 아파치, FTP, MYSQL, DNS, 메일서비스 재시작하기 * 사용자 ID, 패스워드 생성(1단계) 호스팅 사용자의 서버셋팅작업을 위하여 가장 먼저해야 하는 것이 바로 사용자의 계정생성과 패스워드 생성작업이다. 먼저 계정을 생성해 보겠다. 아래의 예는 bible이라는 사용자의 계정을 useradd 명령어로 생성하고 passwd 명령어로 bible 사용자의 패스워드를 설정한 것이다.
위의 작업을 할 때에 대부분의 사용자들은 useradd명령어에 대한 다양한 옵션을 사용하여 홈디렉토리와 사용할 쉘종류, 패스워드등을 한번에 생성하곤 한다. 자, 이렇게 생성하고 나면 bible 이라는 사용자의 계정정보와 그룹정보가 /etc/passwd 파일과 /etc/group파일에 각각 생성이 된다. 그리고 /etc/shadow파일에는 bible 사용자의 패스워드와 aging정보가 생성된다. 그리고 가장 중요한 /home/bible이라는 홈디렉토리가 생성이 되며 이 홈디렉토리내에는 /etc/skel 디렉토리내에 있는 초기환경파일들이 모두 복사되어 들어가 있다. 이는 "ls -al /home/bible"을 실행해 보면 알 수 있다. 이뿐아니라 /var/spool/mail/bible이라는 메일파일이 생성된다. * 사용자 호스팅용 홈디렉토리구성하기(2단계) 이제 bible사용자의 홈디렉토리를 구성할 차례이다. 일반적인 사용자라면 useradd명령어로 생성되는 /home/bible이라는 일반적인 홈디렉토리만으로도 충분하겠지만 호스팅사용자는 좀 더 다양한 디렉토리를 필요로 한다. 먼저, 다음을 보기 바란다.
/home/bibile/www index.html파일을 포함한 www.linuxbible.co.kr 사이트의 홈페이지파일들이 들어갈 위치 /home/bible/www_log access_log 웹로그파일과 error_log 에러로그가 들어갈 위치 /home/bible/ftp ftp.linuxbible.co.kr 가상 FTP사이트의 홈 /home/bible/ftp_log ftp.linuxbible.co.kr 가상 FTP사이트의 로그디렉토리 /home/bible/www/weblog www.linuxbible.co.kr 사이트의 웹로그분석 결과저장 위치 그리고 이번에는 방금 생성한 디렉토리들에 대한 퍼미션과 권한 설정작업을 한 것이다.
cp index.html /home/bible/www/ www.linuxbible.co.kr 사이트의 초기 로딩페이지 파일을 /home/bible/www/ 디렉토리로 복사한 것이다. 이 파일에는 호스팅업체에서 호스팅사용자에게 알리는 호스팅서비스 이용안내문등의 내용이 저장되어 있다. 참고로 여기서 생성한 www라는 디렉토리는 많은 분들이 public_html이라는 이름으로 사용하고 있다. 이 이름을 어떤 이름을 사용하느냐는 전적으로 관리자의 선택이다. chmod 701 /home/bible useradd로 새로운 사용자를 생성하였을 때에 /home/bible 의 초기퍼미션은 700이다. 이렇게 설정되어 있다면 아파치데몬소유주인 nobody가 이 디렉토리로 접근하지 못한다. 따라서 접근이 가능한 가장 최소한의 퍼미션인 701을 설정한 것이다. chown -R bible:bible /home/bible 이 작업은 지금까지 생성한 디렉토리 및 파일들이 모두 root권한으로 생성되었기 때문에 /home/bible 디렉토리이하의 모든 파일들과 디렉토리들에 대한 소유자를 bible로 소유그룹을 bible로 한 것이다. * DNS에 사용자도메인 설정하기(3단계) 이번에는 사용자의 도메인을 설정해 보도록 하겠다. DNS에서 설정해야할 내용은 /etc/named.conf파일에 zone구문설정과 /var/named 디렉토리에 zone파일을 생성하는 두가지 작업이다. 먼저 /etc/named.conf파일에 linuxbible.co.kr 도메인에 대한 zone구문을 생성해 보도록 하겠다. --- 추후 정리 * 아파치에 가상호스트 설정하기(4단계) 이번에는 아파치의 가상호스트 설정을 해보도록 하겠다. 먼저 /usr/local/apache2/conf 디렉토리에 있는 httpd.conf 파일을 vi로 오픈한다. 그리고 httpd.conf 파일의 맨 마지막부분에 있는 가상호스트 설정부분에 다음과 같은 linuxbible.co.kr 도메인에 대한 가상호스트를 설정한다.
* 일hit 수와 일트랙픽량 제한 설정하기(5단계) 이번에는 이 홈페이지의 일hit수와 일트래픽을 제한하기 위한 설정이다. 이 설정을 하기 위해서는 APACHE에 mod_throttle모듈과 mod_bandwidth모듈이 설치되어 있어야 한다. 그럼, 위에서 httpd.conf파일내에 설정하였던 가상호스트의 설정을 다음과 같이 수정하였다.
즉, 다음 두행을 추가설정한 것이다. ThrottlePolicy Volume 2048M 1d ThrottlePolicy Request 20000 1d 이 설정의 의미는 이 홈페이지의 1일트래픽을 2048M 즉, 2GB로 제한하고 1일 hit수를 20000으로 제한한다는 설정이다. * 메일사용을 위한 메일설정하기(6단계) --- 추후 정리 * 데이터베이스 사용을 위한 MYSQL 설정하기(7단계) 다음은 bible사용자의 MYSQL데이터베이스 사용을 위한 MYSQL설정내용이다. 설정하는 방법에는 여러가지가 있지만 가장 편리하다고 생각되는 방법으로 설정해 보도록 하겠다. 다음과 같은 mysqluser.sql 파일을 생성한다. 보시다시피 이 파일에는 bible이라는 MYSQL사용자를 생성하기 위한 SQL문이 3개 들어가 있다.
위의 SQL문들을 간단히 설명하면 다음과 같다. create database bibile; bible이라는 새로운 데이터베이스를 생성하는 SQL문이다. insert into db values('localhost','bible','bible','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); MYSQL의 mysql이라는 관리데이터베이스내의 db테이블에 bible라는 새로운 데이터베이스의 생성과 소유자 및 권한을 설정하는 SQL문이다. insert into user values('localhost','bible',password,'88888888'),'N','N','N','N','N','N','N','N','N','N','N','N','N', 'N','N','N','N','N','N','N','N',1,'','','','','',''); MYSQL의 mysql이라는 관리데이터베이스의 user테이블에 bible이라는 새로운 사용자와 88888888 패스워드, 그리고 이 사용자가 사용할 각 권한들을 설정하는 SQL문이다. 그리고 이렇게 생성한 mysqluser.sql파일을 다음과 같이 실행한다. mysqluser.sql파일과 아래 명령어를 실행하는 위치는 모두 /usr/local/mysql/bin/이어야 한다.
위의 실행으로 이제 bible이라는 사용자는 MYSQL데이터베이스를 사용할 수 있게 된다. * 웹로그분석서비스를 위한 webalizer 설정하기 이번에는 linuxbible.co.kr홈페이지의 웹로그분석 서비스를 제공하기 위한 webalizer설정내용이다. 이 설정은 webalizer가 이미 설치되어 있다는 것을 전제로 한다. 먼저 아래와 같이 /etc/webalizer.conf.sample파일을 /usr/local/webalizer/conf디렉토리로 linuxbible.co.kr.conf라는 파일명으로 복사한다.
위의 파일은 linuxbible.co.kr홈페이지의 웹로그분석을 위한 설정파일이다. 그리고 이번에는 이 파일을 vi로 열어서 다음 5가지 항목의 값을 다음과 같이 변경해 준다. LogFile /home/bible/www_log/access_log OutputDir /home/bible/www/weblog HistoryName linuxbible.com ReportTitle LINUXBIBLE.CO.KR WebSite HostName www.linuxbible.co.kr
|