달력

42024  이전 다음

  • 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

1. ftp 보다 좋은 ncftp 설치
 
 서버 작업을 많이하면, ftp를 많이 사용한다. 하지만 ftp 보다 사용하기 편한 ncftp를 알면 ftp 쓰는 것이 그렇게 불편하게 느껴질 수 가 없다. 난 처음부터 ncftp를 사용해 왔다. RH9에서는 기본설치가 안되어 따로 패키지를 받아서 설치 하겠다. 물론 배포판 CD에 있지만, 넣고 마운트하고 어쿠 어쿠 귀찮은 것~~ 간단하게 받아서 설치 할 것이다.

 wget http://ftp.superuser.co.kr/pub/redhat/9/RPMS/ncftp-3.1.5-4.i386.rpm
위와같은 명령을 입력하면 받아진다.^^ 물론 내가 올려놓았다.
 rpm -Uvh ncftp-3.1.5-4.i386.rpm
이렇게 하면 설치하고,
 rm -rf ncftp-3.1.5-4.i386.rpm
이렇게 해서 원본 파일을 지워 버린다.^^ 이렇게 설치를 하면 끝이다. 아주 쉽다^^ 이제 ncftp 의 대표적인 기능 몇가지만 알아 보겠다.

 [doly@doly ~]$ ncftp ftp.superuser.co.kr
NcFTP 3.0.3 (April 15, 2001) by Mike Gleason (ncftp@ncftp.com).
Copyright (c) 1992-2001 by Mike Gleason.
All rights reserved.
Connecting to ftp.superuser.co.kr...                                                                        
ProFTPD 1.2.8 Server (ProFTPD Default Installation) [su21.nicekorea.co.kr]
Logging in...                                                                                               
Anonymous access granted, restrictions apply.
Logged in to ftp.superuser.co.kr.                                                                           
ncftp / >

위와같이 간단하게 쳐 주면, 무명(anonymous) 로긴이 가능하다.
물론 -u 옵션을 주면 사용자로긴이 가능하다.
 ncftp -u doly ftp.superuser.co.kr

그리구 파일이나, 디렉토리이름을 모두 칠 필요 없이 Linux 터미널 처럼 몇자 치고 Tab 키를 누르면, 자동완성이 된다. 이 기능이 아주 좋기 때문에 난 이 프로그램을 쓴다.

전송기능에 있어 다음과 같이 상황이 나온다.
ncftp /apache > get httpd-2.0.49.tar.gz
httpd-2.0.49.tar.gz:                                     5.65 MB  299.92 kB/s  

이런 이유들 때문에 ncftp를 쓴다. ncget , ncput 등의 명령어도 제공된다. 그건 잘 쓰지 않지만 좋은 프로그램들이다.


2. MAN 페이지에서 한글이 깨어진다면. 
 아마 RH9를 설치한 모든 사람들이 격을 것이다. 멘 페이지에 가끔 한글로 된 것을 볼 수 있는데, 100% 깨어질 것이다. 다음 화면과 같이~^^



이렇게 알 수 없는 &&& 문자들로 이루어질 것이다.
이런 경우 다음 패키지를 깔면 문제가 없다.^^

[root@doly root]# wget http://ftp.superuser.co.kr/pub/redhat/9/less-378-8KR.i386.rpm
--21:33:50--  http://ftp.superuser.co.kr/pub/redhat/9/less-378-8KR.i386.rpm
           => `less-378-8KR.i386.rpm'
Resolving ftp.superuser.co.kr... 완료.
Connecting to ftp.superuser.co.kr[210.114.223.221]:80... connected.
HTTP 요청을 보냅니다, 서버로부터의 응답을 기다림...200 OK
길이:   100,767 [audio/x-pn-realaudio-plugin]
100%[=================================================================>] 100,767      289.43K/s    ETA 00:00
21:33:50 (289.43 KB/s) - `less-378-8KR.i386.rpm'가 보존되었습니다 [100767/100767]
[root@doly root]# rpm -Uvh less-378-8KR.i386.rpm
준비 중...                  ########################################### [100%]
   1:less                   ########################################### [100%]
