업무/Linux

Linux 설정 두번째

가별이 2008. 7. 10. 17:06

1. 서비스 확인

# ps -aux | grep ftp

root    2485    0.0    0.1    4304    480    ?    Ss    10:02    0:00    /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

와 같이 ftp 서비스가 실행되고 있어야 합니다.


2. ftp 접근 권한 확인

/etc/hosts.deny와 /etc/hosts.allow에서 알맞게 설정해 주세요.


/etc/hosts.deny의 ALL:ALL을 제거 하거나

/etc/hosts.allow에서 in.ftpd : IP 또는 vsftpd: IP를 적어주거나 둘중에 하나를 하면 됩니다.

참고로 저는

/etc/hosts.deny의 ALL:ALL을 #(주석)처리 했습니다


3. 서비스 재시작(/etc/rc.d/init.d/xinetd restart 명령은 안됨)

# /etc/rc.d/init.d/vsftpd restart


참고사항

1. ftp login 시 root 접근 제한

/etc/vsftpd/ftpusers 의 접근 제한 목록에 root가 포함되어 있으면  root로 login이 안됨

보안상의 이유로 root의 접속을 막아 놓는게 좋음


2. /etc/vsftpd/vsftpd.conf 의 주요 설정
# anonymous 사용자의 접속 허용 여부 (default = YES)
# 공개된 형태의 FTP 서버로 운영할 것이 아니라면 NO로 한다.
anonymous_enable=NO
# 로컬 계정 사용자의 접속 허용 여부 (default = NO)
local_enable=YES

# write 명령어 허용 여부 (defualt = NO)
write_enable=YES
# 로컬 계정 사용자용 umask (default = 077)
local_umask=022

# anonymous 사용자가 파일을 업로드 할 수 있는지 여부 (default = NO)
# anon_upload_enable=YES
# anonymous 사용자의 디렉토리 생성 허용 여부 (default = NO)
# anon_mkdir_write_enable=YES

# 파일 전송 로그를 남길 것인지 여부 (default = YES)
xferlog_enable=YES
# xferlog 표준 포맷으로 로그를 남길지 여부 (기본 설정파일은 YES)
# 아래에서 NO로 설정했을 때를 설명함
xferlog_std_format=YES
# 파일 전송 로그 파일명
xferlog_file=/var/log/vsftpd.log

# FTP 서버 접속할 때 로긴 메시지 (default = vsFTPd 버전번호)
# 한글 사용 가능
ftpd_banner=Welcome to blah FTP service.

# 사용자의 홈디렉토리를 벗어나지 못하도록 제한하기 위한 설정 (default=NO)

# 제한이 필요할 경우 YES로 바꾼 후 제한할 사용자 ID를 chroot_list 에 지정한다.
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

# PAM 파일명을 지정 (설치할 때 /etc/pam.d/vsftpd명으로 복사함)
pam_service_name=vsftpd

# wtmp에 로그 남기기 (YES로 해야만 last 명령어로 접속 여부 확인 가능)
session_support=YES


Telnet 설정 및 root 계정 허용하기

①telnet 설치

telnet은 기본적으로 standalone 타입 데몬이 아닌 xinetd 타입 데몬(xinetd 데몬에 종속되는 것을 의미하며 xinetd 데몬이 죽으면 telnet 데몬도 같이 죽음)이다.


- 먼저 telnet이 설치되어 있는 있는지 확인, telnet-server가 설치되어 있지 않으면 /etc/xinetd.d/telnet 파일이 존재하지 않는다.

# rpm -qa telnet-server


- 쉘에 아무것도 나타나지 않으면 설치되지 않은 것, yum을 이용하여 설치

# yum -y install telnet-server


②telnet 설정

설정 파일: /etc/xinetd.d/telnet


- vi 에디터로 연 후 disable=yes를 disable=no로 바꾸어 주고 저장

# vi /etc/xinet.d/telnet

# service xinetd restart


③root 계정으로 telnet 접속 설정

설정 파일: /etc/securetty


[중요]: /etc/securetty 파일은 시스템 관리자가 시스템에 로그인할 수 있는 안전한 터미널에 대한 정보가 저장되어 있다. 보안을 위해서 일반적으로 가상콘솔이 설정되어 있다.  /etc/securetty 파일을 다른 이름을 바꾸거나 삭제하면 된다. console, vc/1 ~ 11, tty1 ~ 11이 적용 됨

