Linux Security

by ADMINPLAY posted Jul 18, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
-----------------------------------------------------------------------------
--                            2003. 05. 26    ㅤJung.s.w
-- Linux Security [MK]
-- DNS & Sendmail(DRAC, SMTP) & Proftp
-----------------------------------------------------------------------------

1. DNS
2. Sendmail(DRAC,SMTP)
3. Proftp
4. WWW(Apache) + SSL(Secure Socket Layer)
5. 방화벽(ipchains, iptables)
6. 부하분산(RSYNC, NAT)

----------------------------------------------------
// DNS 설정

[root@localhost root]# vi /etc/resolv.conf
nameserver 211.169.219.96 -->  자신IP를 NameServer로 등록
nameserver 203.248.252.2
search localdomain


[root@localhost root]# vi /etc/named.conf

zone "mk.com" IN { --> mk.com 추가
     type master;
     file "mk.zone";
};


zone "pk.com" IN { --> pk.com 추가
     type master;
     file "pk.zone";
};

zone "219.169.211.in-addr.arpa" IN { -->자신 IP 세자리만 역으로해서 추가
     type master;
     file "mk.rev";
};


[root@localhost root]# cd /var/named/
[root@localhost root]# cp named.local mk.zone
[root@localhost root]# cp named.local pk.zone
[root@localhost root]# cp named.local mk.rev
[root@localhost root]# vi mk.zone --> mk.zone. pk.zone 설정, 여러개 설정가능
$TTL    86400
@       IN      SOA     ns.mk.com. root.mk.com.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      ns.mk.com.

              IN      A      211.169.219.96
ns            IN      A      211.169.219.96
www           IN      A      211.169.219.96
mail          IN      A      211.169.219.96
@             IN      MX        10      mail.mk.com.
ftp           IN      CNAME      @ --> 필요시 Alias지정

[root@localhost root]# vi mk.rev --> mk.rev 설정  .rev파일은 하나만 생성
$TTL    86400
@       IN      SOA     ns.mk.com. root.mk.com.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      ns.mk.com.
96       IN      PTR     localhost. --> IP 끝자리



[root@localhost root]# /etc/rc.d/init.d/named restart --> named 데몬 재시작

[root@localhost root]# nslookup --> DNS설정 확인 작업
Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
> www.mk.com
Server:         211.169.219.96
Address:        211.169.219.96#53

Name:   www.mk.com
Address: 211.169.219.96

> mail.mk.com
Server:         211.169.219.96
Address:        211.169.219.96#53

Name:   mail.mk.com
Address: 211.169.219.96
>


----------------------------------------------------
// Sendmail 설정

[root@localhost root]# rpm -e --nodeps sendmail*

--Sendmail Package 파일 다운로드
ftp ftp.wowlinux.co.kr
/wow/7.3-ParanR2/i386/RedHat/RPMS


[root@localhost root]# rpm -ivh sendmail-8.12.5.-5wow


--수신자 설정
[root@localhost root]# vi /etc/mail/local-host-names
  jsw.lsrg.net             --> 추가
  mk.com
  pk.com
  mail.mk.com
  mail.pk.com


--RELAY 설정
1. 내부 클라이언트
   메일서버를 통해서 밖으로 메일전달 : RELAY
2. 외부있는 사람이 내부 메일 보낼수 없게(수신거부) : REJECT, DISCARD, 550
[root@localhost root]#vi /etc/mail/access
  211.169.219      RELAY       --> 내부 사용자가 밖으로 메일보내도록 설정 추가


[root@localhost root]# makemap hash /etc/mail/access < /etc/mail/access   --> access.db파일 생성
[root@localhost root]# db_dump -p /etc/mail/access.db   --> access.db파일 확인
VERSION=3
format=print
type=hash
h_nelem=4
HEADER=END
localhost.localdomain
RELAY
211.169.219
RELAY
localhost
RELAY
127.0.0.1
RELAY
DATA=END


[root@localhost root]# vi /etc/mail/sendmail.cf         --> /etc/sendmail/sendmail.cf 인 경우도 있음.

# SMTP daemon options

#O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA   --> 이부분의 addr부분 삭제
    268 O DaemonPortOptions=Port=smtp, Name=MTA


[root@localhost root]# /etc/rc.d/init.d/sendmail restart --> sendmail데몬 재시작


--hostname 변경
[root@localhost root]# hostname            --> 현재 hostname확인
localhost.localdomain
You have new mail in /var/spool/mail/root

[root@localhost root]# hostname jsw.lsrg.net    --> hostname을 jsw.lsrg.net으로 변경, 재부팅하면 사라짐.
[root@localhost root]# hostname --> hostname변경 확인
jsw.lsrg.net

[root@localhost root]# vi /etc/sysconfig/network   --> 재부팅해도 사라지지않게 hostname을 설정
NETWORKING=yes
HOSTNAME=jsw.lsrg.net --> hostname을 jsw.lsrg.net으로 변경
GATEWAY=211.169.219.1

[root@localhost root]# vi /etc/hosts
211.169.219.96 jsw.lsrg.net              --> 추가




--mail testing
1. local --> local 메일보내기
[root@localhost root]# mail mk

2. local --> local 메일보내기
[root@localhost root]# mk@jsw.lsrg.net

3. local --> 외부
[root@localhost root]# mail jsw1721@hotmail.com

4. 외부 --> 내부
한메일, 야후,...   --> mk@jsw.lsrg.net

5. 내부 --> 내부(계정명@호스명)
[root@localhost root]# mail mk@kys.lsrg.net
hostname이 정확히 정의가 되어 있어야 한다.



----------------------------------------------------
// Sendmail에서 동적 IPㅤAccess허용
// 1.SMTP 인증


[root@localhost root]# rpm -qa |grep cyrus  --> linux 6.2 기본설치

[root@localhost root]# vi /etc/mail/sendmail.cf --> sendmail.cf 파일 수정

    144 #CL root
    145 C{TrustAuthMech}DIGEST-MD5 CRAM-MD5 LOGIN PLAIN --> 설정 추가
    146 C{E}root

    516 # list of authentication mechanisms
    517 #O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
    518 O AuthMechanisms=DIGEST-MD5 CRAM-MD5 LOGIN PLAIN   --> 설정 추가

[root@localhost root]# vi /usr/lib/sasl/Sendmail.conf  --> ㅤSendmail.conf 파일 수정

    pwcheck_method:shadow --> pam을 shadow로 수정


[root@localhost root]# /etc/rc.d/init.d/sendmail restart --> sendmail데몬 재시작

--testing
[root@localhost root]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 jsw.lsrg.net ESMTP Sendmail 8.12.5/8.12.5; Mon, 26 May 2003 12:45:41 +0900
ehlo localhost --> 해당 명령 수행, 확인
250-jsw.lsrg.net Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-DELIVERBY
250 HELP

---------
// 2. DRAC

