리눅스에서 날짜/시간 변경은 다음과 같다.

 

>date 010302132009

 

# 01월 03일 02시 13분 2009년의 순서다...

[SPLIT ] 

하나의 큰파일을 나누기 ----------------------------------------------------- 

   - 덩치 큰 백업(tgz)파일을 특정용량으로 나누기 
      ( CD 제작  또는  용량이 큰 파일를 ftp, wget 전송시 사용) 

ex)  split   -b   사이즈   백업된화일   머릿말 
ex)  split -b 650m  bigsize.tgz small_ 
      - 설명 bigsize.tgz 파일를 650Mb 크기의 small_aa,small_ab,small_ac 
        식으로 생성한다             
      

나워기 파일을 합치기 ------------------------------------------------------- 

ex)  cat  나뉜화일1  나뉜화일2   >   화일이름 
ex)  cat  small_aa small_ab small_ac  >   bigsize.tgz 
      - 나뉘어진 small_aa small_ab등의 파일를 bigsize.tgz의 하나의 파이로 
        생성한다       




==========================================================  
[응용] 큰 용량의 디렉토리를 특정 사이즈의 화일로 나눠 압축하기

==========================================================

/home/test 디렉토리를 100단위로 backupfile_xx 형태로 압축하신다면.. 

tar czvf - /home/bbs | split -b 100m - backupfile_ 

 주의) /home/bbs 를 압축하는 것이 아니고 /home 속에 있는 모든것을 
       압축한다...(압축대상의 경로에서 작업하기바람...옵션이 있다는데 모르겠씀.) 


압축해제는 

ex) cat backupfile_* | tar zxvf -
ex) cat backupfile_* | (cd /;tar -xzvpf - )

풀 때 (cd /;tar -xzvpf - ) 중의 /; 하면 / 디렉으로 옮겨 가서 풀리게 됩니다. 
다른 방법으론

 ex) cat backupfile_* | tar xzvfC -  /home/tmp  ) 
가 있다.

스퀴드 서버 설정 파일은 다음과 같다. 

RPM 설치시        ---> /etc/squid/squid.conf 
소스 컴파일 설치시 --> /usr/local/squid/etc/squid.conf 

squid.conf는 상당히 복잡하게 구성되어 있으나, 실제로 
프록시 서버를 운영하는데 있어서는 아파치 설정과 마찬가지로 
몇 가지 기본 설정만 해주면 쉽게 작동시킬 수 있다 

1. http_port 3128 
  :스퀴드 프록시 서버의 서비스 포트를 지정한다.디폴트는 3128포트다 

2. cache_mem 8 
   Maximum_object_size 4096 KB 
  :스퀴드 서버에서 사용하는 캐쉬 사이즈를 설정한다. 디폴트는 8MB 다 
   Maximum_object_size 는 캐시 디스크에 저장될 수 있는 객체 파일의 
   크기를 제한하는 옵션이다. 디폴트는 4메가다. 

3. cache_dir /var/spool/squid 1000 16 256 
    cache_access_log /var/log/squid/access.log 
    cache_log /var/log/squid/cache.log 
    cache_store_log /var/log/squid/store.log 
  :디스크에 저장될 캐쉬 크기와 캐쉬 로그 파일들을 지정한다. 
   cache_dir은 캐쉬가 저장될 경로와 크기,하위 1차, 2차 디렉토리수를 
   지정한다.예제는 /var/spool/squid 디렉토리에 최대 1000메가까지다. 
   16 256은 1차 2차 하위디렉토리의 갯수이다. 

4. debug_options ALL,1 
  :스퀴드가 동작할 때 오류 체크 기능을 사용하여 로그 파일에 기록할 
   수 있게하는 옵션이다. 