# mv /etc/securetty /etc/securetty.old


환경: Redhat Linux 9.0, Fedora Core 4


FTP서버 vsftpd 설치와 운영 (한글로그 패치 포함)
글쓴이 :
좋은진호 (2003년 10월 09일 오전 02:54) 읽은수: 5,839 [ 네트워크 # 트랙백(0) 인쇄용 페이지 본문 email로 보내기 ]
네트워크 작성자 : 좋은진호(truefeel, http://coffeenix.net/)
작성일 : 2003.10.01(수)
수정일 : 2004.01.08(목), chroot_list_enable 글 추가

이 글은 7월에 썼던 'vsftpd에서 한글파일로그와 lastlog 로긴확인하기'를 기초로 작성하였다.

1. vsftpd FTP 서버에 대해

vsftpd는 UNIX 시스템에서 사용할 수 있는 free FTP 서버(라이센스는 GPL)이다.
vsftpd가 내세우고 있는 것은 보안, 성능, 안정성이다. 지금까지 vsftpd의 자체 보안 문제가 있어
보안권고가 나온 적은 없다.(Redhat의 rpm 패키지중에 tcp_wrappers 지원없이 만들어져서 업데이트
rpm은 나온 적 있음)

* 지원 및 테스트된 OS

- Linux (Redhat, SuSE, Debian)
- Solaris (버전에 따라 IPv6나 inet_aton함수때문에 설치가 잘 안될 수 있음)
- FreeBSD, OpenBSD
- HP-UX
- IRIX

* 주요 기능

- 가상 IP별 별도의 환경 설정 기능 (설정파일의 listen_address= 이용)
- 가상 사용자 설정
- 전송 대역폭 지정
- PAM 지원 (버전 1.2.0부터는 PAM을 통한 wtmp에 로긴 로그를 남김)
- xferlog 표준 로그 파일보다 상세한 자체 로그 파일 형식 지원
- Standalone 방식과 inetd(xinetd)를 통한 운영 모두 지원
- IP별 다른 환경 파일 지정 기능 (tcp_wrappers와 함께 사용할 때)
- ...

2. vsftpd 설치

※ 설치는 Redhat 기준. 솔라리스의 PAM에 대한 것은 README.solaris 파일 참조한다.

http://vsftpd.beasts.org/ 에서 최신버전(현재 1.2.0)의 소스를 받아온다.

-------------------------------------------------------------
# tar xvfz vsftpd-1.2.0.tar.gz
# cd vsftpd-1.2.0
-------------------------------------------------------------

한글로 된 파일명을 전송할 때 로그에 파일명이 ???? 로 남지 않도록
logging.c 파일을 연 후 140번째 줄의

str_replace_unprintable(p_str, '?');

를 다음처럼 주석 처리한다.

/* str_replace_unprintable(p_str, '?'); */

또한 tcp_wrappers를 통한 접속제어를 사용하려면 builddefs.h 에서

#undef VSF_BUILD_TCPWRAPPERS 를
#define VSF_BUILD_TCPWRAPPERS 로 바꾼다.

-------------------------------------------------------------
# make
# make install (vsftpd 데몬, man page, xinetd 용 설정 파일 설치)
# cp vsftpd.conf /etc (환경설정 파일 복사)
# chmod 600 /etc/vsftpd.conf
# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd (PAM 설정 파일 복사)
-------------------------------------------------------------

/etc/pam.d/vsftpd 첫번째 줄에 다음과 같이 있다.

pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

즉, /etc/ftpusers 파일에 존재하는 ID는 접속할 수 없게된다.(sense=deny)

-------------------------------------------------------------
# FTP 접속을 허용하지 않을 ID를 등록한다.
# /etc/passwd를 참조해서 설치할 서버의 환경에 맞게 등록
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
smmsp
xfs
gdm
mysql
-------------------------------------------------------------

3. vsftpd.conf 의 주요 설정

-------------------------------------------------------------
# anonymous 사용자의 접속 허용 여부 (default = YES)
# 공개된 형태의 FTP 서버로 운영할 것이 아니라면 NO로 한다.
anonymous_enable=NO
# 로컬 계정 사용자의 접속 허용 여부 (default = NO)
local_enable=YES

# write 명령어 허용 여부 (defualt = NO)
write_enable=YES
# 로컬 계정 사용자용 umask (default = 077)
local_umask=022

# anonymous 사용자가 파일을 업로드 할 수 있는지 여부 (default = NO)
# anon_upload_enable=YES
# anonymous 사용자의 디렉토리 생성 허용 여부 (default = NO)
# anon_mkdir_write_enable=YES

# 파일 전송 로그를 남길 것인지 여부 (default = YES)
xferlog_enable=YES
# xferlog 표준 포맷으로 로그를 남길지 여부 (기본 설정파일은 YES)
# 아래에서 NO로 설정했을 때를 설명함
xferlog_std_format=YES
# 파일 전송 로그 파일명
xferlog_file=/var/log/vsftpd.log

# FTP 서버 접속할 때 로긴 메시지 (default = vsFTPd 버전번호)
# 한글 사용 가능
# ftpd_banner=Welcome to blah FTP service.

# 사용자의 홈디렉토리를 벗어나지 못하도록 제한하기 위한 설정 (default=NO)
# 제한이 필요할 경우 YES로 바꾼 후 제한할 사용자 ID를 chroot_list_file= 에 설정한 파일에
# 지정한다.
# chroot_local_user= 설정과 관련이 있으니 '3. 문제 해결'을 꼭 읽어보라.
#
# chroot_list_enable=YES
# chroot_list_file=/etc/vsftpd.chroot_list

# -------------------------------------------------------------------
# 기본 설정 파일에는 없는 설정값으로 필요한 설정만 추가한다.
# ※ 중요한 설정은 굵은 글씨로 표시
# -------------------------------------------------------------------

# PAM 파일명을 지정 (설치할 때 /etc/pam.d/vsftpd명으로 복사함)
pam_service_name=vsftpd

# wtmp에 로그 남기기 (YES로 해야만 last 명령어로 접속 여부 확인 가능)
session_support=YES

# 사용자가 자신의 home directory를 벗어나지 못하도록 설정
chroot_local_user=YES

# 새로운 디렉토리에 들어갔을 때 뿌려줄 환경 메시지를 저장한 파일명
# message_file=.message

# xferlog 형식으로 log를 남기려면 (위에서 이미 YES로 했음)
# xferlog_std_format=NO
#
#  - xferlog 표준 포맷은 로긴, 디렉토리 생성등의 로그를 남기지 않음
#   그러나 vsftpd 스타일 로그는 이를 포함한 보다 상세한 로그를 남김
#  - vsftpd 스타일 로그 예
#
#  Sun Jul 12 01:38:32 2003 [pid 31200] CONNECT: Client "127.0.0.1"
#  Sun Jul 12 01:38:34 2003 [pid 31199] [truefeel] FAIL LOGIN: Client "127.0.0.1"
#  Sun Jul 12 01:38:38 2003 [pid 31199] [truefeel] OK LOGIN: Client "127.0.0.1"
#  Sun Jul 12 01:38:41 2003 [pid 31201] [truefeel] OK MKDIR: Client "127.0.0.1", "/mp3"
#  Sun Jul 12 01:39:06 2003 [pid 31201] [truefeel] OK UPLOAD: Client "127.0.0.1", "/델리
#  스파이스 5집 - [04]키치죠지의 검은 고양이.mp3", 6855473 bytes, 3857.39Kbyte/sec

# 전송속도 제한 (0은 제한없음, 단위는 초당 bytes)
anon_max_rate=0
local_max_rate=0
trans_chunk_size=0

# 최대 접속 설정 (단 xinetd를 통하지 않고 standalone으로 동작할 때만 사용 가능)
# standalone을 위해서는 listen=YES 추가하고 별도로 vsftpd를 띄워야 함
#
# max_clients=최대 접속자 수, max_per_ip=IP당 접속 수
# max_clients=100
# max_per_ip=3

# Standalone 으로 운영할 때 listen=YES. 포트 변경을 원할 경우 listen_port 설정
# 디폴트 포트는 21번 포트이다.
# listen=YES
# listen_port=21
-------------------------------------------------------------

필요한 설정이 끝났으면 xinetd를 재실행한다.

-------------------------------------------------------------
# /etc/rc.d/init.d/xinetd restart
-------------------------------------------------------------

4. 문제 해결

1) ftpwho 같은 명령은 있나?
  또한 last를 해도 접속된 걸 확인할 수가 없는데 방법이 없나?

 ftpwho 형태의 명령은 없으며 임시적으로 다음 명령어 등으로 확인할 수 있다.

 # ps -ef|grep vsftpd
 # fuser -v ftp/tcp

 vsftpd v1.2.0이상부터 PAM을 통해 wtmp에 로그를 남기므로 last로 접속여부를 확인할 수 있다.

2) 한글 파일명이 전송될 때는 vsftpd.log 에 ???? 로 남는다. 해결책은?

 vsftpd는 출력할 수 없다고 판단하는
 ASCII 코드 31 이하, 128~159, 177 문자를 모두 ? 로 바꿔서 저장을 한다.
 따라서 이 부분을 처리하지 않고 저장하도록 소스를 수정한 후 컴파일하면 해결된다.

