레이블이 linux인 게시물을 표시합니다. 모든 게시물 표시
레이블이 linux인 게시물을 표시합니다. 모든 게시물 표시

2009년 1월 9일 금요일

Subversion Installation for Fedora

Subversion 을 설치하고, Apache 의 WebDAV 모듈을 이용하여 버젼을 관리하는 방법을 설명합니다.

1. Subversion Install

[root@www ~]# yum -y install subversion

2. WebDAV Module Install

[root@www ~]# yum -y install mod_dav_svn

3. Create svn linux user

adduser svn (not set password)

chmod 755 /home/svn

svn 작업 디렉토리를 /home/svn 로 하기로 합니다.

4. Create repository

[root@www svn]# svnadmin create /home/svn/test

[root@www svn]# chown -R apache.apache /home/svn

svn 작업 디렉토리 밑에 svn 이 관리하기위한 test 라는 레포지토리를 만듭니다. 프로젝트에 따라서 생성해 주면 되겠지요. 그리고 나서 svn 의 하위 디렉토리는 apache 가 관리할 수 있도록 소유권을 모두 apache 유저로 합니다.

5. Add svn user

[root@www svn]# htpasswd -c /home/svn/.htpasswd richard (-c only 1st time)

New password:

Re-type new password:

Adding password for user richard

svn 으로 작업이 가능한 유저를 추가합니다. -c 옵션은 create 의 약자로 파일이 없을때 처음에만 실행해 주면 됩니다.

5. Create or Modify /etc/httpd/conf.d/subversion.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so 
LoadModule authz_svn_module   modules/mod_authz_svn.so

 
DAV svn 
SVNParentPath /home/svn

# Limit write permission to list of valid users. 
# 
# Require SSL connection for password protection. 
# SSLRequireSSL

AuthType Basic 
AuthName "Subversion repository" 
AuthUserFile /home/svn/.htpasswd 
Require valid-user 
# 

마지막으로 subversion 의 환경설정파일을 위와같이 생성해 줍니다. (yum 으로 설치했을 경우 자동으로 디폴트 환경설정 파일이 생성되어 있습니다.) 여기서 굵은 글씨의 ~ 부분에서 # 주석문을 해제하였을 경우 모든 사람이 읽기가 가능해 집니다.

6. Everything is OK?

http://my-domain/svn/test/ 로 접속하여 아래와 같은 화면이 나타나면 성공적으로 설치된 것입니다. (설정에 따라 인증을 거쳐 아래의 화면이 나타날 수도 있습니다.) 

Revision 0: /


Powered by Subversion version 1.4.3 (r23084).

7. What is next?

TortoiseSVN 를 이용해 보는 것은 어떨까요? :)

- References

http://d.hatena.ne.jp/kazf/searchdiary?word=subversion

http://www.gside.org/Gentoo/subversion/subversion.h

2008년 12월 30일 화요일

senmail 설정하기(Mail Server -SendMail)

시작하기 전에 sendmail이 설치 되어 있는지 확인하고 설치되어 있다면 업데이트 한번 해준다. 그리고 sendmail-cf도 설치되어 있는지 확인 하고 아래를 시작 하면 된다.



출처 : http://yesyo.com/forums/showthread.php?p=1649



Sendmail SMTP 인증 설정(SMTP Auth)


Sendmail SMTP 인증 설정(SMTP Auth)

Sendmail로 아웃룩을 사용시 보내는 메일(SMTP)의 인증 설정 부분이 있습니다.
/etc/mail/access 에서 아웃룩이 접속되는 IP대역을 설정 하면 되지만, 어느 곳에서도 접속을 가능하게 하려면 SMTP Auth를 통하여 계정인증을 통해 메일 보낸는 방법이 유용하다.

sendmail.mc 을 고치면 간단히 적용시킬수 있다.



sendmail.mc 수정

아래 부분을 찾아
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
다음과 같이 앞의 dnl 을 삭제 한다.
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

아래 부분을 찾아
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
다음과 같이 앞의 dnl 을 삭제 한다.
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

아래부분을 찾아
dnl # DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl ->
다음과 같이 dnl을 삭제하고 IP를 수정한다.
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
-> 어디에서나 접속가능하도록 변경. sendmail이 8.12 버전으로 업그레이드 되면서 로컬 호스트에서만 발송가능하게끔 되어 있던 것을 주석처리해서 사용하다가, 이것을 어느 네트워크에서든지 접속할 수 있게끔 변경한다.



m4 명령으로 sendmail.cf는 다시 생성


m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

이때 sendmail-cf.rpm 이 설치되어 있어야 한다.

yum install sendmail-cf
만일 없다면 다음과 같이 메시지가 나온다.
sendmail.mc:10: m4: Cannot open /usr/share/sendmail-cf/m4/cf.m4: No such file or directory