5. acl all src 0.0.0.0/0.0.0.0 
  :ACL은 Access Control를 의미하는 약자다. 프록시 서버에 접근할 수 
   있는 범주를 설정하는 옵션으로 httpd_access와 함께 사용하여야 한다. 
   all범주는 src옵션으로 all범주에 속하는 네트워크를 지정한다. 
   0.0.0.0/0.0.0.0 으로 설정하면 모든 네트워크들에 대해서 프록시 
   서버를 접근할 수 있도록 설정하는 것이다. 

6. http_access allow all 
  :http_access는 클라이언트가 프록시 서버에 접속을 허용할 것인지 
   거부할 것인지 결정해 주는 옵션으로 acl과 함께 사용한다.

   http_access  다음에 allow 또는 deny를 지정하고 acl리스트중 하나를 지정하여 
   사용하게 된다. 
   ex1) acl all src 0.0.0.0/0.0.0.0 
       http_access allow all 
      (모든 네트워크를 all 범주로 규정하여 프록시 서버에 모든 네트워크 
       가 접속할 수 있도록 허용한다.) 
   ex2) acl dumca src 211.58.64.0/255.255.255.0 
        acl all src 0.0.0.0/0.0.0.0 
        http_access allow dumca 
        http_access deny all 
       (C클래스 211.58.64.0 네트워크 주소를 dumca 범주로 규정하여 
        http_access에서 프록시 서버 접속을 허용하고, 다른 모든 
        네트워크에 대해서는 접속을 거부함.) 

7. cache_mgr dumca 
   cache_effective_user squid 
   cache_effective_group squid 
  : 케쉬 서버의 괸리자 계정과 스퀴드 서버를 작동시킬 유저와 그룹명을 
    지정한다.

SYNOPSIS
     sftp -1Cv -B buffer_size -b batchfile -F ssh_configv -o ssh_option
               -P sftp_server_path】【-R num_requests】【S program】【-s subsystem | 

                 sftp_server】 host
     sftp 【【user@host【:file 【file】】】
     sftp 【【user@host:dir/】】】
     sftp -b batchfile 【user@host

 

   

 

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

 

○ 접속포트 지정 ( 특정 포트를 정하여 접속하기)

   #sftp  -oPort=6622  ID@site.com

 

 

○ 접속없이 다운로드 하기 ( 다운로드할  파일명을 알고 있을경우...)

   #sftp  ID@site.com:directory/file.txt

 

○ 접속시 특정 경로를 지정하기

   #sftp ID@site.com:directoty/

AB 사용법 - Apache Benchmarking

 

ab는 "Apache HTTP server Benchmarking tool"의 약어로서 아파치 서버의 응답속도를 측정하는 벤치마킹툴이다.

도메인이나 특정 페이지의 응답속도를 측정할 수 있다.

 

 

$./ab -V
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/


 

$./ab -h

Usage: ./ab 【options】 【http://hostname:port/path
Options are:
    -n requests  Number of requests to perform : 벤치마킹을 위한 요청수
    -c concurrency Number of multiple requests to make : 하나의 요청당 체크할 다중 요구수 (기본값 : 1)
    -t timelimit Seconds to max. wait for responses : 제한시간 
    -p postfile  File containg data to POST : POST 할 파일 지정 
    -T content-type Content-type header for POSTing
    -v verbosity    How much troubleshooting info to print : 자세한 헤더정보 출력 (유용함) 
    -w              Print out results in HTML tables : HTML 형태로 출력 (유용함) 
    -i              Use HEAD instead of GET
    -x attributes   String to insert as table attributes
    -y attributes   String to insert as tr attributes
    -z attributes   String to insert as td or th attributes
    -C attribute    Add cookie, eg. 'Apache=1234' (repeatable) : 쿠키 사용시 
    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: zop'
                       Inserted after all normal header lines. (repeatable)
    -A attribute    Add Basic WWW Authentication, the attributes
                       are a colon separated username and password. : 사용자 인증을 요하는 페이지 체크시 아이디:비밀번호
    -P attribute    Add Basic Proxy Authentication, the attributes
                       are a colon separated username and password.
    -X proxy:port   Proxyserver and port number to use
    -V              Print version number and exit
    -k              Use HTTP KeepAlive feature : 하나의 세션을 맺은 상태에서 여러개의 요구가 하나의 세션으로 인식 
    -d              Do not show percentiles served table.
    -S              Do not show confidence estimators and warnings.
    -g filename     Output collected data to gnuplot format file.
    -e filename     Output CSV file with percentages served
    -h              Display usage information (this message)

 

