-----------------------------------------------------------------------------
-- 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사용자를 이용해서 가져오기
~
~
~
-- 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사용자를 이용해서 가져오기
~
~
~