만일 saslauthd 서비스 데몬이 실행


saslauthd 서비스 데몬이 실행 중인지 확인하십시오. 실행되어 있지 않으면 SMTP 인증이 되지 않아 계속 인증 확인창이 뜰 것입니다.

ntsysv 명령을 실행시켜 saslauthd 항목을 찾아 자동시작데몬으로 체크하여 주시고 서비스를 실행 시켜 주십시오
service saslauthd start



되고 있는지 확인하기

telnet [server] 25 : SMTP Mail(윈도우 cmd에서 실행해주세요)

2008년 12월 23일 화요일

Linux에서 ViewVC 사용하기

Linux에 ViewVC 설치방법은 다른 설치 방법에 비해 정보가 너무 적은거 같다라는걸 느꼈다.(나의 검색 실력이 안좋아서 더 그럴수도 있겠지만...)
지금부터 설명하고자 하는건 svn 설치까지 완료가 되었다는 가정하에 설정하는 방법을 설명하도록 하겠다.

설치 환경
Linux : Fedora9

1. 우선 yum을 이용해 아니면 rpm 'viewvc-1.0.7-1.fc9.noarch' 를 설치하도록 한다. 설치시 mod_python(mod_python-3.3.1-7.i386)이 설치 되어 있다는 가정하에서다.

2. 설치가 완료 되었다면 각 설정파일들을 찾아 셋팅 해주도록 하자.
- /etc/viewvc/viewvc.conf
viewvc.conf파일을 수정할때 cvs 관련 부분은 모두 주석 처리 할것.
* 추가 사항
# 저장소의 최상위 디렉토리를 설정합니다.
root_parents = /home/svn : svn
# URL로 저장소를 구분합니다.
# 이것을 0으로 하면 위의 default_root에서 기본 저장소를 지정해줘야 합니다.
root_as_url_component = 1
# UTC를 사용하지 않고 대한민국 표준시를 사용합니다.
use_localtime = 1

- /etc/httpd/conf.d/viewvc.conf
* 기존 내용 삭제 후 추가사항
Alias /viewvc /usr/lib/python2.5/site-packages/viewvc/bin/mod_python/viewvc-mp.py
Alias /viewvc-static /usr/share/viewvc/templates/docroot


AddHandler python-program .py
AllowOverride None
PythonHandler handler
AddDefaultCharset EUC-KR

AuthType Basic
AuthName "Subversion repository"
AuthUserFile /home/svn/.htpasswd
Require valid-user

Order allow,deny
Allow from all


- /usr/lib/python2.5/site-packages/viewvc/bin/mod_python/handler.py
* 변경사항
#module = apache.import_module(module_name, path=[path])
module = apache.import_module(module_name, path)

위와 같이 수정 및 추가 한 후 Apache를 재시작 하도록 한다.
http://xxx.xxx.xxx.xxx/viewvc/로 접속을 하게 되면 viewvc가 구동 되는 모습을 확인 할 수가 있다.

[Windows에서 ViewVC 사용하기]

2008년 8월 5일 화요일

시스템 명령어인 netstat 를 사용하는 방법

#netstat -nap (열려 있는 모든 포트)
#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)


포트스캔 명령어로 확인 하는 방법

# TCP 포트 확인 방법
nmap -sT -p 1-65535 localhost
# UDP 포트 확인 방법
nmap -sU -p 1-65535 localhost
# 네트워크에 열린 포트 확인
nmap -sX -p 22,53,110 211.239.111.*


lsof 명령어로 확인 방법

# 모든 네트워크 소켓 확인
lsof -I

2008년 3월 13일 목요일

Linux 서버 점검사항들