3) 사용자가 홈디렉토리를 못 벗어나게 하고 싶는데?

/etc/vsftpd.conf에 다음을 추가하면, 모든 사용자는 자신의 홈디렉토리만 접근할 수 있다.

chroot_local_user=YES

또한 특정 사용자로만 제한을 하고 싶다면 다음과 같이 한다. /etc/vsftpd.chroot_list에는 제한할
사용자 ID를 한줄에 하나씩 나열하면 된다.

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

주의할 것은 chroot_local_user=YES와 chroot_list_enable=YES를 함께 사용할 경우에는
/etc/vsftpd.chroot_list에 포함된 사용자 ID만 제한없이 홈디렉토리를 벗어날 수 있다.
즉, 반대로 작용한다.

standalone으로 FTP서버가 동작중이면 재실행 필요. standalone에 대해서는 6)번에서.

4) root로 접속할 수는 없나?

 가능하면 root 접속은 허용하지 않기를 바란다.
 /etc/ftpusers 파일에서 root를 빼면 접속이 가능하다.

5) ID/비밀번호가 정확히 맞는데 로긴할 때 자꾸 530 Login incorrect. 라고 나온다.

 /etc/ftpusers (또는 vsftpd.ftpusers)에 등록된 사용자인지 확인한다.
 여기에 등록된 사용자는 로긴할 수 없다. 이럴 때 /var/log/messages에 다음과 같은 로그가 남는다.

 Aug 16 22:21:52 truefeel vsftpd: PAM-listfile: Refused user xxxxxxxx for service vsftpd