http://www.ls-l.net/drac/ 사이트에서
Additional packages:
- drac (RedHat 7.0)(RedHat 7.1)(RedHat 7.2)(RedHat 7.3)(RedHat 8.0)  --> 해당버전 다운로드(7.3)
- qpopper w/drac (RedHat 7.0)(RedHat 7.1)(RedHat 7.2)(RedHat 7.3) --> 해당버전 다운로드(7.3)



[root@jsw root]# rpm -ivh drac-1.11-1.i386.rpm
준비중...                  ########################################### [100%]
   1:drac                   오류: 아키이브를 푸는데 실패함 다음 파일의 /usr/man/man8/rpc.dracd.8.gz;3ed1a421: cpio: open 실패함
   - 디렉토리가 아닙니다.

[root@jsw root]# cd /usr/man/
[root@jsw man]# ls
man1/  man3/  man4*  man5*  man8*
[root@jsw man]# rm man8 --> man8이란 파일 삭제(동일한 이름의 man8디렉토리 생성이 않되므로 삭제시킴)
rm: remove `man8'? y

[root@jsw man]# cd /root
[root@jsw root]# rpm -ivh drac-1.11-1.i386.rpm
준비중...                   ########################################### [100%]
   1:drac                   ########################################### [100%]
[root@jsw root]# rpm -ivh qpopper-3.1.2-1.i386.rpm
준비중...                   ########################################### [100%]
   1:qpopper                ########################################### [100%]
xinetd ¸를 정지함: [  확인  ]
xinetd (을)를 시작합니다: [  확인  ]


[root@jsw root]# vi /etc/mail/sendmail.cf  --> 파일수정

     95 Fw/etc/mail/local-host-names
     96 # dynamic relay authorization control map   --> 추가
     97 Kdrac btree /etc/mail/dracd     --> ?煞?

   1190 SLocal_check_rcpt
   1191 # allow recent POP/IMAP mail clients to relay --> 추가
   1192 R$*                     $: $&{client_addr} --> 추가
   1193 R$+                     $: $(drac $1 $: ? $) --> 추가
   1194 R?                      $@ ? --> 추가
   1195 R$+                     $@ $#OK --> 추가

   주의사항 : R$뒤는 tab로 공간을 뛰우고... 뒤의 $부분은 spacebar로 뛰움...


[root@jsw root]# /etc/rc.d/init.d/sendmail restart

[root@jsw root]# /etc/rc.d/init.d/portmap restart

[root@jsw root]# /etc/rc.d/init.d/dracd restart


[root@jsw root]# vi /etc/xinetd.d/ipop3

      1 # default: off
      2 # description: The POP3 service allows remote users to access their mail \
      3 #              using an POP3 client such as Netscape Communicator, mutt, \
      4 #          or fetchmail.
      5 service pop3
      6 {
      7     disable = yes --> yes인지 확인...
      8     socket_type     = stream
      9     wait            = no
     10     user            = root
     11     server          = /usr/sbin/ipop3d
     12     log_on_success  += HOST DURATION
     13     log_on_failure  += HOST
     14 }


[root@jsw root]# /etc/rc.d/init.d/xinetd restart --> xindet데몬 재시작


[root@jsw root]# telnet 211.169.219.91 110 --> QPOP을 이용하여 인증을 거침...
Trying 211.169.219.91...
Connected to 211.169.219.91.
Escape character is '^]'.
+OK QPOP (version 3.1.2) at kys.lsrg.net starting.
user mk --> 계정
+OK Password required for user.
pass 123 --> 암호
+OK user has 0 visible messages (0 hidden) in 0 octets.
list
+OK 0 visible messages (0 octets)
.
quit --> 종료
+OK Pop server at kys.lsrg.net signing off.
Connection closed by foreign host.


[root@jsw root]# db_dump -p /etc/mail/dracd.db
VERSION=3
format=print
type=btree
HEADER=END
211.169.219.91 --> 해당 IP가 등록됨....
1053930171
DATA=END


[root@jsw root]# telnet 211.169.219.91 25 --> 메일서버를 통해 메일발송 testing
Trying 211.169.219.91...
Connected to 211.169.219.91.
Escape character is '^]'.
220 kys.lsrg.net ESMTP Sendmail 8.12.5/8.12.5; Mon, 26 May 2003 15:00:48 +0900
mail from : mk@jsw.lsrg.net --> jsw.lsrg.net의 mk계정에 메일 보내기
250 2.1.0 mk@jsw.lsrg.net... Sender ok
rcpt to : jsw1721@yahoo.co.kr --> 외부 yahoo에 메일 발송
250 2.1.5 jsw1721@yahoo.co.kr... Recipient ok
data -->
354 Enter mail, end with "." on a line by itself
abcdefg --> 메일 내용 작성
.
250 2.0.0 h4Q60mO8003470 Message accepted for delivery

500 5.5.1 Command unrecognized: ""
data
503 5.0.0 Need MAIL command
quit
221 2.0.0 kys.lsrg.net closing connection
Connection closed by foreign host.


----------------------------------------------------
//ssh

[root@jsw root]# /etc/rc.d/init.d/sshd restart
sshd (을)¸종료함:                                        [ 확인 ]
sshd를 시작함:                                           [ 확인 ]

[mk@kys mk]$ ssh -l mk 211.169.219.105
The authenticity of host '211.169.219.105 (211.169.219.105)' can't be established.
RSA1 key fingerprint is 23:44:b0:8a:63:7f:ef:cb:c3:71:24:9d:53:cd:82:67.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '211.169.219.105' (RSA1) to the list of known hosts.
mk@211.169.219.105's password:
Last login: Mon May 26 15:38:34 2003 from 211.169.219.91
No mail.


----------------------------------------------------
//ftp

--설치
[root@jsw root]# rpm -qa |grep proftpd
[root@jsw root]# rpm -ivh proftpd-1.2.5-2wow

-- portsentry 제거
[root@jsw root]# vi /etc/rc.d/rc.local --> 원할한 작업을 위해 portsentry를 자동실행파일에서 주석처리
       # /usr/local/psionic/portsentry/portsentry -atcp

--설정파일
[root@jsw root]# vi /etc/proftpd.conf --> 7.0
[root@jsw root]# vi /etc/proftpd/conf/proftpd.conf --> 7.1
[root@jsw root]# vi /etc/proftpd/proftpd.conf --> 7.3

[root@jsw root]# vi /etc/proftpd/proftpd.conf
      7 ServerName              "Proftpd FTP Server"    --> ServerName 지정
     21 DeferWelcome            off --> ServerName사용을 위해 off로 설정

[root@jsw root]# /etc/rc.d/init.d/proftpd restart --> proftpd데몬 재시작

--inetd로 수행
[root@jsw root]# vi /etc/proftpd/proftpd.conf --> inetd로 실행
      8 #ServerType             standalone --> #을 이용하여 주석처리
      9 ServerType              inetd --> #제거

[root@jsw root]# /etc/rc.d/init.d/proftpd stop

[root@jsw root]# vi /etc/xinetd.d/proftpd-xinetd
      6     disable = no --> no로 설정

[root@jsw root]# /etc/rc.d/init.d/xinetd restart --> xinetd데몬 재시작

--standalone
[root@jsw root]# vi /etc/xinetd.d/proftpd-xinetd
      6     disable = yes --> yes로 설정

[root@jsw root]# /etc/rc.d/init.d/xinetd restart --> xinetd데몬 재시작

[root@jsw root]# vi /etc/proftpd/proftpd.conf --> standalone로 실행
      8 ServerType             standalone --> #제거
      9 #ServerType              inetd --> #로 주석처리

[root@jsw root]# /etc/rc.d/init.d/proftpd restart --> proftpd데몬 재시작



---Root로 Login 할 수 있게 하는 방법

-proftp
[root@jsw root]# vi /etc/proftpd/ftpusers
root --> root 제거

[root@jsw root]# vi /etc/proftpd/proftpd.conf
RootLogin on --> on으로 설정

-ssh
[root@jsw root]# vi /etc/ssh/sshd_conf
PermiRootLogin yes --> yes로 수정

-telnet
[root@jsw root]# vi /etc/pam.d/login 파일의 두번째줄 주석처리
      2 #auth       required /lib/security/pam_securetty.so   --> 주석처리



---루트디렉토리 설정
[root@jsw root]# vi /etc/proftpd/proftpd.conf
     23 DefaultRoot             ~ !mk --> 모든사용자는 자신의 디렉토리가 루트(/)
         mk사용자는 제외 시킴
[root@jsw root]# /etc/rc.d/init.d/proftpd restart --> 데몬 재시작


* 7.1에선 proftp데몬 버그로 계정생성후 telnet은 로그인되는데 ftp가 안되는 경우
  /etc/rc.d/init.d/proftpd restart 데몬을 재시작해야됨.



------------------
     7 ServerName    "Jung's FTP Server"  --> ServerName사용하기 위해 DeferWelcome항목 off설정
     8 #ServerType       standalone --> standalone방식
     9 ServerType        inetd --> xinetd방식

     19 RootLogin        off     --> Root로 로그인하려면 on으로하고 /etc/proftpd/ftpusers에서 root삭제

     21 DeferWelcome    off     --> 자신의 서버 이름을 표시하기 위해선 off로 설정

     23 DefaultRoot             ~ !mk

     33 TimeoutIdle             0 --> 해당 시간동안 작업이 없으면 종료시킴, 0은 무제한
     34 TimeoutNoTransfer       0 --> 해당 시간동안 전송작업이 없으면 종료시킴, 0은 무제한
     35 TimeoutLogin            300 --> 로그인후 해당시간동안 작업이 없으면 종료시킴
     36
     37 MaxClientsPerHost       2   "Only one client is allowed to connect" --> 한 계정으로 최대 접속인원 지정
     38
     39 DisplayLogin            /etc/proftpd/welcome.msg --> ftp 로그인시 메시지 지정파일
     DefaultRoot항목에서 ~mk지정시  welcome.msg파일을 mk홈디렉토리에 복사하던지
위 설정에서 경로를 삭제하고 welcome.msg파일명만 설정해야한다.

     42 <Directory /*> --> /*는 루트를 포함한 모든 서브디렉토리 포함
     43   AllowOverwrite        on --> 덮어씌우기 설정
     44 </Directory>
     45

     46 <Anonymous ~ftp> -->  ~ftp는 익명자 로그인시 들어갈 디렉토리 /var/ftp,
     47   User                  ftp      <Anonymous /ftp>처럼 없는 디렉토리 설정하면 익명자 접속 불가능
     48   Group                 ftp
     49   UserAlias             anonymous ftp
     50   MaxClients            10 "Sorry, maxium users %m -- try again later"
     51   MaxClientsPerHost     2 "Sorry, Over 2 connection not allow"
     52   DisplayLogin          welcome.msg
     53   DisplayFirstChdir     .message
     54   RequireValidShell     off --> 익명자로 로긴할수 있게 설정, 0n설정시 익명자 로그인할수 없음.


     64 # Anonymous's Uploads Directory --> 익명자의 업로드 디렉토리 설정
     65   <Directory incoming/*> --> incoming밑의 서브디렉토리 포함
     66     AllowOverwrite          on
     67     AllowRetrieveRestart    on --> 다운로드시 이어받기 설정
     68     AllowStoreRestart       on --> 업로드시 이어올리기 설정
     69     <Limit DELE> --> 삭제 제한
     70       DenyAll
     71     </Limit>
     72     <Limit READ STOR MKD RMD> --> 읽기, 저장, 디렉토리생성, 디렉토리삭제 제한
     73       AllowAll
     74     </Limit>
     75   </Directory>


     77 # Anonymous's Public Directory --> 익명사용자가 절대 사용할 수 없는 디렉토리
     78   <Directory pub/*>
     79     <Limit READ>
     80       AllowAll
     81     </Limit>
     82     <Limit STOR DELE RMD MKD>
     83       DenyAll
     84     </Limit>
     85   </Directory>
     86
     87 </Anonymous>

--
[root@jsw mp3]# vi /etc/proftpd/welcome.msg --> ftp로그인 메시지 파일 설정
%U 사용자님이 접속하셨습니다.
현재 접속자는 %N명 입니다.
사용가능한 용량은 %F
문의 사항은 %E로 날려주세요.

-----------------------------------------------------------------------------
--                            2003. 05. 27    ㅤJung.s.w
-- Linux Security [MK]
-- Apache & SSL
-----------------------------------------------------------------------------
-- Apache 환경
1. RPM
   홈디렉토리 : /var/www/html
   설정파일 : /etc/httpd/conf/httpd.conf
   데몬구동 : /etc/rc.d/init.d/httpd restart

2. SOURCE
   홈디렉토리 : /usr/local/apache/htdocs
   설정파일 : /user/local/apache/conf/httpd.conf
   데몬구동 : /usr/local/apache/bin/apachectl/apachectl restart

----------------------------------------------------
--  사용자 홈페이지 띄우기 설정
[root@jsw mk]# mkdir public_html --> mk사용자 홈페이지 디렉토리 생성
[root@jsw mk]# cd public_html
[root@jsw public_html]# vi index.html --> 홈페이지 내용작성
[root@jsw mk]# chmod 701 /home/mk --> 브라우저로 mk사용자 홈에 접근하기위해 권한부여



--  홈디렉토리 설정

    446 DocumentRoot "/var/www/html" --> 홈디렉토리 변경시 설정

    456 <Directory /> --> 위의 홈디렉토리 변경시 같이 변경해줘야함.
    457     Options FollowSymLinks
    458     AllowOverride None
    459 </Directory>

--  디렉토리에서 가장 먼저 읽어올 파일 설정
    533 <IfModule mod_dir.c> --> 디렉토리에서 가장 먼저 읽어올 파일 설정
    534     DirectoryIndex index.html index.htm index.shtml index.php index.php4 index.php3 index.phtml index.cgi
    535 </IfModule>


--  Alias 설정
    716     Alias /data/ "/home/data/" --> 가상디렉토리 설정
    717 --> DocumentDirectory를 제외한 디렉토리에서
    718     <Directory "/home/data"> --> 파일을 읽어올 땐 Alias(가상디렉토리)로 지정
    719         Options Indexes MultiViews
    720         AllowOverride None
    721         Order allow,deny
    722         Allow from all
    723     </Directory>

--  PHP4 버젼 설정 --> Apache 1.3.27버전에는 이부분이 없음. 추가 입력시킴
    960     <IfModule mod_php4.c> --> 소스로 설치할 경우 일부 버전에선 없으므로 수동으로 입력
    961         AddType application/x-httpd-php .php .php4 .php3 .phtml
    962         AddType application/x-httpd-php-source .phps
    963     </IfModule>


--- VirtualHosting(웹서버 하나에 여러개의 도메인 설정)

   1207 NameVirtualHost 211.169.219.96 -->IP주소 설정
   1208
   1209 <VirtualHost 211.169.219.96> -->mk도메인 설정, 맨 위 설정 도메인은 servername만 설정
   1210     ServerName www.mk.com    www.mk.com와 Alias로 mk.com 설정
   1211     ServerAlias mk.com mail.mk.com
   1212 </VirtualHost>
   1213 <VirtualHost 211.169.219.96>
   1214     ServerAdmin webmaster@pk.com
   1215     DocumentRoot /var/pk
   1216     ServerName www.pk.com
   1217     ServerAlias pk.com  mail.pk.com
   1218     ErrorLog logs/pk.com-error_log
   1219     CustomLog logs/pk.com-access_log common
   1220 </VirtualHost>

  [Tip]
   : .,+8 s/dummy-host.example.com/mk.com/g --> vi에서 mk.com으로 해당부분 변경

[root@jsw pk]# /etc/rc.d/init.d/httpd restart --> apache 데몬 재시작

[root@jsw data]# /etc/rc.d/init.d/named restart --> named 데몬 재시작

[root@jsw data]# ping www.mk.com --> www.mk.com 설정확인 ip확인
PING www.mk.com (211.169.219.96) from 211.169.219.96 : 56(84) bytes of data

[root@jsw data]# ping www.pk.com --> www.pk.com 설정확인 ip확인
PING www.pk.com (211.169.219.96) from 211.169.219.96 : 56(84) bytes of data.

[root@jsw data]# mkdir /var/pk --> pk.com의 루트디렉토리 생성
[root@jsw var]# cd /var/pk
[root@jsw pk]# vi index.html

[root@jsw pk]# lynx -dump http://www.pk.com
[root@jsw pk]# lynx -dump http://pk.com

----------------------------------------------------
telnet ssh
ftp scp, sftp
web ssl
mail gnupg, pgp
----------------------------------------------------
--- SSL

Apache(source)  +     mod_ssl      +   Openssl(source) 연결
ㅤ웹서비스         apache와 ssl연결          암호화


-- Apache 1.3.27 Source Download
http://httpd.apache.org     -->  apache_1.3.27.tar.gz 다운로드

-- Openssl 0.9.7b Source Download
http://www.openssl.org -->  openssl-0.9.7b.tar.gz 다운로드

-- Modssl mod_ssl-2.8.14-1.3.27.tar.gz  Source Download(Apache와 같은 버젼 다운로드)
http://www.modssl.org -->  mod_ssl-2.8.14-1.3.27.tar.gz 다운로드

--
주의 : 한번 Apache를 source로 설치하고 덮어씌우면 에러남..삭제후 재설치
[root@jsw root]# cd /usr/local
[root@jsw local]# rm -rf apache

-- Source /usr/local/src/로 이동 및 압축해제
[root@jsw root]# mv apache_1.3.27.tar.gz openssl-0.9.7b.tar.gz  mod_ssl-2.8.14-1.3.27.tar.gz  /usr/local/src/
[root@jsw root]# cd /usr/local/src/

[root@jsw src]# tar xvfz apache_1.3.27.tar.gz
[root@jsw src]# tar xvfz openssl-0.9.7b.tar.gz
[root@jsw src]# tar xvfz mod_ssl-2.8.14-1.3.27.tar.gz

-- openssl 설치
[root@jsw src]# cd openssl-0.9.7b
[root@jsw openssl-0.9.7b]# ./config
[root@jsw openssl-0.9.7b]# make
[root@jsw openssl-0.9.7b]# make install



--ㅡ
[root@jsw openssl-0.9.7b]# vi /etc/profile
     41 PATH=/usr/local/ssl/bin:$PATH     -->   path 추가

[root@jsw openssl-0.9.7b]# source /etc/profile -->   profile 업데이트
[root@jsw openssl-0.9.7b]# echo $PATH -->   PATH설정 확인
/usr/local/ssl/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/root/bin

[root@jsw openssl-0.9.7b]# vi /etc/ld.so.conf -->   동적 라이브러리 추가
      9 /usr/local/ssl/lib -->   추가
[root@jsw openssl-0.9.7b]# ldconfig -->   동적 라이브러리 업데이트


---Verisign의 인증서를 발급

[root@jsw md5]# openssl md5 * > rand.dat
[root@jsw md5]# openssl genrsa -rand rand.dat -des 1024 > serv.key ->  rand.dat를 이용하여 Server key생성
48 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
.................++++++
.......................++++++
e is 65537 (0x10001)

[root@jsw md5]# openssl req -new -key serv.key -out serv.csr --> 인증서명 요청서 생성
Using configuration from /usr/share/ssl/openssl.cnf
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:kr
State or Province Name (full name) [Berkshire]:seoul
Locality Name (eg, city) [Newbury]:seoul
Organization Name (eg, company) [My Company Ltd]:iei
Organizational Unit Name (eg, section) []:edu
Common Name (eg, your name or your server's hostname) []:jsw
Email Address []:jsw1721@hanmail.net

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: --> Enter key
An optional company name []: --> Enter key

[root@jsw md5]# cat serv.csr --> 인증서명 요청서 내용 확인
-----BEGIN CERTIFICATE REQUEST-----
MIIBuzCCASQCAQAwezELMAkGA1UEBhMCa3IxDjAMBgNVBAgTBXNlb3VsMQ4wDAYD
VQQHEwVzZW91bDEMMAoGA1UEChMDaWVpMQwwCgYDVQQLEwNlZHUxDDAKBgNVBAMT
A2pzdzEiMCAGCSqGSIb3DQEJARYTanN3MTcyMUBoYW5tYWlsLm5ldDCBnzANBgkq
hkiG9w0BAQEFAAOBjQAwgYkCgYEA0eBOhrODoso3UtipqhNmQ1dWAuWXVLnjnn+6
cYyWXYYxLUFNECtdZf++nyMoyEe/lkMMR058eIOE9z8bhMNk9erL+LvlgorxNc8c
ejTQz8h1pEL/ebUxJS8cFHI74dmdfSxm3c3cp0z4mGdlQm5rdS9pQZe+TUP/+IFE
rKyDXRcCAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4GBAIrBwdQ+01ZYTqa2vknrkvIn
SRIDOXx+alQsO0CNsxex9bu2jApkEnYEQRB2WWdw+xhCYoDZNXhbUPHQurJYCdpe
53bbRKnjIj/2a/9Kgb4/prTTsHilxfePSNNyP3yp9/MD72LZtxX+6txlTs7pyzLV
a7qjlTCxQdc5gugrvn77
-----END CERTIFICATE REQUEST-----


https://digitalid.crosscert.com/trialserver/trialserver/index.html

[신청]-[계속]-[계속]- 위의 serv.csr내용을 복사해서 붙여넣기 -[계속]-
신상정보입력-[승인]

해당 메일로 날라온 인증서를 파일로 serv.crt로 생성


[root@jsw mod_ssl-2.8.14-1.3.27]# cd /usr/local/src/mod_ssl-2.8.14-1.3.27
[root@jsw mod_ssl-2.8.14-1.3.27]# ./configure --with-apache=../apache_1.3.27

[root@jsw mod_ssl-2.8.14-1.3.27]# cd ../apache_1.3.27
[root@jsw apache_1.3.27]# SSL_BASE=/usr/local/ssl
[root@jsw apache_1.3.27]# ./configure --enable-shared=max  --enable-module=ssl
[root@jsw apache_1.3.27]# make
[root@jsw apache_1.3.27]# make certificate TYPE=existing CRT=/root/md5/serv.crt KEY=/root/md5/serv.key
[root@jsw apache_1.3.27]# make install

[root@jsw apache_1.3.27]# /etc/rc.d/init.d/httpd stop
[root@jsw apache_1.3.27]# /usr/local/apache/bin/apachectl stop

[root@jsw apache_1.3.27]# /usr/local/apache/bin/apachectl startssl
Apache/1.3.27 mod_ssl/2.8.14 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.

Server jsw.lsrg.net:443 (RSA)
Enter pass phrase: --> 패스워드 입력 1234

Ok: Pass Phrase Dialog successful.
/usr/local/apache/bin/apachectl startssl: httpd started


웹브라우저를 통해 https://localhost 로 확인


----------------------------------------------------
--일반 Log
/var/log

wtmp(2진파일) --> 로그인, 로그아웃, 로그실패 정보
[root@jsw log]# last -f wtmp -->  wtmp파일 보기
last --> 최근 한달동안 로그인 한 정보
lastlog --> 각 사용자의 마지막 로그인 정보
secure --> 인증을 통한 접속 telnet, ssh, ftp, pop3.... 정보
message --> 커널의 정보, 로그인정보, 사용자 삭제, 데몬 구동, 기타 등등.....
dmesg --> 부팅시 메시지 정보

-- Web Log (access_log, error_log)
/var/log/httpd --> rpm인 경우
/usr/local/apache/logs --> source인 경우

[root@jsw log]# cd /usr/local/apache/logs
[root@jsw logs]# ls -l access_log --> 내 시스템에서 무엇을 가져갔는지..
-rw-r--r--    1 root     root         2115  5월 27 16:51 access_log
[root@jsw logs]# ls -l error_log --> 에러에 관한 정보
-rw-r--r--    1 root     root          319  5월 27 16:51 error_log
[root@jsw logs]# tail -f access_log
[root@jsw logs]# tail -f error_log



-----------------------------------------------------------------------------
--                            2003. 05. 28     Jung.s.w
-- Linux Security [MK]
-- Samba & ipchains & iptables
-----------------------------------------------------------------------------
-- X-windows 안되는경우
xfs데몬이 안띄워진 경우, /가 100% 찬 경우
[root@jsw root]# chkconfig --list xfs
xfs             0:해제  1:해제  2:해제  3:활성  4:해제  5:활성  6:해제
You have new mail in /var/spool/mail/root
[root@jsw root]# ps -aux |grep xfs
xfs        899  0.1  1.9 11096 9892 ?        S    08:51   0:02 xfs -droppriv -da
root      1704  0.0  0.1  2552  664 pts/2    R    09:21   0:00 grep xfs


-- 자료공유
ftp --> win-Linux. Unix-Linux, Linux-Linux, Unix-Win
    디렉토리 복사는 지원 않됨

Samba --> Win-Linux, Win-Unix, Linux-Linux(프린터 공유시 사용)
    SMB프로토콜을 이용하여 windows와 Linux간 자료공유

NFS --> Linux-Linux, Linux-Unix, Unix-Unix
    Unix계열에서 사용


-- Samba Package 확인
[root@jsw root]# rpm -qa |grep samba
samba-client-2.2.3a-6
samba-2.2.3a-6
samba-common-2.2.3a-6


-- Samba 주석
# --> 설명문에 대한 주석
; --> 명령문에 대한 주석

[root@jsw root]# vi /etc/samba/smb.conf
     14 #======================= Global Settings =====================================
     15 [global]
     16
     17 # workgroup = NT-Domain-Name or Workgroup-Name
     18    workgroup = class601 --> workgroup 설정
     19
     20 # server string is the equivalent of the NT Description field
     21    server string = Wooni Samba Server --> Server 설명

     52 # security_level.txt for details. --> security = user/share/server/domain
     53    security = user --> 계정 인증을 통해 접속, share 인증없이 아무나 접속
         server/domain은 samba가 windows측에 가서 인증 하는것

--> 위의 security = user로 설정하면 아래 두줄을 열어줄것
     70    encrypt passwords = yes --> wind 98이상은 암호화로 yes설정, win 95는 plan text 이용
     71    smb passwd file = /etc/samba/smbpasswd --> samba passwd와 /etc/passwd는 계정을 따로 관리.


     windows를 linux samba에서 연결시 system 계정, samba계정 두개가 필요
     windows 계정의 ID, Password와 Linux samba 서버의 samba계정 ID, Password가 같으면 인증없이 연결


    237 [smbtest] --> 공유디렉토리 설정
    238    comment = home directory
    239    path = /home
    240    browseable = yes --> Browser를 통해 보여주기위한 설정
    241    public = yes
    242    writable = yes --> 쓰기권한 부여(시스템의 쓰기권한과 yes로 설정되어야 쓰기가능)
    243    printable = no
    244  ; writable list = mk pk --> mk, pk유저만 쓰기 가능(writable = no로 설정된 경우에만 의미가 있음,
        writable = yes로 하면 list설정이 의미가 없음)


[root@jsw root]# testparm --> smb.conf파일의 구문 에러 체크
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[smbtest]"
Loaded services file OK.
Press enter to see a dump of your service definitions --> Enter

[root@jsw root]# /etc/rc.d/init.d/smb restart --> samba데몬 재시작


-- 1. 인증없이 연결
[global]

     53    security = share --> share로 설정, 아무나 연결

[root@jsw root]# /etc/rc.d/init.d/smb restart --> samba데몬 재시작


-- 2. 사용자 인증 거치기(system account와 samba account가 같은 경우)
[global]

     53    security = user --> user로 설정, 인증을 통한 연결

     70    encrypt passwords = yes
     71    smb passwd file = /etc/samba/smbpasswd

[root@jsw root]# /etc/rc.d/init.d/smb restart --> samba데몬 재시작

[root@jsw root]# smbadduser mk:mk -->  시스템 mk계정으로 Samba계정 생성
Adding: mk to /etc/samba/smbpasswd
Added user mk.
----------------------------------------------------------
ENTER password for mk
New SMB password: --> Samba계정 패스워드(시스템계정과 패스워드는 따로 관리)
Retype new SMB password:
Password changed for user mk.
[root@jsw root]# cat /etc/samba/smbpasswd
mk:503:87C30837053A29ACAAD3B435B51404EE:57242BFB814A1FA7C0054496B6004EB5:[UX]:LCT-3ED41529:

[root@jsw root]# smbpasswd mk --> samba계정 mk 패스워드 변경
[root@jsw root]# smbpasswd -x mk --> Samba계정 mk 삭제
Deleted user mk.


-- 3.사용자 인증 거치기(system account와 samba account가 다른 경우)
[global]

     53    security = user

     70    encrypt passwords = yes
     71    smb passwd file = /etc/samba/smbpasswd

     96    username map = /etc/samba/smbusers  --> 시스템계정과 삼바계정이 다른경우 주석처리된 ;를 제거


[root@jsw root]# /etc/rc.d/init.d/smb restart --> samba데몬 재시작

[root@jsw root]# useradd pk
[root@jsw root]# passwd pk

[root@jsw root]# smbadduser pk:sk -->  시스템계정 pk를 Samba계정 sk로 설정
Adding: pk to /etc/samba/smbpasswd
Added user pk.
Adding: {pk = sk} to /etc/samba/smbusers
----------------------------------------------------------
ENTER password for pk
New SMB password:
Retype new SMB password:
Password changed for user pk.

[root@jsw root]# cat /etc/samba/smbusers --> samba계정 확인
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
pk = sk



-- Samba서버에서 Windows 파일 서버 사용
1) smbmount를 이용하는 경우(권장)
[root@jsw root]# smbmount //컴퓨터이름/공유디렉토리 /마운트할디렉토리    (windows98)
[root@jsw root]# smbmount //컴퓨터이름/공유디렉토리 /마운트할디렉토리 \  (windows2000)


[root@jsw root]# smbmount //211.169.219.80/temp /mnt/cdrom/ -o username=administrator
2350: session request to 211.169.219.92 failed (Called name not present)
2350: session request to 211 failed (Called name not present)
Password: --> 패스워드 입력

[root@jsw root]# umount /mnt/cdrom --> 공유 제거


2) smbclient를 이용하는 경우(ftp와 유사, 비권장)
[root@jsw root]# smbclient //컴퓨터이름/공유한디렉토리 (windows98)
[root@jsw root]# smbclient //컴퓨터이름/공유한디렉토리 -U 사용자이름 (windows2000)

[root@jsw root]# smbclient //211.169.219.80/temp -U administrator
added interface ip=211.169.219.96 bcast=211.169.219.255 nmask=255.255.255.0
session request to 211.169.219.80 failed (Called name not present)
session request to 211 failed (Called name not present)
Password:
Domain=[DS34] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
smb: \> help
?              altname        archive        blocksize      cancel
cd             chmod          chown          del            dir
du             exit           get            help           history
lcd            link           lowercase      ls             mask
md             mget           mkdir          more           mput
newer          open           print          printmode      prompt
put            pwd            q              queue          quit
rd             recurse        rename         rm             rmdir
setmode        symlink        tar            tarmode        translate
!
smb: \>


-- Swat (Web으로 samba설정)
ftp ftp.wowlinux.co.kr에서 samba-swat-2.2.3a-6.i386.rpm 패키지 가져오기

[root@jsw root]# rpm -ql samba-swat |more
/etc/X11/applnk/System/swat.desktop
/etc/xinetd.d/swat --> swat도 service의 한부분
/usr/sbin/swat
/usr/share/man/man8/swat.8.gz
/usr/share/swat
/usr/share/swat/help
/usr/share/swat/help/CVS-Access.html
/usr/share/swat/help/DOMAIN_MEMBER.html
/usr/share/swat/help/ENCRYPTION.html
/usr/share/swat/help/Integrating-with-Windows.html
/usr/share/swat/help/NT_Security.html
........

[root@jsw root]# vi /etc/xinetd.d/swat
      5 service swat
      6 {
      7     port        = 901
      8     socket_type = stream
      9     wait        = no
     10     only_from   = 127.0.0.1 --> Remote로 자신만 이용하게 설정
     11     user        = root              Remote로 설정할 수 있는 IP 등록
     12     server      = /usr/sbin/swat
     13     log_on_failure  += USERID
     14     disable     = no --> SWAT를 사용하기위해 no로 설정
     15 }

[root@jsw root]# /etc/rc.d/init.d/xinetd restart --> xinetd데몬 재시작

Browser로 http://127.0.0.1:901/ 로 연결하여 Samba설정(root계정 패스워드 필요)
[주의] : text mode로 하거나, Web으로 하거나 한가지 방법으로 설정(주석부분이 없어지는 경우 발생)

-- Samba 취약점
sambal.c 공격코드를 통한 root계정 획득 가능
[root@jsw root]# gcc -o sambal sambal.c
[root@jsw root]# ./sambal  -p 139 -b 0 211.169.219.80

samba에 대한 업데이트 패키지를 다운로드 설치하도록....
http://www.rpmfind.net
ftp://ftp.readhat.com
ftp://ftp.bora.net
ftp://ftp.nuri.net


-----------------------------------------------------------------------------
-- ipchains & iptables

2.4.x이상 --> iptables, ipchains도 사용 가능
2.2.x --> ipchains
2.0.2 --> ipfwadm



-- 패키지 확인
[root@jsw root]# rpm -qa |grep iptables
iptables-1.2.5-3
iptables-ipv6-1.2.5-3
[root@jsw root]# rpm -qa |grep ipchains
ipchains-1.3.10-13
[root@jsw root]# ntsysv --> ipchains를 제외한 iptables,ip6tables데몬 선택 제거
[root@jsw root]# reboot --> Kernel 모듈을 업데이트하기위해


--1. Host 기반의 보안
-Tcpwrapper(/etc/hosts.deny, /etc/hosts.allow)

일반적으로 사용하는 기법
/etc/hosts.deny /etc/hosts.allow
ALL:ALL ALL:211.169.219. --> 가장 기초적인 방법
ALL:211.169.219.80 설정않함 --> 수상한 자만 deny에 등록, 로그분석 해야하는 귀차니즘..


     /etc/hosts.deny
     ALL: 211.169.219. --> xinet
     ALL: 211.169.219.0/24

     ALL: 211.169.219. --> Tcpwrapper
     ALL: 211.169.219.0/255

     참고 : allow가 deny보다 우선순위가 높음..

-xinet(only_from=IP, no_access=IP)
* Host기반의 보안은 xinet이나 inet으로 구동되는 서비스만 제한가능
   따라서, standalone방식의 서비스에는 iptables나 ipchains를 사용

    [root@jsw root]# vi /etc/xinetd.d/telnet

    service telnet
    {
    disable = no
    only_from = 211.169.219.0/24
    #only_from = 211.169.219.0/255.255.255.0  --> 등록된 IP만 허용
    #no_access   = 211.169.219.0/24  --> 등록된 IP접근을 막음
    flags       = REUSE
    socket_type = stream
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    log_on_failure  += USERID
    }

    참고 : no_access가 only_from보다 우선순위가 높음.


--2. 사용자 기반의 보안
/etc/pam.d/.... --> 각 서비스의 사용자에 대한 제한

/etc/security/limits.conf --> 각 사용자들의 메모리 제한


--3. 커널 기반 보안
ipchains
iptables


------------------------------
-- ipchains
[root@jsw root]# ipchains -L --> 설정 확인
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):

[root@jsw root]# ping -c 1 127.0.0.1 --> 패킷 하나만 전송
PING 127.0.0.1 (127.0.0.1) from 127.0.0.1 : 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.116 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% loss, time 0ms
rtt min/avg/max/mdev = 0.116/0.116/0.116/0.000 ms

[root@jsw root]# ipchains -A input -s 127.0.0.1 -p icmp -j DENY

[root@jsw root]# ipchains -L
Chain input (policy ACCEPT):
target     prot opt     source                destination           ports
DENY       icmp ------  localhost.localdomain anywhere              any ->   any
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT)


[root@jsw root]# ipchains -A input -s 211.169.219.91 -d 211.169.219.96 23 -p tcp -j REJECT
--> 211.169.219.91번에서 들어오는 것을 막음
[root@jsw root]# ipchains -F --> 방화벽 설정 모두 제거


-----------------------------------------------------------------------------
--                            2003. 05. 29     Jung.s.w
-- Linux Security [MK]
-- ipchains & iptables
-----------------------------------------------------------------------------
--


[root@jsw etc]# modprobe ipchains
[root@jsw etc]# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):

[root@jsw etc]# ipchains -A input -s 127.0.0.1 -p icmp -j DENY

[root@jsw etc]# ipchains -L
Chain input (policy ACCEPT):
target     prot opt     source                destination           ports
DENY       icmp ------  localhost.localdomain anywhere              any ->   any
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):

[root@jsw etc]# ipchains-save > firewall --> 방화벽설정 내용 저장
Saving `input'.

