Posted on 2004/03/03 13:39
Filed Under 리눅스기술문서/서버관련 조회수:

리눅스 셋팅시 시스템 초기화 작업

                                            last modified 2000/11/07


? 반드시 커널 컴파일을 하여 시스템을 최적화한다.
커널 컴파일 방법은 관련자료 참고

? tenlet 접속후 color 화면을 없애기.

☞ 와우리눅스의 경우
(1) 각 계정 및 /etc/skel의 .bashrc에서
alias ls='ls -F --show-control-chars --color=tty'를 주석처리.
(2) /etc/profile.d에서
colorls.csh colorls.sh 를 삭제
☞ 알짜 리눅스의 경우
(1) 각 계정 및 /etc/skel의 .bashrc에서
alias ls='ls -F --show-control-chars --color=tty'를 주석처리.

? 계정 생성
  암호를 지정하지 않은 msql / mysql / log / setting
  암호를 지정한 backup (backup 암호는 amoun 에게 문의)
/etc/passwd에서
ftp , xftp 주석처리

?데몬 재실행(restart)시 color 화면 없애기
/etc/sysconfig/init에서 COLOR 부분 주석처리.

?/etc/inetd.conf에서
port1234 stream tcp    nowait root   /usr/sbin/tcpd port1234
port12345   stream tcp    nowait root   /usr/sbin/tcpd port12345
port4321   stream tcp    nowait root   /usr/sbin/tcpd port4321
port10101   stream tcp    nowait root   /usr/sbin/tcpd port10101    
추가.

pop-3 에 대해 주석을 지우고 auth / linuxconf 에 대해 주석처리후
/etc/rc.d/init.d/inet restart 로 refresh
inetd.conf 에는
pop3 / telnet / port1234 등만 떠 있어야 함.

?ps aux 후
portmap / identd / atd / lpd / gpm -t / xfs 삭제

?/etc/rc.d/rc3.d에서
S10network S30syslog S50inet     S80sendmail S99local
S20random  S40crond  S75keytable S85proftpd 이외 모두 삭제,
--> 부팅시 Run-level 3으로 실행되는데, K 는 실행되지 않는 것이고
   S 는 실행되는 것이다. 실행순서는 번호순서대로 실행된다.

? nmap 으로 스캔검사
www10번서버에서 nmap www50.tt.co.kr -p 1-65535 로 조회하여
21/tcp    open       ftp
23/tcp    open       telnet
25/tcp    open       smtp
110/tcp   open       pop-3
587/tcp   open       unknown    
이외의 데몬이 있는지 조사하여 처리.
참고로 587번은 SMTP 인증을 위한 Sendmail 이다.


? /etc/inittab에서 .

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6      
부분을 위처럼 4부터 주석처리.

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2 부분을 주석처리하면 안됨

? Quota 설정
(1) /etc/fstab 편집
  /dev/sda5  /home2  ext2   defaults,usrquota=/home2/.quota 1 2 와 같이 설치
  touch /home2/.quota ( size 가 0 인 .quota 파일 생성)
  chmod 600 /home2/.quota (권한 설정) 와 같이 home2부터 homex 모두 설정.
(2) /sbin/quotacheck -a (쿼터 체크를 하면 .quota 에 쿼터에 대한 정보가
   파일에 저장된다.)


?/etc/crontab 설정

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
10 4 * * 2,4 root run-parts /etc/cron.backup
0 0 * * 1 root rdate -s time.bora.net && clock -w
#0 0,8,16 * * * root /www/cgi-bin/log/logdbm.cgi > /dev/null    
와 같이 설정.(이부분은 300개가 모두 찬후 로그 분석을 위해 sim 이 작업함)

/etc/crontab 은 7개의 필드로 구성(6번째는 생략 무방)되어 있다.
      분 / 시간 / 날짜 / 달 / 요일 / 사용자 / 명령
사용자는 생략 가능
/etc/cron.daily 에 check.cgi / mails / weblog 추가
최소한 권한은 700 이상이어야 함.