6) standalone으로 운영하고 싶다.
  (즉, apache나 sendmail처럼 xinetd 통하지 않고 운영을 원한다.)

 /etc/xinetd.d/vsftpd (vsftpd가 아닌 다른 파일명일 수 있음) 에서 disable = yes 로 변경하여
 xinetd로 서비스 하지 않도록 설정한다. xinetd 를 재실행하면 이제 xinetd를 통한 ftp 서비스는 종료된다.

 레드햇의 경우 /etc/rc.d/init.d/xinetd restart

 이제 vsftpd 데몬를 실행한다. (소스로 설치시 기본 경로는 /usr/local/sbin)

 # /usr/local/sbin/vsftpd &

7) 다른 포트(기본 21번)를 사용하고 싶다. (예를 들어 11121번 포트를 원할 때)

 * xinetd를 이용하는 경우

  /etc/service 에 'ftp2  11121/tcp' 한 줄을 추가한다.
  그리고 /etc/xinetd.d/vsftpd (vsftpd가 아닌 ftp와 같은 다른 파일명일 수 있음) 에서
  service ftp 를 service ftp2로 바꾸고, xinetd 를 재실행한다.

 * standalone으로 운영하는 경우

  /etc/vsftpd.conf 에서 listen_port=11121 을 추가하고 vsftpd 서버를 재실행한다.

 바뀐 포트로 운영중인지 확인은 netstat -atnp(리눅스) 또는 netstat -an(그 이외 유닉스)

8) 업로드 파일 크기를 제한하는 방법은 없나요? 이를테면 5MB이상의 파일은 업로드 못한다든지.

현재 1.2.1버전까지 vsftpd 자체에 설정하는 방법은 없습니다.

5. 참고할만한 문서

* vsftpd 1.2.0 설치 문서
 
ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-1.2.0/INSTALL
* vsftpd.conf man page
* vsftpd에서 한글파일로그와 lastlog 로긴확인하기 (좋은진호)
 
http://coffeenix.net/board_view.php?bd_code=4
* vsftpd에서 전송속도 제한 (bandwidth limit) (좋은진호)
 