[root@jsw etc]# cat firewall
:input ACCEPT
:forward ACCEPT
:output ACCEPT
-A input -s 127.0.0.1/255.255.255.255 -d 0.0.0.0/0.0.0.0 -p 1 -j DENY

[root@jsw etc]# ipchains -F

[root@jsw etc]# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):

[root@jsw etc]# ipchains-restore < firewall --> 방화벽설정 내용 불러오기

[root@jsw etc]# ipchains -L
Chain input (policy ACCEPT):
target     prot opt     source                destination           ports
DENY       icmp ------  localhost.localdomain anywhere              any ->   any
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):


-----------------------------------------------------------------------------
--                            2003. 05. 30     Jung.s.w
-- Linux Security [MK]
-- Kernel Compile
-----------------------------------------------------------------------------
-- Booting
   1. Power on
   2. BIOS - H/w check
   3. 0 Sector MBR - LILO
   4. Kernel 메모리 적재
   5. 초기화 Process(init process) --> /etc/inittab  (runlevel, service, virtual terminal)
+--->  /etc/rc.d/rc.sysinit
   6. / mount
   7. mingetty --> login

--커널 정의
프로세서와 메모리, 디스크, 네크워크, 인터럽트 등 프로그램이 사용하는 모든 자원을 관리, 자원을 필요로 하는 프로세스에게
적절하게 배분을 하고, 자원을 잘못 사용하는것을 방지
H/W와 S/W 사이에 통신을 담당하고 이들을 관리하는 운영체제의 모든 기능을  담은 프로그램