● check.cgi
#!/usr/bin/perl
$TASK = `/sbin/ifconfig|grep PROMISC`;
$MESSAGE = "UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500
Metric:1";
$HOSTNAME = `/bin/hostname`;
$TO_MAIL     = 'system at
tt.co.kr';
$SUBJECT     = "[경고] PROMISC MODE";
$MAIL_PROGRAM = "/usr/sbin/sendmail";
if ($TASK){
open(MAIL, "|$MAIL_PROGRAM -t");
  print MAIL "To: $TO_MAIL \\n";
  print MAIL "Subject: $SUBJECT \\n\\n";
  print MAIL "$HOSTNAME Server 가 Sniffing 의 가능성이 있는 PROMISC MODE 로
설정되어 있어\\n";
  print MAIL "Cracking 시도의 위험이 있습니다.\\n";
  print MAIL "ifconfig eth0 -promisc 로 수정되었습니다.\\n";
  print MAIL "시스템을 점검하시기 바랍니다..\\n\\n\\n";
  print MAIL " ===== TT-NET-CENTER=====\\n";
close(MAIL);
`ifconfig eth0 -promisc`;
}                                

● mails
#!/bin/sh
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable        

●weblog
#!/bin/sh
cd /home/log/public_html/uhan
./config.pl            


?/etc/cron.weblog 에 log
● log
#!/bin/sh
find /home/log/public_html/gongzone/log -mtime +2 -exec rm -f {} \\;      

?/bin/Popsh 설정(chmod 755 Popsh)
●Popsh

#!/bin/sh
echo "telnet아이디가 아닌 pop3계정입니다."
echo "Telnet 접속시 패스워드만 바꾸는 용도로만 사용이 가능합니다."
           /usr/bin/passwd
echo "이용해 주셔서 감사합니다."
echo "접속이 종료됩니다........"    

/etc/cron.backup 에 backup / hosts.deny.sh 추가(권한 700 이상)