http://coffeenix.net/board_view.php?bd_code=21
<  커널 컴파일 | SSH 다중 세션 종료 스크립트  >


1. /etc/xinetd.d/telnet 설정

# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no    <- yes를 no로 바꾼다.
}


2. 서비스 재시작

# /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]


1. 설치 확인
# rpm -qa | grep tftp

2. 설치
# yum install tftp
# yum install tftp-server

3. /etc/xinetd.d/tftp 설정
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        disable                 = no    <- yes를 no로 변경
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

-s /tftpboot 에서 -s 옵션은 다른 디렉토리로의 이동 금지 옵션
                           -c 옵션은 새로운 화일 생성 가능(default는 새로운 화일 생성 금지, 같은 이름의 화일이 있으면 upload 가능)

4. 서비스 재시작
# service xinetd restart

5. 동작 확인
# netstat -al | grep tftp
udp        0      0 *:tftp                      *:*

6. /tftpboot 디렉토리 확인
# cd /tftpboot
tftp 접속을 하면 /tftpboot 디렉토리가 홈디렉토리임


1.Default Gateway 설정 파일

파일 이름 : /etc/sysconfig/network

NETWORKING=yes
: 통신이 되도록 지원할 것인가의 여부(yes or no)

HOSTNAME=proneer.co.kr
: 서버의 호스트네임(Hostname)을 설정

GATEWAYDEV=eth0
: Default Gateway 장치명

GATEWAY=192.168.0.1
: 시스템 전체의 Default Gateway(각 interface에서 따로 gateway를 설정하면 그것이 우선)

FORWARD_IPV4=no
: 시스템이 라우터 역할을 할 것인지 여부, 패킷 포워딩을 수행할 경우는 yes 그렇지 않을 경우는 no 설정


2.Network Interface Card(NIC) 설정 파일

파일 이름 : /etc/sysconfig/network-scripts/ifcfg-ethx
: ifcfg-eth의 x는 0부터 시스템에 설치되어 있는 NIC 숫자 만큼 늘어난다.

DEVICE=eth0
: 네트워크 디바이스의 장치명, 리눅스는 ethx로 네트워크 디바이스 장치명이 정해져 있음

BOOTPROTO=static
: NIC에 IP를 Dynamic으로 설정할 것인지 아니면 Static으로 설정할 것인지 정함(dhcp = 유동 IP 설정으로 DHCP Server를 통하여 IP 설정, static = 고정 IP 설정으로 관리자가 IP를 직접 입력)

IPADDR=192.168.0.2
: eth0에 IP 주소를 설정

BROADCAST=192.168.0.255
: Broadcast 주소를 설정

NETMASK=255.255.255.0
: Netmask 값을 설정

NETWORK=192.168.0.0
: 해당 네트워크의 Network ID 설정

ONBOOT=yes
: 해당 NIC를 시스템이 부팅할 때 활성화할지 여부(yes or no)

USERCTL=no
: 해당 NIC를 root를 제외한 사용자가 On/Off 가능하게 할지 여부(yes or no)

GATEWAY=192.168.0.1
: 해당 NIC의 Default Gateway를 설정한다. /etc/sysconfig/network 파일에서 설정한 gateway 보다 우선한다.


3.DNS 설정 파일

파일 이름 : /etc/resolv.conf

search nameserver.or.kr
: 호스트네임만 지정했을 경우 뒤에 자동으로 chosun.ac.kr를 붙임

nameserver 168.126.63.1
: 네임서버의 IP를 지정, 네임서버의 지정 개수는 제한이 없고 응답이 없을 경우 다음에 지정한 네임서버를 사용


중요 : 변경된 정보를 적용하기 위하여 시스템을 재부팅하거나 아래와 같은 명령을 사용
: /etc/rc.d/init.d/network restart       or     /etc/init.d/network restart


linux IP Setting Methods


Run Level Process
0 시스템의 Shutdown,halt.
1 1인 관리자 모드(Single 모드).
2 멀티유저 로컬 프로세서 데몬.NFS
3 멀티유저 리모트 프로세서 데몬 (일반적인 상태).
4 싱글유저 스테이트 (root만 접속가능) 단 root 화일 시스템만 보임.
5 X 로그인
6 리부팅(reboot).

종료방법
#init 0
#telinit 0
#shutdown -i0 -g0 -y (일반적인종료)
#shutdown -h 종료후 halt 상태로
#shutdown -r 리부팅.
#init s  싱글상태로 전환
#reboot  (리부팅)