-- 커널 버젼
[root@mk root]# uname -a --> 현재 사용중인 system의 모든 정보표시
Linux mk.com 2.4.18-4 #1 SMP Thu Aug 22 18:36:08 KST 2002 i686 unknown

[root@mk root]# uname -r --> 현재 사용중인 system의 kernel version을 표시
2.4.18-4

            2.          4. 18 -       4
Major version, Minor version, Sub level - Extra version 표시
|____________토발즈가 수정_____________|  |___사용자 수정___|

[주의] 반드시 커널 컴파일시 Extra version을 수정해야함(컴파일 실패시 다시 복구하기 위해서)  /lib/modules/


-- 새로운 커널 사용이유
1. 기존의 커널의 최적화 -->  불필요한 기능 삭제
2. 새로운 커널의 다운(새로운 장치 드라이브 사용)
3. 시스템 보안을 위해서


--커널의 종류
1. Monolithic
모든 디바이스 모듈을 커널에 직접적으로 포함시킴. 부팅 속도가 빠름, 커널 사이즈가 큼

2. Modular
로드할 수 있는 모듈을 분리함. 언제든지 필요한 모듈을 포함시킬수 있음. 부팅 속도가 느림, 커널 사이즈가 작음


커널버젼 2.2 2.4
CPU 16(8) 16(8)
MEM 1G/2G/4G 4G/64G --> 메모리 추가시 커널컴파일함
Process 256 무제한
사용자 65536 40억이상