실행방법은  ./ab "http 주소"

* 주의 : 여기서 주의해야 할것은 위와같이 도메인명만 입력할때는 뒤에 "/"를 꼭 붙여야 한다.

 

그럼 실제로 네이버의 응답속도를 체크해자.

출력되는 내용은 아래와 같다.

 

【】# ab http://www.naver.com/
This is ApacheBench, Version 1.3d <$Revision: 1.69 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.naver.com (be patient).....done


; 아파치 버전

Server Software:        Apache                                            


; 도메인명

Server Hostname:        www.naver.com


; 웹서비스 사용 포트

Server Port:            80

 

; 초기문서가 위치하는 웹문서 root(서버내의 절대경로가 아님)

Document Path:          /


; 초기문서의 용량

Document Length:        72226 bytes

 

Concurrency Level:      1


; 응답속도(사실 이값만 확인하면 된다.)

Time taken for tests:   0.016 seconds


; 요구에 응답한 세션수

Complete requests:      1


; 요구에 응답실패한 세션수

Failed requests:        0


; 실패한 에러수

Broken pipe errors:     0


; 총 전송 바이트수

Total transferred:      72539 bytes


; 총 전송한 HTML 바이트수

HTML transferred:       72226 bytes


; 초당 응답요구수

Requests per second:    62.50 【#/sec】 (mean)


; 요구에 응답한 시간 (이값도 중요하다)

Time per request:       16.00 【ms】 (mean)


; 요구에 응답한 시간

Time per request:       16.00 【ms】 (mean, across all concurrent requests)

; 초당 전송 가능한 용량

Transfer rate:          4533.69 【Kbytes/sec】 received

 

=> 응용

1. 1회의 전송을 믿지 못하겠다는 분은 여러번 시도하여 그에대한 평균치를 얻을수 있다.

  ab -n 1 http://www.naver.com/

 

2. 다중세션으로 벤치마킹하여 더욱 신뢰높은 값을 얻는 방법

 ab -c 30 http://www.naver.com/

 

3. 응답속도를 KeepAlive 속성을 활성화하여 테스트하기

 ab -k http://www.naver.com/

 

4. 측정 결과를 HTML 파일로 저장하기

 ab -n 1 -w http://www.naver.com/ > naver.com_test.htm

 

ab 명령어를 이용해서 조금 억지스럽지만 결과값으로 서버의 부하까지도 추측이 가능할 것이다.

 

* ab 실행파일은 아파치를 설치한 디렉토리/bin 에 있습니다.

【root@edu ~】 ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4084
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 

 

 

(1) ulimit 설정상태 확인 
 # ulimit -a 
time(seconds) unlimited 
file(blocks) unlimited 
data(kbytes) 2097148 
stack(kbytes) 8192 
coredump(blocks) unlimited 
nofiles(descriptors) 64 
vmemory(kbytes) unlimited

 

(2) ulimit 설정 항목 변경 
# ulimit -s unlimited 
# ulimit -a 
time(seconds) unlimited 
file(blocks) unlimited 
data(kbytes) 2097148 
stack(kbytes) unlimited 
coredump(blocks) unlimited 
nofiles(descriptors) 64 
vmemory(kbytes) unlimited


(3) ulimit 명령어 Option 
-d maximum size of data segment or heap (in kbytes) 
-f maximum file size (in 512-byte blocks) 
-n maximum file descriptor plus 1 
-s maximum size of stack segment (in kbytes) 
-t maximum CPU time (in seconds) 
-v maximum size of virtual memory (in kbytes)

 

 

