'61.Linux'에 해당되는 글 89건

  1. 2009.07.15 [Linux] 리눅스 서버 점검 사항
  2. 2009.07.03 Red Hat Enterprise Linux 설치 가이드
  3. 2009.05.30 리눅스 웹 서버와 실전 웹해킹
  4. 2009.05.30 [리눅스 웹 서버와 실전 웹해킹] chapter 9. 인터넷 익스플로어는 강력한 웹 해킹 도구
  5. 2009.05.30 [리눅스 웹 서버와 실전 웹해킹] chapter 10. 변수값의 이동경로 파악하기
  6. 2009.05.30 [리눅스 웹 서버와 실전 웹해킹] chapter 11. 게시판의 문제점
  7. 2009.04.11 리눅스 기본명령어
  8. 2009.01.30 1.1. SELinux의 이해
  9. 2009.01.30 업로드 응답메시지 : 553 Could not create file. autoftp 2
  10. 2009.01.30 FTP 226 Transfer done (but failed to open directory). 오류해결방법 & SELINUX 관련 설정(FTP관련)
  11. 2009.01.30 Chmod는 권한 설정이다.
  12. 2009.01.30 37장. chmod 편
  13. 2009.01.30 리눅스 chmod (퍼미션,권한) 1
  14. 2009.01.29 콘솔 테트리스
  15. 2009.01.29 eclipse auto ftp error : pedora vsftpd :업로드 응답메시지 : 553 Could not create file. 1
  16. 2009.01.20 리눅스 보안 관련 소프트웨어
  17. 2009.01.19 "Server unexpectedly closed network connection" 해결방안
  18. 2009.01.19 리눅스를 사용하면서 내가 깜박 깜박 잊어버리는 자잘한 팁을 모았음. 검색이 어려우면 키워드로 검색할 것.
  19. 2008.12.16 Linux에서 CPU 사용률 구하기
  20. 2008.12.01 쉘스크립 을 통한 리눅스 웹서버 보안 코드
  21. 2008.11.27 x-window 자동실행, 페도라 한글깨짐
  22. 2008.11.21 [Linux/Unix] 리눅스 배포판의 종류
  23. 2008.11.13 perdora ftp 설치
  24. 2008.11.12 보안서버 SSL 구축 - Aapche1.3.x + mod_ssl
  25. 2008.11.12 보안서버 SSL 구동시 비밀번호 자동 입력 및 부팅시 자동 시작
  26. 2008.11.12 SSL 보안인증서 설치
  27. 2008.10.20 리눅스 파일시스템
  28. 2008.10.06 리눅스 하드용량 확인하기
  29. 2008.10.02 서버점검사항
  30. 2008.08.12 사용자 생성 및 계정 관리
61.Linux2009. 7. 15. 11:41
반응형
출처 : http://simples.kr/bbs/board.php?bo_table=03_2&wr_id=68&page=2


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. 백업점검.

9. 스팸메일 점검.(메일큐 디렉토리 점검)

  #cd /var/spool/mqueue    (동일한 날짜, 동일한 사이즈를 가진 다수 파일구분)

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

 #repquota -av -ag
 #df -h

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

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

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

 

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

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 .shtml

27. 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 점검.

28. Chkrootkit 로 백도어 점검.

  #tar -xvzf chkrootkit.tar.gz
  #make sense
  #./chkrootkit     (점검명령어)

29 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

30. Nmap를 이용 포트스켄 하여 해킹가능성 체크.

   #nmap -sS -p80 211.42.48.110 -O -v www.armian.net
 
 #nmap -sS -O -v 211.42.48.114



출처
http://blog.naver.com/osang1997.do?Redirect=Log&logNo=40009100812 
=============================================================================
iptables -A INPUT -s 211.63.89.95 -p icmp -j DROP

// 모든 패킷 DROP
iptables -A INPUT -s 0/0 -j DROP

iptables -A OUTPUT -f -d 192.168.1.1 -j DROP

// TCP option --syn A에서 B서버로 나가는 패킷은 되고 B에서 A로 들어오는 패킷은 막는다.
iptables -p TCP -s 192.168.1.1 --syn

iptables -A INPUT -p tcp ! --sport 0:1024 --dport 25 -J ACCEPT

// UDP flooding 예방책
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F INPUT
iptables -F OUTPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p udp ! --dport 53 -m state --state NEW -j DROP

// 웹해킹 대응방법
[root@wowsecurity dev]# chmod 700 /usr/bin/wget /usr/bin/lynx /usr/bin/curl
modsecurity 사용

// 한국에서의 ftp만 허용하고 나머지 국가에서의 접속은 차단하고자 할 때
iptables -A INPUT -p tcp --dport 21 -m geoip --src-cc KR -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j DROP
또는 iptables -A INPUT -p tcp --dport 21 -m geoip ! --src-cc KR -j DROP

// 동시접속 제한
iptables -A INPUT -m recent --name badguy --rcheck --seconds 300 -j DROP
iptables -A INPUT -p tcp --syn --dport 25 -m connlimit --connlimit-above 5                     -m recent --name badguy --set -j DROP
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15                     ?connlimit-mask 24 -j DROP
iptables ?A INPUT ?m psd ?j DROP

// VPN
Gateway - to Gateway 방식
Host-to-Gateway 방식

// tacacs 설정
Router(config)# tacacs-server host x.x.x.x
Router(config)# tacacs-server key cisco
Router(config)# enable use tacacs

switch>(enable) set authentication login tacacs
switch>(enable) set tacacs server x.x.x.x
switch>(enable) set tacacs key cisco

// NTP
장시간 상이한 시간설정으로 분석에 어려움, 시간동기화를 시켜줘야 함

// no login : 원격에서 passwd 없이 접근 가능 단 passwd가 설정되어야 한다.
// no login local : passwd 설정 필요없다.

// anti-spam
# vi /etc/mail/access
spammer.org REJECT
x.x.x.0 RELAY

# makemap has /etc/mail/access.db < /etc/mail/access

// sendmail 환경파일 초기화
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

// tcpwrapper 텔넷 설정하기
# vi /etc/inetd.conf
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
위 문장을 다음과 같이 수정
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

# vi /etc/hosts.deny
ALL:ALL

# vi /etc/hosts.allow
telnetd : x.x.x.x

# service inetd restart

// PAM 설정하기
# vi /etc/security/limits.conf
* hard maxlogins 6
@users hard maxlogins 4

// FIND
find / -type f \( -perm -4000 -o -perm -2000 \) -ls // SETUID SETGID 파일들 검색
find / -type f -exec grep 'hack' {} /dev/null \n; // hack 단어를 포함한 파일 검색
find / -user 427 -print // 소유자 UID가 427인 파일을 보여줌
find / -perm -0002 -type d -print // 일반유저가 쓰기권한이 있는 DIR을 보여줌
find / -nouser -o -nogroup -print // 유저나 그룹이 없는 파일을 보여줌

chattr +i - 추가/변경/삭제 불가능
chattr +a - 추가만 가능
chattr +A - 파일에 대한 atime 즉 접근시간 속성을 변경할수 있다.

// proc 제어
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
-> spoofing을 막기 위해 source route 패킷을 허용하지 않는다. 소스 라우팅을 허용할 경우 악의적인 공격자가 ip 소스라우팅을 사용해서 목적지으 ㅣ경로를 지정할 수 있고 원래 위치로 돌아오는 경로도 지정할 수 있다.

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
-> smurf 공격에 악용될 수 있으므로 broadcast 주소를 통한 icmp echo에 대해 응답하지 않도록 한다.

echo "0" > /proc/sys/net/ipv4/ip_forward
-> 해당시스템을 통해 다른 시스템으로 패킷의 포워딩 되지 않도록 한다.(라우터나 게이트웨이가 아닐경우)

echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
-> icmp redirect 허용하지 않는다. 허용할 경우 공격자가 임의의 라우팅 테이블을 변경할 수 있어 자신이 의도하지 않은 경로로 트랙픽이 전달될 수있다.

echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
-> 스푸핑된 패킷이나 소스라우팅, redirect 패킷에 대해 로그파일 남긴다.

echo "1" > /proc/sys/net/ipv4/tcp_syncookies
-> syn flooding 공격에 대응하기 위해 syncookies기능을 켠다.

echo -e "32768\t61000" > /proc/sys/net/ipv4/ip_local_port_range
-> local port 범위 지정

echo "1024" > /proc/sys/net/ipv4/tcp_max_syn_backlog
-> backlog queue 사이즈를 늘려 공격에 대응한다.

stunnel
openssl must be installed.
xinetd.conf
service pop3s
{
server = /usr/local/sbin/stunnel
server_args = /usr/local/etc/stunnel/stunnel.conf
}
service ssmtp
{
}

// zone transfer
dig @ns.wowsecurity.net. wowsecurity.net axfr
host -l kunsan.ac.kr dns.kunsan.ac.kr

-> master 는 slave에서만 zone transfer를 허용할 필요가 있다.
slave는 다른 3, 4차 slave서버에 zone transfer를 제공하는 것이 아니라면 모든 zone transfer를 차단해야할것이다.

//ssh에서 tcp-wrapper 사용하기
./configure --with-libwrap

// mysql 3306으로의 접속차단
on compiling, --skip-networking
max_user_connections 설정 제한
show processlist

// 한 IP에서 동시에 telnet 접속 2회 하는거 제한
iptables -A INPUT -p tcp --syn --dport 23 -m connlimit-above 2 -j REJECT

// FTP 접속 제한하기
<Limit Login>
Order deny,allow
Deny from x.x.x.x
Allow from All

// SMURFFING 대책
TCP/IP 대신 암호화로 전송한다.(IP 위조는 사실상 어려움)
VLAN 사용
IP FILTERING (IP와 MAC주소를 고정한다.)
PORT SECURITY (MAC FLOODING 대비)

// 설정
SET PORT SECURITY 3/1 ENABLE MAC ADDRESS

// 나프타 : TCP로 메모리 고갈(실제 사용자의 IP주소로 공격함)

// smurf 대책 - 증폭네트워크딴에서 icmp echo reply 패킷에 대한 차단 or 어느정도의 대역폭만 허용

// no ip redirects - icmp redirect 차단

// ingress <-> egress

// blackhole
Posted by 1010
61.Linux2009. 7. 3. 13:46
반응형

Red Hat Enterprise Linux 설치 가이드

초록

설치 가이드는 Red Hat Enterprise Linux 5.0.0 설치에 관한 정보를 제공합니다.


차례

머리글
1. 아키텍쳐 관련 정보
2. 문서 약정
3. 앞으로 추가될 사항
3.1. 여러분의 의견을 기다리고 있습니다
4. 다른 메뉴얼 찾기
I. x86, AMD64, Intel 64 및 Itanium- 설치 및 부팅하기
1. Itanium 시스템에 대한 정보
1.1. Itanium 시스템 설치 개요
1.2. Itanium 시스템 — EFI 쉘
1.2.1. Itanium 시스템 — EFI 장치 이름들
1.2.2. Itanium 시스템 — EFI 시스템 파티션
2. 시작 단계
2.1. 업그레이드 또는 설치 여부 결정하기
2.2. 하드웨어 호환성
2.3. 충분한 디스크 공간은?
2.4. CD-ROM 또는 DVD를 사용하여 설치하시겠습니까?
2.4.1. 그 외 부팅 방법
2.4.2. 설치 부팅 CD-ROM 만들기
2.5. 네트워크 설치 준비 과정
2.5.1. FTP 및 HTTP 설치 준비 과정
2.5.2. NFS 설치 준비 과정
2.6. 하드 드라이브 설치 준비 과정
3. 시스템 사양표
4. Intel 및 AMD 시스템에 설치하기
4.1. 그래픽 설치 프로그램 사용자 인터페이스
4.1.1. 가상 콘솔에 대한 주의 사항
4.2. 텍스트 모드 설치 프로그램 사용자 인터페이스
4.2.1. 키보드를 사용하여 설치 진행하기
4.3. 설치 프로그램 시작하기
4.3.1. x86, AMD64, and Intel 64 시스템에서 설치 프로그램을 부팅하기
4.3.2. Itanium 시스템에서 설치 프로그램 부팅하기
4.3.3. 추가 부트 옵션
4.4. 설치 방법 선택하기
4.5. DVD/CD-ROM으로부터 설치
4.5.1. IDE CD-ROM이 발견되지 않을 때는?
4.6. 하드 드라이브로 부터 설치하기
4.7. 네트워크 설치 수행
4.8. NFS로 설치하기
4.9. FTP로 설치하기
4.10. HTTP로 설치하기
4.11. Red Hat Enterprise Linux를 선택해 주셔서 감사합니다!
4.12. 언어 선택
4.13. 키보드 설정
4.14. 설치 번호 입력
4.15. 디스크 파티션 설정
4.16. 고급 저장 옵션
4.17. 디폴트 레이아웃 생성
4.18. 시스템 파티션
4.18.1. 그래픽으로 하드 드라이브 보기
4.18.2. Disk Druid 버튼
4.18.3. 파티션 영역
4.18.4. 추천된 파티션 나누기 계획
4.18.5. 파티션 추가하기
4.18.6. 파티션 편집
4.18.7. 파티션 제거
4.19. x86, AMD64, Intel 64 부트로더 설정
4.19.1. 고급 부트로더 설정
4.19.2. 복구 모드
4.19.3. 부트로더 대안
4.19.4. SMP 마더보드와 GRUB
4.20. 네트워크 설정
4.21. 시간대 설정
4.22. 루트 암호 설정
4.23. 패키지 그룹 선택
4.24. 설치 준비하기
4.24.1. 설치 준비하기
4.25. 패키지 설치
4.26. 설치 완료
4.27. Itanium 시스템 — 컴퓨터 부팅과 설치 후 설정
4.27.1. 설치 후 부트로더 옵션들
4.27.2. Red Hat Enterprise Linux를 자동으로 부팅하기
5. Red Hat Enterprise Linux 제거하기
6. Intel 또는 AMD 시스템에 설치시 문제 해결
6.1. Red Hat Enterprise Linux로 부팅할 수 없음
6.1.1. RAID 카드로 부팅할 수 없습니까?
6.1.2. 시스템이 Signal 11 오류를 보입니까?
6.2. 설치를 시작할 때 나타나는 문제 해결
6.2.1. 그래픽 설치로 부팅할 때 문제들
6.3. 설치 중의 문제 해결
6.3.1. Red Hat Enterprise Linux를 설치할 장치를 찾지 못함 오류 메시지
6.3.2. 디스켓 드라이브 없이 트래이스백(traceback) 메시지 저장하기
6.3.3. 파티션 테이블에서 발생하는 문제
6.3.4. 남은 공간 사용하기
6.3.5. 그 외 파티션 문제들
6.3.6. Itanium 시스템의 다른 파티션 문제들
6.3.7. Python 오류가 보입니까?
6.4. 설치 후의 문제 해결
6.4.1. x86-기반 시스템에서 그래픽 GRUB 화면에 문제가 있습니까?
6.4.2. 그래픽 환경으로 부트하기
6.4.3. X 윈도우 시스템 (GUI)의 문제점들
6.4.4. 일반 사용자가 로그인시 X 서버가 크래시되는 문제
6.4.5. 로그인 시의 문제
6.4.6. RAM이 인식되지 않습니까?
6.4.7. 프린터가 작동하지 않을때
6.4.8. 사운드 설정 시 문제들
6.4.9. 시작할 때 Apache-기반 httpd 서비스와 Sendmail이 멈춤
7. Intel 및 AMD 시스템에 대한 드라이버 매체
7.1. 드라이버 매체가 필요한 이유?
7.2. 드라이버 매체란 무엇입니까?
7.3. 드라이버 매체를 어디서 얻을 수 있습니까?
7.3.1. 이미지 파일에서 드라이버 디스켓 만들기
7.4. 설치 중 드라이버 이미지 사용하기
8. Intel 및 AMD 시스템에 대한 추가 부트 옵션
9. GRUB 부트로더
9.1. 부트로더 및 시스템 아키텍쳐
9.2. GRUB
9.2.1. GRUB 및 x86 부트 프로세스
9.2.2. GRUB의 기능
9.3. GRUB 설치하기
9.4. GRUB 용어
9.4.1. 장치 이름
9.4.2. 파일명 및 블록리스트
9.4.3. Root 파일 시스템 및 GRUB
9.5. GRUB 인터페이스
9.5.1. 인터페이스를 읽어오는 순서
9.6. GRUB 명령어
9.7. GRUB 메뉴 설정 파일
9.7.1. 설정 파일 구조
9.7.2. 설정 파일 지시문
9.8. 부팅시 런레벨 변경하기
9.9. 추가 자료
9.9.1. 설치된 문서 자료
9.9.2. 유용한 웹사이트
9.9.3. 관련 서적
10. Itanium과 리눅스에 대한 추가 자료
II. IBM POWER 아키텍쳐 - 설치 및 부팅하기
11. 시작 단계
11.1. 업그레이드 또는 설치 여부 결정하기
11.2. IBM eServer System p 및 System i 준비 과정
11.3. 충분한 디스크 공간은?
11.4. CD-ROM 또는 DVD를 사용한 설치 방법
11.5. 네트워크 설치 준비 과정
11.5.1. FTP 및 HTTP 설치 준비 과정
11.5.2. NFS 설치 준비 과정
11.6. 하드 드라이브 설치 준비 과정
12. IBM System i 및 IBM System p 시스템에 설치하기
12.1. 그래픽 설치 프로그램 사용자 인터페이스
12.2. IBM System i 또는 IBM System p 설치 프로그램 부팅하기
12.3. 리눅스 가상 콘솔에 관한 정보
12.4. HMC vterm 사용법
12.5. 텍스트 모드 설치 프로그램 사용자 인터페이스
12.5.1. 키보드를 사용하여 설치 진행하기
12.6. 설치 시작하기
12.6.1. DVD/CD-ROM으로부터 설치
12.7. 하드 드라이브로 부터 설치하기
12.8. 네트워크 설치 수행
12.9. NFS로 설치하기
12.10. FTP로 설치하기
12.11. HTTP로 설치하기
12.12. Red Hat Enterprise Linux를 선택해 주셔서 감사합니다!
12.13. 언어 선택
12.14. 키보드 설정
12.15. 설치 번호 입력
12.16. 디스크 파티션 설정
12.17. 고급 저장 옵션
12.18. 디폴트 레이아웃 생성
12.19. 시스템 파티션
12.19.1. 그래픽으로 하드 드라이브 보기
12.19.2. Disk Druid 버튼
12.19.3. 파티션 영역
12.19.4. 추천된 파티션 나누기 계획
12.19.5. 파티션 추가하기
12.19.6. 파티션 편집
12.20. 네트워크 설정
12.21. 시간대 설정
12.22. 루트 암호 설정
12.23. 패키지 그룹 선택
12.24. 설치 준비하기
12.24.1. 설치 준비하기
12.25. 패키지 설치
12.26. 설치 완료
13. IBM POWER 시스템용 드라이버 매체
13.1. 드라이버 매체가 필요한 이유?
13.1.1. 드라이버 매체란 무엇입니까?
13.1.2. 드라이버 매체를 어디서 얻을 수 있습니까?
13.1.3. 설치 중 드라이버 이미지 사용하기
14. IBM POWER 시스템에 설치시 문제 해결
14.1. Red Hat Enterprise Linux로 부팅할 수 없음
14.1.1. 시스템이 Signal 11 오류를 보입니까?
14.2. 설치를 시작할 때 나타나는 문제 해결
14.2.1. 그래픽 설치로 부팅할 때 문제들
14.3. 설치 중의 문제 해결
14.3.1. Red Hat Enterprise Linux를 설치할 장치를 찾지 못함 오류 메시지
14.3.2. 디스켓 드라이브 없이 트래이스백(traceback) 메시지 저장하기
14.3.3. 파티션 테이블에서 발생하는 문제
14.3.4. IBM POWER 시스템에서 발생 가능한 파티션 관련 문제점
14.3.5. Python 오류가 보입니까?
14.4. 설치 후의 문제 해결
14.4.1. *NWSSTG에서 IPL (초기 프로그램 로드)하는데 실패
14.4.2. 그래픽 환경으로 부트하기
14.4.3. X 윈도우 시스템 (GUI)의 문제점들
14.4.4. 일반 사용자가 로그인시 X 서버가 크래시되는 문제
14.4.5. 로그인 시의 문제
14.4.6. 프린터가 작동하지 않을때
14.4.7. 시작할 때 Apache-기반 httpd 서비스와 Sendmail이 멈춤
15. IBM Power 시스템에 대한 추가 부트 옵션
III. IBM System z 아키텍쳐 - 설치 및 부팅하기
16. 시작 단계
16.1. 설치-이전
16.2. 설치 노트를 위한 추가 System z 하드웨어 준비
16.3. 부팅 방법 개요
16.4. 네트워크 설치 준비 과정
16.4.1. FTP 및 HTTP 설치 준비 과정
16.4.2. NFS 설치 준비 과정
16.5. 하드 드라이브 설치 준비 과정
16.6. z/VM에서 설치하기
16.7. Red Hat Enterprise Linux LPAR CD를 사용하여 LPAR 설치하기
16.8. System z CD-ROM에 해당하는 Red Hat Enterprise Linux없이 LPAR에서 설치하기
16.9. LPAR에서 설치하기 (기본 절차)
16.10. 충분한 디스크 공간은?
17. IBM System z 시스템 상에 설치하기
17.1. 그래픽 설치 프로그램 사용자 인터페이스
17.2. 텍스트 모드 설치 프로그램 사용자 인터페이스
17.2.1. 키보드를 사용하여 설치 진행하기
17.3. 설치 프로그램 실행하기
17.3.1. X11 전송 기능을 사용하여 설치하기
17.3.2. VNC를 사용하여 설치하기
17.4. 하드 드라이브 (DASD)로 부터 설치하기
17.5. NFS로 설치하기
17.6. FTP로 설치하기
17.7. HTTP로 설치하기
17.8. Red Hat Enterprise Linux를 선택해 주셔서 감사합니다!
17.9. 언어 선택
17.10. 설치 번호 입력
17.11. 디스크 파티션 설정
17.12. 고급 저장 옵션
17.12.1. FCP 장치
17.13. 디폴트 레이아웃 생성
17.14. 시스템 파티션
17.14.1. 그래픽으로 DASD 장치 보기
17.14.2. Disk Druid 버튼
17.14.3. 파티션 영역
17.14.4. 추천된 파티션 나누기 계획
17.14.5. 파티션 편집
17.15. 네트워크 설정
17.16. 시간대 설정
17.17. 루트 암호 설정
17.18. 패키지 그룹 선택
17.19. 설치 준비하기
17.19.1. 설치 준비하기
17.20. 패키지 설치
17.21. 설치 완료
18. Red Hat Enterprise Linux 제거하기
19. 예시 매개 변수 파일들
20. 추가 부트 옵션
21. IBM System z 시스템에 설치시 문제 해결
21.1. Red Hat Enterprise Linux로 부팅할 수 없음
21.1.1. 시스템이 Signal 11 오류를 보입니까?
21.2. 설치 중의 문제 해결
21.2.1. Red Hat Enterprise Linux를 설치할 장치를 찾지 못함 오류 메시지
21.2.2. 파티션 테이블에서 발생하는 문제
21.2.3. 그 외 파티션 문제들
21.2.4. Python 오류가 보입니까?
21.3. 설치 후의 문제 해결
21.3.1. 원격 그래픽 데스크탑과 XDMCP
21.3.2. 로그인 시의 문제
21.3.3. 프린터가 작동하지 않을때
21.3.4. 시작할 때 Apache-기반 httpd 서비스와 Sendmail이 멈춤
22. IBM System z 사용자를 위한 추가 정보
22.1. sysfs 파일 시스템
22.2. zFCP 드라이버 사용법
22.3. mdadm 명령을 사용하여 RAID 기반, 멀티패스 스토리지를 설정하는 방법
22.3.1. mdadm를 사용하여 RAID 장치 생성하기
22.3.2. mdadm를 사용하여 멀티패스 장치 생성하기
22.4. SCSI 장치에서 IPL(초기 프로그램 적재) 설정하기
22.4.1. SCSI 디스크 IPL(초기 프로그램 적재)하기
22.5. DASD 추가하기
22.6. 네트워크 장치 추가하기
22.6.1. qeth 장치 추가하기
22.6.2. 네트워크 장치를 추가하는 방법에 대한 간략한 소개
22.7. 커널 관련 정보
IV. 일반적인 사항
23. 현재 시스템 업그레이드
23.1. 업그레이드 또는 재설치하기 선택
23.2. 시스템 업그레이드
24. 레드햇 네트워크에 구입하신 제품을 등록하십시오
24.1. RHN 등록
24.1.1. Red Hat 로그인 아이디 입력하기
24.1.2. 설치 번호를 입력하십시오
24.1.3. 시스템을 연결하십시오
25. 디스크 파티션 소개
25.1. 하드 디스크 기본 개념
25.1.1. 중요한 것은 기록 내용 보다는 그것을 기록하는 방식입니다
25.1.2. 파티션: 드라이브 한 개를 여러 개로 나누기
25.1.3. 파티션 내의 파티션 — 확장된 파티션 개요
25.1.4. Red Hat Enterprise Linux를 위한 공간 만들기
25.1.5. 파티션 이름 지정 스키마
25.1.6. 디스크 파티션과 다른 운영 체제들
25.1.7. 디스크 파티션과 마운트 지점
25.1.8. 파티션 수
V. 기초 시스템 복구
26. 기초 시스템 복구
26.1. 자주 발생하는 문제들
26.1.1. Red Hat Enterprise Linux로 부팅할 수 없는 경우
26.1.2. 하드웨어/소프트웨어 문제
26.1.3. 루트 암호
26.2. 복구 모드로 부팅하기
26.2.1. 부트로더 재설치하기
26.3. 단독 사용자 모드로 부팅하기
26.4. 비상 모드로 부팅하기
27. POWER 시스템 복구 모드
27.1. 복구 모드에서 SCSI 유틸리티를 사용시 특별히 고려해야할 사항들
VI. 고급 설치 옵션 및 배포
28. 킥스타트 설치
28.1. 킥스타트 설치란?
28.2. 킥스타트 설치 방법은?
28.3. 킥스타트 파일 만들기
28.4. 킥스타트 옵션
28.4.1. 고급 파티션의 예
28.5. 패키지 선택
28.6. 설치전 스크립트
28.6.1. 예시
28.7. 설치후 스크립트
28.7.1. 예시
28.8. 킥스타트 파일을 저장할 위치
28.8.1. 킥스타트 부팅 디스켓 만들기
28.8.2. 네트워크 기반 킥스타트 설치
28.9. 설치 트리 위치
28.10. 킥스타트 설치 시작하기
29. 킥스타트 설정 프로그램
29.1. 기본 설정
29.2. 설치 방법
29.3. 부트로더 옵션
29.4. 파티션 정보
29.4.1. 파티션 생성하기
29.5. 네트워크 설정
29.6. 인증
29.7. 방화벽 설정
29.7.1. SELinux 설정
29.8. 화면 설정
29.8.1. 일반
29.8.2. 비디오 카드
29.8.3. 모니터
29.9. 패키지 선택
29.10. 설치-이전 스크립트
29.11. 설치-이후 스크립트
29.11.1. Chroot 환경
29.11.2. 해석기 사용
29.12. 파일 저장하기
30. 부트 프로세스, Init, 및 종료
30.1. 부트 프로세스
30.2. 부트 프로세스에 대한 자세한 정보
30.2.1. BIOS
30.2.2. 부트로더
30.2.3. 커널
30.2.4. /sbin/init 프로그램
30.3. 부팅시 추가 프로그램 실행하기
30.4. SysV Init 런레벨
30.4.1. 런레벨
30.4.2. 런레벨 유틸리티
30.5. 종료하기
31. PXE 네트워크 설치
31.1. 네트워크 서버 설정
31.2. PXE 부트 설정
31.2.1. 명령행 설정
31.3. PXE 호스트 추가
31.3.1. 명령행 설정
31.4. TFTPD
31.4.1. tftp 서버 시작
31.5. DHCP 서버 설정
31.6. 사용자 정의 부트 메시지 추가하기
31.7. PXE 설치 수행
Posted by 1010
61.Linux2009. 5. 30. 17:22
반응형
15 [리눅스 웹 서버와 실전 웹해킹] chapter 12. 기타 재미있는 툴들 esniper 05-24 297
14 [리눅스 웹 서버와 실전 웹해킹] chapter 11. 게시판의 문제점 esniper 05-24 120
13 [리눅스 웹 서버와 실전 웹해킹] chapter 10. 변수값의 이동경로 파악하기 esniper 05-24 98
12 [리눅스 웹 서버와 실전 웹해킹] chapter 9. 인터넷 익스플로어는 강력한 웹 해킹 도구 esniper 05-24 142
11 [리눅스 웹 서버와 실전 웹해킹] chapter 8. 웹프로그래밍으로 기초 쌓기 esniper 05-24 141
10 [리눅스 웹 서버와 실전 웹해킹] chapter 7. 웹 해킹 처음 시작하기 esniper 05-24 178
9 [리눅스 웹 서버와 실전 웹해킹] chapter 6. 관리 및 보안 esniper 05-24 48
8 [리눅스 웹 서버와 실전 웹해킹] chapter 5. 웹 서버 설정 esniper 05-24 50
7 [리눅스 웹 서버와 실전 웹해킹] chapter 4. 웹 서버 설치 esniper 05-24 60
6 [리눅스 웹 서버와 실전 웹해킹] chapter 3. 주요 명령어 esniper 05-24 74
5 [리눅스 웹 서버와 실전 웹해킹] chapter 2. 리눅스 서버 설치 esniper 05-24 50
4 [리눅스 웹 서버와 실전 웹해킹] chapter 1. 리눅스 처음 시작하기 esniper 05-24 76
3 [리눅스 웹 서버와 실전 웹해킹] 부록 CD 파일 다운로드 esniper 05-24 62
2 [리눅스 웹 서버와 실전 웹해킹] [책소개] 리눅스 웹 서버와 실전 웹해킹 (그대로 따라하는) esniper 05-23 154
1 국내 저작권 만료된 도서를 pdf로 공개합니다. esniper 05-21 150