메모리추가시 커널컴파일 해야하는데 해당 메모리보다 한단계 높은것으로 잡고 커널컴파일해야됨.
(1G인 경우 2G로 잡고 2G인 경우 4G로 잡고..컴파일해야지 메모리를 1G로 인식함)
4G --> BIGMEM Patch


Linux 좁은 의미 --> Kernel
넓은 의미 --> Kernel + Application


--
[root@mk src]# rpm -qa |grep kernel
kernel-2.4.18-4

[root@mk root]# rpm  -ivh kernel-source-2.4.18-4.i386.rpm
준비중....                  ########################################### [100%]
   1:kernel-source          ########################################### [100%]

[root@mk root]# cd /usr/src/linux-2.4

[root@mk linux-2.4]# vi Makefile
EXTRAVERSION = -sw -->  Extra version명 변경(3자 이내로 설정하는것이 좋음)

[root@mk linux-2.4]# vi README -->  설치 메뉴얼...

[root@mk linux-2.4]# make mrproper --> 혹시나 잘못된 오프젝트파일 삭제, 옵션사항

------------------------------------------------------------------------------------------------------------
[커널 한글문서로 변환]
http://kernel.pe.kr 의 옵션 한글화(http://option.kernel.pe.kr/)에서
★ 2.4.14 버전을 위한 옵션 100%번역된 버전 다운로드 : hanhelp.2.4.14.tar.gz ★ 다운로드