===========================================================================

 

#ulimit -a

time(second)
 --> the amount of time that process could use cpu
프로세스가 cpu를 사용할 수 있는 최대시간

file(block)
--> the maximum size of file that process could create it
해당 프로세스가 만들 수 있는 파일의 최대 크기

data 
--> the maximum amount of memory that process could occupy
해당 프로세스가 점유할 수 있는 data의 최대값

stack
--> the maximum amount of memory that process could occupy
해당 프로세스가 점유할 수 있는 stack의 최대값
memory
--> the maximum amount of real memory that process could occupy, and you can  verify this value with RSS column of glance .
해당프로세가 점유할 수 있는 최대 리얼메모리의 크기

 

 

==================================================================================

설정값 적용하기

 

 ulimit -a 값으로 봤을때 open files 기본값이 1024 인데 이값을 증가시키려합니다..

ulimit -n 65536 이런식으로 하면 현재쉘에서만 적용되고 모든 사용자들에게 적용되지 않는걸로 알고있습니다..

 

이럴 경우 요렇게 하면 됩니다. ^^

 

/etc/security/limit.conf 파일 하단에

* - nofile 65535 이런식으로 추가한후에 리부팅 한다

 

[root@pro root]# hdparm -c /dev/hda 

/dev/hda: 
IO_support = 1 (32-bit) 

3.1pro의 경우는 우선 위와 같이 32-bit모드로 되어 있으므로 입출력모드는 별다른 처리가 필요없습니다. 


[root@pro root]# hdparm -d 0 /dev/hda 

/dev/hda: 
setting using_dma to 0 (off) 
using_dma = 0 (off) 

[root@pro root]# hdparm -t /dev/hda 

/dev/hda: 
Timing buffered disk reads: 64 MB in 13.62 sec0nds = 4.70 MB/sec 
[root@pro root]# hdparm -d 1 /dev/hda 

/dev/hda: 
setting using_dma to 1 (on) 
using_dma = 1 (on) 
[root@pro root]# hdparm -t /dev/hda 

/dev/hda: 
Timing buffered disk reads: 64 MB in 3.63 sec0nds = 17.63 MB/sec 

위와 같이 DMA 기능을 사용하지 않는 경우와 사용하는 경우 확인해보았을때 
위와 같이 4배이상 차이가 납니다. 

기본적으로 
[root@pro root]# hdparm -d /dev/hda 

/dev/hda: 
using_dma = 1 (on) 
위와 같이 설정되어 있으므로 별다른 조치가 필요없습니다. 

질문의 답변에 해당하는 명령어는 
# hdparm -t /dev/hda 
입니다. 

지금까지 하드디스크의 IO모드 및 DMA사용여부의 체크 및 테스트 방법에 대하여 알아보았습니다

wget 으로 ftp 서버에서 필요한 자료 받기

 

ex)  wget  ftp://ID:PASS@site.com/data.tgz

 

      요렇게 해서  data.tgz을 받을 수 가 있답니다.~~~

RPM 파일에 들어있는 파일 목록 보기

 

RPM(Reahat Package Manager)은 리눅스에서 프로그램을 설치하고, 관리하는 프로그램이다. 가끔 *.RPM 파일에 들어있는 파일의 목록을 보고 싶은 경우가 생긴다. 이 때는 다음과 같은 명령을 사용하면 된다.

"$rpm -qpl filename.rpm" 

참고: 
-q 옵션: 쿼리 모드 
-p 옵션: 쿼리 (uninstalled) 패키지 
-l 옵션: 패키지의 파일 목록을 디스플레이 

rpm -qlv rpm파일이름 
ex) rpm -qlv rpm

 

* 특정 파일이 어느 패키지에 들어 있는지? 
rpm -qf 절대경로 
ex) rpm -qf /bin/ls 


* 경로를 모를 경우 
rpm -qf $(which 명령어) 