출처 : http://simples.kr/bbs/board.php?bo_table=13_2
Posted by 1010
61.Linux2009. 5. 30. 17:21
반응형
chapter 9. 인터넷 익스플로어는 강력한 웹 해킹 도구
9.1 웹소스는 모두 내꺼
9.2 쿠키와 세션
9.3 자바스크립트와 메모리에 남는 변수





출처 : http://simples.kr/bbs/board.php?bo_table=13_2&wr_id=13
Posted by 1010
61.Linux2009. 5. 30. 17:19
반응형

chapter 10. 변수값의 이동경로 파악하기
10.1 POST, GET 이란?
10.2 유료결재의 원리
10.3 NetCat을 이용한 웹 해킹





출처 : http://simples.kr/bbs/board.php?bo_table=13_2&wr_id=14
Posted by 1010
61.Linux2009. 5. 30. 17:18
반응형
chapter 11. 게시판의 문제점
11.1 파일 업로드 문제
11.2 절대 경로와 태그허용
11.3 config 파일의 문제


Posted by 1010
61.Linux2009. 4. 11. 10:58
반응형

   퍼미션(권한)이란?

Owner

Group

Other

Owner와 Group은 파일소유자자신과 자신이 속한그룹. Other은 제3자, 웹사이트 방문객은 제3자로 nobody로 취급.

r

w

x

r

w

x

r

w

x

r은 파일 읽기(4), w는 파일 쓰기(2), x는 파일 실행(1)

7

5

5

파일소유자는 그것을 읽고 쓰고 실행시킬 수 있지만, 제3자는 읽고 실행만 시킬 수 있다.

7

7

7

제3자도 쓰기 권한이 주어진다.

*.html  *.cgi, *.pl *.txt등의 파일은 업로드시 반드시 ascii로 하고 나머지 그림(*.gif *.jpg)이나 자바 애플릿(*.class), 실행파일(*.exe *.zip *.rar)등은 binary mode로 업로드 할 것.

   리눅스 기본명령어

명령어

사 용 법

login

사용자 인증과정

리눅스 시스템은 기본적으로 multi-user 개념에서 시작하였기 때문에 시스템을 이용하기 위해서는 반드시 로그인을 하여야 합니 다. 로그인은 PC 통신에서도 많이 사용되어져 왔기 때문에 그 개 념  설정에 그다지 어려움이 없을 것입니다. 흔히 말하는 ID를 입력하는 과정입니다. 

passwd

패스워드 변경

리눅스, 특히 인터넷의 세계에서는 일반 컴퓨팅 상황에 비하여 훨씬 해킹에 대한 위험이 높습니다. 패스워드는 완성된 단어 보다는 단어 중간에 숫자나 키보드의 ^, #, ' 등과 같은 쉽게 연상 할 수 없는 기호를 삽입하여 만들어 주는 것이 좋습니다

du

하드사용량 체크(chkdsk)

자신의 하드공간을 알려면
# du
특정 디렉토리의 사용량을 알려면
# du -s diretory_name

ls

파일 리스트 보기(dir)

F : 파일 유형을 나타내는 기호를 파일명 끝에 표시
    (디렉토리는 '/', 실행파일은 '*', 심볼릭 링크는 '@'가 나타남).
l  : 파일에 관한 상세 정보를 나타냅니다.
a : dot 파일(.access 등)을 포함한 모든 파일 표시.
t  : 파일이 생성된 시간별로 표시
C : 도스의 dir/w명령과 같 이 한줄에 여러개의 정보를 표시
R : 도스의 dir/s 명령과 같이 서브디렉토리 내용까지.

(예)
# ls -al  
# ls -aC
# ls -R

cd

디렉토리를 변경

# cd cgi-bin     : 하부 디렉토리인 cgi-bin으로 들어감.
# cd  ..             : 상위디렉토리로 이동
# cd 또는 cd ~  : 어느곳에서든지 자기 홈디렉토리로 바로 이동
# cd /webker     : 현재 작업중인 디렉토리의 하위나 상위 디렉토리가
                          아닌 다른 디렉토리(webker)로 이동하려면 /로
                          시작해서 경로이름을 입력하면 된다.

cp

화일 복사(copy)

# cp index.html index.old
     : index.html 화일을 index.old 란 이름으로 복사.

# cp /home/test/*.*  .
     : test 디렉토리내의 모든 화일을 현 디렉토리로 복사.

mv

파일이름(rename) / 위치(move)변경

# mv index.htm index.html
     : index.htm 화일을 index.html 로 이름 변경

$ mv file  ../main/new_file
     : 파일의 위치변경

mkdir

디렉토리 생성

# mkdir download  : download 디렉토리 생성

rm

화일삭제

# rm test.html : test.html 화일 삭제
# rm -r <디렉토리> : 디렉토리 전체를 삭제
# rm -i a.*
     : a로 시작하는 모든 파일을 일일이 삭제할 것인지 확인하면서 삭제

rmdir

디렉토리 삭제

# rmdir cgi-bin : cgi-bin 디렉토리 삭제

pwd

현재의 디렉토리 경로를 보여주기

pico

리눅스용 에디터

put

ftp 상태에서 화일 업로드

> put  guestbook.tar.gz

get

ftp 상태에서 화일 다운로드

> get  guestbook.tar.gz

mput 또는 mget

여러개의 화일을 올리고 내릴때 (put,get과 사용법동일)

chmod

화일 permission 변경

리눅스에서는 각 화일과 디렉토리에 사용권한을 부여.

예) -rwxr-xr-x   guestbookt.html
rwx  :처음 3개 문자 = 사용자 자신의 사용 권한
r-x  :그다음 3개 문자 = 그룹 사용자의 사용 권한
r-x  :마지막 3개 문자 = 전체 사용자의 사용 권한

읽기(read)---------- 화일 읽기 권한
쓰기(write)---------- 화일 쓰기 권한
실행(execution)---------- 화일 실행 권한
없음(-)---------- 사용권한 없음

명령어 사용법
chmod [변경모드] [파일]

# chmod 666  guestbook.html
     : test.html 화일을 자신에게만 r,w,x 권한을 줌

# chmod 766  guestbook.html
     : 자신은 모든 권한을 그룹사용자와,전체사용자에게는
       읽기와 쓰기 권한만 줌

alias

" doskey alias" 와 비슷하게 이용할 수 있는 쉘 명령어 alias는 말그대로 별명입니다. 사용자는 alias를 이용하여 긴 유 닉스 명령어를 간단하게 줄여서 사용할 수도 있습니다.
이들 앨리어스는 [alias ls 'ls -al'] 같이 사용하시면 되는데, 한 번 지정한 alias를 계속해서 이용하시려면, 자신의 홈디렉토리에 있는
.cshrc(Hidden 속성)을 pico등의 에디터를 이용하여 변경시 키면 됩니다.

cat

파일의 내용을 화면에 출력하거나 파일을 만드는 명령( 도스의 TYPE명령)

# cat filename

more

cat 명령어는 실행을 시키면 한 화면을 넘기는 파일일 경우 그 내용을 모두 볼수가 없다. 하지만 more 명령어를 사용하면 한 화면 단위로 보여줄 수 있어 유용.

# more <옵션>
옵션은 다음과 같습니다.

Space bar : 다음 페이지
Return(enter) key : 다음 줄
v : vi 편집기로 전환
/str : str 문자를 찾음
b : 이전 페이지
q : more 상태를 빠져나감
h : 도움말
= : 현재 line number를 보여줌

who

현재 시스템에 login 하고 있는 사용자의 리스트를 보여줍니다.

# who

whereis

소스, 실행파일, 메뉴얼 등의 위치를 알려줍니다

# whereis perl : perl의 위치를 알려준다

vi,
touch,
cat

새로운 파일을 만드는 방법

# vi newfile :  vi 편집기 상태로 들어감
# touch newfile : 빈 파일만 생성됨
# cat > newfile  : vi 편집기 상태로 들어감, 문서 작성후 Ctrl+D로 빠져나옴

cat,
head,
tail

파일 내용만 보기

# cat filename         : 파일의 내용을 모두 보여줌
# head -n filename : n줄 만큼 위세서부터 보여줌
# tail -n filename     : n줄 만큼 아래에서부터 보여줌


   압축명령어 사용법

압축 명령어

사 용 법

tar .tar, _tar로 된 파일을 묶거나 풀때 사용하는 명령어
(압축파일이 아님)

# tar cvf [파일명(.tar, _tar)] 압축할 파일(또는 디렉토리): 묶을때
# tar xvf [파일명(.tar, _tar)]  :  풀 때
   (cf) cvfp/xvfp 로 하면 퍼미션 부동
compress 확장자 .Z 형태의 압축파일 생성

# compress    [파일명]     : 압축시
# uncompress [파일명]    : 해제시
gzip 확장자 .gz, .z 형태의 압축파일 생성

#  gzip     [파일명]    : 압축시
#  gzip -d [파일명]   : 해제시
기타 .tar.Z
이것은 tar로 묶은 후에 compress를 사용하여 압축한 것으로 uncompress를 사용해서 압축을 푼 다음,
다시 tar를 사용해서 원래의 파일들을 만들어내면 됩니다.
아니면 다음과 같이 한 번에 풀 수도 있다.
# zcat  [파일명].tar.Z  : 해제시

.tar.gz또는 .tar.z
# gzip -cd [파일명]    : 해제시

.tar.gz 또는 .tar.z .tgz
gzip을 사용해서 푼 다음 다시 tar를 사용해서 원래 파일을 만들어 낼 수 있으나,
하지만 다음과 같이 하면 한 번에 처리를 할 수 있다.

# gzip -cd 파일.tar.gz | tar xvf -  또는
# tar xvzf 파일.tar.gz
# tar xvzf 파일.tgz

   리눅스 필수명령어

Linux/Unix 명령어

설 명

MS-DOS 비교

./x

x 프로그램 실행
(현재 디렉토리에 있는 것)

x

/

이전에(↑) / 다음에(↓) 입력했던 명령어

doskey

cd x (또는 cd /x)

디렉토리 X로 가기

cd

cd .. (또는 cd ../ 또는 cd /..)

한 디렉토리 위로 가기

cd..

x 다음 [tab] [tab]

x 로 시작하는 모든 명령어 보기

-

adduser

시스템에 사용자 추가

/

ls (또는 dir)

디렉토리 내부 보여주기

dir

cat

터미널 상의 텍스트 파일 보기

type

mv x y

파일 x를 파일 y로 바꾸거나 옮기기

move

cp x y

파일 x를 파일 y로 복사하기

copy

rm x

파일 지우기

del

mkdir x

디렉토리 만들기

md

rmdir x

디렉토리 지우기

rd

rm -r x

디렉토리 x를 지우고 하위도 다 지우기

deltree

rm p

패키지 지우기

-

df (또는 df x)

장치 x의 남은 공간 보여주기

chkdsk ?

top

메모리 상태 보여주기(q는 종료)

mem

man x

명령어 x에 관한 매뉴얼 페이지 얻기

/

less x

 텍스트 파일 x 보기
(리눅스에서는 더 많은 필터 적용 가능)

type x | more

echo

어떤 것을  echo 화면에 인쇄한다.

echo

mc

UNIX를 위한 노턴 커맨더

nc

mount

장치 연결(예: CD-ROM, 연결을 해제하려면 umount)

-

halt

시스템 종료

-

reboot ([ctrl] + [alt] +[del])

시스템  다시 시작하기

[ctrl] + [del] + [del]

    고급명령어

 고급 명령어

 

chmod <권한> <파일>

파일 권한(permissions) 변경

ls -l x

파일 x의 자세한 상황을 보여줌

ln -s x y

 x에서 y로 심볼릭 링크를 만들어 줌

find x -name y -print

디렉토리 x안에서 파일 y를 찾아서 화면에 그 결과를 보여줌

ps

지금 작동중인 모든 프로세스들을 보여줌

kill x

 프로세스 x를 종료 (x는 ps 명령으로 알 게 된 PID)

[alt] + F1 - F7

 터미널 1-7까지 바꾸기 (텍스트 터미널에서; F7은 X-윈도우(시작될때))

lilo

 부트 디스크를 만듦

 

용어


symlink

다른 파일이나 디렉토리로 심볼릭 링크. 윈도유98의 바로가기 같은 것

shell script

여러 명령어들을 차례로 수행하게 한 것. MS-DOS의 배치 파일 같은 것

     팁!!

 - 웹에서 생성한 노바디파일 삭제 하는방법..

기본적으로 웹서버는 nobody 권한으로 동작이 되게 됩니다.
고객님께서 FTP 로 접속하여 전송한 파일이 아니라 웹상에서 사용자들이 파일을 업로드 한 경우나 웹상에서 생성된 파일의 경우 삭제가 되지 않는 경우가 있을 수 있습니다.

웹서버의 동작 권한은 nobody 이고 웹상에서 생성된 파일이므로 해당 파일이 nobody 소유권으로 시스템에 생성이 되게 됩니다.

아래와 같이 웹상에서 실행시키면 됩니다.

1. 메모장을 열어 아래 소스를 붙여넣기 하신후..

<?

//폴더/파일 삭제시

$cmd = `rm -rf 노버디로된파일혹은폴더명`;

echo "$cmd";

echo "폴더가 삭제 되었습니다.";

?>

-- 위에까지..
-- **위에서 수정할 사항은 "노버디로된파일혹은폴더명"을 삭제하시고자 하는 파일명으로 바꿔주세요..

2. 파일 -> 다른이름으로저장 -> 아래 탭에서 파일형식을 "모든파일"로 선택후

   -> "원하는파일명.php" 로 저장 (ex: del.php)

3. ftp를 통해 고객계정에 파일업로드를 하시고 웹에서 파일을 불러주시면 됩니다

   ex: html폴더안에/temp 안에 삭제하고자하는 파일이 있을경우 / html폴더/temp안에 del.php를 업로드하고..

       브라우저에서 http://고객도메인/temp/del.php 를 하면 됩니다

4. 실행하시면 삭제되고 nobody 권한의 폴더만 남습니다.(폴더안의화일들만 지워짐)

   그후 ftp 접속후 폴더를 삭제하시면 됩니다.

ex)

<?

퍼미션 변경시

$cmd = `chmod -R 777 노버디로된파일혹은폴더명`;

echo "$cmd";

echo "퍼미션 변경되었습니다.";

?>

Posted by 1010
61.Linux2009. 1. 30. 12:53
반응형

1.1. SELinux의 이해


Q: SELinux란?

A: 휘도라 코어(Fedora Core)의 SELinux(Security-Enhanced Linux)란 리눅스 보안 모듈 구조체(Linux Security Modules(LSM) framework)를 이용하여 리눅스 커널에 의무 접근 제어(Mandatory Access Control - MAC)를 구현하는 것이다. 표준 리눅스 보안(Standard Linux Security)은 자유재량 접근 제어(Discretionary Access Control – DAC) 모델이다. DAC 모델에서, 파일과 자원에 대한 결정권은 오직 해당 객체(objects)의 사용자(user id)에게 있고 소유권(ownership)에 따라 이뤄진다. 각 사용자와 그 사용자에 의해 실행된 프로그램은 자기에게 할당된 객체에 대해 전적으로 자유재량권을 갖는다. 이러한 상황에서는, 악의 있는 일반 혹은 루트 사용자(예로, setuid와 setgid)가 실행시킨 결함이 있는 소프트웨어를 통해 주어진 객체로 원하는 어떠한 일을 해도 막아낼 방법이 없으며 보안 정책을 시스템 전체에 걸쳐 시행되도록 할 방법이 없다.


MAC 시스템은 위와 같은 빠져있는 요소들을 제공한다. 첫 째, 보안 정책을 모든 프로세스나 객체에 대하여 관리차원으로 규정 지을 수 있다. 둘 째, 커널에 SELinux를 구현하면, 모든 프로세스와 객체를 제어할 수 있다. 셋 째, 결정은 단지 인증된 사용자(user identity)에 의해서가 아니라 이용 가능한(available) 모든 보안 관련 정보에 근거하여 이뤄진다.


SELinux하에서 MAC는 모든 주체(subjects – 사용자, 프로그램, 프로세스)와 객체(파일, 디바이스)에 대해서 국부적으로 허가(granular permissions)해 줄 수 있다. 응용프로그램에서 불필요한 부분은 제외하고 오직 필요한 기능에 대해서만 사용 권한을 안전하게 부여한다.


SELinux 구현은 역할과 유형 시행(Type Enforcement - TE)에 기초하여 추상적 사용자 수준 제어(abstracted user-level control)를 제공하는 역할 기반 접근 제어(role-based access control – RBAC)를 사용한다. TE는 접근 제어를 처리하기 위해서 테이블(매트릭스)을 이용한다. 주체는 영역(domain)을 갖고 객체는 유형을 갖으므로, 매트릭스에서 교차조회하여 이들의 상호작용을 규정한다. 이는 리눅스 시스템에 있는 모든 동작자(actor)에 대하여 극단적으로 국부 제어를 가능케 한다.


Q: SELinux 정책이란?

A: SELinux 정책은 사용자, 프로그램, 프로세스 그리고 이들의 동작 대상인 파일과 디바이스를 포함한 시스템 전체, 즉, 모든 주체와 객체에 대한 접근 허가(access permissions)를 기술한다. 휘도라 코아 정책은 관련 소스 패키지와 함께 패키지로 공급된다. 현재 공급되는 정책 패키지는 다음과 같다.

selinux-policy-strict-<version-arch>.rpm and selinux-policy-strict-sources-<version-arch>.rpm

selinux-policy-targeted-<version-arch>.rpm and selinux-policy-targeted-sources-<version-arch>.rpm

설치시 정책 소스는 /etc/selinux/policyname/src/policy에, 바이너리 정책 파일은 /etc/selinux/policyname/policy에 놓인다. 정책 소스는 최소 설치(ultra-minimal installations)에 포함되지 않는다. 유형과 영역에 대한 정책은 주체와 객체에 대한 보안 문맥과 구분해서 별도로 설정된다.


Q: SELinux 목표 정책(SELinux targeted policy)이란?

A: 처음 SELinux가 휘도라 코아에 포함됐을 때, NSA의 엄격한 정책이 시행됐었다. 시험 목적으로, 이는 그 엄격한 정책을 통해서 수백가지 문제점을 찾아낼 수 있었다. 뿐만 아니라, 휘도라 사용자들의 다양한 환경에 단 하나의 엄격한 정책을 적용한다는 것은 실효성이 없다는 것이 명백히 드러났다. 기본 설치 이외의 것에 대해서 단일 엄격한 정책을 적용하는 것은 현지 일반 사용자에게 전문 지식(기술)을 요구하는 것이었다.


이 시점에서, SELinux 개발자들은 사용자들이 선택한 내용을 검토하고, 다른 전략을 시도하기로 결정했다. 특정 데몬들, 특히, 깨지거나 손상(오염)되면 시스템을 황폐화시키거나 공격받기 쉬운 것들을 옥죄는(lock down) 데 초점을 맞추는 정책을 만들기로 했다. 시스템의 나머지 부분은 SELinux가 활성(enabled)이든 아니든 관계없이 똑같이 가동되도록, 즉, 마치 표준 리눅스 보안하에 운영되고 있는 것처럼 동작하도록 허용한다.


목표 정책 하에서, 대부분의 프로세스는 unconfined_t domain(무제한 영역)에서 가동된다. 그 이름이 의미하는 바와 같이, 이 프로세스들은 거의 SELinux 정책에 의한 제한을 받지 안는다. 그러나, 그 프로세스들은 여전히 표준 리눅스/유닉스 보안에 의해 통제된다.