[root@doly root]# rm -rf less-378-8KR.i386.rpm

이렇게 서치가 끝나고 실행해 보면 다음과 같은 결과를 볼 수 있다.


 


3. rpm으로 커널 업그래이드
 2004년에 커널 버그가 엄청 많이 보고 되었다. 지금까지 나온 커널을 패치한 rpm 버전이 있다. 이것을 설치한다. 물론 조금 더 공부했다며, 최신 버전 커널을 컴파일 해서 설치하는 것도 좋지만, 시간이 너무 오래 걸리고, 알아야할 것도 많기 때문에 지금까지 나온 버그를 모두 고친 커널을 rpm 으로 설치한다.
wget http://ftp.superuser.co.kr/pub/redhat/9/update/kernel-smp-2.4.20-30.9.i686.rpm
wget http://ftp.superuser.co.kr/pub/redhat/9/update/kernel-2.4.20-30.9.i686.rpm
rpm -Uvh kernel-smp-2.4.20-30.9.i686.rpm
rpm -Uvh kernel-2.4.20-30.9.i686.rpm
rm -rf kernel-*.rpm

cpu 가 2개라면 smp 커널을 설치해야한다. 하지만 cpu가 하나라면, smp 는 설치하지 말아두 된다.^^

4. badblock 채크 및 마킹
설치할 때도  배드블락을 채크했을 것이다. 그렇지만 어디에 배드블럭이 있고 어떻게 되었는지에 대한 정보를 얻을 수 없다. 그래서 다시 배드블락을 채크할 것이다. 그리고 만약 발견된다면, 파일 시스템 수준에서 그 블락을 쓰지 못하게 마킹을 할 것이다.
 [root@doly root]# badblocks -sv /dev/hda11
Checking for bad blocks in read-only mode
From block 0 to 2096451
Checking for bad blocks (read-only test): 2096451/  2096451
2096449
2096450
done                        
Pass completed, 3 bad blocks found.

위와같이 3개의 배드블럭이 발견되었다면, 다음 명령어로 아쉬운데로 마킹을 한다. (fsck 명령의 -c 옵션)
[root@doly root]# fsck.ext3 -cvf /dev/hda11
e2fsck 1.32 (09-Nov-2002)
/dev/hda11 is mounted.  
WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

Do you really want to continue (y/n)? yes
/123: recovering journal
Checking for bad blocks (read-only test): done                        
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/123: ***** FILE SYSTEM WAS MODIFIED *****
/123: ***** REBOOT LINUX *****
   78868 inodes used (30%)
      98 non-contiguous inodes (0.1%)
         # of inodes with ind/dind/tind blocks: 3503/14/0
  325956 blocks used (62%)
       0 bad blocks
       0 large files 

   53903 regular files
    3890 directories
    2522 character device files
   15884 block device files
       1 fifo
    4162 links
    2658 symbolic links (2658 fast symbolic links)
       1 socket
--------
   83021 files

 이렇게 작업을 하였다면, 어느정도 안심해두 된다고 생각한다^^;

5. tcp_wapper 설정으로 기본 보안 설정
 물론 처음 설치시 iptabls(방화벽)을 구축했지만, tcpd를 사용하는 데몬들중 허용하는 ip에서만 접근 가능하게 설정 할 것이다.

echo "ALL:ALL" >> /etc/hosts.deny

이런 간단한 명령어로 모든 서비스를 막는다. 물론 막히는 서비스는 몇가지 안 된다^^ 다 열거하며 힘드니~~
그런다음 항상 허용할 데몬들과 허용할 ip를 등록한다.

echo " ipop3d : ALL
sendmail : ALL
ALL : 192.168.0." >> /etc/hosts.allow