PAM (Pluggable Authentication Module)
- 사용자 인증을 모듈화 하고 관리자가 응용프로그램들의 사용자 인증 방법을 선택하고 설정할 수 있다.
즉, 사용자를 인증하고 사용자의 서비스에 대한 액세스를 제어하는 모듈이다.

/etc/pam.d - 어플리케이션별 pam설정 파일 위치 디렉토리
/lib/security pam 모듈 디렉토리

기본 형식
[module-type] [control-flag] [module-path] [module-arguments]

module-type : PAM 이 어떤 타입의 인증이 사용될 기성인가를 지정한다. 
- auth : 사용자인증에 사용하며 올바른 패스워드인지 문도 확인하는 절차를 가진다.
- account : 사용자의 접근 허가 여부를 확인하며, 계정만료, 특정 시간대에 접근이 허용되었는지 여부를 확인한다.
- password : 패스워드를 설정하고 확인한다.
- session : 사용자가 인증 받기 전후에 필요한 홈 디렉토리 마운트, 메일박스 생성 등의 유저섹션을 구성하기 위해 부가적인 작업을 수행한다.

control-flag : PAM에서 사용되는 모듈들이 결과에 따라 어떠한 동작을 취해야 하는지를 지시한다.
- required : 인증이 거부되기 전에 PAM이 이 서비스에 등록된 다른 모든 모듈들을 요규함에도 불고하고 실패할 경우 인증을 거부하도록 한다.
- requisite : 이 모듈을 이용하는 인증이 실패할 경우, 즉시 인증을 거부하도록 한다. 
- sufficient : 이전에 요청되어진 모듈이 실패하더라도 이 모듈에 의해서 인증이 성공할 경우,  PAM은 인증을 승인한다.
- optional : 이 모듈이 성공 또는 실패하는지는 그 모듈이 서비스에 대한 형식에 유일한 모듈일 경우에 해당한다.(성공 여부는 상관없음)

module-path : PAM에게 어떤 모둘을 사용할 것인지 그리고 그것을 어디서 찾을 지를 알려준다. 대부분 구성은 로그인 구성 파일의 경우와 마찬가지로 모듈의 이름만 가지고 있다. 이와 같은 경우, PAM은 기본 PAM 모듈의 디렉토리에서 (/lib/security) 모듈을 찾는다.

module-arguments : 모듈에게 전달되는 인수를 나타낸다. 각각의 모듈들은 각각의 인수를 가지고 있다.

 

1. pam_nologin.so & pam_securetty.so
- /etc/nologin 파일이 존재하면 root 만 로그인이 가능하고 일반 사용자는 로그인이 거부된다.

 
[root@server3 pam.d]# vi /etc/pam.d/login 
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
- /etc/securetty 파일에 기록된 내용과 비교하여 root 사용자가 로그인 가능한 콘솔을 확인한다.

auth       include      system-auth
account    required     pam_nologin.so 
- 이 설정으로 인해 /etc/nologin 파일이 있으면 사용자들의 접근이 거부된다. 

account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    include      system-auth
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    optional     pam_keyinit.so force revoke


[root@server3 pam.d]# touch /etc/nologin 
- /etc/nologin 파일이 생성되면 root 사용자만 로그인이 가능하다. /etc/nologin 파일의 내용과는 상관없이 파일의 생성 유무만 판단한다.


[root@server3 pam.d]# ls -l /etc/nologin

-rw-r--r-- 1 root root 0  1월 29 11:47 /etc/nologin

 

2. pam_listfile.so
- 임의의 파일에 대해 서비스를 허가 하거나 거부하는 방법을 제공한다.

[root@server3 ~]# vi /etc/pam.d/vsftpd 
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      system-auth
account    include      system-auth
session    include      system-auth
session    required     pam_loginuid.so