NetWork Configuration
#ifconfig -a    -인터페이스 점검.
( ping telnet traceroite nslookup dmesg netstat -nr )

/etc/init.d/network restart  (start,stop)

1. 호스트네임,게이트웨이설정.
/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localhost
GATEWAYDEY=eth0
GATEWAY=192.168.1.1


2. 네트웍 인터페이스 설정.
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none (dhcp)
BROADCAST=192.168.1.255
IPADDR=192.168.1.5
NETMASK=255.255.0.0
omBOOT=yes

3.DNS서버주소
/etc/resolv.conf
search servername.org
nameserver 192.168.1.1
nameserver 192.168.1.5

4.호스트alies
/etc/hosts
127.0.0.1             localhost.host          localhost
192.168.1.5          localhost

5.호스트명선행처리
/etc/host.conf
order     hosts,bind

# /etc/nologin  접속금지 메세지 설정 (존재하면 접속 불가)
접속이 금지됩니다. 담에 다시 접속해 주세요.

#free - 사용중인 메모리양
/etc/issue.net 파일 (telnet login 시에 보여지는 파일)
/etc/motd 파일 (login 후에 환영메세지)

/proc/sys/net/ipv4/icmp_echo_ignore_all 
1            <- (ping 응답 안하게 설정, default 0 )
 
※ 리눅스에서의 네트워크 장치 이름

    랜카드 장착시 -> '/dev/eth0'  ,  '/dev/eth1'  ,  ...


☆ Gateway , Router
※ 게이트웨이 를 별도로 추가시
    # route  add  default  gw  <게이트웨이 주소>  dev  <장치 이름>
    예)  # route  add  default  gw  192.168.184.254  dev  eth0

☆ Net Mask  &  Class
- 넷마스크 : 네트워크의 규모를 등급별로 결정함.
- C 클래스 : 256개의 IP주소 사용가능
                 예)  네트워크 주소 : 192 . 168 . 184 . 0
                       넷마스크 주소 : 255 . 255 . 255 . 0
- B 클래스 : 65536개의 IP주소 사용가능 ( 2^16 )
                 예)  네트워크 주소 : 192 . 168 . 0 . 0
                       넷마스크 주소 : 255 . 255 . 0 . 0
- A 클래스 : 2^24 개의 IP주소 사용가능
                 예)  네트워크 주소 : 192 . 0 . 0 . 0
                       넷마스크 주소 : 255 . 0 . 0 . 0
※ 설치 가능한 컴퓨터 갯수
    네트워크 주소, 브로드 캐스트 주소, 게이트 웨이 주소 3개를 제외한
    갯수의 컴퓨터를 네트워크 내부에 설치할 수 있다. (C클래스의 경우 256-3 = 253대)

☆ DNS 서버 주소
- URL을 해당 컴퓨터의 IP주소로 변환해주는 서버 컴퓨터의 주소
- 설정 파일  :  /etc/resolv.conf
                   ------------------------------------
                    ........
                    Default  Server : *****                       // DNS 제공자
                    nameserver < ***.***.***.*** >         // 해당 DNS 서버 IP
                    ........
                    ------------------------------------

☆ 네트워크 관련 명령어
ⓐ # system-config-network
    - 네트워크 연결방식을 DHCP 클라이언트 또는 고정 IP 주소를 사용할지 결정
    - IP 주소 , 서브넷 마스크 , 게이트웨이 정보
    - DNS 정보
    - 네트워크 카드 드라이버 설정 , 장치 (eth0) 설정
ⓑ # system-config-network-tui
    - Text User Interface  :  네트워크 설정의 텍스트 모드
ⓒ # service  network  restart
    - 네트워크 설정 변경후 변경 내용을 시스템에 적용 (네트워크 서비스 재시작)
ⓓ # ifconfig < 장치 이름 >
    - 해당 장치의 IP 주소 설정 정보를 출력
ⓔ # nslookup
    - DNS 서버작동 테스트
ⓕ # ping
    - 네트워크에 응답 테스트

☆ 네트워크 설정 변경 관련 파일
 /etc/sysconfig/network                                 // 기본 정보
 /etc/sysconfig/network-scripts/ifcfg-eth0       // eth0 에대한 정보 몽창..