[root@mk root]# tar xvfz hanhelp.2.4.14.tar.gz
[root@mk root]# cp Configure.help.han.2.4.14.complete  /usr/src/linux-2.4/Documentation
[root@mk root]# cd /usr/src/linux-2.4/Documentation/

[root@mk Documentation]# ls -l Configure.help*
-rw-r--r--    1 root     root      1088329  8¿? 22  2002 Configure.help --> 커널 옵션 영문
-rw-r--r--    1 root     root      1683432  5¿? 30 12:11 Configure.help.han.2.4.14.complete --> 커널 옵션 한글
-rw-r--r--    1 root     root      1088102  8¿? 22  2002 Configure.help.htyunicon

[root@mk Documentation]# mv Configure.help Configure.help_old --> 영문파일 _old로 이름변경
[root@mk Documentation]# mv Configure.help.han.2.4.14.complete  Configure.help --> 한글파일을 Configure.help로 변경
-------------------------------------------------------------------------------------------------------------

[root@mk Documentation]# cd /usr/src/linux-2.4
[root@mk linux-2.4]# make menucofig 또는 make xconfig --> 커널 설정하기

[root@mk linux-2.4]# ls -l .config
-rw-r--r--    1 root     root        30691  5¿? 30 12:40 .config --> 설정내용 저장파일