위와 같이 입력하여, pop3 서버와 sendmail 은 모든 ip에 대해서 허용하고, 192.168.0.XXX에서 접근 하면 모든 서비스를 허용하도록 한다. 위와 같이 설정하는 것은 telnet 및 ssh에 가장 영향을 많이 받기 때문에 기본 보안설정으로 사용한다. 만약 유동 ip에서 접속한다면 이런 설정이 무의미 하다.^^; ip가 변해서 잘못하면 서버에 접속하지 못하는 불상사가 발생할 수도 있다.

6. ssh 접속시 root 접속 못하게 설정
 ssh에서 root로 바로 접속해서 사용하면 너무 위험하다. 그래서 일반계정으로 접속한 다음 su - 명령어로 root 권한을 획득한 다음 작업하는 것이 좋다. 다음과 같이 간단하게 설정한다.
/etc/ssh/sshd_config 파일을 편집해서 다음과 같이 설정한다.
    PermitRootLogin no
이렇게 하구 sshd를 재시작한다.
/etc/rc.d/init.d/sshd restart

7. su 명령어 특정 사용자만 실행 가능하게 설정
  
우선 root 권한으로 명령을 실행할 수 있는 명령어 sudo를 삭제한다.
[root@doly bin]# rm -rf /usr/bin/sudo
아래와같이 권한 설정을 바꾸고,
chmod 4750 /bin/su
chown root:wheel /bin/su
소유그룹을 wheel로 한다. 그런 다음
/etc/group 파일을 열어 wheel 그룹에 su 명령어를 쓸 사용자들을 등록한다.
(예 : wheel:x:10:root,doly)

9. 자동 시간 설정
 자동으로 정확한 시간을 맞추는 것은 의외로 간단하다. 다음과 같이한다.
[root@doly bin]# crontab -e
05 00 * * * '/usr/bin/rdate -s time.bora.net && /sbin/clock -w'
위와 같은 내용을 복사해서 넣으면 된다.  위와같이 설정해 두면, 매일 매일 00시 05분에 time.bora.net에 접속하여 시간을 동기화한다.^^

10. 일일 백업
  
이젠, 서버에서 가장 중요한 백업에 대한 설정을 하겠다. RAID로 구성되어 있다면 좋겠지만, 비용 문제 때문에 대부분 이 방법을 사용하지 않는다. 일반적인 방법은 하루에 한번정도 압축해 둔다. 시간은 제일 사용자가 없을 시간을 선택한다. 세벽 4시정도^^ 그리구 만약을 위해 누적 백업할 것이다. 디스크 용량이 충분하다면, 백업 데이터는 많이 가지고 있는 것이 좋다. 자.. 그럼 이런 백업 정책을 구상했다면 이 백업정책을 프로그램으로 짠다. 다음과 같이^^;

아래 내용을 /root/backup.sh 파일에 넣는다.

#!/bin/bash
export Today="`date '+%y-%m-%d'`"
backup_dir="/backup/data"
backup_count="2" #### 백업본 보관 일 수 (2일간 보관)

########### delete 오래된 백업데이터 삭제
dirlists=`/bin/ls -t $backup_dir 2>/dev/null`
i=1
for dir in $dirlists ; do
  if [ "$i" -ge $backup_count ] ; then
    /bin/rm -rf "$backup_dir/$dir"
  fi
  i=$(($i+1))
done

################ 새로운 디렉토리 생성 ####
/bin/mkdir -p ${backup_dir}/$Today
cd ${backup_dir}/$Today

###########  home 디렉토리에 사용자별로 백업을 한다.
dirlists=`/bin/ls -t /home 2>/dev/null`
for dir in $dirlists ; do
  tar cvfpz ${backup_dir}/$Today/$dir.tar.gz /home/$dir
done
####### 기타 디렉토리를 백업한다
tar cvfpz ${backup_dir}/$Today/usr.local.tar.gz /usr/local
tar cvfpz ${backup_dir}/$Today/etc.tar.gz /etc
tar cvfpz ${backup_dir}/$Today/var.named.tar.gz /var/named
tar cvfpz ${backup_dir}/$Today/var.spool.mail.tar.gz /var/spool/mail