특정 네트워크 데몬들은 전용 정책을 갖고 있어, 응용프로그램이 시작될 때, 무제한 정책(unconfined_t policy)이 전용 정책으로 전이된다. 예를 들면, 시스템 부팅시, init는 무제한 정책하에서 가동하지만, named가 시작할 때, named 영역으로 전이되고 적시에 적절한 정책에 의해 옥죄어진다.


각 구체적인 데몬에 대한 목표 정책을 활성화 혹은 비활성화 시키는 것에 관하여 더 알고 싶으면, system-config-securitylevel의 사용법을 참조하기 바란다.


Q: 어떤 데몬이 목표 정책에 의해 보호받는가?

A: 현재, 데몬 일람표에는 dhcpd, httpd(apache.te), named, nscd, ntpd, portmap, snmpd, squid 그리고 syslogd가 있다. 이 데몬들에 대한 정책 파일은 /etc/selinux/targeted/src/policy/domains/program에서 찾을 수 있다.


향후, 더 많은 데몬들이 목표 정책 보호(targeted policy protection)에 추가될 것이다.


Q: 어느 데몬을 목표 정책에 추가할 것인가? Sendmail, Postfix, MySQL, 혹은 PostgreSQL?

A: SELinux 개발자는 긍극적으로 ftp와 메일 에이젼트를 목표 정책에 추가하고자 한다. 예를 들면, vsftpd는 로그인과 비슷하게 동작한다. 즉, 로그인후 새로운 프로세스가 사용자 문맥(실사용자 혹은 무명씨 문맥)하에 실행된다.


메일 에이젼트가 안고 있는 문제중 하나는 메일 에이젼트는 사용자 홈 디렉토리에 있는 파일을 조작해야 하는 일이 자주 생기는 것이다. 목표 정책의 목적중 하나는 사용자 홈 디렉토리에서 문제들을 분류하지 않는 것이다. 이 생각은 아직도 변함이 없다.


Q: 염격한 정책은 어떤가? 이 정책 조차도 유효한가?(Does it even work?)

A: 엄격한 정책은 휘도라 코아에서 분명히 적용되고 있다. 이는 다른 사용자의 독특한 환경에 의해 문제를 야기시킬 수 있다. 엄격한 정책이 적절하게 운영되려면, 정책과 시스템 둘 다 미세조정(tweak)해야 할 지도 모른다.


엄격한 정책을 사용하는 데 좀더 용이하도록 하려고, SELinux 개발자들은  정책 변경을 더 쉽게 할 수 있도록 노력해왔다. 예를 들면, system-config-securitylevel은 재명명하기(relabel)를 시동 스크립트안에 갖고 있다(build).

Q: 파일 문맥이란?

A: 파일 문맥은 파일이나 디레토리의 보안 문맥을 기술하는 항구적 라벨(꼬리표)(persistent labels)을 만들기 위해 setfiles 명령에 의해 사용된다.


휘도라 코아는 검사, 복구, 재명명(check, restrore, and relabel) 등, 이상 세가지 옵션을 지원하는 명령 스크립트 fixfiles를 갖고 있다. 이는 사용자가 selinux-policy-targeted-sources 패키지를 설치하지 않고도 파일 시스템을 재명명(relabel)할 수 있도록 해준다. 명령 라인 사용법은 표준 setfiles 명령보다 더 친숙하다.


Q: 파일, 사용자, 프로세스의 보안 문맥을 확인하는 방법은?

A: 새 옵션 –Z는 주체나 객체의 문맥을 표시하기 위한 손쉬운 방법이다:


ls -alZ file.foo

id -Z

ps -eZ


Q: 영역과 유형은 어떻게 다른가?

A: 비록 영역이 프로세스의 유형으로 자주 언급될 지라도, 영역과 유형 사이에는 차이점이 없다. 이렇게 볼 때, 영역의 사용은 영역과 유형을 구분하는 전통적 TE 모델에 기인한다.



1.2. SELinux 제어하기



Q: SELinux 설치 및 설치 안하는 방법은?

A: 방화벽 설정 화면에서 선택한 사항에 기초하여 설치자(installer)가 처리한다. 기본 가동 정책(default running policy)은 목표 정책이며, 기본으로(by default) 가동된다.



Q: 사용중인 정책을 교체하는 방법은?

A:


정책 교체는 가볍게 취할 사안이 아니다.

연구 목적으로 시험 장비(test machine)에서 새 정책을 시도하는 이외, 생산 시스템(production system)에서는 다른 정책으로 교체하기 전에 현황을 심각하게 고려해야 한다.

교체 작업은 간단하다. 이는 매우 안전한 방법이지만, 우선 시험 시스템에서 일차 시도해 보는 것이 바람직하다.

한 가지 방법은 system-config-securitylevel을 사용하여 정책을 바꾸고 재명명(relabel)하도록 파일 시스템을 설정하는 것이다.


수작업 절차는 다음과 같다:


1. /etc/selinux/config을 편집하고 SELINUXTYPE=policyname으로 정책 유형을 바꾼다.

1. 재부팅하여 돌아올 수 있는 지 확인하기위해, SELINUX=permissive모드로 설정한다. 이렇게 하면, SELinux는 정확한 정책하에서 가동될 것이지만, 만일 부정확한 파일 문맥 명명(labeling)과 같은 문제가 있으면 로그인하도록 할 것이다.

1. sysadm_r 역할을 갖춘 root로 파일 시스템을 재명명한다(relabel):


id -Z

root:sysadm_r:sysadm_t

fixfiles relabel


옵션 -l /path/to/logfile을 사용하여 표준 출력으로 로그를 볼 수 있고, 옵션 -o /path/to/file을 사용하여 검토(checked)되거나 재명명(relabel ed)된 모든 파일 리스트를 저장할 수 있다.


1. 시스템을 재부팅한다. 새 정책하에서의 재시작은 모든 시스템 프로세 스가 적절한 문맥에서 시작되고 정책 변경으로 인한 모든 문제가 드 러나게 한다.

1. sestatus –v 명령으로 발효된 변경사항을 확인한다. Permissive 모드로 가 동된 새 시스템에서, avc: denied 메시지를 /var/log/messages에서 확인한 다. 이들은 새 정책하에 문제없이 시스템이 가동되도록 해결해 야 할 문제들을 표시해 준다.


1. 새 정책하에서 시스템이 만족스럽게 돌아갈 때, SELINUX=enforcing 으로 바꿔 실행 권한을 부여한다. 실시간에 enforcing을 활성화 시키기 위 해 재부팅하거나 setenforce 1 을 실행한다.


Q: 목표 정책하에서 특정 데몬에 대하여 SELinux protection을 활성화/비활 성화 방법은?

A: 특정 데몬의 부울 값을 제어하려면 system-config-securitylevel을 사용한다. 예를 들어, 만일 apache가 시스템상에서 올바르게 동작하도록 하기위해서는 SELinux를 비활성화시켜야 한다면, system-config-securitylevel으로 해당 값을 비활성화시키면 된다. 이는 apache.te에 정의된 정책으로 전이되는 것을 막고 httpd가 일반 리눅스 보안하에 있도록 한다.


Q: 부팅시 SELinux를 비활성화시키는 방법은?

A: 커널 명령 라인에 selinux=0를 추가한다.


SELinux를 비활성화시킬 때 주의

이 옵션을 사용할 때는 매우 주의해야 한다. 만일 selinux=0로 부팅하면, SELinux가 비활성인 동안 만든 모든 파일은 SELinux 문맥 정보를 갖고 있지 않을 것이다. 적어도 파일 시스템을 재명명(relabel)해야 할지도 모르고, 복구를 위해 단일 사용자 모드로 부팅할 때 필요한 selinux=1로 부팅이 안될 수도 있다.

Selinux=0의 대안으로 /etc/selinux/configSELINUX=disabled을 사용하다.

Q: 부팅시 enforcing을 활성화/비활성화하는 방법은?

A: /etc/sysconfig/selinux 설정 파일을 이용하여 SELinux 모드를 지정할 수 있다.


# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#       enforcing - SELinux security policy is enforced.

#       permissive - SELinux prints warnings instead of enforcing.

#       disabled - No SELinux policy is loaded.

SELINUX=enforcing

# SELINUXTYPE= type of policy in use. Possible values are:

#       targeted - Only targeted network daemons are protected.

#       strict - Full SELinux protection.

SELINUXTYPE=targeted


enforcing에 값을 지정하는 것은 enforcing을 활성화하기 위해 커널을 부 팅할 때 명령 라인에 enforcing=1을 추가하는 것과 같다. 반면에, permis-sive에 값을 지정하는 것은 enforcing을 비활성화하기 위해 enforcing=0 를 추가하는 것과 같다. 명령 라인 커널 인자는 설정파일에 우선한다는 것을 명심하자(Note that the command line kernel parameter overrides the configuration file.).


그러나, disabled에 값을 지정하는 것은 커널 부트 인자 selinux=0을  사용 하는 것과 다르다. 커널에서 SELinux를 완전하게 비활성화시키는 것과 달 리 대신 disabled를 설정하는 것은 enforcing을 비활성화하고 정책 적재를 하지않고 건너뛰는 것이다.


Q: 재부팅하지 않고 enforcing 모드를 임시로 비활성화시키는 방법은?

A: 이 상황은 보통 정책에 의해 금지된 동작를 수행할 수 없을 때 발생한다. 실시간으로 enforcing모드를 비활성화시키기 위해서 sentenforce 0명령을 실행한다. 작업이 끝나서 enforcing 모드로 돌아오기 위해서는 sentenforce 1을 실행하면 된다.


sysadm_r 권한(역할) 필수

sentenforce 명령은 sysadm_r 권한을 갖고 수행해야 한다; 그러기 위해, newrole 명령을 사용하거나, 아니면, su –를 사용하여 root 로 사용자 전환을 하면, 자동으로 sysadm_r 권한을 얻을 수 있다.

Q: 부팅시 시스템콜 auditing 키거나 끄는 방법은?

A: 시스템콜 auditing을 키기위해서는 audit=1을 커널 명령 라인에 추가한다. 끄기위해서는 audit=0을 추가한다.


시스템콜 auditing은 기본적으로 꺼져있다. 켜지면, SELinux가 denied(거부) 메시지가 발생했을 때, 실행중이던 시스템콜에관한 정보를 제공한다. 이는 정책을 디버깅할 때 유용하다.



Q: 재부팅을 하지않고 시스템콜 auditing을 잠정적으로 끄는 방법은?

A: 현재는 지원되지 않고 있다. 향후, auditing을 조정할 수 있는 유틸리티 (utility)가 제공될 것이다.


Q: SELinux 설치에 관한 상태 정보(status info)를 얻는 방법은?

A: root 사용자 권한으로 /usr/sbin/setstatus –v 명령을 실행하라. 더 많은 정보가 필요하면, 매뉴얼 페이지 setstatus(8)을 참조하라.



1.3. 문제 해결하기



Q: 응용프로그램이 기대했던 데로 동작하지않고 avc: denied 란 메시지가 나타나면, 어떻게 이 문제를 해결하는 가?

A: 이 메시지는 현재 실행된 SELinux 정책이 그 응용프로그램의 동작을 허락하지 않기 때문이다. 이러한 일에는 여러 가지 사유가 존재한다.


첫째, 응용프로그램이 접근하려는 파일중 하나가 잘못 명명되어있을 수 있다. 만일 AVC 메시지가 특정 파일을 참조한다면, ls -alZ /path/to/file 을 수행하여 현재 참조하는 파일명(current label)을 조사해 보라. 만일 그것이 잘못되어 보이면, restorecon -v /path/to/file 을 시도해보라. 만일 파일과 관련된 매우 많 은 거부(denials) 상황이 존재하면, fixfiles relabel 을 수행하거나, 반복적으로 디렉토리 경로를 재명명하기 위해서 –R옵션과 함께 restorecon 을 수행하고 싶을 수 있다.


다른 때에는, 거부(denials) 현상은 정책에 의해 거부되도록 프로그램에 설정을 바꿔서 발생될 수 있다. 예를 들면, 만일 Apache를 8800포트로 바꾸면, 보안 정책, apache.te,도 관련하여 바꿔야 할 필요가 생긴다. 정책 작성에 관한 상세한 정보가 필요하면, 외부연결 리스트(External Link List)를 보라.


만일 작동중인Apache와 같이 특정 응용프로그램을 구하는 데 어려움이 있으면, 해당 응용프로그램에 enforcement를 비활성화(disable)시키는 방법에 관하여 How to use system-config-securitylevel를 보라.


Q: 기존 /home 파티션이 있는 시스템에 휘도라 코아를 설치하고 로그인을 할 수 없을 때 해결방법은?

A: /home 파티션이 정확하게 명명(label)되지 않았다. 두 가지 방법으로 이 문제를 쉽게 해결할 수 있다.


만일 /home을 반복적으로 재명명(relabel)하고자 한다면:


/sbin/restorecon -v -R /home


만일 잘못 명명된 기타 파일이 없다고 확인하고자 한다면, 전체 파일 시스템을 재명명할 수 있다.


/sbin/fixfiles relabel


fixfiles를 사용하여 policycoreutils 패키지를 설치할 필요가 있을 것이다.


Q: setfiles fixfiles를 사용하여 /home을 재명명한 후, 여전히 SELinux 비활성 시스템(non-SELinux-enabled system)으로 /home을 읽을 수 있을까?

A: 비 SELinux 배포판(non-SELinux distribution)의 파일이나 SELinux가 비활성화(disabled)된 파일을 읽을 수 있다. 그러나, SELinux 비활성화 시스템에 의해 생성된 파일 또는 삭제나 재생성된 어느 파일도 보안 문맥을 갖고 있지 않을 것이다. 이는 ~/.bashrc와 같은 파일에서 문제가 생길 수 있다. 휘도라 코아로 다시 돌아갈 때 /home을 재명명해야 할 지도 모른다.


Q: 휘도라 코아와 비SELinux 시스템간에 NFS를 사용하여 디렉토리를 공유하는 방법은?

A: NFS가 많은 파일 시스템을 명확하게 지원하기 때문에, SELinux와 비 SELinux 시스템간에 디렉토리를 공유하는데 NFS를 사용될 수 있다.


NFS를 통해서 비 SELinux 파일 시스템을 마운트할 때, 기본적으로 SELinux는 공유영역에 있는 모든 파일을 nfs_t의 문맥을 갖고 있는 것으로 간주한다. Context=옵션 을 사용하여 수작업으로 그 값을 설정하여 기본문맥(default context)을 덮어쓸 수 있다. 예를 들면, NFS로 마운트된 디렉토리의 파일들을 SELinux에 대한 system_u:object_r:tmp_t의 문맥을 갖고 있는 것처럼 보이게 할 것이다(appear to have a context of system_u:object_r:tmp_t to SELinux).


mount -t nfs -o context=system_u:object_r:tmp_t server:/shared/foo /mnt/foo


SELinux가 파일 시스템을 NFS를 경유하여 엑스포트(export)할 때, 생성된 파일은 자기가 만들어진 디레토리의 문맥을 갖을 것이다. 다시 말해서, 원격 으로 마운트된 시스템(remote mounting system)의 SELinux의 출현 (presence)은 현지 보안 문맥(local security contexts)에 영향을 끼치지 않는다.


Q: 적절한 문맥을 갖는 사용자 홈 디렉토리와 함께 새 리눅스 사용자 계정 을 만드는 방법은?

A: 표준 useradd 명령을 사용하여 사용자 계정을 새로 만들 수 있지만, 우 선 sysadm_r의 문맥을 갖는 루트 사용자가 되어야 한다. 이 문맥 교환은 su

명령에 통합되어 있어 자동으로 일어난다.


su - root

id -Z

root:sysadm_r:sysadm_t

useradd auser

ls -Z /home

drwx------  auser   auser   root:object_r:user_home_dir_t /home/auser 


새 사용자 디렉토리에 대한 초기 문맥은 루트의 정체성(identity)을 갖는다. 이후 파일시스템의 재명명은 그 정체성을 system_u로 바꾼다. 이들은 역할(권한)과 유형이 동일하기 때문에 기능적으로 서로 같다 (object_r:user_home_dir_t).


Q: 다른 모든 SELinux 문서는 su이 단지 리눅스 정체성만을 바꾸고 보안 역할(security role)은 아니라고 말한다.

A: 휘도라 개발팀은 기존 SELinux 관례(existing SELinux practice)와는 조금 다른 방향을 취했다. 보안 문맥 전이는 이제 pam_selinux에 의하여 su에 통합되었다. 이는 시스템 사용을 크게 단순화시켰다. 실제로, 이는 전통전인 su와 SELinux  newrole을 두 단계대신 한 단계로 조합한 것과 같다.


setuid(2)와 같이 다른 형식의 Linux/UNIX® 정체성 변화는 SELinux 정체성 변화를 일으키지 않는다.


Q: 특정 프로그램에 대한 로그를 채우는 avc 오류에 골치를 앓고 있다. 어떻게 하면 그것에 대한 접근을 감시하지(audit) 않도록 선택할 수 있는가?

A: 예를 들어, 만일 dmesg를 감시하지 않길 원했다면, /etc/selinux/targeted/src/policy/dmesg.te 파일에 다음사항을 넣으면 된다.


dontaudit dmesg_t userdomain:fd { use };


이는 모든 유저영역(user, staffsysadm)에 대하여 터미널로 출력된 오류를 제거한다.


Q: 비록 허가 모드에서 운행될 지라도(even running in permissive mode), 많은 수의 avc denied 메시지가 나타난다.

A: 비 enforcing 모드에서는 실제 enforcing 모드에 있을 때보다 더 많은 메시지를 받는다. 이는 이전에 enforcing 모드에 있었던 것처럼 커널이 매 접근 거부를 기록하기 때문에 일어난다. 제한을 받지 않기 때문에, 더 많은 실행을 수행할 수 있고, 이는 더 많은 거부가 기록되는 결과를 초래한다.


Q: 오직 SELinux가 enforcing 모드에 있을 때만 특정 허가 거부를 받지만, /var/log/messages에는 어떠한 감시 메시지를 볼 수가 없다. 이들 침묵의 거부(silent denials)의 원인을 밝혀낼(identify) 수 있는 방법은?

A: 침묵의 거부에 대한 가장 공통적인 이유는 정책에 감시 메시지를 억제하 도록 명시적 dontaudit 규칙을 내포하고 있기 때문이다. dontaudit 규칙은 은근한 거부가 감시 기록을 채울 때 이러한 방법으로 종종 사용된다.


특정 거부를 찾으려면, 모든 dontaudit 규칙의 감시(auditing)를 활성화시킬 필요가 있다.

cd /etc/selinux/targeted/src/policy make enableaudit

make load

활성화된 dontaudit 출력은 장황하다

모든 dontaudit 규칙의 감시(auditing)를 활성화하는 것은 다량의 감시 정보를 생산해낼 가능성이 높고, 그 대부분은 찾고자하는 거부와 무관하다.

은근하게 발생하는 거부에 대한 감시 메시지를 구체적으로 찾고자 할 때만 이 기술을 사용하라. 십중팔구(아마) 가능한한 빨리 dontaudit 규칙을 재활성화시키길 원할 것이다.

dontaudit 규칙을 재활성화하려면, 다음을 수행하라.


cd /etc/selinux/targeted/src/policy

make clean

make load


Q: 정책 패키지를 업그레이드할 때(예를 들어, yum을 사용하여), 기존 정책 에 어떤 일이 발생하는가; 자동으로 업데이트되는가?

A: 패키지가 업데이트될 때 정책은 원래데로 재 적재된다. 이는 수작업 make load를 대체한다.


어떤 상황에서, 파일 시스템을 재명명할 필요가 있을 수 있다. 이는 파일 문 맥이 실효성이 없게 된 곳에서 SELinux 버그 수정 과정의 일 부분으로 혹은 정책 업데이트가 file_contexts 으로 변경될 때 발생될 수 있다.


파일 시스템을 재명명한 후, 재부팅이 꼭 필요한 것은 아니지만 모든 프로세 스와 프로그램이 적절한 영역에서 수행되고 있는 지를 확인하는 데 필요하 다. 이는 업데이트된 정책의 변경사항에 크게 영향을 받는다.


만일 정책 소스 패키지(예, selinux-policy-strict)를 설치했다면, 파일 시스템을 재명명하기 위해 다음 명령을 수행한다.


cd /etc/selinux/targeted/src/policy

make

make relabel

reboot


만일 정책 소스를 사용하지 않는다면, 다른 접근법은 fixfiles명령을 사용하는 것이다.

             

fixfiles relabel

reboot 


Q: 만일 응용프로그램 패키지와 함께 보급되는 정책이 재명명이 필요한 방법으로 변경된다면, RPM은 패키지가 소유한 파일들을 재명명을 처리할 것인가?

A: 그렇다. 해당 패키지가 소유한 파일에 대한 보안 문맥은 그 패키지의 헤더 데이터(header data)에 저장되있다. 그 파일 문맥은 패키지 파일이 디스크에 놓여 있으므로  cpio 복사가 된 후 즉시(directly) 설정된다.


Q: 정책과 정책 소스 패키지사이에 어떤 관계가 있는가?

A: selinux-policy-targeted와 같은 정책 패키지는 즉시 적용되는(working) SELinux 설치에 필요 조건인 반면selinux-policy-targeted-sources와 같은 정책 소스 패키지는 기본 정책을 커스터마이즈(customize)하고자 한다면 필요하 다.


정책 패키지는 SELinux 보안 정책을 정의하는 데 필요한 최소한의 파일을 갖고 있다. 최소한의 설치 청사진을 지원하기 위해 크기를 줄였다.