[root@mk linux-2.4]# make dep && make clean && make bzImage && make modules && make modules_install

[root@mk linux-2.4]# ls /lib/modules/ --> 컴파일 성공하면 /lib/modules/ 디렉토리 밑에 커널버젼 디렉토리 생성됨.
2.4.18-4/  2.4.18-sw/


[root@mk root]# cd /boot

[root@mk boot]# ls -l vmlinu*
-rwxr-xr-x    1 root     root      4045504  8¿? 22  2002 vmlinux-2.4.18-4*
lrwxrwxrwx    1 root     root           16  5¿? 29 23:22 vmlinuz -> vmlinuz-2.4.18-4
-rw-r--r--    1 root     root      1464485  8¿? 22  2002 vmlinuz-2.4.18-4 --> 압축된 bzImage



[root@mk boot]# cd /usr/src/linux-2.4
[root@mk linux-2.4]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.18-sw
[root@mk linux-2.4]# cp System.map /boot/System.map-2.4.18-sw
[root@mk linux-2.4]# rm -rf /boot/System.map
[root@mk linux-2.4]# ln -s /boot/System.map-2.4.18-mk /boot/System.map

[root@mk linux-2.4]# vi /etc/lilo.conf
      1 prompt
      2 timeout=50
      3 vga=788
      4 default=linux
      5 boot=/dev/hda
      6 map=/boot/map
      7 install=/boot/boot.b
      8 message=/boot/message
      9 lba32
     10
     11 image=/boot/vmlinuz-2.4.18-sw --> 추가
     12     label=linux-up --> 추가
     13     read-only --> 추가
     14     root=/dev/hda2 --> 추가
     15
     16 image=/boot/vmlinuz-2.4.18-4
     17     label=linux
     18     initrd=/boot/initrd-2.4.18-4.img
     19     read-only
     20     root=/dev/hda2
     21
     22 other=/dev/hda1
     23     optional
     24     label=win2k

