[시스템] 리눅스 설치 후 시스템 초기화 작업

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

                                            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 제거.

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

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

2 Responses

  1. 2022년 6월 20일

    1lascivious

  2. 2023년 1월 27일

    3educated

페이스북/트위트/구글 계정으로 댓글 가능합니다.