정책 소스 패키지는 /etc/selinux/policyname/contexts/* /etc/selinux/policyname/ policy/policy를 만든 데 필요한 /etc/selinux/policyname/src/policy에 소스 정의를 포함하고 있다. Version은 그 정책의 버전 번호이다.


설치할 패키지 선택은 설치 유형에 달려있다. 만일 휘도라 코아 개발자가 정의한 기본 보안 정책 만을 사용하려면, 정책 패키지를 설치만 하면 된다. 어떤 방법이든 보안 정책을 커스터마이즈하거나 아니면 setools를 실행하려 면, 정책 소스를 설치해야 한다.


정책 패키지를 설치하거나 업데이트하면 파일을 설치한 후 새 정책을 적재한다. 마찬가지로, 정책 소스 패키지를 설치하거나 업데이트하는 것은  policy.version파일 뿐만 아니라 file_contexts파일을 재 구축하고 나서 현재 실효 성 있는 정책으로 그 파일을 적재하는 것이다.


Q: 왜 /etc/selinux/policyname/policy/policy.<version> /etc/selinux/policyname/src/ policy/policy.<version> 파일은 다른 (크기, md5sums, 날짜)를 갖는가?

A: 정책 패키지를 설치할 때, 미리 컴파일된 바이너리 정책 파일이 /etc/ selinux에 직접 들어간다. 정책 소스 패키지가 설치되거나 업데이트될 때, 바이너리 정책 파일이 /etc/selinux/policyname/src/policy에 구축되고, 다시 /etc/selinux/policyname/policy/로 이동한다. 다른 구축 환경은 다른 크기, md5sums와 날짜를 갖는 목표 파일을 만들게 된다.


Q: 새로운 정책 패키지가 시스템을 비활성화시킬(disable) 것인가?

A: 정책 패키지나 응용프로그램 패키지와 함께 배포되는 정책의 변경은 오류, 더 많은 거부 혹은 기타 원인 모를 동작을 유발시킬 가능성이 있다. 문제를 해결하기 위해, 한번에 하나씩 정책과 응용프로그램 패키지를 되돌려가면서 어느 패키지가 문제를 일으키는지 찾아낼 수 있다. 이전 패키 지로 되돌리지 않으려면, 구버젼 설정파일에 .rpmsave확장자(꼬리표)를 붙 여 저장될 것이다. 문제 해결의 도움을 받으려면, 메일링 리스트, 버그질라, 그리고 IRC를 활용하도록 한다. 능력이 있으면, 스스로 정책을 작성하거나 고쳐 문제를 해결할 수 있다.


Q: 정책 작성에 도움을 줄 수 있는 방법은?

A: 도움을 기꺼이 받아들일 것이다. SELinux 메일링 리스트, fedora-selinux-list@redhat.com에 가입하는 것으로 시작할 수 있다; http://www.redhat.com/mailman/listinfo/fedora-selinux-list에 등록하고 관련 문서를 읽을 수 있다. 비공식 FAQ는 HOWTO 정보를 작성하는 일반 정책 (http://sourceforge.net/docman/display_doc.php?docid=14882&group_id=21266#BSP.1) 을 갖고 있다. 또 다른 새 자원은 기록하는 SELinux 정책 HOWTO(Writing SE Linux policy HOWTO)이다 (https://sourceforge.net/docman/display_doc.php?docid=21959&group_id=21266).


/etc/selinux/policyname/src/policy/에 있는 정책 파일을 보고 시험해보는 것이 상책이다. 실마리를 찾기 위해 /var/log/messages에 있는 avc denied 메시지를 관찰하라.


정책 작성자에게 유용한 도구는 /usr/bin/audit2allow 인데 이것은 /var/log/messages  avc 메시지를 SELinux에 의해 사용될 수 있는 규칙으로 번역해준다. 이 규칙들은 십중팔구 정리되어야 할 것이다.


audit2allow명령은 세가지 방법으로 입력을 받을 수 있다. 기본은 표준입력 (stdin)이다. -i 옵션을 사용하면 /var/log/messages 로부터 입력을 읽을 수 있고 –d옵션을 사용하면 dmesg 출력으로부터 입력을 읽을 수 있다.


Q: 콘솔에 메시지가 넘쳐나고 있다. 어떻게 이것을 막아낼 수 있는가?

A: 유용한 제어를 되찾기 위해서는 dmesg -n 1 를 사용하여 콘솔로 나가는 커널 메시지를 끈다.


Q: 정책 소스를 설치하지 않고 기본 정책을 시험할 수 있는가?

A: 단지 selinux-policy-policyname policycoreutils 패키지를 설치하면 SELinux 기본 정책을 시험할 수 있다. 정책 소스를 설치하지 않았으면, fixfiles 명령은 자동으로 파일 시스템 재명명을 처리해준다.


fixfiles relabelmake relabel와 동일하다. 재명명 동안, /tmp에 있는 모든 파일 을 삭제하여, 구 파일 문맥 라벨을 갖고 있는 파일들을 정리한다.


기타 명령으로는 잘못 명명된 파일을 검사하는 fixfiles check이 있고 잘못 명명된 파일을 고치지만 /tmp에 있는 파일을 삭제하지 않는 fixfiles restore이 있다. fixfiles는 전 파일시스템을 재명명하는 것이 목적이므로 인자로서 디렉토리의 리스트를 취하지 않는다. 특정 디렉토리 경로를 재명명하려면, restorecon을 사용하라.


Q: KDE 응용프로그램을 SELinux하에서 작동하는 데 문제가 있다.

A: KDE 실행파일은 항상 kdeinit으로 나타난다. 그런데 이것은 SELinux 정책으로 실행될 수 있는 것을 제한한다. 이는 모든 KDE 응용프로그램이 kdeinit의 영역에서 실행되기 때문이다.


/tmp/var/tmp를 재명명할 수 없기 때문에 SELinux를 설치할 때 문제가 종종 발생한다. 어느 파일이 어느 문맥을 갖어야 하는지 결정하는 좋은 방법 은 없다.


해결책은 KDE를 완전히 로그아웃하고(log out) 모든 KDE 임시 파일을 삭제하는 것이다.


rm -rf  /var/tmp/kdecache-<username>

rm –rf  /var/tmp/<other_kde_files>


다음 로그인에서 문제가 고쳐져야 한다.


Q: SELinux=disabled가 작용하지 않는 이유는?

A: /etc/sysconfig/selinux

파일에 있는 화잍 스페이스를 주의하라. 코드는 비록 끝에 붙은 스페이스일 지라도 화잍 스페이스에 매우 민감하다.



1.4. SELinux 배치하기



Q: SELinux를 사용하기 위해 어떤 파일 시스템을 선택해야 하는가?

A: 파일 시스템이 올바른 security.*이름공간(namespace)에 xattr라벨를 지원해야한다. ext2/ext3뿐 아니라 필요한 라벨을 지원하는 XFS가 최근 추가되었다.


Q: SELinux는 시스템 성능에 어떠한 영향을 미치는가?

A: 이것은 측정하기 힘든 변수이고 SELinux가 실행되고 있는 시스템의 규모에 크게 의존한다. 성능이 마지막으로 측정됬을 때, 그 영향은 완벽하게 조정이 안된 코드(for completely untuned code)의 약 7%였다. 그 이후의 변경은 네크워크와 같이 어떤 경우에 더 악화시킬 가능성이 있다. SELinux 성능 튜닝은 개발팀이 최우선 과제이다.


Q: SELinux를 효과를 제고하기위해(to leverage SELinx in) 첫째로 보아야 할 것은 어떤 유형의 배치/응용프로그램/시스템 등 인가(What types of deployments/applications/systems, etc.)?

A: 초기에는, SELinux는 거의 특별한 기능을 수행하지 않지만 극도로 엄격 한 보안을 유지하는 것이 중대한 인터넷에 접한 서버에서 동작할 것이다. 그 러한 시스템은 전형적으로 모든 특별한 소프트웨어와 서비스를 제외시키고 웹 서버나 이메일 서버와 같은 매우 집중화된 서비스나 서비스 집합을 운영 한다.


이러한 에지 서버(edge servers)에는 정책을 매우 엄격하게 적용할 수 있다 (lock down). 이것은 다른 성분(components)과의 더 작은 수의 상호작용으 로 더 쉽게 이뤄진다. 마찬가지로, 특별한 제삼 응용프로그램을 운영하는 전 용 박스가 좋은 후보이다.


향후, SELinux는 모든 환경을 목표를 둘 것이다. 그곳에 도달하기 위해서, 공동체와 ISVs(independent software vendors)은 필요한 정책을 생산하기 위해 SELinux와 협력할 필요가 있다. 지금까지, 특정 공격받기 쉬운 데몬에 초점을 맞춘 목표 정책뿐 아니라, 매우 제한적인 엄격한 정책이 쓰여졌다.


Q: 어떻게 SELinux가 제삼 응용프로그램에 영향을 끼치는가?

A: 휘도라 코아에서 목표 SELinux 정책을 구현하는 한가지 목적은 제삼 응용프로그램이 수정없이 동작할 수 있도록 하는 것이다. 이것은 목표 정 책이 그 응용프로그램에 대해 투명하므로(transparent) 제어를 하려하지 않 고 실질적으로 표준 리눅스 보안에 의지한다(This works because the targeted policy is transparent to those applications it is not trying to control that it essentially falls back on standard Linux security.). 이 응용프로그램들은 특별한 보안 방법(extra-secure manner)으로 실행되진 않을 것이다. 정책은 이 응용프로그램이 MAC에 의해 보호되도록 작성될 필요가 있다.


아주 많은 변형의 제삼 응용프로그램이 존재하고 이들이 SELinux, 심지어 목표 정책을 기동할 지라도 서로 어떻게 작용하는가(behave with)를 예측 하는 것은 불가능하다. 발생된 문제(issues that arise)은 때때로 정책에서 해결될 수 있다. 응용 프로그램을 SELinux하에서 동작하도록 수정될 필요 가 있는, 미처 알지 못했던 응용 프로그램과 관련된 보안 문제를 SELinux 가 보여줄 수 있다.


휘도라 코아 시험자와 사용자가 공동체에 가져오는 한가지 중요한 가치는 제삼 응용프로그램의 광대한 시험이다. 그러한 마음가짐으로, 토론을 하기 위해 적절한 메일링 리스트(fedora-selinux-list@redhat.com)에 여러분의 경험을 보내주실 것을 바란다.

[출처] SELINUX|작성자 옹이

Posted by 1010
61.Linux2009. 1. 30. 12:47
반응형
setsebool -P ftp_home_dir 1
service vsftpd restart
Posted by 1010
61.Linux2009. 1. 30. 12:38
반응형

출처 : http://develop.sunshiny.co.kr/archive/20090101

 

Fedora Core9에 vsftp를 설치하여 사용하다 보면 외부에서 FTP 접속할 경우

아래  표와 같이 디렉토리 목록만 나오고 파일목록이 안나오는 경우가 있다.

 

230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).

 

이럴 경우 "root" 권한으로

 

SELinux 정책을 일시적으로 끄고 싶을때 (재부팅하면 SELinux의 정책은 원래대로 돌아온다.)

# setenforce 0 

다시 켜고 싶을땐

# setenforce 1

 

영구적으로 SELinux정책을 끄고 싶을때는 아래와 같이 해주면 된다.(이것도 역시 root 권한으로...)

#vi /etc/sysconfig/selinux

 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted

 

위와 같이 "SELINUX="의 값을 "enforcing"에서 "disabled"로 수정 후 저장하면 재부팅 후에도... 쭈욱~ 

 

출처 : http://mrtroll.tistory.com/entry/%ED%8E%98%EB%8F%84%EB%9D%BC%EC%BD%94%EC%96%B4%EC%97%90%EC%84%9C-SELINUX-%EA%B4%80%EB%A0%A8-%EC%84%A4%EC%A0%95FTP%EA%B4%80%EB%A0%A8

 

페도라코어에서 SELINUX 관련 설정(FTP관련)

 

*** SELINUX
# setsebool -P ftp_home_dir 1
페도라 코어 4 까실때 SELinux 로 설정했다면 디폴트로 사용자의 home 디렉토리에 쓰기를 막아놓는다.
SELinux 설정에서 FTP 부분을 변경하자.
# service vsftpd restart
home 디렉토리의 읽고쓰기를 1(True)로 변경하시고 vsftpd 를 재시작.

# setsebool -P ftpd_disable_trans 1
FTP 에 관하여 SELinux 정책을 아예 적용하지 않는 옵션을 설정

 

- 근데 왜 내꺼에선 setsebool -P ftp_home_dir 1 명령어 입력후 먹통일까... -ㅅ-

Posted by 1010
61.Linux2009. 1. 30. 11:10
반응형

Chmod는 권한 설정이다.


리눅스에서 ls - l 혹은 ll을 치게 되면, 자세한 정보가 나온다.


맨 앞줄에 보면


d가 붙은것도 있고 안붙은것도 있는데

d가 붙어 있으면 = 디렉토리(폴더) 라고 하며,

-이렇게 되어 있으면 파일 이라고 한다.


d 다음 rwx 라는 것이 있는데


r = read(읽다) [4 ]

w = Write(쓰다)[2 ]

x = x.어쩌고(실행하다) 라는 것이 있다.[1 ]


첫번째는 Root의 권한, 두번재는 그룹, 세번째는 일반사용자이다.


일반적으로 루트의 권한에선


drwx 이렇게 모든 권한을 다 쥐고 있을 수 있다.

drwx-rwx 그룹은 어떻게 정해주느냐에 따라서 --x, -w- r-- 이렇게 한두가지 권한을 줄 수도 있다.

마지막으로 일반 사용자이다


일반 사용자는 오로지 실행권한만 있게 된다.


rwx 세개의 합은 7이라는 것을 명심해야 한다.


만약 chmod 577 이라고 주었다. 그렇다면 읽기 = 4 쓰다  = 2 실행 = 1 이중에 짜짓기 하여 5가 되는 수.

즉 읽기와 실행만이 루트의 권한이고, 나머지는 다 더한 7, 7 그룹 = 7 일반사용자 = 7


하지만 저건 말이 안된다.


루트는 최강이고 관리자다.


그런데 쓰는 권한이 없다면 살짝 안습이겠지?


ㅋㅋㅋ



1) ls 명령어를 침.

2) touch test 로 빈 파일생성

3) chmod 로 권한 설정

4) 권한이 확인된 것을 확인

 

이것이 chmod의 변환 과정이다.


밑의 그림으로 rwx의 변화과정을 잘 살펴보도록하자.

 


- 는 파일을 의미하고 d는 디렉토리를 의미하는 것을 알고 있다면,


위와 같은 변화는 아주 잘 알 것이라고 생각한다.

Posted by 1010
61.Linux2009. 1. 30. 11:07
반응형
리눅스실무명령어바이블 공개페이지 (37장. chmod )
 

37.  chmod

 

* 클릭하시면 실제 내용을 보실수 있습니다. *

 

37장. chmod                   (책 실제페이지 : 200)

 

실무명령어# 37-1절 : 파일과 디렉토리의 퍼미션(permission) 정복하기

실무명령어# 37-2 : 8진수로 파일의 퍼미션 설정하기

실무명령어# 37-3 : 특정 문자로 퍼미션 설정하기

실무명령어# 37-4 : 여러개의 파일과 디렉토리의 퍼미션 동시에 설정하기

실무명령어# 37-5 : 모든파일과 디렉토리의 퍼미션 한번에 설정하기

실무명령어# 37-6 : 특정디렉토리내의 모든파일과 서브디렉토리퍼미션 한번에 설정하기

실무명령어# 37-7 : 특정파일에 SetUID Bit 설정하기

실무명령어# 37-8 : 특정 파일에 SetGID bit설정하기

실무명령어# 37-9 : 특정 디렉토리에 Sticky Bit설정하는 퍼미션 설정하기

 

자료의 저작권은 수퍼유저코리아” (www.superuser.co.kr) 있습니다 .

본자료는 수퍼유저코리아에서 출판한 리눅스 실무명령어 바이블(1편,2편)』의 실제 내용중 일부분으로서 책의 본문내용을 확인하고자하시는 분들의 요청에 의해 요청횟수가 많았던 부분만을 일부 공개한 것입니다.

ㅇ 본 책자의 자세한 모든 정보는 http://www.superuser.co.kr/linuxcommandbible/ 에서 확인하시기 바랍니다. 

ㅇ 본 자료의 수정 및 편집은 허용되지않습니다.

ㅇ 본 책은 권수 : 2권 (1편, 2편), 페이지수 : 총1,859페이지, 장(chapter): 382장, 절: 1,900개의 절로 구성되어있습니다.

ㅇ 저작권 및 문의전화(사무실) : TEL : 051-583-8128, FAX : 051-583-8130

Posted by 1010
61.Linux2009. 1. 30. 10:40
반응형

   퍼미션(권한)이란?

Owner

Group

Other

Owner와 Group은 파일소유자자신과 자신이 속한그룹. Other은 제3자, 웹사이트 방문객은 제3자로 nobody로 취급.

r

w

x

r

w

x

r

w

x

r은 파일 읽기(4), w는 파일 쓰기(2), x는 파일 실행(1)

7

5

5

파일소유자는 그것을 읽고 쓰고 실행시킬 수 있지만, 제3자는 읽고 실행만 시킬 수 있다.

7

7

7

제3자도 쓰기 권한이 주어진다.

*.html  *.cgi, *.pl *.txt등의 파일은 업로드시 반드시 ascii로 하고 나머지 그림(*.gif *.jpg)이나 자바 애플릿(*.class), 실행파일(*.exe *.zip *.rar)등은 binary mode로 업로드 할 것.

   리눅스 기본명령어

명령어

사 용 법

login

사용자 인증과정

리눅스 시스템은 기본적으로 multi-user 개념에서 시작하였기 때문에 시스템을 이용하기 위해서는 반드시 로그인을 하여야 합니 다. 로그인은 PC 통신에서도 많이 사용되어져 왔기 때문에 그 개 념  설정에 그다지 어려움이 없을 것입니다. 흔히 말하는 ID를 입력하는 과정입니다. 

passwd

패스워드 변경

리눅스, 특히 인터넷의 세계에서는 일반 컴퓨팅 상황에 비하여 훨씬 해킹에 대한 위험이 높습니다. 패스워드는 완성된 단어 보다는 단어 중간에 숫자나 키보드의 ^, #, ' 등과 같은 쉽게 연상 할 수 없는 기호를 삽입하여 만들어 주는 것이 좋습니다

du

하드사용량 체크(chkdsk)

자신의 하드공간을 알려면
# du
특정 디렉토리의 사용량을 알려면
# du -s diretory_name

ls

파일 리스트 보기(dir)

F : 파일 유형을 나타내는 기호를 파일명 끝에 표시
    (디렉토리는 '/', 실행파일은 '*', 심볼릭 링크는 '@'가 나타남).
l  : 파일에 관한 상세 정보를 나타냅니다.
a : dot 파일(.access 등)을 포함한 모든 파일 표시.
t  : 파일이 생성된 시간별로 표시
C : 도스의 dir/w명령과 같 이 한줄에 여러개의 정보를 표시
R : 도스의 dir/s 명령과 같이 서브디렉토리 내용까지.

(예)
# ls -al  
# ls -aC
# ls -R

cd

디렉토리를 변경

# cd cgi-bin     : 하부 디렉토리인 cgi-bin으로 들어감.
# cd  ..             : 상위디렉토리로 이동
# cd 또는 cd ~  : 어느곳에서든지 자기 홈디렉토리로 바로 이동
# cd /webker     : 현재 작업중인 디렉토리의 하위나 상위 디렉토리가
                          아닌 다른 디렉토리(webker)로 이동하려면 /로
                          시작해서 경로이름을 입력하면 된다.

cp

화일 복사(copy)

# cp index.html index.old
     : index.html 화일을 index.old 란 이름으로 복사.

# cp /home/test/*.*  .
     : test 디렉토리내의 모든 화일을 현 디렉토리로 복사.

mv

파일이름(rename) / 위치(move)변경

# mv index.htm index.html
     : index.htm 화일을 index.html 로 이름 변경

$ mv file  ../main/new_file
     : 파일의 위치변경

mkdir

디렉토리 생성

# mkdir download  : download 디렉토리 생성

rm

화일삭제

# rm test.html : test.html 화일 삭제
# rm -r <디렉토리> : 디렉토리 전체를 삭제
# rm -i a.*
     : a로 시작하는 모든 파일을 일일이 삭제할 것인지 확인하면서 삭제

rmdir

디렉토리 삭제

# rmdir cgi-bin : cgi-bin 디렉토리 삭제

pwd

현재의 디렉토리 경로를 보여주기

pico

리눅스용 에디터

put

ftp 상태에서 화일 업로드

> put  guestbook.tar.gz

get

ftp 상태에서 화일 다운로드

> get  guestbook.tar.gz

mput 또는 mget

여러개의 화일을 올리고 내릴때 (put,get과 사용법동일)

chmod

화일 permission 변경

리눅스에서는 각 화일과 디렉토리에 사용권한을 부여.

예) -rwxr-xr-x   guestbookt.html
rwx  :처음 3개 문자 = 사용자 자신의 사용 권한
r-x  :그다음 3개 문자 = 그룹 사용자의 사용 권한
r-x  :마지막 3개 문자 = 전체 사용자의 사용 권한

읽기(read)---------- 화일 읽기 권한
쓰기(write)---------- 화일 쓰기 권한
실행(execution)---------- 화일 실행 권한
없음(-)---------- 사용권한 없음

명령어 사용법
chmod [변경모드] [파일]

# chmod 666  guestbook.html
     : test.html 화일을 자신에게만 r,w,x 권한을 줌

# chmod 766  guestbook.html
     : 자신은 모든 권한을 그룹사용자와,전체사용자에게는
       읽기와 쓰기 권한만 줌

alias

" doskey alias" 와 비슷하게 이용할 수 있는 쉘 명령어 alias는 말그대로 별명입니다. 사용자는 alias를 이용하여 긴 유 닉스 명령어를 간단하게 줄여서 사용할 수도 있습니다.
이들 앨리어스는 [alias ls 'ls -al'] 같이 사용하시면 되는데, 한 번 지정한 alias를 계속해서 이용하시려면, 자신의 홈디렉토리에 있는
.cshrc(Hidden 속성)을 pico등의 에디터를 이용하여 변경시 키면 됩니다.

cat

파일의 내용을 화면에 출력하거나 파일을 만드는 명령( 도스의 TYPE명령)

# cat filename

more

cat 명령어는 실행을 시키면 한 화면을 넘기는 파일일 경우 그 내용을 모두 볼수가 없다. 하지만 more 명령어를 사용하면 한 화면 단위로 보여줄 수 있어 유용.

# more <옵션>
옵션은 다음과 같습니다.

Space bar : 다음 페이지
Return(enter) key : 다음 줄
v : vi 편집기로 전환
/str : str 문자를 찾음
b : 이전 페이지
q : more 상태를 빠져나감
h : 도움말
= : 현재 line number를 보여줌

who

현재 시스템에 login 하고 있는 사용자의 리스트를 보여줍니다.

# who

whereis

소스, 실행파일, 메뉴얼 등의 위치를 알려줍니다

# whereis perl : perl의 위치를 알려준다

vi,
touch,
cat

새로운 파일을 만드는 방법

# vi newfile :  vi 편집기 상태로 들어감
# touch newfile : 빈 파일만 생성됨
# cat > newfile  : vi 편집기 상태로 들어감, 문서 작성후 Ctrl+D로 빠져나옴

cat,
head,
tail

파일 내용만 보기

# cat filename         : 파일의 내용을 모두 보여줌
# head -n filename : n줄 만큼 위세서부터 보여줌
# tail -n filename     : n줄 만큼 아래에서부터 보여줌


   압축명령어 사용법

압축 명령어

사 용 법

tar .tar, _tar로 된 파일을 묶거나 풀때 사용하는 명령어
(압축파일이 아님)

# tar cvf [파일명(.tar, _tar)] 압축할 파일(또는 디렉토리): 묶을때
# tar xvf [파일명(.tar, _tar)]  :  풀 때
   (cf) cvfp/xvfp 로 하면 퍼미션 부동
compress 확장자 .Z 형태의 압축파일 생성

# compress    [파일명]     : 압축시
# uncompress [파일명]    : 해제시
gzip 확장자 .gz, .z 형태의 압축파일 생성

#  gzip     [파일명]    : 압축시
#  gzip -d [파일명]   : 해제시
기타 .tar.Z
이것은 tar로 묶은 후에 compress를 사용하여 압축한 것으로 uncompress를 사용해서 압축을 푼 다음,
다시 tar를 사용해서 원래의 파일들을 만들어내면 됩니다.
아니면 다음과 같이 한 번에 풀 수도 있다.
# zcat  [파일명].tar.Z  : 해제시

.tar.gz또는 .tar.z
# gzip -cd [파일명]    : 해제시

.tar.gz 또는 .tar.z .tgz
gzip을 사용해서 푼 다음 다시 tar를 사용해서 원래 파일을 만들어 낼 수 있으나,
하지만 다음과 같이 하면 한 번에 처리를 할 수 있다.

# gzip -cd 파일.tar.gz | tar xvf -  또는
# tar xvzf 파일.tar.gz
# tar xvzf 파일.tgz

   리눅스 필수명령어

Linux/Unix 명령어

설 명

MS-DOS 비교

./x

x 프로그램 실행
(현재 디렉토리에 있는 것)

x

/

이전에(↑) / 다음에(↓) 입력했던 명령어

doskey

cd x (또는 cd /x)

디렉토리 X로 가기

cd

cd .. (또는 cd ../ 또는 cd /..)

한 디렉토리 위로 가기

cd..

x 다음 [tab] [tab]

x 로 시작하는 모든 명령어 보기

-

adduser

시스템에 사용자 추가

/

ls (또는 dir)

디렉토리 내부 보여주기

dir

cat

터미널 상의 텍스트 파일 보기

type

mv x y

파일 x를 파일 y로 바꾸거나 옮기기

move

cp x y

파일 x를 파일 y로 복사하기

copy

rm x

파일 지우기

del

mkdir x

디렉토리 만들기

md

rmdir x

디렉토리 지우기

rd

rm -r x

디렉토리 x를 지우고 하위도 다 지우기

deltree

rm p

패키지 지우기

-

df (또는 df x)

장치 x의 남은 공간 보여주기

chkdsk ?

top

메모리 상태 보여주기(q는 종료)

mem

man x

명령어 x에 관한 매뉴얼 페이지 얻기

/

less x

 텍스트 파일 x 보기
(리눅스에서는 더 많은 필터 적용 가능)

type x | more

echo

어떤 것을  echo 화면에 인쇄한다.

echo

mc

UNIX를 위한 노턴 커맨더

nc

mount

장치 연결(예: CD-ROM, 연결을 해제하려면 umount)

-

halt

시스템 종료

-

reboot ([ctrl] + [alt] +[del])

시스템  다시 시작하기

[ctrl] + [del] + [del]

    고급명령어

 고급 명령어

 

chmod <권한> <파일>

파일 권한(permissions) 변경

ls -l x

파일 x의 자세한 상황을 보여줌

ln -s x y

 x에서 y로 심볼릭 링크를 만들어 줌

find x -name y -print

디렉토리 x안에서 파일 y를 찾아서 화면에 그 결과를 보여줌

ps

지금 작동중인 모든 프로세스들을 보여줌

kill x

 프로세스 x를 종료 (x는 ps 명령으로 알 게 된 PID)

[alt] + F1 - F7

 터미널 1-7까지 바꾸기 (텍스트 터미널에서; F7은 X-윈도우(시작될때))

lilo

 부트 디스크를 만듦

 

용어


symlink

다른 파일이나 디렉토리로 심볼릭 링크. 윈도유98의 바로가기 같은 것

shell script

여러 명령어들을 차례로 수행하게 한 것. MS-DOS의 배치 파일 같은 것

     팁!!

 - 웹에서 생성한 노바디파일 삭제 하는방법..

기본적으로 웹서버는 nobody 권한으로 동작이 되게 됩니다.
고객님께서 FTP 로 접속하여 전송한 파일이 아니라 웹상에서 사용자들이 파일을 업로드 한 경우나 웹상에서 생성된 파일의 경우 삭제가 되지 않는 경우가 있을 수 있습니다.

웹서버의 동작 권한은 nobody 이고 웹상에서 생성된 파일이므로 해당 파일이 nobody 소유권으로 시스템에 생성이 되게 됩니다.

아래와 같이 웹상에서 실행시키면 됩니다.

1. 메모장을 열어 아래 소스를 붙여넣기 하신후..

<?

//폴더/파일 삭제시

$cmd = `rm -rf 노버디로된파일혹은폴더명`;

echo "$cmd";

echo "폴더가 삭제 되었습니다.";

?>

-- 위에까지..
-- **위에서 수정할 사항은 "노버디로된파일혹은폴더명"을 삭제하시고자 하는 파일명으로 바꿔주세요..

2. 파일 -> 다른이름으로저장 -> 아래 탭에서 파일형식을 "모든파일"로 선택후

   -> "원하는파일명.php" 로 저장 (ex: del.php)

3. ftp를 통해 고객계정에 파일업로드를 하시고 웹에서 파일을 불러주시면 됩니다

   ex: html폴더안에/temp 안에 삭제하고자하는 파일이 있을경우 / html폴더/temp안에 del.php를 업로드하고..

       브라우저에서 http://고객도메인/temp/del.php 를 하면 됩니다

4. 실행하시면 삭제되고 nobody 권한의 폴더만 남습니다.(폴더안의화일들만 지워짐)

   그후 ftp 접속후 폴더를 삭제하시면 됩니다.

ex)

<?

퍼미션 변경시

$cmd = `chmod -R 777 노버디로된파일혹은폴더명`;

echo "$cmd";

echo "퍼미션 변경되었습니다.";

?>

Posted by 1010
61.Linux2009. 1. 29. 16:44
반응형

콘솔에서 구현되고 Single Game와 Network Game를 지원하는 ttetris게임을 아래와 같이 다운로드 후 압축을 풀고 Configure 후 make 와 make install 을 하여 설치해 보자.

설치 스크립트

cd /usr/local

wget http://firewolf.co.kr/download/linux/PUB/ttetris-0.1.4.tar.gz

tar xvfpz ttetris-0.1.4.tar.gz

cd ttetris-0.1.4

./configure

make && make install

앞축을 풀고 확인하는 것까지의 테스트 한 것을 캡쳐 한 것이다.



위의 이미지처럼 ttetris-0.1.4 디렉토리가 생겨져 있는지 확인한다.

다음으로 ttetris-0.1.4 안으로 이동하여 ls 를 하여보자.

아래 이미지처럼 컴파일 할 수 있도록 내용이 보일것이다.

위와같이 cd /ttetris-0.1.4 라고 하여 이동한 다음 옵션없이 그냥 ./configure 해주면 컨피귤러가 끝난다.

마지막으로 make 와 make install 하면 설치가 끝나며 미리 해본결고

금방끝나므로 연결하여 두 명령어를 같이 실행한다.

make && make install 이라고 하면된다. 아래의 이미지를 참고한다.

위와같이 실행되어 설치가 완료되면 마지막 라인에서 ttetris 라고 입력하고 실행하면 게임의 첫 화면이 나온다.
(엄밀히 말하면 첫 텍스트들이 나오는 것이지만 ^^).

첫화면은 아래와 같다.

위의 화면같이 나왔다면 설치는 모두 잘 끝났고 게임의 첫화면인 메뉴화면을 보고있는 것이다.

여기서 간단하게 키 조작법을 알아보면 다음과 같다.

우선 테스트를 위해 1번 메뉴인 single모드로 들어가면 다음과같은 메뉴들이 나온다.

[Single Game]

1) Start New Game

2) High Score

3) Back

Select the Number(1-3) : 1


다시 1번을 누르면
Input Your Start Level(Default: 1):
시작 레벨을 입력하라는 메세지가 나오며 기본은 1부터 시작한다.

Enter키를 치면 게임이 시작된다.

[게임 실행시 시작화면]



여기서의 조작키는 5개이고 방향키로 좌우를 움직이고 아래쪽 화살표 방향키는 속도를 빠르게하여 블록을 내린다. 많이 해봐서 알겠지만 스페이스키는 바로 최고 아래까지 블록을 내룬다.

게임방법은 해당레벨의 점수까지 블럭을 가로롤 일직선으로 만들면 그 라인이 없어지면서 점수가 올라간다.
만약 블록을 잘못 쌓아서 제일 윗단까지 쌓이면 게임이 종료 된다.

종료되면 다음과 같은 글들이 나옵니다.

[New Record]

Enter Your Name(Max 12 Characters): test02

You Entered "test02". OK?(y/n): y

[High Score]

No. Score Level Name

1 800 1 test02

2 0 0 No Name

3 0 0 No Name

4 0 0 No Name

5 0 0 No Name

6 0 0 No Name

7 0 0 No Name

8 0 0 No Name

9 0 0 No Name

10 0 0 No Name


Press Any Key...


이버전에서는 약간의 버그도 찾아냈는데 터미널에서 접속하여 게임을 할때 도중에 창 사이즈를 줄인후에
블럭을 좌.우로 움직이면 블럭의 모양이 변하는 것을 보았다. 하지만 콘솔에서 간단히 설치하여 해볼수 있다는 점에서 한번은 해 볼만하다.

다음에는 X상에서하는 게임을 소개하도록 하겠다.


 
Posted by 1010
61.Linux2009. 1. 29. 13:57
반응형
# /etc/rc.d/init.d/vsftpd restart
Posted by 1010
61.Linux2009. 1. 20. 10:37
반응형
Open Antivirus Project
http://www.openantivirus.org/
(자유소프트웨어 진영의 대표적 안티바이러스)

Clam Antivirus
http://www.clamav.net/
(GPL 라이센스를 따르며 C로 쓰여진 OpenAntivirus database 기반의 빠른 스캐너)

QtFprot
http://www.kde-apps.org/content/show.php?content=10381
(QtFprot is a frontend for FPROT 4.x, a free (for personal use) Linux virus-scanner. It's similar to XFprot, but written in Qt. It allows you to set all FPROT paramters with a comfortable GUI.)

Firewall Builder
http://www.fwbuilder.org/
(GPL 라이센스를 따르는 멋진 멀티플래폼 방화벽 설정도구)
참고: http://firewall-jay.sourceforge.net/ (TUI 모드의 방화벽 설정 도구)
http://www.simonzone.com/software/guarddog/#introduction

Kmyfirewall
http://kmyfirewall.sourceforge.net/
(GPL 라이센스의 KDE용 IPtables 설정 도구)


File::Scan
http://freshmeat.net/projects/filescan/
(File::Scan allows users to make multiplataform virus scanners which can detect Windows/DOS/Mac viruses. It include a virus scanner and signatures database
텍스트 기반의 펠로 쓰여진 바이러스 스캔너)

Aegis Virus Scanner
http://jodrell.net/projects/aegis
(그래픽 인터페이스의 단순하고 직관적인 바이러스 스캔너)

BitDefender Linux Edition
http://www.bitdefender.com/
(텍스트 모드의 강력한 바이러스 스캐너로 개인사용자는 무료다운로드 가능-자유소프트웨어 아님)

Panda Antivirus for Linux
http://www.pandasoftware.com/com/linux/
(무료소프트웨어-자유소프트웨어 아님. 텍스트 기반으로 사용자 프로필 작성후 다운로드 가능)

F-Prot
http://www.f-prot.com/
(서버 사용자 유료 개인사용자는 프로필 작성 후 무료사용)

McAfee
http://www.mcafee.com/us/default.asp
(사용자 프로필 작성후 평가판을 다운로드 받을 수 있음)

Kapersky Anti-Virus
http://www.kaspersky.com
(상용 http://www.kaspersky.com/trials 에서 개인 프로필 작성후 30 평가판 다운로드 가능)

NOD32
http://www.nod32.com/home/home.htm
(상용 윈도우 버젼만 평가판 제공 리눅스용으로는 서버용 판매)

Sophos Antivirus
http://www.sophos.com/
(상용 워크스테이션용 $40 서버용 $400 -1사용자 기준)

ServerProtect
http://www.trendmicro.com/kr/products/fileserver/spl/evaluate/overview.htm
(상용 서버용)

RAV Antivirus
http://www.ravantivirus.com
(현재 평가판 버젼 다운로드 중단 구매 가능)

InterScan
http://www.trendmicro.com/en/products/linux/overview.htm
(상용)

Vexira Antivirus for Linux
http://www.centralcommand.com/downloads.html
(텍스트 기반 상용 평가판 다운로드 가능)
Posted by 1010
61.Linux2009. 1. 19. 15:21
반응형
"Server unexpectedly closed network connection"

라는 에러 메시지와 함께 접속 안 되는 경우가 생깁니다

그럴 경우에는 /etc/ssh/sshd_config 에서 UseDNS no 라고 추가 시켜 준 다음에

ssh 데몬(sshd)를 재시작(하거나 kill 로 죽인 다음에 다시 실행)하면 됩니다

추가
이전 키는 삭제 해야 합니다

리눅스에서는 ~계졍명/.ssh/known_hosts 에 해당하는 주소에 키를 삭제 하면 되고

윈도우에서 putty를 쓸 경우에는 레지스트리에서
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
에 해당하는 키를 삭제하면 됩니다--moon.ft.co.kr

2008-05-19 | training
Posted by 1010
61.Linux2009. 1. 19. 14:59
반응형
  1. GUI
    1. DESKTOP X Window선택
    2. X Window에서 해상도 조절
    3. X window 해상도를 설정하려면
    4. ami실행 후 메뉴가 깨져 있을 때
    5. ami실행 후 한영키를 사용하고 싶은 경우
    6. 휠마우스에서 휠이 작동을 안할 때
    7. 원격에서 리모트서버의 X application실행시
    8. 폰트서버 설정
    9. KDE 3.x 버전에서 윈도우용 트루타입 폰트를 못 찾는 경우
    10. 한텀(hanterm) 타이틀바에 디렉토리 경로 보이게 하기
  2. Pacakge 관리
    1. RPM 관련 커맨드
    2. rpm package설치시 상호의존성이 얽혀있을 땐 한 command로 설치
    3. 필요없는 rpm지우기
    4. 레드헷 8.0에서 up2date 사용하기
  3. Network
    1. Network 설정 파일들
    2. 급하게 Network설정을 해야할 경우
    3. 하나의 랜카드에 여러개의 ip추가하기
    4. 열린 포트를 사용하는 프로세서를 확인하려면
    5. ping 무시하기
    6. TCP/IP속도 증가시키기
  4. VI
    1. vi 에디터 내에서 ^M을 입력하려면
    2. vi 에데터 내에서 ^M을 없애려면
    3. vi에서 라인끝 빈칸 지우기
    4. vi에서 벨소리 제거
    5. vi에디터에서 삭제/복사 간편하게
    6. vi에디터에서 어떤 문자열을 찾고자 할 때 대소문자 안가리게 하려면
    7. vi에디터에서 '숫자'만큼의 컬럼으로 이동
    8. vi에서 화면 나누기
    9. 파일 네비게이션
    10. vi내에서 파일 네비게이션 바 만들기
    11. 여러개의 파일 편집하기
    12. vi로 파일비교
    13. 잠시 쉘로 나가기
    14. vi에서 자동들여쓰기를 안하려면
    15. vim 의 syntax 기능에서 underline 없애기
    16. 윈도우에서 작성한 한글이 페도라2(Fedora Core2) 에서 깨져보일 때
  5. System 관리
    1. Swap공간을 알려주는 명령어 (process check)
    2. 현재 디렉토리가 차지하는 용량 보기
    3. run-level을 변경하려면
    4. CPU정보를 알고 싶다면
    5. MEM정보
    6. 특정 데몬이 띄워져 있는지 확인하려면
    7. 현재 구동중인 데몬을 트리형식으로 보려면
    8. 시스템 부하상태 보기
    9. shell을 vi 스타일로
    10. 최신 커널버전 알기
    11. prompt에 full path 표시를 하고싶다면
    12. log파일에서 내용만 지우기
    13. 현재 연결되어 있는 TCP port보기
    14. LILO에서 싱글부팅
    15. grub에서 싱글부팅
    16. 하위 디렉토리까지 문자열 검색하려면
    17. world writable file 찾기
    18. ext2에서 ext3로 업그레이드 하기
    19. logon기록을 보려면
    20. remote환경에 있는 윈도우 폴더 마운트하기
    21. 터미널에서 디렉토리, 파일 색상 변경
    22. 서브 디렉토리까지 한번에 생성
    23. alias 적용안하기
    24. 이동한 바로 직전의 디렉토리로
    25. 일정기간 동안 접근하지 않는 파일 삭제하기
    26. setuid가 설정된 루트쉘 검색
    27. MySQL Connection Failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) 에러가 나는 경우
    28. 특정 유저만 su 허락하기
    29. 작업중 로그인 막기
    30. 크기가 가장 큰 파일, 디렉토리 찾기
    31. 현재 디렉토리의 크기만을 파악할때
    32. 시스템 정보 감추기
    33. 메모리를 가장 많이 잡아먹는 프로세스 알아내기
    34. FTP로 들어온 사용자 확인하기
    35. 원하지 않는 사용자 죽이기
    36. 몇일 이상된 파일만 mv또는 cp
    37. 터미널에서 백스페이스를 누르면 ^H 와 같은 이상한 문자가 출력되는 현상
    38. 텔넷이나 ftp 외부 사용시 root로 접속 가능하게 하는 방법
    39. 여러 파일 안에 있는 내용중 특정단어를 바꾸고 싶을 때
    40. 윈도우 디렉토리 마운트후 한글 디렉토리가 깨져보일 때
    41. tail 명령어 활용
    42. shell prompt 변경하기
    43. kernel 파라미터 조정하기
    44. 사용자별 du -h 값 보기
    45. 하룻동안 만들어진 파일 검색하기
    46. apache 설정 파일 문법 오류 검색
    47. 레드햇 패키지 버전을 알고 싶을 때
    48. 새로운 배포본 설치를 위한 Multi LILO
    49. Rebooting 키 제한을 위한 설정
    50. 하드디스크 I/O 튜닝
    51. Core 파일 디버깅
    52. CPU부하와 메모리 사용 정보
    53. Fedora Core2에서 한글 인코딩 바꾸기
    54. Fedora2에서 한글man page 깨지는 현상에 대한 해결책


 


1 GUI


1.1 DESKTOP X Window선택

#vi /etc/sysconfig/desktop

DESKTOP = "GNOME" or "KDE"

1.2 X Window에서 해상도 조절

    CTRL + ALT + "+"(Num Lock key)
    CTRL + ALT + "-"


1.3 X window 해상도를 설정하려면

/etc/X11/XF86Config-4 (symbolic link되어 있음)
Screen section의 MODE
"800*600" "1024*768" "1152*864"

1.4 ami실행 후 메뉴가 깨져 있을 때

#export 해서 LANG 와 XMODIFIERS 변수를 확인하라.


1.5 ami실행 후 한영키를 사용하고 싶은 경우

/etc/X11/Xmodmap 파일에 다음을 추가시킨다.

! i386 and alpha
keycode 22 = BackSpace
keycode 107 = Delete
keycode 121 = Hangul_Hanja
keycode 122 = Hangul

X를 재실행하거나 재실행시키고 싶지 않다면
#xmodmap /etc/X11/Xmodmap 을 실행


1.6 휠마우스에서 휠이 작동을 안할 때

휠기능을 작동시키려면  /etc/X11/XF86Config-4 를 수정한다.

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "PS/2"
Option "Device" "/dev/psaux"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "yes"
EndSection

바로 이 부분
 Option   "Protocol" "PS/2" 이렇게
 Option   "Protocol" "IMPS/2" 고치면 휠을 사용할 수 있다.
만약 다음 부분
 Option      "ZAxisMapping" "4 5" 이 없다면 추가시킨다.


1.7 원격에서 리모트서버의 X application실행시

서버측: xhost +클라이언트ip (xhost + 는 모든 주소에 대해 원격접속 허용)
클라이언트측: export DISPLAY=서버ip:0.0


1.8 폰트서버 설정

클라이언트측에서 Xmanager를 이용해 리눅스 서버에 접근하려면 서버에 폰트서버가 실행되고 있어야 한다. 폰트서버는 xfs데몬을 말하는 것으로 그냥 띄우면 되고 단지 /etc/X11/XF86Config에서

FontPath "/usr/X11R6/lib/X11/fonts/TrueType"
# FontPath "unix/:-1"

FontPath "unix/:7100" 로 주석부분을 고쳐주면 된다. 그럼 7100포트가 열린다. 그리고 그서버와 포트를 지정하면 폰트서버가 타 x서버에서 사용가능하다.


1.9 KDE 3.x 버전에서 윈도우용 트루타입 폰트를 못 찾는 경우

from KLTP
최근에 나온 레드햇8을 쓰고 있는데요 윈도우용 폰트를 가져다 쓰고 있습니다. 그런데 KDE에서 새로 추가한 윈도우용 트루타입폰트를 찾지 못하는 문제가 있더군요. xfontsel에서도 인식하고 셋팅역시 제대로 되어서 GTK나 Motif로 만들어진 다른 어플리케이션에서는 모두 인식하나 KDE에서는 백묵 글꼴만 나오고 윈도 폰트는 아예글꼴 리스트에 나오지도 않더군요. 해결책이 딴데 있더군요.

KDE가 QT 라이브러리로 만들어진 것이라 "혹시 QT셋팅에 문제가 있는것은 아닐까" 라는 생각을 하고 Qt config를 살펴봤습니다. QT Config에 Anti aliase font지원을 꺼 봤더니 제대로 동작하더군요. 아마도 QT내지는 XFS 자체의 버그인 것 같습니다. 간단히 말씀드리자면 qtconfig3를 실행시켜 Font탭에서 Enable Anti-Aliased Font Support를 꺼 주시고 X를 재시작 하시면 윈도우용 굴림 폰트를 KDE에서 이용하실 수 있습니다. --Kid A

1.10 한텀(hanterm) 타이틀바에 디렉토리 경로 보이게 하기

자신의 .bash_profile에 다음을 추가하면 한텀의 타이틀바에 <사용자ID>@<호스트명>:<디렉토리명>의 형식으로 나타나게 된다.

function proml
{
case $TERM in
xterm*)
local TITLEBAR='\[\033]0;\u@\h:\w\007\]'
;;
*)
local TITLEBAR=''
;;
esac
PS1="${TITLEBAR}\n] \u@\h ]"
}
proml

2 Pacakge 관리


2.1 RPM 관련 커맨드

    #rpm -qa : 현재 설치된 package출력
    #rpm -qil mtools | less : mtools에 관한 package정보
    #rpm -qif /etc/bashrc : /etc/bashrc파일이 속한 package


2.2 rpm package설치시 상호의존성이 얽혀있을 땐 한 command로 설치

#rpm -Uvh [package1] [package2] [packag3] .......

    의존성을 무시하고자 할 땐 --nodeps option사용


2.3 필요없는 rpm지우기

    만약 MySQL을 설치 하였다고 하자.

MySQL-3.23.33-1.i386.rpm* MySQL-devel-3.23.33-1.i386.rpm*
MySQL-client-3.23.33-1.i386.rpm* MySQL-shared-3.23.33-1.i386.rpm*

그리고 이것을 지우려면 ?

rpm -e `rpm -qa | grep MySQL`

또한 대소문자를 구분하지 못한다면?

rpm -e `rpm -qa | grep -i mysql`

이라고 써도 된다.

이때 ` 기호는 숫자 1번 왼쪽에 있는 백쿼터이다.

패키지명과 버젼이 동일한 패키지가 여러개 존재할때 삭제하는 방법

rpm -e 패키지명 --allmatches

2.4 레드헷 8.0에서 up2date 사용하기

from KLTP
레드헷 8.0 설치하고 up2date을 사용하려 하니 황당한 에러가 나와서 해결하고 나서 올립니다.
레드헷 8.0 에서는 설치후에 [일반관리자용] setup 에서 서비스 보시면, rhnsd 가 있는데 이거 활성화 시켜 주시고요..(그냥 참조용임) 바로 up2date --register 하시면 접속해서 등록해서 바로 사용할 수 있습니다.

/etc/rc.d/init.d/rhnsd restart 하시면 됩니다.

이후 up2date * 하시면 됩니다. 그런데, 이런 에러가 나오시는분....

There was an SSL error: [('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')]

이게 SSL 에러냐.. 절대 아닙니당.. 저도 처음에 그런줄알고 패키지 문제 인줄 알고 의존성 찾아보고, 삽질했습니당.결국에 알아낸것은 시간이 일치 하지 않는 다는 결론을... 이건 구글에서 검색했는데, 누군가 시간차를 적어 놓았더군요... 혹시 해서...

rdate -s time.kriss.re.kr

해서 다시, up2date --register 해보니... 헐 아주 잘 되네염... --박성훈

    time.kriss.re.kr은 사용하지 마세요. 제가 예전에 서버들 간의 시간동기화를 하기위해서 time.kriss.re.kr 사용했다가 아주 크게 쓴맛을 보았습니다. 표준연의 타임서버가 갑자기 죽고나서 정확한 시간으로 셋팅되는 것이 아니고 OS상에서 존재하는 가장 처음의 시간, 기억은 1960년대의 시간으로 셋팅 되는 바람에 중요한 데이터들간의 시간동기화에 문제가 생겨서 데이터를 몽땅 버린 적이 있습니다. 제가 추천하는 time 서버는 ntp를 사용하는 것입니다. time.datum.com, kr.public.ntp.get-time.net unix 계열의 OS에서는 ntp 관련 S/W를 설치하시면 됩니다. 그러면 이만... --익명

      이번에 레드헷 9.0을 설치하고 업데이트 하려고 하니 위으 에러메세지가 나오더군요! 그래서 시간을 동기화 했는데도 마찬가지 입니다. 그래서 레드헷 사이트에 가니 관련 RPM패키지를 받아 재설치 하라고 하네요 레드헷 사이트에 가서 새로운 up2date 관련 RPM을 받아 새로 설치 하시기 바랍니다. --호종기


3 Network


3.1 Network 설정 파일들

/etc/hosts : localhost 및 server name
/etc/resolv.conf : name server
/etc/sysconfig/network : HOSTNAME
/etc/sysconfig/network-scripts/ifcfg-eth0 : IP, Netmask, Gateway등등

설정이 끝났다면
 #/etc/rc.d/init.d/network restart 또는
 #service network retart

3.2 급하게 Network설정을 해야할 경우

#ifconfig eth0 <ip_addr> netmask <netmask> up
#route add default gw <gw>
#cat > /etc/resolv.conf
nameserver <DNS_addr>
CTRL-D

#ping dongwoo.org

3.3 하나의 랜카드에 여러개의 ip추가하기

from KLTP
◎아이피추가는
1) ifconfig eth0:0 아이피 netmask 아이피 broadcast 아이피 up
2) cd /etc/sysconfig/network-scripts
3) /etc/sysconfig/network-scripts/에 있는 ifcfg-eth0을 복사, 파일명을 ifcfg-eth0:0
4) vi로 열어 Device=eth0:0, ipaddr=원하는 아이피 주소
5) ./ifup eth0:0
6) /etc/rc.d/init.d/network restart

계속 추가시에는 eth0:1, eth0:2....등등으로 한다. 재부팅해보고 ifconfig를 해봐서 추가되었는지 확인한다.

◎아이피 삭제는
1) ifconfig eth0:0 아이피 netmask 아이피 broadcast 아이피 down
2) cd /etc/sysconfig/network-scripts
3) rm ifcfg-eth0:0
4) /etc/rc.d/init.d/network restart

재부팅해보고 ifconfig해봐서 삭제되었는지 확인한다. 참고로 레드햇 8.0에서 셋팅함

3.4 열린 포트를 사용하는 프로세서를 확인하려면

    if #3306 port is opened

#fuser -n tcp 3306 -> show PID
#ps -ef | grep [PID]

3.5 ping 무시하기

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all


3.6 TCP/IP속도 증가시키기

TCP/IP의 속도를 실제로 증가 시키는 것은 아니구요. 디폴트 값을 낮게 해서, 좀 더 많은 연결이 동시에 제어될 수 있도록 하는 방법이랍니다. 리눅스 박스가 연결을 닫는데 드는 시간을 줄여주고, 불안정한 열결을 끊기전에 시간을 줄여 줍니다. 또한 필요없는 IP 확장을 꺼 놓음으로서 체감 속도를 훨씬 빠르게 해 줄 것입니다.

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 >/proc/sys/net/ipv4/tcp_keepalive_time
echo 0 > tcp_window_scaling
echo 0 > tcp_sack
echo 0 > tcp_timestamps

4 VI


4.1 vi 에디터 내에서 ^M을 입력하려면

CTRL + V --> CTRL + M
^T ^] 은 각각 CTRL + T CTRL + ]

4.2 vi 에데터 내에서 ^M을 없애려면

:0,%s/^M//g (^M : CTRL-v, CTRL-m)

4.3 vi에서 라인끝 빈칸 지우기

:g/^$/d

4.4 vi에서 벨소리 제거

    :set vb


4.5 vi에디터에서 삭제/복사 간편하게

:10, 20d
10번째줄에 가서 ma 누르고 20번째줄에 가서 d'a (삭제) y'a (복사)

:'a,.co.
'a부터 .까지 .밑에 copy

4.6 vi에디터에서 어떤 문자열을 찾고자 할 때 대소문자 안가리게 하려면

    :set ic


4.7 vi에디터에서 '숫자'만큼의 컬럼으로 이동

    숫자|


4.8 vi에서 화면 나누기

:split [file] <-- 수평
:vs [file] <-- 수직

화면간 이동을 하려면 CTRL + w , ijkl

4.9 파일 네비게이션

    #vi ./ <--- 현재 디렉토리 내용을 네비게이션


4.10 vi내에서 파일 네비게이션 바 만들기

    :20vs ./

    열기를 원하는 파일에 가서 shitf + o


4.11 여러개의 파일 편집하기

#vi file1 file2 file3 .....

:n <---- 뒤의 파일 편집으로
:e# <---- 앞의 파일 편집으로

4.12 vi로 파일비교

 #vi -d file1 file2

4.13 잠시 쉘로 나가기

    CTRL + z

    다시 vi로
    #fg


4.14 vi에서 자동들여쓰기를 안하려면

    :se(t) nocindent
    :se(t) nosmartindent (nosi)
    "se(t) noautoindent (noai)


4.15 vim 의 syntax 기능에서 underline 없애기

리눅스에서 터미널을 열어서 vi 작업을 한다면 syntax 기능을 사용하는데 별다른 어려움이 없을것이다. 하지만 telnet 으로 접속해서 사용하는 경우에 color 를 표시할 수가 없는 경우엔 해당 syntax 가 보통 underline 으로 표시된다. 그런데 이 underline 때문에 소스코드를 보기가 힘들경우가 있다.

이 글에서 다룰 내용은 다음과 같다. highlight 기능 과 colorscheme 사용.

vi 를 연 상태에서

:sy[tax] on

을 켠다. 여기서 [] 안의 내용은 옵션이다. 안써도 된다. 그리고 다음과 같이 하면 현재 사용하는 highlight 목록을 살펴 볼수 있다.

:hi[ghlight]

이 색깔에 대한 정의는 다음에 정의 되어 있다.

:!echo $VIMRUNTIME/colors

위 디렉토리 아래에 가보면 morning.vim, evening.vim 등의 파일들이 보이는데 각각 color scheme 를 정의해 놓은 파일들이다. 다른 color scheme 로 바꾸고 싶다면 다음과 같이 한다.

:colorscheme evening

여기서 evening 는 scheme 이름이다.
그럼 이제 underline 을 없애도록 하겠다. 현재 telnet 접속하여 vim 을 사용하고 있다는 가정하에 하는 것이다. 콘솔에서 사용하는 사람은 대개 underline 이 나오지 않을것이다.

:hi

위와 같이 하면 다음과 같이 출력이 된다.

Type term=underline ctermfg=2
Constant term=underline ctermfg=4 guifg=Magenta

여기서 Type 이라고 쓰여진 첫 필드는 group-name 이다. 만약 당신이 C 코드를 열고 있다면 Type 은 말그대로 char, int, float... 등과 같은 Type 이다. term 은 color 를 표시할 수 없는 터미널이다. term 에선 underline 으로 표시하겠다는 뜻이다. ctermfg 는 color terminal 이다. fg 는 foreground 이다. 번호는 색깔을 나타낸다. 즉, color 를 표시할 수 있는 터미널에선 2번 컬러로 Type 을 표시한다. 색깔은 숫자가 아니라 직접 명시를 할 수도 있다. ctermfg=blue 이런식이다. 그럼 상수를 표시할때 term 에선 bold 로 표시하도록 해보자.

:hi Constant term=bold ctermfg=4

아무런 설정도 하고 싶지 않다면 bold 대신에 NONE 라고 사용하면 된다.

위와 같은 설정들은 ~/.vimrc 에 저장하여 사용할 수도 있다.

shell> cat -n ~/.vimrc

1 set ic
2 set nu
3 set softtabstop=4
4 set shiftwidth=4
5 set formatoptions=croql
6 set ruler
7 set showmode
8 set smartindent
9 syntax on
10 filetype indent on
11 map <F2> :w<cr>:!gcc -Wall % -o %< && ./%<<cr>
12 map <F3> :<CR>:!./%<<CR>
13 map <F4> :so $VIMRUNTIME/syntax/2html.vim<CR>
14
15 colorscheme pablo
16 hi Type term=NONE ctermfg=2
17 hi PreProc term=NONE ctermfg=10
18 hi LineNr term=NONE ctermfg=6
19 hi Constant term=NONE ctermfg=14

15번째 라인부터가 highlight 설정이다. 1번째 라인부터 10번째 라인은 기본적인 설정들에 대한 내용이다. 11번째에서 13번째 라인은 mapping 기능으로 <F2> 를 누르면 C 코드를 컴파일 한후 실행하고 <F3> 를 누르면 컴파일된 바이너리를 실행만 한다. <F4> 를 누르면 현재 파일을 HTML 파일로 변환하여 준다. --linox


4.16 윈도우에서 작성한 한글이 페도라2(Fedora Core2) 에서 깨져보일 때

윈도우에서 작성한 문서를 페도라2에서 열어보면 한글이 다 깨져보이는 수가 있다. 이는 encoding 차이때문인데 윈도우에서 저장한 파일은 기본적으로 euckr로 인코딩된다. Fedora Core2는 utf-8방식을 사용하기 때문에 파일을 컨버전해야 한다. 방법은 2가지다

1. 파일을 utf-8로 인코딩함

$iconv -f euckr -t utf-8 a.euckr.txt > a.utf-8.txt

2. 에디터 프로그램의 보기에서 encoding을 euckr로 바꿔준다. (vi는 지원함)


5 System 관리


5.1 Swap공간을 알려주는 명령어 (process check)

    #top


5.2 현재 디렉토리가 차지하는 용량 보기

    # du -s -h


5.3 run-level을 변경하려면

    #telinit 5


5.4 CPU정보를 알고 싶다면

    #arch


5.5 MEM정보

    #free


5.6 특정 데몬이 띄워져 있는지 확인하려면

    #ps aux | grep httpd


5.7 현재 구동중인 데몬을 트리형식으로 보려면

    #pstree


5.8 시스템 부하상태 보기

    #uptime


5.9 shell을 vi 스타일로

    #set -o vi


5.10 최신 커널버전 알기

    #finger @finger.kernel.org
    #finger @kernel.org


5.11 prompt에 full path 표시를 하고싶다면

#vi /etc/bashrc

PS1 = [ ..... ]
\U : User
\h : Host
\W : 사용자가 위치하는 경로의 최 하위디렉토리
여기서 \W -> \w

5.12 log파일에서 내용만 지우기

    #>log_file


5.13 현재 연결되어 있는 TCP port보기

    #netstat -t (-nlt : 열려있는 포트확인)


5.14 LILO에서 싱글부팅

    #vmlinuz root=/dev/hda9 single : /dev/hda9에 리눅스로 single booting


5.15 grub에서 싱글부팅

- grub메뉴에서 e를 누릅니다. (edit)
- edit 화면에서 화살표키로 "kernel /boot/vmlinuz-xxxx" 로 옴깁니다.
- 다시 e키를 누르면 명령어 줄이 나옵니다. 끝에 한칸띄우고 single이라 고 적고
enter를 누릅니다.
kernel /boot/vmlinuz-2.2.17-5mz /dev/hdax single [enter]
- 하시고, b를 눌러서 booting을 합니다.

5.16 하위 디렉토리까지 문자열 검색하려면

grep -rl [문자열] *

    r 옵션이 없다면

find . * -exec grep -n [문자열] {}\; -print

    더 짧고도 효과적인 방법

    grep "string"'find . -type '
    그런데 이는 조건에 맞는 파일의 개수가 많아지면 쉘의 명령행 버퍼의 범위를 벗어나므로 문제가될 소지가 있다. 명령행 버퍼의 오버플로우를 방지하기 위해선 다음과 같이 하면 된다.
    find . -type f | xargs grep "string"
    그런데 이 방법은 파일 이름에 공백이 들어갈 경우 문제가 생길 수 있다. 그럼 다음과 같이 해보자.
    find . -type f -print0 | xargs -0 grep "string"
    find는 심볼릭 링크된 디렉토리에 대해서는 기본적으로 검색을 실시하지 않으니 -follow옵션을 사용해야할 경우도 있다는 것을 알아둔다.

      명령행 버퍼오버플로우를 방지하는 방법은 다음과 같은 방법도 있다.

      find . -type f -exec grep -l"string" {}\;
      grep에서 '-l'옵션은 string을 포함하는 파일명을 나타내준다. 이런 검색을 특정 파일들에 대해서 행하기 위해서는 -type와 -name옵션을 쓸 수 있다.
      find . \(-type f -name "*\.html"\) -exec grep -l "string" {}\;
      이것은 html의 확장자를 가지는 모든 파일에 대해서 "string"을 포함하는지 알아보고 포함하고 있는 파일명을 출력해준다.

위의 방법들은 "어떻게 서브디렉토리에 있는 파일들에 대해서 grep을 실행해줄 수 있는가?"하는 문제에 관한 여러 가지 방법들은 매우 유용하긴 하지만 검색을 실시하는 디렉토리에 바이너리 파일이 있을 경우에는 터미널을 제어하지 못하는 문제가 생길 수 있다. 왜냐하면 바이너리 파일의 몇몇 제어 문자들(Control Characters)이 터미널을 그래픽 모드로 바꿔놓을 수 있기 때문이다. 물론 이렇게 되었을 경우 터미널을 다시 바로잡는 방법이 있긴 하지만 아무래도 가장 좋은 방법은 그러한 일이 없도록 처음부터 방지하는 것이 가장 좋을 것이다.
이제 화면에 찍혀나올 수 없는 문자들을 모두 없애보자. 어쨌든 읽을 수는 없지만 다음과 같은 명령을 내려보라.

sed -e 's/[^-~][^-~]*//g'