/etc/resolv.conf                                            // DNS 서버정보 및 호스트 이름 정보

☆ 네트워크 카드 교체
- 실제로 네트워크 카드에 문제가 발생시 적용시킬수 있다.
1. 네트워크 카드를 제거.
2. 네트워크 카드를 새로 장착.
3. root 로 부팅~
4. # system-config-network
5. "하드웨어" 탭  →  'eth0' 지우기
                       [새로만들기]  →  하드웨어 타입 'Ethernet' 선택
                       →  <네트워크 아답터 설정 창>  →  아답터 'AMD PCnet32' 선택
6. "장치" 탭  →  [새로만들기]  →  '이더넷 연결' 선택  →  'AMD PCnet32' 선택
                       →  <네트워크 셋팅 설정 창>  →  '정적으로 설정된 IP 주소들' 선택
                       →  네트워크 정보 입력
7. "DNS" 탭  →  DNS 주소 확인
8. 완료 (창닫기 or  메뉴 [파일]-[끝내기] 선택)
9. # service  network  restart            // 서비스 재시작
10. # ping  www.google.co.kr          //  응답확인
11. # ifconfig  eth0                          //  네트워크 설정 확인

☆ 네트워크 설정 - Text Mode
# vi  /etc/sysconfig/network         // 확인
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
   다음 사항을 수정한다.
   ----------------------------------------------------
   ..............
   NETMASK = *** . *** . *** . ***              // 넷마스크
   IPADDR = *** . *** . *** . ***                  // IP 주소
   ..............
   GATEWAY = *** . *** . *** . ***             // 게이트 웨이 주소
   ..............
   ----------------------------------------------------
# service  network  restart

☆ 네트워크 설정 - Command Mode
# ifconfig  eth0  <IP 주소>  netmask  <넷마스크>  broadcast  <브로드캐스트 주소>  up
# route  add  -net  <네트워크 주소>  netmask  <넷마스크>  eth0
# route  add  default  gw  <게이트웨이 주소>  dev  eth0
# vi /etc/resolv.conf          // DNS 설정
# service  network  restart

※  인터넷이 잘 안될때 , DNS 서버 고장을 의심해보자

ⓐ DNS 서버 작동 확인하기
    # nslookup
    > server                     // 사용중인 DNS 서버 주소확인,  "Default server :" 이후에 나오는 주소가 DNS주소
    > www.google.co.kr
       ;; connection timed out; no servers could be reached
        위와 같은 에러 메시지가 나온다면 DNS 서버가 고장나거나, DNS 서버의 주소가 잘못된것.

ⓑ 다른 컴퓨터에서 DNS 주소 따오기
     windows 인경우 : cmd 창에서 'nslookup' 명령으로 DNS 주소 획득~
     linux 인 경우 :  위 ⓐ방법으로 확인

ⓒ 가져온 DNS 주소 확인하기
    # nslookup
    > server  <새로운 DNS 주소>
    > www.google.co.kr               // DNS 서버 작동 확인

ⓓ 정상 작동하는 DNS 주소 적용하기
    # vi  /etc/resolv.conf               // 'nameserver' 부분 수정



VS FTP 설정 파일


/etc/vsftp.conf


listen=YES

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

ascii_upload_enable=YES
ascii_download_enable=YES

chroot_local_user=YES

ls_recurse_enable=YES

secure_chroot_dir=/var/run/vsftpd

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key


.bash_profile

##### LANGUAGE SECTION #####
#export LANG="ko_KR.eucKR"
#export LC_ALL="ko_KR.eucKR"

##### PROMPT TYPE EDIT SECTION #####
PS1='^[[44;1;36m [ ${USER}@lab4 ] ^[[44;1;33m${PWD} ^[[0m \n^[[44;1;33m ^[[44;1;36m#  ^[[0m  '

#####  dir COLOR EDIT SECTION  #####
#eval "`/usr/bin/dircolors -b ~/.dir_colors`"

#####  ALIAS SECTION  #####
alias ss='. ~/.bash_profile'
alias vi='/usr/bin/vim -T ansi'
alias ls='ls -CFh --color=always'
alias ll='ls -alh -F --color=always'
alias la='ls -alh -F --color=always'
alias dir='/bin/ls -alhF --color=always | more'
alias f='/usr/bin/finger'
alias ff='f;w'
alias cls='clear'

