include "top.php" ?>
| 시스템 관리 및 실습 #15 |
| 1. ftp 서비스 정리 |
| - FTP(File Transfer Protocol)서비스란 무엇인가? 간단하게 얘기하면 컴퓨터 파일들을 인터넷을 통하여 주고받을 때 사용하는 서비스이다. 내가 소유하고 있는 파일을 다른 인터넷 호스트에게 건네주거나 반대로 그 쪽에 있는 파일을 내 컴퓨터 안으로 가져올 때 이 서비스를 사용한다. FTP의 프로토콜은 TCP의 연결이 일어난 후에 작동하며, TCP 통신 세션이 수립된 후, FTP를 이용하여 파일들을 주고받는 것이라고 할 수 있다. TCP/IP를 사용하는 FTP서비스는 클라이언트/서버 형식의 구성을 하며 서버가 FTP 서비스를 운영, 클라이언트는 서버에서 허가한 파일들을 다운 받을 수 있고, 또한 서버에 디렉토리를 만들고 그 안에 파일을 업로드 시킬 수도 있는 것이다. 리눅스 상에서 현재 서비스 되는 것을 알고싶을 때 netstat -an의 명령어로 TCP로 *.33045 *.* 0 0 65536 0 BOUND *.898 *.* 0 0 65536 0 LISTEN *.5988 *.* 0 0 65536 0 LISTEN *.5987 *.* 0 0 65536 0 LISTEN *.33046 *.* 0 0 65536 0 LISTEN *.21 *.* 0 0 65536 0 LISTENftp포트는 바꾸지 않으면 디폴트로 21번으로 통신하므로 ftp가 vsftpd나 wftpd, proftpd등 중에 하나는 연결이 되어있다는 말입니다. 또는 ps -ef | grep ftp 명령어로 현재 프로세스를 검색할 수 있다 [root@maru/]$ ps -ef | grep ftp nobody 13352 1 0 18:19:38 ? 0:00 ./proftpd |
| 2. proftpd 서버 구축 및 설정 정리 (현재시스템에 proftp를 설치해서 변경) |
|
ProFTPD는 unix또는 unix 호환 OS를 위한 FTP daemon이다. ProFTPd 는 보안적이고 신뢰적인 FTP 서버가 되기를 희망하며 발전을 하며, Apache web server 의 설정 방식을 따른다. 현재 unix 또는 unix 호환 호스트에서 작동하는 FTP server 들의 숫자는 매우 제한이 되어 있다. 가장 널리 사용이 되어 지는 것으로는 아마도 wu-ftpd 일것이다. wu-ftpd 가 아주 훌륭한 성능을 제공하고 일반적으로는 아주 좋은 daemon 이지만 새로 나오는 Win32 FTP server 에서 제공하는 새로운 많은 기능들이 결핍되어 있고 역사적으로도 보안에 아주 취약하였다. ProFTPD 를 개발하는 사람들을 포함 하는 많은 사람들은 wu-ftpd 의 만은 요소들을 파헤쳤고, 버그들을 수정 하는데 많은 시간과 노력을 들였지만 불행하게도, 신뢰성을 가지기 위해서는 새로운 디자인이 필요하다는 것에 다다르게 되었다. ProFTPD 는 어떤 다른 서버의 소스에 기반을 둔 것이 아니며, 완전히 독립적인 소스트리를 가지고 있다. - 설치 proftpd 운영 방법은 2가지 입니다. 1). standalone mode 로 운영하는 방법 2). superdaemon 으로 운영하는 방법 일반적으로 1.번으로 많이 설치하므로 standalone 버전으로 설치 ------------------------------------------------------------------------------------------ proftpd.conf 설정 내용 확인 ------------------------------------------------------------------------------------------ # This is a basic ProFTPD configuration file (rename it to # 'proftpd.conf' for actual use. It establishes a single server # and a single anonymous login. It assumes that you have a user/group # "nobody" and "ftp" for normal operation and anon. ServerName "ProFTPD Default Installation" ServerType standalone // 보통 ServerType 은 standalone방식과 inetd방식이 있습니다. ftp나 대형서버같은 경우는 항상 ftp를 열어둬야 겠지만, 스터디용 서버등은 ftp사용자를 막아놓고 필요시에만 (요청이 있을시만) 허용하는 xinetd로 사용하는 것이 서버에 과부하를 줄일 수 있는 한가지 방법이 됩니다. (그러나 실제로는 inetd로 사용하지는 않습니다 DefaultServer on # Port 21 is the standard FTP port. Port 21 # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 022 # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd) MaxInstances 30 # Set the user and group that the server normally runs at. User nobody Group nogroup //이렇게 되어 있으면 nobody로 바꿉니다. # To cause every FTP user to be "jailed" (chrooted) into their home # directory, uncomment this line. #DefaultRoot ~ DefaultRoot ~ !root // root를 제외한 접속자들이 상위로 올라 가지 못하게 막는 부분입니다. # Normally, we want files to be overwriteable. <Directory /*> AllowOverwrite on </Directory> # A basic anonymous configuration, no upload directories. <Anonymous ~ftp> User ftp Group ftp # We want clients to be able to login with "anonymous" as well as "ftp" UserAlias anonymous ftp # Limit the maximum number of anonymous logins MaxClients 10 # We want 'welcome.msg' displayed at login, and '.message' displayed # in each newly chdired directory. DisplayLogin welcome.msg DisplayFirstChdir .message # Limit WRITE everywhere in the anonymous chroot <Limit WRITE> DenyAll </Limit> </Anonymous> //설정내용 ---------------------------- (TIP) Anonymous 계정를 위해서 ftp 유저를 생성해서 공개폴더를 생설할수있으나, 바이러스나 보안에 상당한 문제가되므로, read기능만 줄수있는 DENYALL방식을 하는게올바르다, 함부로 설정에서 ALLOWALL은 하지않는게 좋다. |
| 3. Samba 서버 개념 정리 |
|
삼바(Samba) 삼바는 리눅스와 윈도우간에 파일 및 프린터를 공유 할 수 있게 해주는 프로그램이다. 삼바를 통해 리눅스 서버를 타운영체제와 파일을 공유할 수 있는 파일서버로도 사용할 수 있다. 이와같이 삼바가 공유할 수있는 이유는 SMB(Server Message Block)/CIFS(Common Internet File System)라는 프로토콜을 이용함으로써 가능해졌다. SMB 란? SMB(Server Message Block)는 마이크로소프트사와 인텔이 윈도우 시스템이 다른 시스템의 디스크나 프린터와 같은 자원을 공유할 있도록하기 위해 개발된 프로토콜이다. TCP/IP 기반하의 NetBIOS 프로토콜을 이용하기 때문에 이 프로토콜은 NFS, NIS, lpd 와 같은 유닉스의 분산인증구조와 유사하다. 따라서 윈도우 중심의 네트워크 환경에서는 리눅스를 이용한 공유시스템에서는 SMB가 필수적이다. CIFS 란? CIFS(Common Internet File System) 는 네트워크를 위한 SMB 파일 공유 프로토콜의 확장된 버전이며, 윈도우와 유닉스 환경을 동시에 지원하는 인터넷의 표준 파일 규약의 프로토콜이다. CIFS는 이전의 폐쇄적인 SMB 프로토콜과는 달리 CIFS 규약 정의는 여러 유닉스 업체의 참여하여 결정된 내용이기 때문에 삼바도 버전이 올라감에 따라(삼바 버전 2.2 이상) CIFS 규약을 잘 준수하여 안정성이 상당히 향상 되었다.. > 보통 프린터 서버로 사용하기위해서 현재에도 많이 유용하고 있다. |
| 4. Samba 설치 및 설정(따로 가지고있는 REDHAT9.0에서 실습) |
|
설치되어있는지 확인하는 방법 [root@maru root]# rpm -qa | grep samba samba-common-2.2.7a-7.9.0 samba-client-2.2.7a-7.9.0 samba-2.2.7a-7.9.0 redhat-config-samba-1.0.4-1 [root@maru root]# netstat -anp | grep smbd tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 1877/smbd이미 띄워져있다. 설정파일 smb.conf 파일 [global] # 윈도우에서 작업그룹과 같다. 공유하고자 하는 작업그룹 이름을 작성한다. workgroup = MYGROUP # 컴퓨터 설명 필드와 같다. server string = Samba Server # 삼바에 접속하는 호스트 별로 개별적인 로그 파일을 만들도록 한다. log file = /var/log/samba/%m.log # 사용자 인증을 거치지 않고 공유 자원(폴더)에 접근할 수 있게 한다. security = user # 윈도우의 기본 패드워드 모드는 encrypted 모드이다. encrypt passwords = yes # 삼바의 암호 모드가 윈도우와 호환되도록 설정한다. smb passwd file = /etc/samba/smbpasswd # 한국어 지원을 위한 설정 unix charset = cp949 dos charset = cp949 display charset = cp949 client code page = 949 # 대부분의 경우 아래 옵션을 주면 성능 향샹 효과를 볼 수 있다. socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 [homes] # 공유 자원을 찾을 수 없을 때 사용자 데이터베이스를 찾아서 해당 사용자에 대한 공유 자원을 만들어주는 기본 섹션이다. # 공유 자원에 대한 설명 필드와 같다. comment = Home Directories # 윈도우 네트워크 브라이저에서 디렉토리를 보일 것인지를 결정한다. browseable = no # 사용자에게 쓰기권한을 줍니다. writable = yes [public] # 윈도우에서 보이는 공유 자원(폴더) 이름이다. # 공유자원에 대한 설명 필드와 같다. comment = Public Stuff # 삼바 서버로 공유할 실제 공유 자원(폴더) 이다. path = /home/public # 손님사용자에게 접근을 허용한다. public = yes # 사용자에게 쓰기권한을 줍니다. writable = yes < windows환경에서 접속하기위해서는 설정파일안의 public 설정을 잘맞춰야한다.> |
| 5. NFS 개념정리 및 설치 |
|
NFS(Network File System)는 파일시스템을 컴퓨터끼리 공유할 수 있게 해주는 서비스이다. 즉, 여러 대의 컴퓨터(NFS 클라이언트)가 큰 용량의 하드디스크를 가진 컴퓨터(NFS 서버)로부터 서버의 하드웨어나 운영체제에 관계없이 파일시스템을 가져다 마치 자신의 파일 시스템인 것처럼 사용할 수 있게 해주는 것이 NFS의 기본 개념이다. 네트웨어나 NT, 윈도우 95에서의 파일 공유를 접해본 일이 있는 사람은 쉽게 이해할 것이다. 이러한 NFS의 개념은 적은 용량의 디스크를 가진, 또는 아예 그것조차도 없는 클라이언트를 나타나게 하였다. 그리고 이들이 NFS 서버의 대용량 파일 시스템을 공유할 수 있게 됨으로써 아무런 불편 없이 저렴하게 시스템을 사용할 수 있도록 하는 파급 효과를 낳기도 하였다. NFS는 1985년 썬(Sun Microsystems)사가 도입했다. 원래는 하드디스크가 없는 클라이언트를 구현하기 위해 도입했었지만, 지금은 리눅스를 포함한 대부분의 유닉스가 어떤 형태로든지 NFS를 구현하고 있을 정도로 유닉스에서의 대표적인 파일 공유 방법이 되었다. 그리고, 이런 NFS의 유명함 때문에 유닉스만이 아니라 도스를 비롯한 거의 모든 OS에서도 NFS를 쓸 수 있다 설치된 nfs [root@maru samba]# rpm -qa | grep nfs redhat-config-nfs-1.0.4-5 nfs-utils-1.0.1-2.9 서버측(NFS를 통해 서비스 제공) [root@maru /down]# wget ftp://ftp.rpmfind.net/linux/redhat/6.2/en/os/i386/RedHat/RPMS//nfs-utils-0.1.6-2.i386.rpm [root@dev2 /down]# rpm -ivh nfs-utils-0.1.6-2.i386.rpm nfs-utils ################################################## [root@maru /etc]# mount -t iso9660 /dev/cdrom /mnt/cdrom [root@dmaru /etc]# cat > /etc/exports /mnt/cdrom 211.41.23.236(ro) [root@dev2 /down]# cd /etc/rc.d [root@dev2 init.d]# ./nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] 클라이언트측 [root@ns /down]# mount -t nfs 211.41.23.252:/mnt/cdrom /mnt/cdrom [root@ns /down]# cd /mnt/cdrom [root@ns cdrom]# l total 82 -r--r--r-- 1 root root 926 Sep 30 1998 00_TRANS.TBL -rw-r--r-- 1 kang root 1257 Sep 30 1998 DST.LST -rw-r--r-- 1 kang root 32 Sep 30 1998 RELDESC.TXT drwxr-xr-x 2 kang root 10240 Sep 30 1998 bin/ drwxr-xr-x 6 kang root 2048 Sep 30 1998 jdbc/ drwxr-xr-x 2 kang root 8192 Sep 30 1998 lib/ drwxr-xr-x 8 kang root 2048 Sep 30 1998 network/ drwxr-xr-x 4 kang root 2048 Sep 30 1998 nlsrtl/ drwxr-xr-x 4 kang root 2048 Sep 30 1998 ocommon/ drwxr-xr-x 6 kang root 2048 Sep 30 1998 oemagent/ drwxr-xr-x 4 kang root 2048 Sep 30 1998 oracore/ drwxr-xr-x 4 kang root 14336 Sep 30 1998 orainst/ drwxr-xr-x 3 kang root 2048 Sep 30 1998 ord/ drwxr-xr-x 8 kang root 2048 Sep 30 1998 otrace/ drwxr-xr-x 9 kang root 2048 Sep 30 1998 plsql/ drwxr-xr-x 9 kang root 2048 Sep 30 1998 precomp/ drwxr-xr-x 10 kang root 2048 Sep 30 1998 rdbms/ drwxr-xr-x 4 kang root 2048 Sep 30 1998 slax/ drwxr-xr-x 8 kang root 2048 Sep 30 1998 sqlplus/ drwxr-xr-x 6 kang root 2048 Sep 30 1998 svrmgr/ -rw-r--r-- 1 kang root 11484 Sep 30 1998 unix.prd drwxr-xr-x 4 kang root 2048 Sep 30 1998 unixdoc/ This article comes from dbakorea.pe.kr (Leave this line as is) |
| 6. SSH 개념 정리 및 설치 |
|
ssh는 Secure Shell의 약자로 쉽게 생각하면 전송되는 패킷을 암호화시켜 네트웍상에 떠돌아 다니는 패킷을 어떤 놈이 스니퍼하더라도 그 내용이 무엇인지 파악하기 곤란하게 한다. 실제 TCP/IP의 자체결함으로 인해 네트웍상의 패킷을 잡아서 보는 것은 그리 어려운 일이 아니다. 그냥 스니퍼툴을 사용하면 됩니다. SSH는 OpenSSH(www.openssh.com)를 사용했다. OpenSSH는 설치시 OpenSSL(www.openssl.org)이나 SSLeay를 필요로 한다. 여기서는 OpenSSL을 사용하겠다. SSL(Secure Socket Layer)은 암호화관련라이브러리라고 생각하면 되겠다. OpenSSH설치 configure, make, make install로 끝난다. % tar xvzf openssh-2.3.0p1.tgz -C /usr/local/src % cd /usr/local/src/openssh-2.3.0p1 % ./configure --prefix=/usr/local/openssh (나중에 uninstall하기 쉽게 디렉토리를 지정하자) % make % make install 위의 과정을 거치면 /usr/local/openssh에 모든 파일이 들어간다. OpenSSH실행 일단 ssh를 사용하려면 서버와 클라이언트가 있는 것은 당연하다. 자신의 컴퓨터가 서버로 사용될 것이라면 /usr/local/openssh/sbin에 있는 sshd를 실행시킨다. 데몬이므로 그냥 sshd만 입력하고 엔터키를 치면 알아서 백그라운드로 돌아간다. % cd /usr/local/openssh/sbin % sshd 이제 서버가 실행중이다. 클라이언트로 이 놈의 서버에 접속해보자. 접속은 공개키방식으로도 가능하나, 본인은 패스워드방식으로 접속했다. 사실 공개키방식으로 하는 법은 번잡스러워서... 흠.. 중요한 사실은 리눅스의 경우 대부분 PAM방식으로 사용자 인증을 받는다는 것이다. 따라서 그냥 ssh로 연결하면 십중팔구 인증실패가 발생한다. 서버로 접속하기 전에, ssh에서 pam인증을 사용하기 위해 아래와 같이 해준다. cp /usr/local/src/openssh-2.3.0p1/contrib/sshd.pam.generic /etc/pam.d/sshd 이제 인증방식도 제대로 설정이 되었다. 다음과 같이 하여 접속테스트 해본다. [root@maru samba]# ssh localhost The authenticity of host 'localhost (127.0.0.1)' can't be established. RSA key fingerprint is fa:51:c8:5c:50:2f:ae:5b:17:2d:ed:f0:84:26:c7:16. Are you sure you want to continue connecting (yes/no)? yes 개인적으로 ssh는 ssh전용접속프로그램(Putty)를 이용하나, telnet에서는 ssh -l maruni(아이디) 163.239.17.189(IP)이런식으로 자주 쓴다. |
| 맨위로 |
| 1.ftp 서비스 |
| 2. proftpd 서버 |
| 3.Samba 서버 |
| 4.Samba 설치 및 설정 |
| 5.NFS |
| 6. SSH |
| 맨아래로 |
| 이동 |