24. smb(파일 공유 삼바 서비스) |
1) 경로 : /etc/init.d/smb
2) 요약 : 윈도우와 공유 디렉터리 설정을 위한 데몬
3) 추가 설명
리눅스와 유닉스에서 삼바를 이용하면 공유 디렉터리나 프린터 등의 자원을 윈도우 시스템과 공유하여 사용할 수 있습니다. 삼바 서버의 설정은 /etc/samba/smb.conf 파일에서 할 수 있습니다.
#------------------------------------------------Global Settings
[global]
workgroup = WORKGROUP <- 윈도우의 작업 그룹과 동일한 그룹을 지정
server string = File Server <- 리눅스 컴퓨터에 대한 설명
; hosts allow = 192.168.1. 192.168.2. 127. <- 접근을 허용할 네트워크 범위
printcap name = /tec/printcap
load printers = yes
printing = lprng
guest account = pcguest
log file = /var/log/samba/%m.log
max log size = 0
security = share
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns_ proxy = no
#------------------------------------------------Share Definitions
[homes]
comment = Home Directiories
browseable = no
writable = yes
valid users = %s
create mode = 0664
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Set public = yes to allow user 'guest account' to print
guest ok = no
printable = yes
[public] <- 공유할 디렉터리명
comment = Public Stuff <- 설명
path = /home/samba <- 삼바 공유 디렉터리
public = yes
writable = yes
printable = no
[movie]
comment = movie's directory
path = /home/movie
valid users = chan
public = no
writable = yes
printable = no
설정 파일은 크게 [global] 영역과 공유 설정을 위한 [homes], [printers], [public], [movie] 영역으로 되어 있습니다.
ㅇ1. global 설정 지시어
지시어 | 설명 |
workgroup | 서버가 속할 네트워크 그룹을 지정 |
server string | 서버가 네트워크에서 구분될 이름을 지정 |
host allow | 서버에 접근을 허용할 클라이언트 대역폭을 지정 |
printcap name | printcap 이름을 짖ㅓㅇ |
load printers | 프린터 시스템을 지원 |
guest account | 게스트 사용자의 접근을 허용 |
log file | 저장할 로그 파일을 지정 |
max log size | 로그 파일 크기를 제한 |
security | user, share, server의 시큐리티 등급을 지정 |
encrypt passwords | 패스워드를 암호화 |
smb passwd file | 삼바 ㅍㅐ스워드 파일의 위치를 지정 |
socket options | 지정된 솤ㅔㅅ 옵션을 사용. 설정된 소켓 옵션이 최적의 성능 향상을 가져옴 |
ㅇ2. homes
사용자 홈 디렉터리에 대한 공유 설정입니다. 위 파일에 설정 기본값을 사용하면 됩니다.
ㅇ3. printers
CUPS 프린트 시스템이라면 각 프린트의 정의를 새로 설정해 줄 필요가 없습니다. 다만 public = yes라고 지정하면 게스트 사용자(여기서는 pcguest)도 프린트를 사용할 수 있습니다.
ㅇ4. public
위 설정에서는 /home/samba 디렉터리를 윈도우와 공용으로 사용하는 디렉터리로 지정했습니다.
ㅇ5. movie
위 설정에서 /home/movie 디렉터리를 chan 사용자에게만 접근할 수 있게 했습니다. 모든 설정을 완료한 후 삼바 서비스 데몬을 실행합니다.
# /etc/init.d/smb start
참고로 웹 브라우저를 통해 삼바 서버를 쉽게 설정할 수 있는 SWAT라는 프로그램이 있습니다. SWAT을 사용하기 위해 /etc/xinetd.d/swat 파일을 열어, disable = no로 수정하고, /etc/rc.d/init.d/xinetd 데몬을 재실행합니다.
# cat /etc/xinetd.d/swat
# default: off
service swat
{
disable = no
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1
user = root
server = /usr/sbin/swat
log_on_failure += USERID
}
SWAT 서버 포트는 901로 지정되어 있으므로 브라우저에서 http://서버주소:901을 입력해야합니다.
25. smbclient(SMB 클라이언트) |
1) 경로 : /usr/bin/smbclient
2) 요약 : SMB/CIFS 서비스에 접근하기 위한 클라이언트
3) 사용 방법
sbmclient [-b <buffer size>] [-d debuglevel] [-e] [-L <netbios name>] [-U username] [-I(아이) destinationIP] [-M <netbios name>] [-m maxprotocol] [-A authfile] [-N] [-g] [-i scope] [-O <socket options>] [-p port] [-R <name resolve order>] [-s <smb config file>] [-l] [-P] [-c <command>]
smbclient {servicename} [password] [-b <buffer size>] [-d debuglevel] [-e] [-D Directory] [-U username] [-W workgroup] [-M <netbios name>] [-m maxprotocol] [-A authfile] [-N] [-g] [-l log-basename] [-I(아이) destinationIP] [-E] [-c <command string>] [-i scope] [-O <socket options>] [-p port] [-R <name resolve order>] [-s <smb config file>] [-T<c|x>IXFqgbNan] [-k]
4) 옵션
-R, --name-resolve=NAME-RESOLVE-ORDER : 네임 서버(NAME-RESOLVE-ORDER)를 지정
-M, --message=HOST : 메시지를 보냄
-I(아이), --ip-address=IP : IP를 지정
-E, --stderr : 표준 출력으로 메시지를 출력
-L, --list=HOST : 공유 리스트 목록(HOST)을 지정
-t, --terminal=CODE : 터미널 I/O 코드(CODE)를 지정. {sjis | euc | jis7 | jis8 | junet | hex}가 올수 있음
-T, --tar=<c|x>XFqgbNan : 명령행의 tar를 지정
-D, --directory=DIR : 디렉터리(DIR)를 지정
-c, --command=STRING : 명령어(STRING)를 지정. 명령어 간에 세미콘론(;)으로 구분
-b, --send-buffer=BYTES : 전송 버퍼의 크기(BYTES)를 지정
-p, --port=PORT : 포트(PORT)를 지정
-g, --grepable : grep 사용 가능한 목록으로 출력
-B, --browse : DNS 를 이용하여 SMB 서버를 브라우징함
-?, --help : 사용법을 출력
--usage : 간단한 사용법을 출력
<공통 삼바 옵션>
-d, --debuglevel=DEBUGLEVEL : ㄷ디버깅 레벨(DEBUGLEVEL)을 지정
-s, --configfile=CONFIGFILE : 설정파일(CONFIGFILE)을 지정
-l, --log-basename=LOGFILEBASE : 로그 파일의 이름(LOGFILEBASE)을 지정
-V, --version : 버전 정보 출력
<접속 옵션>
-O, --socket-options=SOCKETOPTIONS : 소켓 옵션(SOCKETOPTIONS)을 지정
-n, --netbiosname=NETBIOSNAME : 넷 바이오스 이름(NETBIOSNAME)을 지정
-W, --workgroup=WORKGROUP : 워크 그룹(WORKGROUP)을 지정
-i, --scope=SCOPE : 넷 바이오스의 범위(SCOPE)를 지정
<인증 옵션>
-U, --user=USERNAME : 로그인 사용자(USERNAME)를 지정
-N, --no-pass : 패스워드를 묻지 않음
-k, --kerberos : 커버로스 인증을 이용
-A, --authentication-file=FILE : 인증 파일(FILE)을 지정
-S, --signing=on|off|required : on, off, required 중에서 클라이언트 사인을 지정
-P, --machine-pass : 저장된 계정 패스워드를 사용
-e, -encrypt : SMB 전송을 암호화(유닉스 계열 서버만)
5) 추가 설명
smbclient 명령어는 삼바 서버에 접속하여 ftp와 같은 파일 송수신 기능을 합니다. -L 옵션을 삼바 서버의 정보를 출력합니다.
$ smbclient -U user -L 192.168.179.237
Enter user's password:
Domain=[LINUXOS[ OS=[Inix] Server=[Samba 3.0.28-0.4.1]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (LINUX file server ver2)
user Disk Home Directories
Domain=[LINUXOS] OS=[Unix] Server=[Samba 3.0.28-0.4.1]
Server Comment
------ -------
LINUX-FILE LINUX File server ver2
Workgroup Master
--------- ------
LINUX-BIZ LINUXBIZFILE
LINUXOS LINUX-FILE
SOLUTIONDEV SOLUTION
WORKGROUP FAXMAN
접속 후에 help 명령어로 사용 가능한 명령어 목록을 살펴봅시다
$ smbclient -U user //192.168.179.237//user
Enter user's password:
Domain=[LINUXOS] OS=[Unix] Server=[Samba 3.0.28.0.4.1]
smb: \> help?
allinfo altname archive blocksize
canel case_sensitive cd chmod chown
close del dir du echo
exit get getfacl hardlink help
history iosize lcd link lock
lowercase ls l mask md
mget mkdir more mput newer
open posix posix_encrypt posix_open posix_mkdir
posix_rmdir posix_unlink pritn prompt put
pwd q queue quit rd
recurse reget rename reput rm
rmdir showacls setmode stat symlink
tar tarmode translate unlock volume
vuid wdel logon listconnect showconnect
..!
smb: \>
26. ssh(SSH 클라이언트) |
1) 경로 : /usr/bin/ssh
2) 요약 : Open SSH 원격 로그인 클라이언트
3) 사용 방법 : ssh [옵션] [주소]
4) 옵션
-1 : ssh를 프로토콜 버전 1로 시도
-2 : ssh를 프로토콜 버전 2로 시도
-4 : IPv4 주소만 사용
-6 : IPv6 주소만 사용
-F configfile : 사용자 설정 파일(configfile)을 지정
-I(아이) smartcard_device : 사용자 개인 RSA 키를 저장한 디바이스(smartcard_device)를 지정
-i identity_file : RSA나 DSA 인증 파일(identity_file)을 지정
-l login_name : 서버에 로그인할 사용자(login_name)을 지정
-p port : 서버에 접속할 포트를 지정
-q : 메시지를 출력하지 않음
-V : 버전 정보를 출력
-v : 상세한 정보를 출력. 디버깅에 유용
-X : X11 forwarding 기능을 활성화. 이는 서버에 접속하여 서버의 프로그램을 클라이언트의 화면에서 실행할 수 있음
-x : X11 forwarding 기능을 비활성화
-y : 신뢰할만한 X11 forwarding 기능을 활성화
5) 추가 설명
ssh 명령어는 SSH서버 접속 인증을 위한 암호화를 제공하여 네트워크 해킹의 위험에서 안전하게 접속할 수 있습니다. 이와 비슷한 기능의 telnet 명령어는 서버와 연결된 상태에서 송수신된 패킷이 네트워크에 노출될 경우에는 암호화되지 않은 내요잉 고스라니 스니핑(몰래 네트워크에서 오가는 패킷을 훔쳐보기) 될 수 있습니다. 사용법은 telnet과 비슷합니다.
아래와 같이 접속하고자 하는 서버 주소를 입력합니다.
$ ssh 192.168.1.100
아래와 같이 -l 옵션은 로그인할 사용자를 지정합니다.
$ ssh -l chan 192.168.1.100
로그인 사용자는 아래와 같이 "사용자명@서버주소"의 형식도 가능합니다. SSh 서버에 처음으로 접속 시도하면 아래의 메시지를 출력합니다. yes를 입력합니다.
$ ssh chan@192.168.1.1
The authenticity of host '192.168.1.1' can't be established.
RSA key fingerprint is 39:ee:3a:30:be:20:16:a3:6d:3d:e3:33:3e:21;e4.
Are you sure ypu want to continue connecting (yes/no)?
아래는 SSH 서버에 접속 후에 사용할 수 있는 예외 문자입니다.
예외 문자 | 설명 |
~. | 접속 해제 |
~^Z | 백그라운드 ssh |
~# | 포워드된 접속 리스트 출력 |
~& | 포워드된 접속이나 X11 세션이 끊어질 때까지 대기 |
~? | 예외 문자의 목록을 출력 |
~B | 서버에 정지 신호(BREAK)를 보냄(SSH 프로토콜 버전 2에서 지원) |
~C | 명령어 쉘을 오픈. -L, -R, -D 옵션을 사용하여 포트 포워딩을 허락 |
~R | 접속 키를 다시 요청(SSH 프로토콜 버전2에서만 지원) |
-X 옵션은 서버에 있는 GUI 프로그램을 클라이언트의 화면에서 실행하고 확인할 수 있습니다. X옵션으로 서버 프로그램을 실행하려면 서버에서 X11Forwarding을 지원해야 하고, 클라이언트에서는 외부에서 접근할 수있도록 디스플레이를 열어 두어야 합니다.
$ ssh -X 192.168.1.1
서버에 직접 로그인하지 않고 서버 디렉터리인 /usr/share 내용을 확인할 수 있습니다.
$ ssh 192.168.1.1 ls /usr/share/
ssh 서버에 접속하지 않고 파일 복사하기 |
scp 명령을 이용하면 서버의 /movie 디렉터리에 있는 파일들을 로컬 시스템으로 복사할 수 있습니다.
# scp -r admin@localhost:/movie ./ |
27. sshd(OpenSSH 쉘 서버 서비스) |
1) 경로 : /etc/init.d/sshd
2) 요약 : 시큐어 쉘 서버 데몬
3) 추가 설명
SSH는 두 호스트 간의 통신 암호화와 사용자 인증을 위해서 공개 열쇠 암호 기법을 사용합니다. 세션 하이재킹(Session Hijacking)과 DNS 스푸핑을 방지해 줍니다. 원격 호스트에 로그인하거나 호스트끼리 데이터를 복사할 때 사용합니다. 보안을 위해서 텔넷보다는 SSH를 사용하기를 권고합니다.
SSH 서버 설정 파일은 /etc/ssh/sshd_config 파일입니다.
# ls -alh /etc/ssh
total 228K
drwxr-xr-x 2 root root 4.0K Feb 13 11:11 .
drwxr-xr-x 106 root root 12K Feb 13 11:13 ..
-rw------- 1 root root 130K Feb 13 11:14 moduli
-rw-r--r-- 1 root root 1.8K Feb 13 11:15 ssh_config
-rw------- 1 root root 3.3k Feb 13 11:16 sshd_config
-rw------- 1 root root 3.3k Feb 13 11:16 ssh_host_dsa_key
-rw-r--r-- 1 root root 1.8K Feb 13 11:15 ssh_host_dsa_key.pub
-rw------- 1 root root 3.3k Feb 13 11:16 ssh_host_key
-rw-r--r-- 1 root root 1.8K Feb 13 11:15 ssh_host_key.pub
-rw------- 1 root root 3.3k Feb 13 11:16 ssh_host_rsa_key
-rw-r--r-- 1 root root 1.8K Feb 13 11:15 ssh_host_rsa_key.pub
서비스를 시작하기 위해 설정 파일에서 특별히 변경할 내용은 없습니다. 기본적인 설정 지시어는 다음과 같습니다.
지시어 | 설명 |
Port | SSH 서비스의 포트를 지정(기본값 22) |
ListenAddress | 접속을 허용할 클라이언트 주소를 입력(기본값 any) |
MaxConnections | 최대 접속 가능한 클라이언트 수를 지정 |
UserConfigDirectory | 사용자 정보 디렉터리를 지정 |
PermitRootLogin | root 로그인을 허용할지 여부짖 지정(기본값 no) |
PasswordAuthenticatio | 패스워드 인증이 허용되는지 지정(기본값 yes) |
usePAM | PAM 인증을 활성화할지 지정(기본값 yes) |
X11Forwarding | SSH 클라이언트에서 서버의 X윈도우 프로그램을 실행할지 지정(기본값 yes) |
Ubsystem | sftp에 대한 설정 |
참고로 /etc/ssh/denyuser 파일에는 SSH 서버로 접근을 금지하는 사용자 이름을 추가할 수 있습니다. SSH 서버 설정을 모두 마쳤다면 적용을 위해 데몬을 재실행합니다.
# /etc/init.d/ssh restart
SSH 서버에 접속하기 위한 SSH 클라이언트 사용법은 다음과 같습니다. 접속할 계정명은 admin이고, 접속할 SSH 서버가 localhost라고 가정합니다. -l 계정명이나 계정명@접속호스트주소를 입력합니다.
# ssh -l admin localhost
# ssh admin@localhost
위 명령을 실행하면 다음과 같은 메시지가 출력됩니다.
The authenticity of host 'chanchan.co.kr(61.40.223.120' can't be established.
RSA key fingerprint is 39:ee:3a:30:be:20:16:a3:6d:3d:e3:33:3e:21;e4.
Are you sure ypu want to continue connecting (yes/no)?
위 메시지는 ssh로 해당 서버에 처음 접속할 때에만 나오며 접속할 서버의 호스트 키가 ~/.ssh/know_hosts(ssh2는 Known_hosts2) 파일에 저장됩니다.
yes를 입력하게 되면 호스트 키를 받게 되고 패스워드를 입력하면 로그인 할 수 있습니다.
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
root@localhost's password:
28. syslog(로그 서버 서비스) |
1) 경로 : /etc/init.d/syslog
2) 요약 : 시스템에 발생하는 다양한 로그를 기록하는 데몬
3) 추가 설명
시스템 로그는 커널과 여러 주요 시스템 관련 에러와 메시지가 쌓여 있습니다. 따라서 시스템의 오류나 정보를 파악하는데 아주 유용하고 중요합니다. 로그 정보는 /var/log 디렉터리에 파일로 저장하게 되는데 이 역할을 하는 것이 syslog 데몬입니다.
<원격 호스트에 로그 기록하기>
로그 기록은 시스템의 중요한 정보입니다. 따라서 시스템이 해킹을 당하더라도 로그를 다른 시스템에 기록하여 로그 정보를 확인할 수 있도록 설정해 봅시다.
ㅇ1. 로그 기록을 보내는 서버에서의 설정
# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* /var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# save boot messages also to boot.log
local7.* /var/log/boot.log
#
# INN
#
news.=crit /var/log/news/news.crit
news.=err /var/log/news/news.err
news.notice /var/log/news/news.notice
모든 로그 기록을 로그 서버로 보내기 위해서는 설정 파일에 다음을 추가합니다.
*.* @logserver
mail에 관련된 로그를 로그 서버로 보내기 위해서는 다음을 설정 파일에 추가합니다.
mail* @logserver
ㅇ2. 로그를 받는 서버에서 필요한 설정
/etc/init.d/syslog 데몬 스크립트에서 SYSLOGD_OPTIONS 변수를 -m 0로 지정하고 daemon syslogd 명령어에 -r -h 옵션을 추가합니다.
# vim /etc/init.d/syslog
if [ -f /etc/sysconfig/syslog ] ; then
./etc/sysconfig/syslog
else
SYSLOGD_OPTIONS="-M 0"
KLOGD_OPTIONS="-2"
fi
RETVAL=0
umask 077
star() {
echo -n $"Starting system logger: "
daemon syslogd $SYSLOGD_OPTIONS -r -h
RETVAL=$?
echo
-m 0 : 지정한 시간(분 단위) 동안 MARK라고 로그 파일에 기록합니다. 0이면 기록하지 않습니다.
-r : 인터넷 도메인 소켓을 이용해 네트워크에서 메시지를 받는 옵션
-h : 기본적으로 syslogd는 원격 호스트에서 받은 메시지를 로그 기록으로 전송하지 않습니다. 이 옵션을 사용하여 받은 쪽의 로그 파일에 기록합니다.
설정을 수정한 후에는 데몬을 다시 시작합니다.
# /etc/init.d/syslog restart
'IT 이야기 > Linux 명령어' 카테고리의 다른 글
[RHEL6] 서버 및 클라이언트 명령어 9탄(write, xinetd, ypbind, ypcat, ypchfn) (0) | 2020.02.14 |
---|---|
[RHEL6] 서버 및 클라이언트 명령어 8탄(talk, telnet, tftp, wall, wget) (0) | 2020.02.14 |
[RHEL6] 서버 및 클라이언트 명령어 6탄(rsyslogd, scp, sendmail, sftp) (0) | 2020.02.12 |
[RHEL6] 서버 및 클라이언트 명령어 5탄(rexec, rlogin, rmail, rsh, rsync) (0) | 2020.02.05 |
[RHEL6] 서버 및 클라이언트 명령어 4탄(praliases, proftpd, quota, rcp) (0) | 2020.02.05 |
댓글