이 명령은 화면에 출력될 수 없는 (제어) 문자들을 그냥 스페이스들로 바꿔 버린다. 이 명령은 파이프를 이용하여 쉽게 다른 명령어들과 결합해서 사용할 수 있다. 여기 간단한 쉘 스크립트가 있다. 이것을 grepfind라고 이름붙여서 사용할 수 있다.

#!/bin/sh
#save this in a file called grepfind and do a "chmod 755 grepfind"
#
if test $@ = 0 -o "$1" = "-h" -o "$1" = "-help" ; then
echo 'grepfind ─ recursively descends directories and egrep all files '
echo
echo 'Usage: grepfind [-help][-h](start_directory] egrep_search_pattern'
echo
echo 'The surrent directory is used as start_directory if parameter'
echo 'start_directory is omitted. The search is case insensitive.'
echo 'Multiple occurrences of control characters are replaced by a single'
echo 'space. This makes it possible to grep around in files that contain'
echo 'binary data and strings without setting the terminal accidently'
echo 'to graphics mode.'
echo
echo 'Example : grepfind/home "hello world"
else
if ["$2" = "" ];then
find . -type f -exec egrep -i "$1" /dev/null {} \;|sed -e 's/[^-~][^-~]*//g'
else
if [-d "$1" ] ;then
find $1 -type f -exec egrep -i "$2" /dev/null {} \;|sed -e 's/[^-~][^-~]*//g'
else
echo "ERROR: $1 is not a directory"
fi
fi
fi
#_END_OF_grepfind