● backup
#!/bin/sh
cd /backup
rm -f *.tar.gz
tar cvfpz httpd.tar.gz /www/*
tar cvfpz home2.tar.gz /home2/*
tar cvfpz home3.tar.gz /home3/*
tar cvfpz home4.tar.gz /home4/*
tar cvfpz home5.tar.gz /home5/*
tar cvfpz home6.tar.gz /home6/*
tar cvfpz etc.tar.gz /etc/*
tar cvfpz mail.tar.gz /var/spool/mail/*
tar cvfpz mysql.tar.gz /usr/local/mysql/var/*
chown backup.backup *.tar.gz
chmod 700 *.tar.gz
ls -alh | mail -s www?? backup amoun at tt.co.kr      

● hosts.deny.sh
#!/bin/sh
rm -f /etc/hosts.deny
ncftpget -u hostsdeny -p 'xxxxxx' www40.tt.co.kr /etc/ '/etc/hosts.deny'
xxxx 암호는 다른 서버의 암호참조.


?/etc/skel에서
.Xdefaults .screenrc 와 Mail 삭제
/etc/skel/public_html 이하를 타 서버에서 복사.

? /etc/hosts 파일 수정
127.0.0.1              localhost.localdomain localhost
# The below is auto-generatedinitscript: Plz check yourself
211.47.65.43           www51.tt.co.kr www51      
형식으로 수정.

?/etc/proftpd.conf 파일 수정
/etc/proftpd.con에서
LsDefaultOptions "-a" 부분 주석삭제.
ServerName을                  "FTP SERVER" 로 설정.
?Tcp Wrapper 셋팅
/etc/hosts.denyck 와 /etc/hosts.denyck1 파일을 타서버에서 복사(권한 755)

?보안 관련 설정
chmod 700 /bin/ps
chmod 700 /bin/netstat
chmod 700 /bin/dmesg
chmod 700 /bin/df
chmod 700 /bin/mount
chmod 700 /usr/bin/w
chmod 700 /usr/bin/who
chmod 700 /usr/bin/finger
chmod 700 /usr/bin/last
chmod 700 /usr/bin/top
chmod 700 /usr/bin/tin

etc/security/limits.conf 에서
*               hard   maxlogins      4
설정


?/bin/su 권한 변경
/etc/group 에
wheel:x:10:root,system  와 같이 system 추가

chgrp wheel /bin/su
chmod 4750 /bin/su 설정.


? 사용자 접속후 입력 명령어 점검
1. /.../wwwXX 파일 생성.
mkdir /...
touch /.../wwwXX
chown system.system /.../wwwXX
chmod 702 /.../wwwXX

2. wwwXX 의 /etc/profile 에 다음의 줄 추가

if [ $LOGNAME != "system" ];
then
HISTFILE=/.../wwwXX
TMOUT=200
echo "###############################################"
>> /.../wwwXX
echo "wwwXX 로그인 ID: $LOGNAME 접속시각: `/bin/date`" >> /.../wwwXX
fi    

root의 .bashrc에서
HISTFILE=/root/.bash_history
TMOUT=-1 추가.

3./etc/logrotate.conf 의 하단에 다음의 줄을 추가..

/.../wwwXX {
daily
rotate 4
errors system at tt.co.kr
}
4. /etc/cron.admin에서
script1 에
ncftpget -u system -p '********' wwwXX.tt.co.kr . '/.../wwwXX' 추가
script2 에 내용 수정

? /var/log/secure 파일을 check 서버에 남기기
/etc/syslog.conf 에
#authpriv.*                                            /var/log/secure
authpriv.*     @211.47.65.15                                    
로 설정후 /etc/rc.d/init.d/syslog restart

check 서버에서 /etc/hosts 에 새로운 서버의 IP 추가후
/etc/rc.d/init.d/syslog stop 을 해서 데몬을 죽인후
여기서 데몬을 시작하는 옵션으로
/sbin/syslogd -m 0 -r -h를 실행.

?check 서버에서의 patch
system/patch 디렉토리에서 관련 rpm을 패치.
cat /etc/*hat* 로 시스템의 버전에 맞는 버전으로 패치.
rpm -Uvh filename.rpm

? snmpd 설치
check 서버의 system/patch에서 snmp.tar.gz 복사.
/ 디렉토리에서 압축해제.
/tmp/cmu-snmp-linux-3.7/etc 디렉토리에서
./installconf -mini traffic 입력.
/usr/sbin/snmpd -f 로 snmpd 실행.

? mysql 관련
/usr/local/mysql/bin/mysql을 파일을 /usr/bin/ 에 복사하여 mysql 설치후
각 계정에 mysql 파일을 복사하지 않는다.
chown -R mysql.mysql /usr/local/mysql/bin
chown -R mysql.mysql /usr/local/mysql/var
chmod 700 /usr/local/mysql/var를 한후 mysql 계정으로 데몬을 띄운다.

?apache 관련
/www/setting 은
drwx--x---   2 root    setting     1024 Oct 27 11:37 setting/ 와 같이 한다.
chown root.setting /www/setting
chmod 710 /www/setting
setting 이하의 권한은 아래와 같이 설정한다.
ls -la /www/setting
-rwxr-x---   1 root    setting      945 Oct 4 14:31 index.html*
-rw-r--r--   1 root    setting     3179 Oct 4 14:30 intro.shtml
-rwxr-x---   1 root    setting      535 Oct 4 14:31 menu.html*
-rwsr-x---   1 root    setting      349 Oct 4 14:30 numdomain.cgi*
-rwsr-x---   1 root    setting     2642 Sep 16 15:43 refresh.cgi*
-rwxr-x---   1 root    setting     1093 Sep 7 11:50 refresh.html*
-rwsr-x---   1 root    setting    12087 Oct 19 21:40 setting.cgi*
-rwxr-x---   1 root    setting     1534 Sep 7 17:47 setting.html*  

즉, cd /www/setting
chown root.setting *
chmod 4750 *.cgi
  
☞ /www/cgi-bin에서 printenv 와 test-cgi 는 삭제한다.

☞ /www/conf/httpd.conf에서
BrowserMatch "WebZIP" go_out
BrowserMatch "Teleport" go_out
BrowserMatch "GetRight" go_out
BrowserMatch "Teleport Pro/1.29" go_out
BrowserMatch "Teleport Pro/1.24" go_out
BrowserMatch "Teleport Pro/1.25" go_out
BrowserMatch "Teleport Pro/1.26" go_out
BrowserMatch "Teleport Pro/1.28" go_out
BrowserMatch "Teleport Pro/1.29" go_out
BrowserMatch "WebZIP/2.0" go_out
BrowserMatch "WebZIP/2.32" go_out
BrowserMatch "WebZIP/2.46" go_out
BrowserMatch "WebZIP/2.70" go_out
BrowserMatch "WebZIP/2.75" go_out
BrowserMatch "WebZIP/3.0" go_out
BrowserMatch "WebZIP/3.01" go_out
BrowserMatch "WebZIP/3.03" go_out
BrowserMatch "WebZIP/3.05" go_out
BrowserMatch "WebZIP/3.07" go_out
BrowserMatch "WebZIP/3.5" go_out
BrowserMatch "WebZIP/3.6" go_out
BrowserMatch "WebZIP/3.65" go_out
BrowserMatch "WebZIP/3.66" go_out
BrowserMatch "WebZIP/3.7" go_out
BrowserMatch "WebZIP/3.71" go_out
BrowserMatch "WebZIP/3.80" go_out
<Directory />
Options Includes ExecCGI
  AllowOverride All
  Order allow,deny
  Allow from all
  Deny from env=go_out
</Directory>                    
# php 화일 업로드 제한 configuration.
<Directory /home*/*/public_html/wwwboard/data>
<FilesMatch "\\.(php3|php|cgi|pl)$">
Order allow,deny
Deny from all
</FilesMatch>
</Directory>
<Directory /home*/*/public_html/wwwb/data>
<FilesMatch "\\.(php3|php|cgi|pl)$">
Order allow,deny
Deny from all
</FilesMatch>
</Directory>          
<Directory /home*/*/public_html/way-board/db/*/file>
<FilesMatch "\\.(php3|php|cgi|pl)$">
Order allow,deny
Deny from all
</FilesMatch>
</Directory>
<Directory /home*/*/public_html/technote/board/*/upfile>
<FilesMatch "\\.(php3|php|cgi|c|pl)$">
Order allow,deny
Deny from all
</FilesMatch>
</Directory>
<Directory /home*/*/public_html/cwb-data/data/*>
<FilesMatch "\\.(php3|php|cgi|pl)$">
Order allow,deny
Deny from all
</FilesMatch>    
</Directory>
<Files "*chat*.cgi">
Order allow,deny
Deny from all
</Files>
<Files "*bind*.c">
Order allow,deny
Deny from all
</Files>          
추가 설정

? /www/conf/setting.conf에서

<Directory />
  Options ExecCGI Includes
  AllowOverride All
  Order deny,allow
  Deny from all
  Allow from 211.47.64. 211.47.65.XX
</Directory>

MinSpareServers 5
MaxSpareServers 10
StartServers 5    
MaxClients 20
Port 10000
User setting
Group setting
DocumentRoot "/www/setting
로 설정.

/www/cgi-bin 이하에
drwxr-x---   2 root    nobody      1024 Nov 6 16:29 mail/
drwxr-x---   2 root    nobody      1024 Nov 6 16:29 cgi/ 생성.

/www/cgi-bin/cgi/에
-rw-r--r--   1 root    root         263 Oct 27 11:42 .htaccess
-r-x------   1 nobody  nobody     22063 Oct 24 21:14 diiii.cgi*
-r-x------   1 nobody  nobody      4956 Oct 24 17:50 mysql.cgi*   복사
/www/cgi-bin/mail/ 에 관련 파일 복사
-rw-r--r--   1 root    root         243 Nov 1 13:44 .htaccess
-rw-rw-r--   1 root    nobody        25 Nov 6 12:58 catch.txt
-rw-r--r--   1 root    root         717 Oct 30 10:07 ipnum.txt
-rwsr-x---   1 root    nobody     25719 Nov 6 16:29 mail.cgi*  


? /etc/rc.d/rc.local 파일 구성

/www/bin/apachectl start
/usr/local/Hughes/bin/msql2d &
su mysql -c "/usr/local/mysql/bin/mysql.server start"
/usr/sbin/snmpd -f
/www/bin/setting -f /www/conf/setting.conf

? 몇몇 실행 파일이 있는지 확인.
  /usr/sbin/rotatelogs 또는 /bin/rotatelogs
  bin/ping이 있는지 확인.

  rpm -q imap 로 imap 이 깔렸는지 확인.
  ln -s /usr/bin/htpasswd /usr/sbin/htpasswd 로 htpasswd를 링크함.
  ln -s /usr/bin/perl /usr/local/bin/perl 로 /usr/local/bin/perl를 링크함.
  rpm -e --nodeps lpr
  rpm -e --nodeps ypbind 로 불필요한 rpm 제거.

? 셋팅 완료후 컴파일된 이미지로 부팅되는지 재부팅으로 테스트후 서비스 시작.

Writer profile
author image
-아랑 -

트랙백 주소 : 이 글에는 트랙백을 보낼 수 없습니다

About

by 서진우

Counter

· Total
: 4696798
· Today
: 868
· Yesterday
: 816