############# 링크를 만들어 준다.####
rm -rf /backup/today
ln -s ${backup_dir}/$Today /backup/today


위의 내용을 복사해서 넣는다. 그리구 실행권한을 준다.
[root@doly root]# chmod 700 /root/backup.sh
 그 다음 새벽 4시에 자동실행되게 crontab에서 설정한다.
[root@doly bin]# crontab -e
00 04 * * * '/root/backup.sh | mail -s "백업결과보고" 메일주소
백업 결과를 메일로 받을 것이다. 그렇기 때문에 위에 메일주소 부분을 받고자 하는 메일주소 바꿔줘야한다.

11. 일일 시스템 점검
  
일일 점검사항은 많으면 많을수록 좋다.^^ 서버에 들어와서 일일이 검사하면 좋겠지만. 여간 귀찮은 일이 아닐 수 없다. 그래서 기본적으로 관찰해야 할 놈들을 모아서 하루에 한번씩 실행한 다음 메일로 받아본다.

 아래 내용을 /root/check.sh 파일에 넣는다.

#!/bin/bash
echo -e "\n 1. 오늘날짜:"
date
echo -e "\n 2. 디스크 용량 점검 "
df -h
echo -e "\n 3. 포트 점검 "
netstat -an | grep LISTEN
echo -e "\n 5. /tmp 디렉토리 점검 "
ls -al /tmp
ls -al /var/tmp
echo -e "\n 6. /var/spool/mqueue 점검 (큐에 쌓인 메일 수 카운트==> 너무 많으면 문제) "
ls -l /var/spool/mqueue | wc -l
echo -e "\n 7. 실행 프로세스 점검 "
pstree
echo -e "\n 8. 최후 접속자 점검"
lastlog | grep -v "한번도"

위의 내용을 복사해서 넣는다. 그리구 실행권한을 준다.
[root@doly root]# chmod 700 /root/check.sh
 그 다음 새벽 7시에 자동실행되게 crontab에서 설정한다.
[root@doly bin]# crontab -e
00 07 * * * '/root/check.sh | mail -s "시스템 점검 결과보고" 메일주소
채크 결과를 메일로 받을 것이다. 그렇기 때문에 위에 메일주소 부분을 받고자 하는 메일주소 바꿔줘야한다.

12. 본 강좌를 마무리 하며 ...
 
  서버 설치후에 손봐야 할 것이 한 두가지가 아니다. 내가 하는 것은 이 보다 더 많고 복잡하다. 하지만 최소한 해야 한다는 것은 올려 두었다. 위의 내용뿐 아니라 백업이나 점검 같은 경우는 필요하다면 추가해서 결과를 받아보는 것이 좋다.
 지금 까진 기본 설정이 었다. 다음에도 강좌는 계속 이어진다. 본 강좌를 읽고 부디 도움이 되길 바란다. 힘들 게 쓴만큼^^

  혹시 본 강좌에 대한 질문 및 문의사항이 있으면, 메일 한통 보내주기 바란다. 메일주소는 doly 골뱅이superuser.co.kr 이다. 메일 주소를 무단 수집해서 스팸메일을 보내는 이를 막기 위해서 위와 같이 표기했으며, 골뱅이 부분은 @ 치환하면 된다.


 

출처 : http://www.superuser.co.kr/
 

'OS > LINUX' 카테고리의 다른 글

[펌] 표준 보안 퍼미션 설정  (0) 2004.06.25
[펌] linux setup for hosting  (0) 2004.06.21
[펌] ftp 이용한 Hacking  (0) 2004.06.10
[펌] Iptables를 이용한 Packet Filtering  (0) 2004.06.10
[펌] rm으로 지운파일 복구하기  (0) 2004.06.10
Posted by tornado
|