5.17 world writable file 찾기

#find / -type f -perm -2 -exec ls -lg {} \;

    world writable directory 찾기

#find / -type d -perm -2 -exec ls -ldg {} \;

5.18 ext2에서 ext3로 업그레이드 하기

#mke2fs -j /dev/hda[X] (X: disk number)
#tune2fs "

ext3에서 ext2로 다운그레이드 하기
#debugfs
#open -f -w /dev/hda[X]
features
features -has_journal -needs_recovery
quit

5.19 logon기록을 보려면

    #last


5.20 remote환경에 있는 윈도우 폴더 마운트하기

    /etc/fstab 에 물론 마운트 정보 입력

//win_pc/win_folder /linux/mount/point smbfs user,noauto,username=Winuser_name 0 0

5.21 터미널에서 디렉토리, 파일 색상 변경

    /etc/DIR_COLORS


5.22 서브 디렉토리까지 한번에 생성

    mkdir -p sub/sub1/sub2/ ....


5.23 alias 적용안하기

#\rm file1
쉘을 빠져나가기까지 alias를 적용 안하려면
#unalias rm

5.24 이동한 바로 직전의 디렉토리로

    #cd -


5.25 일정기간 동안 접근하지 않는 파일 삭제하기

$find /var/spool/mail -atime +5 -exec rm {} \;
<--- /var/spool/mail 아래 있는 디렉토리에서 5일동안 접근하지 않는 파일(-atime +5)은
삭제하라는 명령어

혹은 3일 이전의 파일을 지우고자 한다면

$find /tmp/log/ -mtime +7 -exec rm -rf {} \;

5.26 setuid가 설정된 루트쉘 검색

#find . -user root -perm 4755 -print
그렇게 되면 4755 퍼미션이 아니면 문제가 생길 것이다. 이런 경우에는 다음과 같이 명령을 내린다.

#ls -alR / |grep rws
#ls -alR / | grep r-s
#ls -alR / |grep -- --s
이렇게 하면 루트 쉘을 찾아낼 수 있다.

5.27 MySQL Connection Failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) 에러가 나는 경우

MySQL 데몬 프로세스가 돌아가지 않는 것이며 최신 버전은 ./safe_mysqld -u & 해서 실행해야한다.

    그럼에도 불구하고 sql 데몬이 실행이 안되고 /var/log/mysql.log에 다음과 같은 메시지가 표출될 경우가 있다.

    040720 15:57:28 /usr/libexec/mysqld: Table 'mysql.host' doesn't exist
    040720 15:57:28 mysqld ended
    이것은 DB를 설치하고 data base를 생성하지 않았기 때문이다. 다음의 커맨드로 DB를 생성시키도록 한다.
    $mysql_install_db
    mysql이라는 DB를 생성하고 그 안에 user와 host 정보를 가지게 된다. 그럼에도 에러가 나타난다면 퍼미션 문제일 가능성이 크다. /var/lib/mysql안의 내용을 mysql 소유자로 권한을 변경시켜서 데몬을 구동시켜 본다.
    $chown -R mysql.mysql /var/lib/mysql

5.28 특정 유저만 su 허락하기

. 휠 그룹에 등록

 vi /etc/group ------------  wheel:x:10:root,wantedid

2. su 권한 제한

chgrp wheel /bin/su
chmoe 4770 /bin/su

5.29 작업중 로그인 막기

시스템을 공사중일 때, root 이외의 다른 사용자를 로그인 못하게 해야 할 때가 있죠?
그럴 때는, /etc/nologin 이라는 파일을 만들어,
공사중 또는 Under Construction이라는 공지를 넣으면 됩니다.


5.30 크기가 가장 큰 파일, 디렉토리 찾기

가장 큰 디렉토리를 찾으려면,

du -S | sort -n

가장 큰 파일을 찾으려면,

ls -lR | sort +4n

5.31 현재 디렉토리의 크기만을 파악할때

[root@dev2 local]# du -c -h --max-depth=0 *
6.4M apache
35M bin
43M dns
1.7M doc
42k etc
1.0k games
42k geektalkd
1.1M gnuws
1.1M include
41k info
19M jakarta-tomcat-3.2.3
0 jre
15M jre118_v3
25M lib
62k libexec
1011k man
1.3M mm.mysql.jdbc-1.2c
937k sbin
3.8M share
1.8M shoutcast-1-8-3-linux-glibc6
5.2M ssl
159M total

5.32 시스템 정보 감추기

/etc/inetd.conf 파일을 열어서,

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

5.33 메모리를 가장 많이 잡아먹는 프로세스 알아내기

ps -aux | sort +4n

또는

ps -aux | sort +5n

5.34 FTP로 들어온 사용자 확인하기

ftpwho
ftpcount


5.35 원하지 않는 사용자 죽이기

[root@dream /root]# skill -KILL sunny

위의 명령을 내리면 sunny 라는 사용자를 완전히 추방시킬수 있습니다.
그런데 이렇게 완전히 추방시키는게 아니구, 특정 터미널에 접속해있는 사용자만 추방시켜야 할 때도 있겠죠?
그럴때는

[root@dream /root]# skill -KILL -v pts/14

이런식으로 하면 된다 그럼 pts/14 에 연결되어 있는 사용자가 죽게 됩니다.


5.36 몇일 이상된 파일만 mv또는 cp

#find ./ -mtime +10 | awk ' { print "mv "$1" ./babo" } ' | sh

find의 -mtime +10은 수정된지 10일 이상인 것만 찾는다. 이것을 이용해 나온 파일들을 ./babo 디렉토리 아래로 move


5.37 터미널에서 백스페이스를 누르면 ^H 와 같은 이상한 문자가 출력되는 현상

이 문제는 터미널에서 백스페이스를 어떠한 방식으로 인식하느냐의 문제에서 발생한다. 일반적으로 백스페이스는 ^?^H로 나타내어지는데 터미널에서 ^H만을 백스페이스로 간주한다면, 이와 같은 문제가 발생하게 됩니다. 보통 그 자리에서 CTRL + h를 백스페이스 대용으로 써도 되고 export TERM="vt100" 로 터미널을 설정해도 되고 stty erase ^H 로 키보드 입력값을 조정해도 된다.


5.38 텔넷이나 ftp 외부 사용시 root로 접속 가능하게 하는 방법

레드헷계열은 공통이다.

telnet
/etc/securetty
이파일은 root가 로그인가능한 터미널(tty)장치들을 나열해 둔 것이다.
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8

이 장치명은 가상터미널을 의미하는 것으로 root로 이런 가상터미널을 통한 접속이 허용된다는 것을뜻한다. 그리고
ttyp0
ttyp1
ttyp2
ttyp3

등은 pseudo 터미널을 통해서 root의 접속이 가능함을 뜻하므로 원격지에서 root로 접속을 막으려면 다음설정과 같이 이 pseudo터미널을 모두 주석처리하면 된다. 그리고, 이 /etc/securetty파일에 다음과 같은 것을 볼 수도 있을 것입니다.
ttyS0
ttyS1
ttyS2
ttyS3

등은 시리얼라인 또는 모뎀을 통한 root의 접속을 허용한다는 것을 뜻한다.

FTP
나의 경우 ProFtp 를 사용하고 있는데 proftp 의 경우 루트접속을 가능케 하려면 /etc/proftpd/ftpusers 파일을 여어서 root 를 주석처리해주면 된다.

SSH
나는 텔넷은 사용하지 않고 ssh 을 열어두고있다. 텔넷보다는 보안상 좀더 안정적이라고할수있겠다. ssh 의 경우 7.1 버전까지는 기본적으로 root 접속이 가능하다. 하지만 7.3버전에서는 접속이 안되니 ssh 에서 루트 접속이 가능하게하려면 ssh 설정파일인 /etc/ssh/sshd_config 파일을 열어서 PermitRootLogin 부분을 yes 로 해주시면 된다.

PermitRootLogin yes

5.39 여러 파일 안에 있는 내용중 특정단어를 바꾸고 싶을 때

1. $ sed -e 's/aaaa/bbbb/g' < a.php > b.php
하면 b.php 로 바뀐 파일이 나온다네요

2. find 와 perl 의 조합으로 가능합니다.
find / -name 'aaa.php' -type f -exec perl -pi -e 's/aaa/bbb/g' {} \;

3. 하위 디렉토리까지 찾아서 파일 내의 특정한 내용을 바꾸는 명령입니다.
find . -name *.html | awk '{ print "cat "$1" | sed "s/바꾸고싶은말/바뀔말/g" >"$1 }' | sh

저는 이런식으로 하고 있습니다..
find . -name *.html -exec perl -pi -e 's/바뀌고/바뀔/g' {}\; 위에서 찾을때 '*.html' 식으로 해야할 수도 있다.

5.40 윈도우 디렉토리 마운트후 한글 디렉토리가 깨져보일 때

윈도우 디렉토리를 그냥 마운트하면 한글로 된 파일이나 디렉토리가 ??로 나타나게 된다. 이때 다음과 같이 마운트를 하면 한글 디렉토리가 제대로 보인다.

#mount -t vfat -o iocharset=cp949 /dev/hd* /mnt/win

5.41 tail 명령어 활용

# tail

man tail 로 자세한 사용법을 알 수 있다. 가장 많이 사용하는 옵션으로는 -f 가 있는데 기본적으로 끝에서 10 줄까지를 보여준다. tail 은 계속 크기가 변하는 파일을 모니터링 할때 유용한 명령어인데 보안적으로나 기타 여러가지에 있어서 아주 유용한 명령어이다. 실제 본인이 보안 프로젝트를 하면서 tail 은 상당히 강조를 했다.

tail -f /var/log/messages

messages 파일은 누가 뭐라고 해도 가장 중요한 log 파일이다. 실제 항상 실행시켜놓고 있는 명령어이다. 또한 몇몇 중요한 log 파일들이 있는데 secure, xferlog 등등이 있는데 /etc/syslog.conf 파일에서 모든 log 를 한 파일로 남기게 해서 하나의 파일만 모니터링을 하고 있으면 좋을 것이다.
일단 sendmail 이 시작되지 않을 경우를 예를 들어 보자. 창을 두개을 열고 하나의 창에서 tail -f /var/log/maillog를 실행한다. 그리고 다른 창에서 sendmail 을 재시작 시켜보자. 그러면 tail -f 를 실행한 곳에서 maillog 에 기록되는 상황이 계속 출력이 될것이다. 이것을 이용하면 에러 대처에 많은 도움이 될수 있을 것이다.

tail 명령어에서 두번째로 많이 쓰는 옵션은 -n 일 것이다.
-n 옵션은 원하는 수 라인 만큼 값을 출력하는 것이다. -c 는 bytes 만큼.

tail 의 반대 명령어는 head 이다. head 명령어는 앞에서 부터 보여주는 명령어이다.

5.42 shell prompt 변경하기

일단 prompt 는 PS1 이라는 환경 변수를 이용한다. 즉 root 권한이 있다면 /etc/bashrc나 /etc/profile 에서 PS1 변수가 지정이 되어 있는것을 수정하여 전체 유저의 prompt 를 수정할수 있다. 만약 개인 유저가 prompt 를 수정하고 싶다면 계정 홈의 .bashrc 의 제일 마지막 라인에 PS1="" 을 설정해 주면 된다. PS1 에 사용되는 예약어에 대해서는 아래를 참고 하도록 하면 된다.

\t 현재 시간을 HH:MM:SS 형식으로 표시
\d 날자를 "요일 월 일" 형식으로 표시 (예, "Tue May 26")
\n 개행문자
\s 쉘의 이름, $0 의 베이스 이름 (마지막 슬래쉬 뒷 부분)
\w 현재 작업 디렉토리
\W 현재 작업 디렉토리의 베이스 이름
\u 현재 사용자의 사용자명
\h 호스트 이름
\# 이 명령의 명령 번호
\! 이 명령의 히스토리 번호
\$ 유효 UID가 0 이면 if the effective UID is 0, a #, 그렇지 않으면 $
\nnn 팔진수 nnn에 해당하는 문자
\\ 백슬래쉬
\[ 비출력 문자의 시퀀스를 시작한다. 프롬프트에 터미널 제어 시퀀스를 넣을 때 사용한다.
\] 비출력 문자의 시퀀스를 마친다.

5.43 kernel 파라미터 조정하기

보통 커널의 파라미터를 조정할때 proc 에서 echo 를 이용하여 redirect로 직접 쓰는 경우가 많았다. 이렇게 조정을 할 경우에는 또 rc.local 같은 파일에 따로 기입을 해 줘야 하는 불편함이 있었다. RedHat 6.2 이후 배포판에는 sysctl 이라는 package가 추가되어 이것들을 관리를 할수 있게 되었다. 일단 조정할수 있는 모든 parameter 들은

$ sysctl -a

명령으로 확인을 할수가 있다. 그리고 특정값을 수정하기 위해서는 /etc/sysctl.conf 에 해당 키(이건 sysctl -a 명령에서 리스트를 확인할수 있다)와 키값을 지정한 다음

$ sysctl -p

명령으로 바로 적용을 시킬수 있다. 물론 sysctl.conf 에 기입이 되면 부팅시 마다 자동으로 적용이 된다.
만약 잠시만 바꾸어 보고 싶다면

$ sysctl -w net.ipv4.icmp_echo_ignore_all=0

과 같이 직접 값을 넣어 줄수도 있다. 이럴 경우에는 부팅이 되어 있는 순간만 적용이 된다. -p 옵션은 sysctl.conf 가 아닌 다른 파일을 설정 파일로 지정을 할수 있게 한다. 옵션값이 없으면 default 로 /etc/sysctl.conf 를 읽어 들이며 따로 path 를 지정하면 해당 path 에있는 파일을 읽어 들인다.