[root@mk linux-2.4]# lilo
Added linux-up
Added linux *
Added win2k


[root@mk linux-2.4]# ls -l /boot/vmlinuz*
lrwxrwxrwx    1 root     root           16  5¿? 29 23:22 /boot/vmlinuz -> vmlinuz-2.4.18-4
-rw-r--r--    1 root     root      1464485  8¿? 22  2002 /boot/vmlinuz-2.4.18-4
-rw-r--r--    1 root     root      1463512  5¿? 30 15:06 /boot/vmlinuz-2.4.18-sw


Reboot후 lilo에서 linux-up으로 부팅......


---------------------------------------------------------------------------
--부하분산(RSYNC)

[root@mk root]# nslookup
Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
> www.yahoo.akadns.net
Server:         211.169.219.96
Address:        211.169.219.96#53

Non-authoritative answer:
Name:   www.yahoo.akadns.net
Address: 66.218.70.51
Name:   www.yahoo.akadns.net
Address: 66.218.71.84
Name:   www.yahoo.akadns.net
Address: 66.218.71.87
Name:   www.yahoo.akadns.net
Address: 66.218.71.88
Name:   www.yahoo.akadns.net
Address: 66.218.71.91
Name:   www.yahoo.akadns.net
Address: 66.218.71.92
Name:   www.yahoo.akadns.net
Address: 66.218.70.49
Name:   www.yahoo.akadns.net
Address: 66.218.70.50
>

[root@mk root]# vi /var/named/mk.zone
$TTL    86400
@       IN      SOA     ns.mk.com. root.mk.com.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      ns.mk.com.

              IN      A       211.169.219.96
ns            IN      A       211.169.219.96
www           IN      A       211.169.219.96
www           IN      A       211.169.219.91 --> www에 다른 ip설정 추가
mail          IN      A       211.169.219.96
@             IN      MX    10       mail.mk.com.


[root@mk root]# /etc/rc.d/init.d/named restart --> named데몬 재시작

[root@mk root]# nslookup
Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
> www.mk.com
Server:         211.169.219.96
Address:        211.169.219.96#53

Name:   www.mk.com
Address: 211.169.219.91
Name:   www.mk.com
Address: 211.169.219.96


[root@mk root]# rpm -qa |grep rsync --> rsync패키지 확인
rsync-2.5.4-2

[root@mk root]# vi /etc/xinetd.d/rsync
# default: off
# description: The rsync server is a good addition to am ftp server, as it \
#   allows crc checksumming etc.
service rsync
{
    disable = no --> no로 설정
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/bin/rsync
    server_args     = --daemon
    log_on_failure  += USERID
}


[root@mk root]# /etc/rc.d/init.d/xinetd restart --> xinetd데몬 재시작


[root@mk root]# vi /etc/rsyncd.conf --> 설정 내용을 생성함..
[www] --> 서비스명
path=/var/www/html --> 서비스할 디렉토리 위치
comment=webserver1 --> 서버설명
uid=nobody
gid=nobody
user chroot=yes --> path를 root 디렉토리로 사용
read>host allow=211.169.219.91 211.169.219.92 --> 접속허용할 주소
max connections=3 --> 동시접속자수
timeout 100


--Webserver1dml /var/www/html의 내용을 webserver2의 /home/data로 내용을 가져오기
-- rsync를 이용한 방법
[root@mk root]#  rsync -avz 211.169.219.91::www /home/data

-- ssh를 이용한 방법
[root@mk root]# rsync -avz -e ssh 211.169.219.91:/var/www/html/* /home/data  --> root로 하면 ssh에 root접속이 거부되어 않됨.
[root@mk root]# rsync -avz -e ssh mk@211.169.219.91:/var/www/html/* /home/data  --> 일반 mk사용자를 이용해서 가져오기


~
~


~