#####  PROMPT EDIT SECTION  #####
echo
echo "     ^[[44;1;36m    $(date)     ^[[0m"
echo
echo "^[[0m^[[1;32m $(w) ^[[0m"
echo



.vimrc

set magic
set noshowcmd
set fileencoding=korea

set nowrap
set shiftwidth=3
set tabstop=3
set nowritebackup
set showmode
"set hardtabs=3
set nobackup
set nocompatible
set background=dark
set number
set ruler

syntax on

hi Comment          ctermfg=Gray guifg=#80a0ff
hi Constant         ctermfg=Magenta guifg=#ffa0a0
hi Special          ctermfg=Magenta guifg=Orange
hi Identifier       ctermfg=LightGreen guifg=#40ffff
hi Statement        ctermfg=Cyan guifg=#ffff60 gui=bold
hi PreProc          ctermfg=green guifg=#ff80ff
hi Type             ctermfg=Yellow guifg=#60ff60 gui=bold
hi Ignore           ctermfg=Black guifg=bg

au BufNewFile,BufReadPost *.c,*.h,*.pc,*.ec     set cindent shiftwidth=2
au BufNewFile,BufReadPost *.java        set cindent shiftwidth=2
au BufNewFile,BufReadPost *.cpp,*.cc    set cindent shiftwidth=2
au BufNewFile,BufReadPost *.jsp         set cindent shiftwidth=2
au BufNewFile,BufReadPost *.phtml       set cindent shiftwidth=2
au BufNewFile,BufReadPost *.pl          set cindent shiftwidth=2
au BufNewFile,BufReadPost *.html                                set cindent shiftwidth=2
au BufNewFile,BufReadPost *.tcl                                 set cindent shiftwidth=2
au BufNewFile,BufReadPost *.php                                 set cindent shiftwidth=2
au BufNewFile,BufReadPost *.tex                                 set autoindent



.dir_colors

# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the --color option.

# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
# slackware version of dircolors) are recognized but ignored.

# Below, there should be one TERM entry for each termtype that is colorizable
TERM linux
TERM linux-c
TERM mach-color
TERM console
TERM con132x25
TERM con132x30
TERM con132x43
TERM con132x60
TERM con80x25
TERM con80x28
TERM con80x30
TERM con80x43
TERM con80x50
TERM con80x60
TERM dtterm
TERM xterm
TERM xterm-color
TERM xterm-debian
TERM rxvt
TERM screen
TERM screen-w
TERM vt100

# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
NORMAL 00   # global default, although everything should be something.
FILE 00  # normal file
DIR 08;36   # directory
LINK 01;36  # symbolic link.  (If you set this to 'target' instead of a
            # numerical value, the color is as for the file pointed to.)
FIFO 40;33  # pipe
SOCK 01;35  # socket
DOOR 01;35  # door
BLK 40;33;01   # block device driver
CHR 40;33;01   # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file

# This is for files with execute permission:
EXEC 01;32

#program-source file
.cpp  01;31
.h    01;31
.c    08;33
.java 01;33
.out  08;32
.html 01;35
.htm   01;35
.cgi   01;35
.shtml 01;35

.bash_profile   01;31
.bashrc        01;31
.vim           01;31
.svim       01;31
.vimrc         01;31
.vimrc         02;31
# List any file extensions like '.gz' or '.tar' that you would like ls
# to colorize below. Put the extension, a space, and the color init string.
# (and any comments you want to add after a '#')

# If you use DOS-style suffixes, you may want to uncomment the following:
#.cmd 01;32 # executables (bright green)
#.exe 01;32
#.com 01;32
#.btm 01;32
#.bat 01;32

.tar 01;31 # archives or compressed (bright red)
.tgz 01;31
.arj 01;31
.taz 01;31
.lzh 01;31
.zip 01;31
.z   01;31
.Z   01;31
.gz  01;31
.bz2 01;31
.deb 01;31
.rpm 01;31
.jar 01;31

# image formats
.jpg 01;35
.jpeg 01;35
.png 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.pgm 01;35
.ppm 01;35
.tga 01;35
.xbm 01;35
.xpm 01;35
.tif 01;35
.tiff 01;35
.mpg 01;35
.mpeg 01;35
.avi 01;35
.fli 01;35
.gl 01;35
.dl 01;35
.xcf 01;35
.xwd 01;35

# audio formats
.ogg 01;35
.mp3 01;35
.OGG 01;35
.MP3 01;35