1. SUID 점검하기.(root 소유의 SetUID및 SetGID 파일들 점검
find / -user root -perm -4000 -print (SetUID)
find / -user root -perm -2000 -print (SetGID)
find / -user root -perm -4000 -print -xdev
2. 파티션별 디스크사용량 점검
df –h

3. 파일무결성 점검.
tripwire 구성

4. 백도어 설치여부 점검.(/dev 체크 및 rootkit 점검)
find /dev -type f -exec ls -l {} ;
./chkrootkit

5. 현재 열려진 포트 및 응답가능한 포트 점검.
netstat -atp | grep LISTEN (사용 프로토콜 : TCP인가? 또는 UDP인가?
사용중인 포트번호
서버와 연결된 IP 및 도메인명
생성 PID
서비스중인 프로세스명
현재 응답가능상태인가?
lsof | grep LISTEN(현재 서비스 중인 프로세스명(데몬명)
현재 생성중인 PID번호.
현재 서비스중인 프로세스의 소유자
프로토콜 버전 : Ipv4 또는 Ipv6
TCP 또는 UDP의 여부
응답가능 상태인가?

6. 실생중인 프로세스 및 데몬점검.(프로세스의 생성관계)
Pstree

7. 시스템 운용상황 점검.
top -d2

8. 백업점검.
/home2/backup/nexfor/
/home2/backup/websea/

9. 스팸메일 점검.(메일큐 디렉토리 점검)
/var/spool/mqueue (동일한 날짜, 동일한 사이즈를 가진 다수 파일구분)

10. Core 점검.
서버내에 긴급한 이상이 발생하였을 경우나 시스템의 정확한 분석을 위해
서버의 메모리 상태를 순간적으로 dump 받는 경우의 파일
find / -name core -exec ls -l {} ;

11. 파일용량 점검
repquota -av -ag
df –h

12. 최근 서버 접속자 점검.

vi /var/log/secure
last -n 10 최근 10번째까지의 접속기록을 확인.

13. 계정별 최후접속기록 점검.
lastlog는 현재 /etc/passwd에 존재하는 모든 계정을 대상으로 하
여 언제 마지막으로
서버에 접속을 했는가를 확인.
Mail, adm, bin 등의 계정들은 모두 "** Never logged in **" 이라
고 되어 있는것이 정상.
Lastlog

14. 현재 서버접속자 보기
w (telnet)
ftpwho(ftp)

15. root명령어 사용기록 점검.
vi /root/.bash_history (.set nu)
cat /root/..bash_history | wc -l (1000라인 이상 되어야 정상)

16. 계정별 사용명령어파일 점검.
find / -name .bash_history -exec ls -l {} ; (각 계정
별 .bash_history 파일의 존재여부)
find / -name .bash_history -exec cat {} ; (파일의 내용까
지 모두 확인해 볼 수 있음)

17. root소유자 점검(UID와 GID가 0인 사용자 점검)
cat /etc/passwd | grep 0:0

18. 서버내에 중요한 디렉토리 점검
/etc/xinetd.d/ (xinetd로 서비스되는 인터넷서비스 파일들이 존재하는 디렉토리)
/etc/rc.d/ (부팅에 관계된 파일) (파일들을 복사 후 파일용량등을 비교하기) (커널패닉의원인)
/etc/rc.d/init.d/ (부팅시에 특정 서비스나 데몬들을 시작시키는 스키립트 파일)

19. .rhosts 파일 점검
원격에서 패스워드등의 확인과정없이 바로 접속하기 위해서 사용되는 파일

find / -name .rhosts -exec ls -l {} ;
find / -name .rhosts -exec cat {} ;

20. 메모리사용량 점검.
free -m
cat /proc/meminfo (free 와 top 는 이 파일을 참조하여 보여준다.)
top -d2

21. 중요 관리자용명령어 점검.
아래의 명령어들을 퍼미션을 100으로 설정한다. 변경 후 퍼미션 변경여부를 확인.

chmod 100 /usr/bin/top
chmod 100 /usr/bin/pstree
chmod 100 /usr/bin/w
chmod 100 /bin/ps
chmod 100 /usr/bin/who
chmod 100 /usr/bin/find
chmod 100 /bin/df
chmod 100 /bin/netstat
chmod 100 /sbin/ifconfig
chmod 100 /usr/sbin/lsof
chmod 100 /usr/bin/make
chmod 100 /usr/bin/gcc
chmod 100 /usr/bin/g++
chmod 100 /usr/bin/c++

22. su 명령어를 이용한 root권한 사용자 점검.
su 명령어의 사용내역을 확인할 수 있음.
cat /var/log/messages | grep root

23. 최근 n 일전 변경된 파일 점검. (단위는 일)
find / -ctime -1 -print | more

24. http://weblog 점검

25. find 를 이용한 특정파일 점검하기.
.exec 파일찾기
find / -name '.exec' -exec cat {} ; -print
.forward 파일체크
find / -name '.forward' -exec cat {} ; -print
write 퍼미션이 있는 파일(디렉토리)찾기
find / -type f ( -perm -2 -o -perm -20 ) -exec ls -lg {} ;
find / -type d ( -perm -2 -o -perm -20 ) -exec ls -ldg {} ;
SteUID SetGID 체크하기
find / -type f ( -perm -004000 -o -perm -002000 ) -exec ls -
lg {} ;
/dev 체크
find /dev -type f -exec ls -l {} ;
소유자없는 파일 및 디렉토리 찾기
find / -nouser -o -nogroup -print
원격리모트 접속허용 파일(.rhosts)찾기
find / -name .rhosts -print
최근 변경된 파일들 찾기.(파일or디렉토리) 단위는 일
find / -ctime -20 -type f or d
현재 서버에서 열려진 포트 및 접근저보 점검
netstat -an | grep LISTEN (포트들과 열결되어 있는 실행데몬들을 확인)
lsof | grep LISTEN (좀 더 자세히 확인)

26. 관리자용 명령어 퍼미션 수정하기.
chmod 100 /usr/bin/top
chmod 100 /usrbin/pstree
chmod 100 /usr/bin/w
chmod 100 /bin/ps
chmod 100 /usr/bin/who
chmod 100 /usr/bin/find
chmod 100 /bin/df
chmod 100 /bin/netstat
chmod 100 /sbin/ifconfig
chmod 100 /usr/sbin/lsof
chmod 100 /usr/bin/make
chmod 100 /usr/bin/gcc
chmod 100 /usr/bin/g++
chmod 100 /usr/bin/c++

27. 중요한 파일퍼미션과 소유권 제한 및 점검.
chmod 644 /etc/service
chmod 600 /etc/xinetd
chmod 644 /etc/mail/aliases
chmod 600 /etc/httpd/conf/httpd.conf
chmod 644 /var/log/wtmp
chmod 644 /var/run/utmp
chmod 644 /etc/motd
chmod 644 /etc/mtab
chmod 600 /etc/syslog.conf

/etc, /usr/etc, /bin, /usr/bin, /sbin, /usr/sbin
chmod 1777 /tmp
chmod 1777 /var/tmp

28. umask 값 확인하기.
root의 umask 값 확인하기.
umask
022 -->파일은 644 디렉토리는 755로 생성됨.
027 -->파일은 640 디렉토리는 750로 생성됨.

29. /dev 에 device 파일 이외의 것이 존재하고 있는지 확인.
find /dev -type f -exec ls -l {} ;

30. 일반사용자의 명령어 패스
/usr/local/bin:usr/local/mysql/bin:/home/hosting/bin/
일반사용자가 사용가능한 명령어를 모두 이것에 둠.

31. 관리자의 명령어 패스
:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin
/X11:/usr/X11R6/bin:/usr/kerberos/bin:/root/bin

32. 특정 그룹만의 su 사용권한 허용하기
vi /etc/group (wheel구릅에 su 사용권한을 가질 유저 추가하기)
wheel:x:10:root,cream
vi /etc/pam.d/su (두줄 추가하기)
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so allow group=wheel
vi /var/log/message 에서 확인

33. chmod 400 /etc/shadow

34. 시스템 기본로그파일.
/var/log/messages
/var/log/secure
/var/log/wtmp
/var/run/utmp
/var/log/lastlog

35. utmp, wtmp, lastlog 파일
utmp파일 : 현재시스템에 접속해 있는 사용자의 정보를 가지고 있음.

strings utmp | more

정보 이용 명령어
login(1), who(1), init(8), last(8), lastcomm(8)
wtmp파일 : 처음부터 접속했던 모든 사용자의 로그인정보와 로그아웃정보를 가지고 있음.
strings wtmp | more
정보 이용 명령어
login(1), who(1), init(8), last(8), lastcomm(8)
lastlog 파일
가장 최근에 로그인한 정보를 저장함.
last 라는 명령어로 확인할 수 있음.

36. 패스워드 유출대처방안(웹)
perl을 이용한 방법.

AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
Options Indexes SymLinksIfOwnerMatch IncludesNoExec

Order allow,deny
Allow from all


Order deny,allow
Deny from all


SSI의 exec 명령어를 이용하는 방법
# AddType text/html .shtml
# AddHandler server-parsed .노싀

37. PortSentry를 이용한 실시간 해킹방어 구현.(잘못 사용할시 서버접속 안됨)
tar -xvzf portsentry-1.1.tar.gz
make linux
make install
/usr/local/psionic/portsentry/portsentry -tcp
/usr/local/psionic/portsentry/portsentry -udp
/usr/local/psionic/portsentry/portsentry -stcp
/usr/local/psionic/portsentry/portsentry -atcp
/usr/local/psionic/portsentry/portsentry -stdp
vi /etc/hosts.deny 점검.

38. Chkrootkit 로 백도어 점검.
tar -xvzf chkrootkit.tar.gz
make sense
./chkrootkit (점검명령어)

39 ping 을 이용한 DOS 공격 막는 방법.
vi /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_broadcasts = 1
sysctl -w
/etc/rc.d/init.d/network restart
sysctl -a | grep ignore_broadcasts

40. Nmap를 이용 포트스캔 하여 해킹가능성 체크.
nmap -sS -p80 211.42.48.110 -O -v 도메인
nmap -sS -O -v 211.42.48.114

출처: 멀티의 블로그 라이프