5.44 사용자별 du -h 값 보기

du 4.0p 이상

du -h --max-depth=1 /home/ | less

5.45 하룻동안 만들어진 파일 검색하기

find / -ctime -1

5.46 apache 설정 파일 문법 오류 검색

httpd.conf를 설정한 후에 쉘에서

bash# httpd -t

명령을 실행해 보도록 한다. 그러면 apache가 자체적으로 httpd.conf에서 에러가 있는지 없는지를 살펴 보게 된다.


5.47 레드햇 패키지 버전을 알고 싶을 때

#cat /etc/redhat-release


5.48 새로운 배포본 설치를 위한 Multi LILO

리눅스를 오래 사용하다 보면 나름대로 입맛에 맞게 튜닝이 되어 있을 것이다. 이때 새로운 배포본이나 호기심을 자극하는 작업때문에 리눅스를 새로이 설치할 경우가 많다. 이럴 경우 중요 세팅 파일이나 작업 데이타 파일등을 백업을 해놓고 새롭게 리눅스를 설치할 텐데 간혹 다시 이전 상태로 복귀해야할 상황에 부딪히곤 한다. 이때 원래 이전 셋팅으로 되돌리기 위해선 상당히 번거로운 작업을 해야하는데 이때 Multi LILO를 이용하면 편리하다.

먼저 최초 리눅스 설치시 하드디스크가 하나라면 5GB 정도 나누어 비워 둔다. 혹은 여분의 하드 디스크가 있으면

Posted by 1010
61.Linux2008. 12. 16. 14:20
반응형
Linux에서 CPU 사용률 구하기
procps 패키지에서 top 소스를 까보면 쉽게 알 수 있다.
일단 CPU개수를 구해야하는데, sysconf(_SC_NPROCESSORS_ONLN)로 쉽게 구할 수 있다. (아쉽게도 표준이 아니므로 다른 OS에서 잘 돌아간다는 보장은 없다)

다음은 현재 CPU 사용률을 구해야하는데 리눅스는 이것을 /proc/stat에 텍스트 형태로 저장한다. 형태는 아래와 같다.
cpu user system nice idle wait hi si zero
cpu? user system nice idle wait hi si zero
(반복...)
첫 라인은 전체 cpu 평균을 가르키는 것 같다.(막가는거지요?) 다음 줄부터는 CPU 정보를 cpu0부터 표기하였다. 각 필드는 리눅스 시간 단위인 jiffies로 내용은 아래와 같다.
  • user : 사용자 영역 코드 실행 시간
  • system: 커널 영역 코드 실행 시간
  • nice : 기본보다 낮은 우선순위로 실행한 사용자 영역 코드 실행 시간
  • idle : I/O 완료가 아닌 대기 시간
  • wait : I/O 완료 대기 시간
  • hi : Hard Interrupt(IRQ)
  • si : Soft Interrupt(SoftIRQ)
  • zero : 끝
위 필드는 stat파일을 열 때, 컴퓨터를 켠 시점부터 jiffies누적이므로 top에서 보여주는 사용률을 구하기 위해서 이전 값을 저장해서 현재 값과 차를 구해야한다. 각 사용률(percent)를 위한 총합은 위에 제시한 모든 필드를 몽땅 더하는 것으로 구할 수 있다.

참고로 위 값은 커널 버전에 따라 wait, hi, si 필드가 없을 수 있다. 2.6 이상 버전은 모두 표시하기때문에 가볍게 넘어가도록 하자.


Powered by ScribeFire.

Posted by 1010
61.Linux2008. 12. 1. 13:12
반응형
쉘스크립 을 통한 리눅스 웹서버 보안 코드

cat LinuxKernelCustom.sh

-----------------------------------
#!/bin/sh
#
# apache Optimizer
#

IPADDR="`/sbin/ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"


# Usage : [IPADDR] is system ip address include
       
case "$1" in
        start)
        echo -n "Starting ${IPADDR} TCP.IP Network Optimize..........................";
        echo;
        echo;
        # 브로드캐스트(Broadcast) 요청에 반응하지 않도록 설정
        eval 'sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1';
       
        # SyncFlooding 공격대응
        eval 'sysctl -w net.ipv4.tcp_max_syn_backlog=1280';
        eval 'sysctl -w net.ipv4.tcp_syncookies=1';
        # Proxy ARP 미설정
        eval 'sysctl -w net.ipv4.conf.eth0.proxy_arp=0';
        eval 'sysctl -w net.ipv4.conf.lo.proxy_arp=0';
        eval 'sysctl -w net.ipv4.conf.default.proxy_arp=0';
        eval 'sysctl -w net.ipv4.conf.all.proxy_arp=0';


        # TCP SYN Cookie 방어 설정
        eval 'sysctl -w net.ipv4.tcp_syncookies=1';


        # ICMP 리다렉트(REDIRECT) 차단 설정
        eval 'sysctl -w net.ipv4.conf.all.accept_redirects=0';
        eval 'sysctl -w net.ipv4.conf.lo.accept_redirects=0';
        eval 'sysctl -w net.ipv4.conf.eth0.accept_redirects=0';
        eval 'sysctl -w net.ipv4.conf.default.accept_redirects=0';


        # 부적합한 오류 메세지 로그기록 설정
        eval 'sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1';


        # IP 스푸칭(SPOOFING) 차단 설정
        eval 'sysctl -w net.ipv4.conf.all.rp_filter=1';
        eval 'sysctl -w net.ipv4.conf.lo.rp_filter=1';
        eval 'sysctl -w net.ipv4.conf.eth0.rp_filter=1';
        eval 'sysctl -w net.ipv4.conf.default.rp_filter=1';
       
        # 소스 라우팅(source routing) 패킷 거부 설정
        eval 'sysctl -w net.ipv4.conf.all.accept_source_route=0';
        eval 'sysctl -w net.ipv4.conf.lo.accept_source_route=0';
        eval 'sysctl -w net.ipv4.conf.eth0.accept_source_route=0';
        eval 'sysctl -w net.ipv4.conf.default.accept_source_route=0';


        # 스푸핑, 소스 라우팅 및 리다이렉트 패킷 로그기록 설정
        eval 'sysctl -w net.ipv4.conf.all.log_martians=1';
        eval 'sysctl -w net.ipv4.conf.lo.log_martians=1';
        eval 'sysctl -w net.ipv4.conf.eth0.log_martians=1';
        eval 'sysctl -w net.ipv4.conf.default.log_martians=1';


        # TCP/IP 네트워크 최적화
        eval 'sysctl -w net.ipv4.tcp_fin_timeout=30';
        eval 'sysctl -w net.ipv4.tcp_keepalive_time=180';
        eval 'sysctl -w net.ipv4.tcp_window_scaling=0';
        eval 'sysctl -w net.ipv4.tcp_sack=0';
        eval 'sysctl -w net.ipv4.tcp_timestamps=0';


        # BUFFER-SPACE 최적화 (RAM 2GB 이상일 경우)
        eval 'sysctl -w net.ipv4.tcp_mem=100000000';
        eval 'sysctl -w net.ipv4.tcp_wmem=100000000';
        eval 'sysctl -w net.ipv4.tcp_rmem=30000000';


        # BUFFER-SIZE 최적화 (RAM 2GB 이상일 경우)
        eval 'sysctl -w net.core.rmem_max=10485760';
        eval 'sysctl -w net.core.rmem_default=10485760';
        eval 'sysctl -w net.core.wmem_max=10485760';
        eval 'sysctl -w net.core.wmem_default=10485760';

        # TCP_MAX_BUCKETS 설정 (RAM 2GB 이상일 경우)
        eval 'sysctl -w net.ipv4.tcp_max_tw_buckets=2000000';


        # IP_LOCAL_PORT_RANGE 설정
       #eval 'sysctl -w net.ipv4.ip_local_port_range=32768 61000';


        # IPFRAG_HIGH_THRESH IPFRAG_LOW_THRESH 설정 (RAM 2GB 이상일 경우)
        eval 'sysctl -w net.ipv4.ipfrag_high_thresh=2069496';
        eval 'sysctl -w net.ipv4.ipfrag_low_thresh=2019432';


        # OPTMEM_MAX HOT_LIST_LENGTH 설정 (RAM 2GB 이상일 경우)
        eval 'sysctl -w net.core.optmem_max=10000000';
        #eval 'sysctl -w net.core.hot_list_length=102400';
        #
        ;;
        status)
        sysctl -a
        ;;
        *)
        echo "Usage: apache_optimizer.sh {start|status}"
        exit 1;
esac;
echo;
echo "......Done";
exit 0;

---------------------------------------------------------

chmod 700 LinuxKernelCustom.sh


./LinuxKernelCustom.sh start

./LinuxKernelCustom.sh status ->확인

Posted by 1010
61.Linux2008. 11. 27. 12:56
반응형

자동으로 x-windows 부팅설정 바꾸기

/etc/inittab 파일 내용중에.
id:5:initdefault 부분의 5를 3으로 바꿔 주시면 됩니다.

페도라 같은 경우에 한글이 깨지기 때문에.
/etc/sysconfig/i18n        
파일의
LANG="ko_KR.UTF-8" 부분을
LANG="ko_KR.eucKR" 이렇게 고쳐주면 한글이 깨지지 않습니다.

Posted by 1010
61.Linux2008. 11. 21. 18:25
반응형

출처 : http://kr.blog.yahoo.com/fast1004/1093
 
해외 리눅스 배포판
 
===== Mandrakelinux
맨드레이크 리눅스는 리눅스를 누구나 쉽게 사용할 수 있도록 1998년에 개발되었습니다. 그 당시, 리눅스는 전문적인 기술 지식과 많은 명령 라인 사용을 요구하는 강려갛고 안정된 운영체제로 알려져 있었습니다. 맨드레이크소프트는 이를 가장 좋은 그래픽의 데스크탑 환경을 통합하는 기회라 보았고, 맨드레이크소프트사 자체의 그래픽 설정 도구를 만들어, 용이성( easy-of-use )과 기능성에서 표준화하는데 유명하게 되었습니다.
맨드레이크 리눅스가 동작하는 시스템은 윈도우나 맥OS가 동작하는 시스템만큼 사용하기가 편리합니다. 이는 많은 IT출판물에 의해서 입증된 사실입니다. CNET(인기있는 온라인 기술 잡지)는 맨드레이크 리눅스 8.0에 "편집자 추천상"를 수상하면서 "새로운 사용자들, 특히 윈도우나 맥 OS대신에 새로운 운영체를 찾고자 하는 사람들에게는 리눅스 세계로 매끄럽고 쉬운 이전에 강한 힘을 전달해 줄 것이다"라 하였습니다.
 가장 이용할만 한 것으로 인식되는 그래픽 설치 과정으로, 맨드레이크 리눅스는 가장 진보적이고 효율적인 하드웨어 탐지 기능을 제공합니다. 명령 라인과 더불어 시스템 관리에 대한 그래픽 접근 방법은 맨드레이크 리눅스가 사용자의 인터페이스를 통합, 관리할 수 있는 운영체제를 만들게 해 주어 오직 명령 라인 또는 텍스트 모드로 리눅스 시스템을 다룬다는 이미지를 깰 수 있게 합니다. 이는 리눅스를 접해보지 않은 초보자라도 리눅스를 쉽게 사용할 수 있도록 해줍니다.
 
===== SUSE Linux
SuSE Linux는 독일에서 개발된 배포판이다. SuSE Linux 엔지니어링팀에 의해 테스트되어 그 가치와 유용성을 인정받은 1,300여개의 어플리케이션과 유틸리티를 가지고 있다. 설치가 용이하고 설치된 각 패키지를 한눈에 볼 수 있도록 구성된 것이 특징이다
 
===== Fedora Project
페도라(Fedora, 예전엔 Fedora Core라고 불렸다)는 레드햇에서 후원하는 페도라 프로젝트에서 개발한 RPM 기반의 리눅스 배포판이며, 개인과 기업의 다양한 컴퓨터 환경에서 사용될 수 있도록 만들어져 있으며, 특히 그래픽 기반의 설치 프로그램인 아나콘다와 시스템-환경설정 도구를 이용해 누구나 쉽게 운영체제를 설치할 수 있는 것이 특징이다. 페도라는 그놈과 KDE 환경을 모두 지원하고 있다. 현재 페도라의 주 목적은 자유 소프트웨어와 오픈 소프트웨어를 포함하는 것만 아니라, 그러한 기술들의 첨단을 이끌어 나가는 데에 있다.
페도라 코어는 시스템 관리자 및 개발자가 쉽게 사용할 수 있도록 데스크톱에서의 성능을 강화했을 뿐 아니라, 가상화 지원에도 초점을 맞췄다. 페도라 코어는 오픈 오피스와 같은 애플리케이션의 운영 시 기존 버전에 비해 눈에 띄게 향상된 성능을 지원한다. 또한, 기존 버전이 지원해왔던 x86, x86-64 및 파워 PC외에도 인텔 기반 맥을 지원하며, 새로운 GUI 가상화 관리 기능 또한 제공한다.

===== Red Hat
상용 리눅스 배포판 업체인 레드햇 소프트웨어 회사가 제공하는 레드햇 배포판은 가장 인기있는 배포판입니다. 버전별로는 7.0,7.2,7.3,8.0,9.0 등이 있으며 최근에는 페도라 코어1, 코어2 에서 코어버전 7까지 버전이 있습니다. 
레드햇은 엔터프라이즈는 상용 솔루션으로 비용을 주고 구입을 해야 하지만 페도라 코어 버전은 누구나 다운로드 받아 사용할수 있습니다..가장 많은 사용자를 확보하고 있는 리눅스 배포판중에 하나입니다.
레드햇 배포판은 “RPM”유틸리티를 사용하여 쉽게 패키지를 업그레이드하거나 관리할수 있는 기능을 제공하며 X 윈도우 시스템을 위한 GUI 윈도우 관리자로 인기 있는 GNOME 과 KDE 를 동시에 제공합니다. 이 배포판은 인텔과 알파 그리고 스팍 버전이 있습니다.
 
===== Ubuntu Linux
기존 리눅스는 서버에 강한 면모를 보였지만 우분투 리눅스는 일반 사용자가 데스크톱 PC를 쉽게 활용할 수 있도록 초점이 맞춰진 것으로 많은 분의 노력에 의해 리눅스 배포본 가운데 꽤나 유명해진 상태다.
 하지만 그런 우분투 리눅스도 데스크톱 PC까지만 영향력을 발휘했을 뿐 휴대기기 쪽에는 채용되지 못 하거나 채용되어도 제한적인 활용에 머물렀다. 그러나 UMPC와 미니노트북의 대거 등장과 함께 우분투의 휴대기기용 버전, 이른바 우분투 모바일 프로젝트가 시작되면서 새로운 전환기를 맞게 됐다. 특히 인텔 아톰 기반의 미니노트북과 MID가 대거 등장하면서 이들 기기에서 윈도를 대체할 수 있는 유력한 OS로 주목받고 있다.

===== Knoppix
크노픽스는 CD-ROM에서만 실행되는 데미안 리눅스를 기반으로 한 특수한 배포판입니다. BartPE 또는 WinPE의 리눅스 버전으로 생각하면 쉽습니다
 크노픽스의 가장 큰 장점은 씨디에서만 실행되므로, 별도로 하드디스크에 설치할 필요가 없다는 것입니다. 따라서 하드디스크에 설치된 기존의 윈도우 시스템을 그대로 유지할 수 있으며 리눅스 설치시의 번거로운 설정과 시간 소모를 피할 수 있습니다. 크노픽스를 사용하면 리눅스에 처음 입문하는 사용자라도 손쉽고 편리하게 리눅스 시스템을 맛볼 수 있습니다. 그저 씨디롬으로 부팅만 하면 되기 때문입니다.
 또한 크노픽스는 GPL(General Public License)를 따르는 공개 프로그램으로써 개인, 기업, 관공서 등 누구나 제약없이 자유롭게 사용할 수 있습니다. 크노픽스에서 한가지 흥미로운 것은 828MB이상의 메모리를 장착한 컴퓨터에서는 완전히 램에 복사하여 실행할수 있다는 것입니다. 즉 700메가는 크노픽스 씨디를 업로딩하는데 쓰고 나머지 128MB는 응용프로그램과 작업결과 저장을 위한 여유공간으로 사용합니다. 이렇게 램에서만 실행되는 크노픽스는 환상적인 실행속도를 제공합니다. 또한 씨디롬을 계속 사용할 수 있다는 장점도 있습니다.
 
===== Damn Small Linux
50MB로 매우 작은 크기의 리눅스. 별도의 설치가 필요없이 CD에서 바로 부팅한다.
커널 및 기타 패키지 모두 포함해서 용량이 50MB도 안되는 리눅스이다. 별도의 설치없이 CD에서 리눅스를 불러오는 LIVE CD형태이다. GUI를 지원하며, 기본적인 워드와 기타 프로그램이 포함되어 있다. 네트워크 설정이 가능하고, 브라우저도 포함되어 있다. 웹서핑, FTP, 문서작성, 동영상 재생(모든 코덱 지원), 음악감상 등의 기능이 있다. 최소사양이 486이상, 램 16M이상이다. 램이 128MB이면 가장 빠른 속도를 낼 수 있다.
 
===== Slackware
 슬랙웨어 배포판은 월넛 크리크 소프트웨어사의 패트릭 폴커딩에 의하여 제공합니다. 패트릭 폴커딩은 현재와 같은 리눅스 배포판의 원조에 해당하는 사람입니다. 설치과정은 간단하지만 업그레이드와 패키지 관리 기능은 취약합니다. 여전히 libc 라이브러리에 기반하고 있습니다. 이 배포판은 리눅스에 친숙하고 기술이 뛰어난 사람들어게 추천할만 합니다. 버전은 인텔 버전만 있습니다.

===== Debian
 데비안 배포판은 “The Debian Project”로 알려진 비영리기구가 제공하는 것이며 오픈소스 진영에서 인기가 있습니다. 이 배포판도 “dpkg” 유틸리티를 이용한 쉬운 업그레이드와 패키지 관리기능을 제공합니다. 이배포판도 인텔, 알파, 스팍,모토롤라용 버전이 나와 있습니다.
 
===== CentOS
레드햇 엔터프라이즈 복제본으로 소스코드를 이용하여 RHEL을 재생산해 내려는 시도로 지금까지 5.0버전이 출시되었습니다. 이것또한 무료로 제공되고 있는 배포판이라 많은 사람들이 사용하고 있습니다. 물론 레드햇 계열에 익숙해 있는 사용자들이 엔터프라이즈 버전과 유사하다는 이유로 사용합니다.
국내 리눅스 배포판
 
===== 한컴리눅스
꽤 많은 사용자를 확보하고 있으며 서버 환경과 데스크탑환경을 각각 따라 패키지하여 판매하고 있으며 지금 한컴OS 4.1  까지 나와 있습니다.
아무래도 국내에서 만들었기 때문에 한글 호환성 문제라든지 기타 사용자의 의견이 많이 반영 되지 않았나 싶습니다.  최근에는 아시아눅스로 한국·중국·일본의 대표 리눅스 기업인 Red Flag, Miracle Linux, 한글과컴퓨터가 공동으로 개발하는 Asianux 프로젝트의 산출물로, 세계 3대 리눅스 배포판을 주력으로 하고 있습니다.
 
===== 와우리눅스
‘파란(Paran)’이란 이름으로 7.1 릴리즈를 계기로 제대로된 한글 배포판을 개인과 기업과 학교에 배포하기 위하여 명명하였으며 현재까지 7.3 파란 릴리즈3으로 리눅스 서버로서 가장 알맞은 사양인 하드웨어, 다양한 옵션을 가지고 보다 편리한 리눅스 서버 환경을 위해 만들어 졌습니다. 최근엔 잘 보이지 않더군요..지금은 예전 도메인도 링크가 되질 않고 있군요..
 
===== SU리눅스
리눅스 포털을 이끌고 있는 수퍼유져코리아에서 배포하는 리눅스로써 지금까지 1.0버전과 1.5버전이 있습니다. 이 배포판의 최대 장점이라고 하면 서버용도로만 사용할수 있도록 우선 한장의 CD에 담았으며 용량이 작게 사용할수 있다는 점입니다. 그리고 관련 유틸리티들을 직접 만들어 패키지화 하여 초보자도 쉽게 스크립트를 이용하여 설치할수 있도록 하였습니다.
특히 서버용 유틸리티와 APM 연동할수 있는 스크립트등은 많은 초보자로 하여금 쉽게 리눅스에 접근 할수 있도록 하였습니다. 또한 최근 1.5버전에서는 웹해킹에 대응하여 mod_security 를 탑재하여 핸들링 할수 있도록 패키징한게 특징입니다.
 
이 외에도 다양한 리눅스 들이 지금 이순간에도 만들어 지고 사라지고 반복중...

* 최종수정일 : 2008.11.06 <14:21>

Posted by 1010
61.Linux2008. 11. 13. 13:18
반응형

본 내용은 슈퍼유저코리아(http://www.superuser.co.kr)에서 발췌ㅤ한 내용으로 약간의 수정을 하였습니다.

우선 설치되어 있는지 확인합니다.
rpm -qa | grep vsftpd

설치되어 있지 않을 경우 아래와 같이 설치합니다.

1. 설치
    yum install vsftpd (Redhat은 설치파일을 다운로드 받는데 Fedora는 정말 편하네요)

2. 설정
    FTP서비스 시작 : /etc/rc.d/init.d/vsftpd start
    FTP서비스 종료 : /etc/rc.d/init.d/vsftpd stop
    부팅시 자동 실행 : chkconfig vsftpd on
    설정파일 : /etc/vsftpd/vsftpd.conf
   
    01) 아스키 모드로 설정하려면
         ascii_download_enable = YES
         ascii_upload_enable = YES
         로 설정합니다.
    02) 쉘권한이 없는 사용자들이 FTP를 사용하게 하려면..
         /etc/pam.d/vsftpd 파일 4번째줄 앞에 # 을 입력하여 주석처리합니다.
         #%PAM-1.0
         auth     required    pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers
         onerr=succeed
         auth     required    pam_stack.so service=system-auth
         #auth    required    pam_shells.so
         account    required    pam_stack.so service=system-auth
         session    required    pam_stack.so service=system-auth

    03) home디렉토리 상위로 이동금지
         chroot_list_enable=YES
         chroot_local_user=YES
         설정후 접속할 때 /etc/vsftpd.chroot_list 파일이 없다는 오류가 발생하게 되면, 해당파일을
         생성해줍니다. 제외계정명을 해당파일에 넣어줍니다.
  
    04) 숨김파일을 보이게 하려면..(서버상에서 설정)
         보통 파일명이나 폴더명앞에 "."이 있는경우 숨김파일로 됩니다. 이를 보이도록 설정합니다.
         force_dot_files=YES

    05) FTP접속시 소유권숨기기
         hide_ids=YES

    06) ls -R 명령 허용하기
         ls_recurse_enable=YES
 
    07) openssh에 chroot패치된것을 같이 사용하기
         passwd_chroot_enable=YES

    08) 시간이 잘못 표현될 때
         use_localtime=YES

    09) 전송속도를 제한할 때
         local_max_rate=300000  (숫자의 단위는 Bytes/Sec)

    10) 동시 접속자수 제한
         max_clients=10  (숫자만큼 제한)

    11) IP당 접속자수 제한
         max_per_ip=2 (수자만큼 제한)

    12) PASSIVE모드 사용시 포트 범위 제한
         PASSIVE모드는 일반 20번 포트를 방화벽때문에 사용하지 못할때 사용하는 모드입니다.
         pasv_min_port=40000
         pasv_max_port=50000
         (40000 ~ 50000 으로 PASSIVE포트 제한)
 
    13) 확장자의 업로드 금지
         deny_file={*.확장자,*.확장자}

    14) 특정파일 숨기기
         hide_file={*.확장자,.hide,hide*.h?}
Posted by 1010
61.Linux2008. 11. 12. 15:22
반응형

보안서버 SSL 

먼저 Apache와 mod_ssl의 버전을 확인 후에 알맞은 openssl 을 설치해야 합니다. 해당 정보는 www.openssl.org , www.modssl.org 에서 확인 하실 수 있습니다. 알맞는 버전을 확인 후 해당 사이트에 소스를 다운로드 합니다.

보안서버 SSL

1. openssl 설치

[root@smson openssl-0.9.8]# tar xvfz openssl-0.9.8.tar.gz
[root@smson openssl-0.9.8]# ./config --prefix=/usr/local --openssldir=/usr/local/openssl
[root@smson openssl-0.9.8]# make; make install
[root@smson openssl-0.9.8]# ls -al /usr/local/openssl/
total 36
drwxr-xr-x    6 root     root         4096 Oct 29 00:08 .
drwxr-xr-x   24 root     root         4096 Oct 29 00:07 ..
drwxr-xr-x    2 root     root         4096 Oct 29 00:08 certs
drwxr-xr-x    6 root     root         4096 Oct 29 00:07 man
drwxr-xr-x    2 root     root         4096 Oct 29 00:08 misc
-rw-r--r--    1 root     root         9381 Oct 29 00:08 openssl.cnf
drwxr-xr-x    2 root     root         4096 Oct 29 00:08 private


