[RHEL6] 서버 및 클라이언트 명령어 7탄(smb, smbclient, ssh, sshd, syslog)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 서버 및 클라이언트 명령어 7탄(smb, smbclient, ssh, sshd, syslog)

by 찬찬이 아빠 2020. 2. 13.
반응형
  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
반응형

댓글