참고
- item=user / tty / rhost / ruser / group / shell
아이템을 지정한다. 사용자, 터미널, 원격사용자, 그룹, 쉘 등을 사용할 수 있다.
- sense=deny / allow
센스를 지정한다. allow 또는 deny 값을 넣을 수 있다.
- file=/etc/vsftpd/ftpusers
아이템에 맞는 임의의 파일을 지정한다.
- onerr=succeed / fail
sense 값에 반대로 적어둔다.

 

3. ssh 접속 제한

 


root 계정에 ssh 로그인 금지하기
[root@server3 pam.d]# vi /etc/ssh/sshd_config 
36 # Authentication:
37 
38 #LoginGraceTime 2m
39 #PermitRootLogin yes
40 PermitRootLogin no - ssh 사용시 root로의 접속은 막고 일반 사용사의 접속은 가능하다.(#ssh 10.10.33.2 -l test2)
                                        하지만 접속을 막기 원하는 일반 사용자는 선택할수 없다.    
41 #StrictModes yes
42 #MaxAuthTries 6

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

PAM을 사용한 루트 계정 로그인 금지하기

[root@server3 pam.d]# vi /etc/pam.d/sshd
#%PAM-1.0
auth required pam_listfile.so item=user sense=deny file=/etc/ssh/sshusers onerr=succeed 
- 이부분을 추가해주고 /etc/ssh/sshusers를 생성해준다.(파일 경로나 이름은 마음대로 설정하면 된다.)

auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    required     pam_loginuid.so

[root@server3 pam.d]# vi /etc/ssh/sshusers - 파일을 새로 만들어 준다.
test2 - ssh 접속을 제한할 사용자를 입력해준다. 이렇게 해주면 ssh 접속을 원하지 않는 일반 사용자의 접속을 선택해서 막을 수 있다.


 
root 계정에 ssh 로그인 금지하기
[root@server3 pam.d]# vi /etc/ssh/sshd_config 
36 # Authentication:
37 
38 #LoginGraceTime 2m
39 #PermitRootLogin yes
40 PermitRootLogin no - ssh 사용시 root로의 접속은 막고 일반 사용사의 접속은 가능하다.(#ssh 10.10.33.2 -l test2)
                                        하지만 접속을 막기 원하는 일반 사용자는 선택할수 없다.    
41 #StrictModes yes
42 #MaxAuthTries 6

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

PAM을 사용한 루트 계정 로그인 금지하기

[root@server3 pam.d]# vi /etc/pam.d/sshd
#%PAM-1.0
auth required pam_listfile.so item=user sense=deny file=/etc/ssh/sshusers onerr=succeed 
- 이부분을 추가해주고 /etc/ssh/sshusers를 생성해준다.(파일 경로나 이름은 마음대로 설정하면 된다.)

auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    required     pam_loginuid.so

[root@server3 pam.d]# vi /etc/ssh/sshusers - 파일을 새로 만들어 준다.
test2 - ssh 접속을 제한할 사용자를 입력해준다. 이렇게 해주면 ssh 접속을 원하지 않는 일반 사용자의 접속을 선택해서 막을

4. pam_rootok.so
- root가 암호 입력없이 해당 서비스에 접근을 허용할 때 사용한다.

 

 

[root@server3 ~]# vi /etc/pam.d/su
#%PAM-1.0

auth            sufficient      pam_rootok.so - 이부분을주석처리하면 root도 su명령어 사용시 패스워드를 입력해야 한다.

# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
auth            include         system-auth
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so

5. pam_time.so
- 특정 서비스에 대해 시간대 별로 접근 제어를 한다.


[root@server3 ~]# vi /etc/pam.d/login
#%PAM-1.0
account    required     pam_time.so  - /etc/pam.d/login 파일에 모듈 내용을 추가한다.
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    include      system-auth
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    optional     pam_keyinit.so force revoke

[root@server3 ~]# vi /etc/security/time.conf - pam_time.so 모듈 환경설정 파일이다.

#service;ttys;users;times - 형식에 맞게 추가해준다.
login;tty* & !ttyp*;!root;Al0900-1800 - root 사용자를 제외한 모든 사용자는 매일 09시 부터 18시 까지만 콘솔 로그인이 가능하다.


참고
service : 규칙이 적용될 서비스의 이름을 지정한다. login, sshd 등
tty  : 규칙을 적용할 터미널의 이름을 지정한다. tty*, ttyp*(pts:원격접속터미널)
users : 적용할 사용자 이름을 지정한다.
times : 언제 이 규칙을 적용할 것인가를 지정한다.
(Al : 매일, Mo : 월, Th : 화, We : 수, Th : 목, Fr : 금, Sa : 토, Su : 일, Wk : 주중, Wd : 주말)

!root : root를 제외한 모든 사용자
Al0900-1800 : Al : 매일, 0900-1800 : 09시 부터 18시까지의 시간


예) ssh 일반 사용자, 주중, 09-18 에만 접속가능하게...
[root@server3 ~]# vi /etc/pam.d/sshd
#%PAM-1.0
account    required     pam_time.so
auth required pam_listfile.so item=user sense=deny file=/etc/ssh/sshusers onerr=succeed
auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    required     pam_loginuid.so

[root@server3 ~]# vi /etc/security/time.conf 
sshd;tty* & ttyp*;!root;Wk0900-1600


6. pam_limits.so
- 특정 서비스에 대해 자원을 제한 하거나 제어를 한다. 프로세스 수 및 메모리의 양을 제어하여 로콜에서의 컴파일이나 서비스 거부 공격등을 방지할 수 있다.
- 이 설정이 활성화 되어 있으면 가상 콘솔창에서 로그인 이 거부될 수 있다. 

[root@server3 ~]# vi /etc/pam.d/login
#%PAM-1.0
account    required     pam_limits.so - 모듈의 내용을 추가한다.
account    required     pam_time.so
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    include      system-auth
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    optional     pam_keyinit.so force revoke

[root@server3 ~]# vi /etc/security/limits.conf 
#Each line describes a limit for a user in the form:
#
#<domain>      <type>      <item>         <value> - 형식에 맞게 추가해준다.
test1            hard    maxlogins       3 - test1 사용자는 동시 접속을 3개로 제한한다. 


참고
domain : 사용자 명 또는 와일드카드 *, @group 등을 사용할 수 있다.
type : soft, hard 값을 사용하며, soft limit 는 일반 유저가 변경할 수 있지만, hard limit는 root 사용자만 변경할 수 있다.
item : 아이템을 사용하여 제한한다. (core : 코어파일, data : 데이터, fsize : 파일, rss : 메모리 사이즈, nproc : 프로세스 개수, maxlogins:  동시접속 개수)
value : 제한 값을 지정한다.

 


7. 기타

 
[root@server3 ~]# vi /etc/profile or .bash_profile 
TMOUT=3600
HISTSIZE=50

참고
TMOUT
 : 계정의 접속시간을 제한하는 경우에 추가해준다. 기본 단위는 초(sec)이다.
HISTSIZE : 히스토리 값에 대해서 보안을 강화하기 위하여 변경해준다.

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

[root@server3 ~]# vi /etc/security
console
#vc/1
#vc/2 
- 접속을 허용할 터미널만 설정하고 나머지는 주석처리하여 root 사용자의 터미널 접속을 제한한다.

[root@server3 ~]# vi /etc/profile or .bash_profile 
TMOUT=3600
HISTSIZE=50

참고
TMOUT
 : 계정의 접속시간을 제한하는 경우에 추가해준다. 기본 단위는 초(sec)이다.
HISTSIZE : 히스토리 값에 대해서 보안을 강화하기 위하여 변경해준다.

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

[root@server3 ~]# vi /etc/security
console
#vc/1
#vc/2 
- 접속을 허용할 터미널만 설정하고 나머지는 주석처리하여 root 사용자의 터미널 접속을 제한한다.



+ Recent posts