2. mod-ssl 모듈 Apache 소스에 설정

[root@smson work]# tar xvfz mod_ssl-2.8.24-1.3.33.tar.gz
[root@smson work]# cd mod_ssl-2.8.24-1.3.33
[root@smson mod_ssl-2.8.24-1.3.33]# ./configure --with-apache=../apache_1.3.33 --with-ssl=../openssl-0.9.8 --prefix=/usr/local/apache-ssl

* MaxClients 값을 튜닝하기 위해 아래와 같이 HARD_SERVER_LIMIT 값을 수정한다.
[root@ihelpers apache_1.3.33]# vi src/include/httpd.h
#define HARD_SERVER_LIMIT 1024


3. Apache 설치

[root@smson apache_1.3.33]# export SSL_BASE=../openssl-0.9.8
[root@smson apache_1.3.33]# ./configure --prefix=/usr/local/apache-ssl --enable-module=so --enable-rule=SHARED_CORE  --enable-shared=max --enable-module=ssl  --enable-shared=ssl  --enable-module=rewrite  --enable-shared=rewrite  --enable-module=expires  --enable-shared=expires
[root@smson apache_1.3.33]# make
[root@smson apache_1.3.33]# make certificate  -- 테스트인증서 생성시 필요(생략해도 큰 문제 없음)
[root@smson apache_1.3.33]# make install

보안서버 SSL

4. 설정

보안서버 SSL

보안서버 SSL의 경우는 헤더도 암호화가 되므로 일반적인 웹사이트 설정처럼 443 포트를 공유할 수 없기에, 다른 도메인에 대한 추가 설정 시에는 443 포트가 아닌 다른 포트를 사용해야 합니다. 이와 같은 이유로 많은 도메인에 대한 설정이 필요할 경우는 Wildcard SSL 또는 Multi-Domain SSL 인증서를 고려해 보는 것이 좋습니다.

아래는 현재 저희가 설정하여 사용하고 있는 설정값 예 입니다.

[root@smson conf]# vi httpd.conf

DocumentRoot "/data1/wwwroot/analysis/html"
ServerName analysis.wsos.co.kr
ServerAdmin root@smson
ErrorLog /dev/null
TransferLog /dev/null
CustomLog /dev/null common

SSLPassPhraseDialog  exec:/usr/local/apache-ssl/conf/ssl/pw.sh

SSLLog      /var/log/ssl_engine_log

SSLCertificateFile $path/analysis_wsos_co_kr.crt
SSLCertificateKeyFile $path/analysis_wsos_co_kr.key
SSLCACertificateFile $path/analysis_wsos_co_kr.ca-bundl



5. 실행

보안서버 SSL

아래와 같이 '-DSSL' 로 SSL 보안서버 모드로 실행된 것을 확인 하실 수 있습니다.  일반 웹서비스는 'start' 옵션으로 실행하시면 됩니다.  실행 시에 비밀번호 자동입력 및 부팅시 자동실행과 같은 내용은 아래 내용을 참고하여 주십시오.

보안서버 SSL


6. 참고

Posted by 1010
61.Linux2008. 11. 12. 15:21
반응형

보안서버를 구축하게 되면 아래와 같이 구동 시에 비밀번호를 입력해야 합니다. 이때 간단한 설정으로 자동으로 비밀번호를 입력할 수 있습니다.

가. 비밀번호 자동 입력

[root@smson bin]# ./apachectl startssl
[Thu Oct 30 15:18:43 2008] [alert] httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Apache/1.3.33 mod_ssl/2.8.24 (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 analysis.wsos.co.kr:443 (RSA)
Enter pass phrase:

Ok: Pass Phrase Dialog successful.
./apachectl startssl: httpd started

[root@smson ssl]# vi pw.sh
#!/bin/sh
echo "password"
[root@smson ssl]# vi /usr/local/apache-ssl/conf/httpd.conf
<IfModule mod_ssl.c>
#   Pass Phrase Dialog:
#   Configure the pass phrase gathering process.
#   The filtering dialog program (`builtin' is a internal
#   terminal dialog) has to provide the pass phrase on stdout.
#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog  exec:/usr/local/apache-ssl/conf/ssl/pw.sh

 나. 부팅시 자동 시작

 리눅스가 부팅 할때 /etc/rc* 에 있는 파일들을 실행합니다. rc 뒤에 붙은 숫자는 run level을 뜻합니다. 리눅스는 부팅 시에 run level을 지정할 수 있는데 일반적인 작업에서 사용되는 run level은 3입니다. 아래와 같이 간단한 스크립트를 작성하여 링크를 시켜 주시면 됩니다.

[root@smson bin]# cat apachectlstartssl
#!/bin/sh
/usr/local/apache-ssl/bin/apachectl startssl
[root@smson bin]# cd /etc/rc
rc          rc1.d       rc3.d       rc5.d       rc.d        rc.sysinit 
rc0.d       rc2.d       rc4.d       rc6.d       rc.local   
[root@smson bin]# cd /etc/rc3.d/
[root@smson rc3.d]# rm -rf S99apache
[root@smson rc3.d]# ln -s /usr/local/apache-ssl/bin/apachectlstartssl S99apache
[root@smson rc3.d]# ls -al
total 12
drwxr-xr-x    2 root     root         4096 Oct 30 17:50 .
drwxr-xr-x   10 root     root         4096 Oct 30 17:30 ..
lrwxrwxrwx    1 root     root           15 Jun 17  2005 K03rhnsd -> ../init.d/rhnsd
...
lrwxrwxrwx    1 root     root           43 Oct 30 17:50 S99apache -> /usr/local/apache-ssl/bin/apachectlstartssl
lrwxrwxrwx    1 root     root           41 Jun 17  2005 S99mysql -> /usr/local/mysql/share/mysql/mysql.server
[root@smson rc3.d]#
Posted by 1010
61.Linux2008. 11. 12. 15:20
반응형

1. 개인키 생성

개인키 생성

개인키는 1024bit 로 생성하는 것이 좋습니다. 기본값은 512bit 입니다. 개인키 분실시에는 인증서를 재발급 받아야 하기에 잘 백업해 두어야 한다.


2. 인증요청서( CSR ) 생성

CSR( Certificate Signing Request )은 SSL 서버를 운영하는 회사의 정보를 암호화하여 인증기관으로 보내 인증서를 발급받게 하는 일종의 신청서입니다. CSR은 ASCII 텍스트 파일로 생성됩니다. CSR을 생성할 때 서버의 식별명을 입력하게 됩니다.식별명은 각 서버를 공유하게 나타내는 이름으로 다음과 같은 정보를 포함합니다.

CSR 생성

주의사항

  • Common Name 에는 인증서를 설치할 사이트의 도메인의 이름을 정확하게 입력하셔야 합니다.
  • Common Name 에는 IP 주소, 포트번호, 경로명, http:// 나 https:// 등은 포함할 수 없습니다.
  • CSR 항목에는 < > ~ ! @ # $ % ^ * / \ ( ) ? 등의 특수 68 문자를 넣을 수 없습니다.
  • CSR 생성 후 서버에 개인키 (Private Key) 가 생성됩니다. 개인키를 삭제하거나 분실할 경우 인증서를 발급 받아도 설치가 불가합니다. 따라서 꼭 개인키를 백업 받아 두셔야 합니다.
  • 정보입력과정 마지막에 나오는 A challenge password 와 An optional company name 두 항목은 입력하지 마시고 Enter 만 누르고 넘어가야 합니다. 두 정보가 입력될 경우 잘못된 CSR 생성될 수 있습니다.


3. 테스트 인증서 생성 및 웹서버에 설정

SSL 테스트 인증서

테스트 인증서를 생성 후 웹서버에 아래와 같이 개인키와 인증서를 설정해 주신 후 재 시작 합니다.

인증서 설정


4. 웹브라우저에서 확인

보안경고

공인된 인증기관에서 발급되지 않은 인증서의 경우는 사용자가 처음 요청시에 위와 같이 '보안경고' 창을 노출합니다. 브라우저 하단 또는 상단의 열쇠모양의 아이콘을 클릭하여 인증서를 확인 하실 수 있습니다.

인증서 확인


5. 인증서 신청 및 발급

위에서 생성된 CSR 파일을 보면 base64 형식의 내용을 확인 하실 수 있습니다. 이문서의 첫 줄 -----BEGIN … 부터 마지막 줄 -----END … 까지 복사하여 지정된 SSL 접수페이지에 복사하여 붙여 넣은 뒤 입력정보와 함께 전송하면 접수가 완료됩니다.

대부분의 업체가 이메일을 통해 인증서를 수신하게 되는데, 보통 도메인인증파일과 루트인증파일 두 개를 압축해서 전달합니다.
인증서를 해당 서버에 저장 후 httpd.conf 파일에 설정해 주시면 됩니다.

국내구분 외산 국산
명칭 Comodo TrustSSL thwate VeriSign KICA
가격 40,000 300,000 240,000 440,000 120,000

SSL 인증서의 경우 가격이 저렴하다고 해서 SSL 보안서버의 성능이 떨어지거나 신뢰도가 낮은 것은 아닙니다. 가격은 브랜드 인지도, 로열티, 취급수수료에 의해 결정이 됩니다. 도메인 주소가 업체별로 차이가 있는 것과 동일하다고 생각하시면 됩니다. 각 업체별로 다양한 상품이 있는데, 값비싼 상품일수록 책임보험료가 높게 책정되어 있습니다. 문제가 발생 시에 발급기관에서 문제 발생 시에 책정된 보험료를 해당 사이트 사용자에게 보상을 해 주는데, 회원수가 많거나 회원들의 중요정보를 취급하는 경우가 아니고서는 비싼 상품을 선택할 필요는 없습니다.

내부의 서비스 운영 형태에 따라서 Wildcard 또는 Multi-Domain 인증서를 사용하시면 됩니다.  최근에는 해당 호스팅업체에서도 리셀러 방식의 판매대행을 하고 있고 가격도 더 저렴하기에 현재 서비스를 받고 있는 업체에 문의해 보는 것도 좋은 방법인 것 같습니다.


6. 인증서 확인

인증서 확인


7. 기타

보안경고

"보안경고창"은 해당 페이지 소스 내 오브젝트중에 https:// 가 아닌 http:// 로 절대경로가 지정된 것이 있어서 그렇습니다. 이를테면 웹페이지의 이미지 경로를 다른 도메인의 것을 사용했을 때, 해당 요청이 https 아닌 http라서 보안이 안 되는 요청이 있다는 경고창입니다.

HTTP 암호화

HTTP 패킷을 보았을 때 관련 정보가 암화화 된 것을 확인 하실 수 있습니다.

8. 참고


Posted by 1010
61.Linux2008. 10. 20. 23:27
반응형
* FAT16(File Allocation Table 16)
FAT16은 도스(DOS)에서부터 사용하던 파일 시스템으로 최대 2GB 이상의 파티션은 인식하지 못하기 때문에 고용량의 하드 디스크 드라이브에는 적합하지 않은 파일 시스템이라고 할 수 있다.
또 클러스터의 크기도 파티션의 용량에 따라 정해져 있기 때문에 파티션의 크기가 2GB 일 경우에는 64KB로 클러스터의 크기가 설정된다. 예를 들어 65KB 크기의 파일을 저장할 때는 부득이 하게 두 개의 클러스터를 써야 한다. 64KB 와 1KB를 저장하고 남은 63KB 의 빈공간은 사용할 수 없게 된다. 이렇게 사용할 수 없는 공간을 슬랙 이라고 한다. 하드 디스크 드라이브의 슬랙이 많이 발생하면 사용하지 못하는 공간이 많아져 실질적인 데이타 저장량이 감소하여 효율면에서 단점이라고 할 수 있다.
FAT16 환경에서 이런 문제를 극복하기 위해 파티션의 크기를 줄여서 사용하는 경우가 있지만 이렇게 되면 큰 용량의 파일을 저장하는데 어려움이 있다. 그래서 FAT16의 이런 단점을 개선하여 FAT32 파일 시스템을 선보였다.

* FAT32(File Allocation Table 32)
FAT32는 현재 가장 많이 사용하고 있는 파일 시스템이라고 할 수 있다. 윈도우 95 OSR2에서 부터 사용된 파일 시스템으로 기존의 FAT16의 파티션 용량의 한계와 클러스터의 크기를 개선한 파일시스템이다. 이 파일 시스템은 2GB 이상의 파티션 용량을 지원하고 있으며 클러스터 당 크기도 최소 4KB로 감소시켜 하드 디스크의 효율면에서 많은 발전을 가져왔다. 대용량의 하드 디스크의 출시에도 많은 영향을 주었다고 볼 수 있다.

* NTFS(New Technology File System)
NTFS는 윈도우NT와 같은 서버 운영체제에서 주로 사용된다. 윈도우2000이나 XP에서는 NTFS 5.0이 사용되고 이전 버전에서는 NTFS 4.0이 사용됐다. NTFS는 윈도우 9X(95,98, Me) 계열에서는 사용할 수 없다.
파티션의 크기는 제한이 없으며 클러스터의 크기도 512Byte 에서 64KB 까지 다양하게 지원해 하드 디스크의 용량을 효율적으로 사용할 수 있는 장점이 있다. 하지만 클러스터의 크기는 한 번 정하면 변경할 수 없는 점에 주의해야 한다.
NTFS 파일시스템의 가장 큰 장점은 보안성 면에서 매우 우수한 기능을 제공한다는 것이다. 윈도우 98의 경우 네트워크 상에서는 어느 정도 자기 컴퓨터에 대한 보안 환경을 구축할 수 있지만 직접 자기 컴퓨터를 엑세스하는 경우에 대한 보안 대책은 미비했다. NTFS의 경우 각 폴더와 파일에 접근 권한을 줄 수 있으며 서버 관리자의 경우에는 각 클라이언트가 사용할 수 있는 하드 디스크의 용량의 제한이 가능하며 접속하는 클라이언트들에 대해 그룹별로 접근 권한을 다양하게 적용할 수 있어 보안면에서 매우 우수한 편이다.
디스크 오류를 자동으로 복구해주는 기능의 채택으로 NTFS는 안정성이 우수해 중요한 데이터의 손실을 감소시켜 서버급의 대용량 컴퓨터에서 많이 사용하고 있다. 일반 개인 사용자들의 경우에도 NTFS 포맷을 사용하는 분들도 많이 있는 것으로 알고 있다.
NTFS 는 이렇게 유용한 기능도 많지만 네트워크로 연결되어 있는 경우나 윈도우 98과 2000과 같이 서로 다른 파일 시스템을 사용해 멀티 부팅 환경을 만들 경우, 파티션별로 데이터의 이동이 많을 경우에는 NTFS보다는 FAT32 시스템을 사용하는 것이 유리하다고 볼 수 있다.

* ext
리눅스 초기 사용되던 파일 시스템으로 호환성이 없던 ext2의 구 버전이다. 지금은 대부분 사용하지 않는다.

* ext2
현재 가장 많이 사용하는 파일 시스템으로 리눅스 파일 시스템 대부분의 기능을 제공하는 파일시스템이다. 뛰어난 안전성과 속도로 사랑받고 있는 파일 시스템이다. 쉽게 호환되며, 업그레이드도 쉽게 설계되어 있다.
ext2는 파일의 데이터와 메타-데이터(파일의 위치,크기,소유자,접근 권한 등의 파일과 관련된 데이터)를 동시에 저장하지 않는 비동기식 파일시스템이다.
비동기식 파일시스템은 메타-데이터를 파일의 내용 자체를 저장할 때 저장하는 것이 아니라, 메모리에 두었다가 일정한 시간 간격을 두고 저장한다. 이런 메카니즘을 이용하면 성능상의 이점이 있으나 비동기식 파일시스템을 가진 운영체제는 일정 횟수만큼 파일시스템을 마운트 했다거나, 갑자기 시스템이 다운될 경우에 재부팅하는 과정에서 무결성을 검사하기 위해 상당한 시간을 소비한다. 인터넷을 통해 어떤 중요한 서비스를 하는 서버나 개인이 사용하는 시스템에게 있어서 오랫동안 시스템이 접속 불능 상태로 방치되고 데이터의 일부가 손상되는 것은 매우 심각한 문제이다.

* ext3
데이터베이스에서 쓰이는 저널링 기술을 적용한 저널링 파일 시스템이다.
저널링 파일 시스템은 일정부분을 기록을 위해 남겨두어, 백업 및 복구 능력이 있는 파일 시스템을 말하며, 시스템 크래쉬 후에 파일 시스템 복구에 드는 시간이 아주 적다.
저널링 파일 시스템은 사용자가 데이터를 입력 또는 수정하면 그 데이터를 바로 하드디스크에 기록하기 전에 관련 데이터를 로그에 기록한다. 만약 기록 중에 가장 빈번하게 발생하는 문제인 정전이나 기타 다른 이유로 인하여 비정상적인 종료를 하게 되면 다시 부팅할 때 로그에 기록된 데이터를 참고로 하여 다시 작성하거나 복구하게 된다.
저널링 파일 시스템의 장점은 서버에서는 다양한 데이터를 빈번하게 기록하고 수정한다. 이런 방식은 수많은 사용자들이 입력하고 수정하는 데이터가 예기치 못한 사고로 인하여 시스템이 다운되더라도 복구할 수 있는 확률이 기존의 ext2 시스템보다 상당히 높다.
시스템 재부팅시, 기존 ext2 시스템에서 보여주는 fsck(file system check)의 오랜 복구 시간은 파일 시스템의 용량이 기가 바이트에서 테라 바이트급으로 발전하고 있는 시점에서 리눅스의 감점 요인이 될 수 있다는 것도 고려해 보아야 할 요소 중의 한가지일 것이다. 물론 이것은 개인 사용자들의 컴퓨터 시스템의 저장 용량도 점점 더 대용량화 되어가는 현 상황에도 부합된다고 할 수 있다.

* minix
과거 Minix에서 사용되었던 파일 시스템으로 가장 오래되고 기본이 되는 파일 시스템이라 하지만 몇 가지 제한이 있다. 우선 몇몇 Time Stamp가 유실되고, 파일 이름은 30문자로 제한된다. 파일 시스템마다 최대 64MB 성능 제한이 있다.
대부분의 배포판의 부팅 디스크는 보통 Minix 파일 시스템으로 구성되어 있다.

* xiafs
minix의 제한이었던 파일 이름과 파일 시스템에 대한 제한을 보완한 minix 파일 시스템의 수정 버전이다.
한때 ext2와 함께 많이 사용되던 파일 시스템이었으나 현재는 많이 사용되지 않는다.

* msdos
MS-DOS의 FAT 파일 시스템과 호환을 지원하는 파일 시스템이다.
또한 msdos는 OS/2와 윈도우 NT의 FAT파일 시스템과도 호환된다.

* hpfs OS/2
OS/2의 파일 시스템이다. 하지만 현재는 읽기 전용인 파일 시스템으로 파일 시스템에 대한 읽기 만이 가능하다.

* isofs CD-ROM
ISO 기준을 따르는 표준 CD-ROM의 파일 시스템이다. isofs CD-ROM는 CD-ROM에 좀 더 긴 파일명을 사용할 수 있도록 확장된 록 브리지(Rock Bridge)가 기본으로 지원된다.

* umsdos
ms-dos 파일 시스템을 리눅스상에서도 긴 파일명과 소유자, 접근허가, 링크와 장치 파일 등을 사용할 수 있도록 확장한 파일 시스템이다. umsdos는 일반적으로 DOS 파일 시스템이 마치 리눅스 파일 시스템인 것처럼 보이도록 하는 기능을 제공하므로 따로 리눅스를 위한 파티션을 필요하지 않는다.

* nfs
네트워크 파일 시스템 (Network File System) 네트워크 상의 많은 컴들이 각각의 시스템에 가진 파일들을 서로 쉽게 공유하기 위해 제공되는 상호간의 공유 파일 시스템이다.

* sysv
System V/396, Xenix 그리고 Coherent의 파일 시스템이다.

* UFS(Unified File System)
일반적으로 유닉스에서 많이 사용되는 파일 시스템으로 버클리 패스트 파일 시스템(Berkeley Fast File system)에서 발전된 파일 시스템이다. 기본적으로 UFS 파일 시스템은 inode, 디렉토리와 데이터 블록으로 구성된다.
Posted by 1010
61.Linux2008. 10. 6. 17:31
반응형

fdisk /dev/sda

The number of cylinders for this disk is set to 4462.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sda: 36.7 GB, 36703934464 bytes
255 heads, 63 sectors/track, 4462 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          16      128488+  83  Linux
/dev/sda2              17         147     1052257+  82  Linux swap
/dev/sda3             148        4462    34660237+  83  Linux

Command (m for help): q

위에서 진한글씨가 명령어구요

주홍색 글씨가 용량이죠^^;

참고로 파티션 정보를 확인해 보세요~~

Posted by 1010
61.Linux2008. 10. 2. 11:43
반응형

서버점검사항
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. 파일무결성 점검.

    
http://weblog.websea.co.kr/tripwire/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.websea.co.kr/

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 .shtml

27. 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 점검.

28. Chkrootkit 로 백도어 점검.

   tar -xvzf chkrootkit.tar.gz
   make sense
   ./chkrootkit     (점검명령어)

29 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

30. Nmap를 이용 포트스켄 하여 해킹가능성 체크.

   nmap -sS -p80 211.42.48.110 -O -v www.armian.net
   nmap -sS -O -v 211.42.48.114

출처 :
http://blog.empas.com/jjh7266/2886273 망구블로그
Posted by 1010
61.Linux2008. 8. 12. 17:08
반응형

사용자 생성 및 계정 관리

1. 계정 조회

현재 시스템에 로그인된 사용자 계정을 조회 / 사용자 계정에 대한 정보를 확인

          cat –n /etc/passwd

                      root  :  x  :  o  :  o  :  root  :  /root  :  /bin/bash

                        1    2    3    4      5        6          7

                                    1 : 사용자명
                                    2 : 패스워드 (/etc/shadow 파일에 암호화되어 있음)
                                    3 : 사용자 계정 uid
                                    4 : 사용자 계정 gid
                                    5 : 사용자 계정 이름 정보
                                    6 : 사용자 계정 홈 디렉토리
                                    7 : 사용자 계정 로그인 셀

 

            cat –n /etc/shadow

                          root  :  #$%!234^x13  :  11535  :  o  :  99999  :  7  :  :  :  :

                            1            2            3      4      5      6  7  8  9

                                        1 : 사용자명
                                        2 : 패스워드
                                        3 : 패스워드 파일 최종 수정일
                                        4 : 패스워드 변경 최소일
                                        5 : 패스워드 변경 최대일
                                        6 : 패스워드 만료 경고 기간
                                        7 : 패스워드 파기 기간 (패스워드 파기 후 계정 비활성 기간)
                                        8 : 계정 만료 기간
                                        9 : 예약 필드


2. 계정 생성 및 암호 설정

useradd  생성할 계정명

passwd  생성한 계정명

useradd [옵션] 로그인 계정

            -c comment : 사용자 이름 또는 정보
            -d home_directory : 사용자 계정 홈 디렉토리
            -e expire_date : 사용자 계정 유효 기간
            -f inactive_time : 비활성 기간
            -g initial_group : 기본 그룹
            -G grout : 다음 그룹
            -s shell : 기본 로그인 셀
            -u uid : 사용자 계정 uid

 
3. 계정 변경

usermod [옵션] 로그인 계정

-c comment : 사용자 이름 또는 정보
-d home_directory : 사용자 계정 홈 디렉토리
-e expire_date : 사용자 계정 유효 기간
-f inactive_time : 비활성 기간
-g initial_group : 기본 그룹
-G grout : 다음 그룹
-s shell : 기본 로그인 셀
-u uid : 사용자 계정 uid

                      usermod –d /home/user –m user
                      usermod –e 2003-04-05 user
                      usermod –f 3 user
                      usermod –g users user


4. 계정 삭제

userdel –r 계정 (-r : 해당 계정자의 홈디렉토리까지 한 번에 삭제)

 
5. 그룹조회

cat –n /etc/group

 
6. 그룹생성

groupadd [-g GID [-o]]            그룹 id (-o : GID 499이하 값으로 지정)

                      [-r]                    그룹 id 499이하 값으로 자동 지정
                      [-f]                    강제로 생성

                          groupadd –g 900 toheart (900 – groupid / toheart – 그룹명)

 
7. 그룹변경

groupmod [-g gid [-o]]            gid변경

                        [-n]                    새로운 그룹명으로 변경

                                    groupmod –g 700 toheart
                                    groupmod –n kkum toheart


8. 그룹삭제

groupdel group            group 제거

출처 : http://cafe.naver.com/frody.cafe?iframe_url=/BoardRead.do%3Farticleid=11

Posted by 1010