[시스템] 리눅스 설치 후 시스템 초기화 작업
리눅스 셋팅시 시스템 초기화 작업
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 제거.
? 셋팅 완료후 컴파일된 이미지로 부팅되는지 재부팅으로 테스트후 서비스 시작.
This was beautiful Admin. Thank you for your reflections.
This was such a clear and well-structured article. Very helpful!