리눅스계정관리매뉴얼 작성일자 : 201305 카페 24 IDC 사업팀
리눅스계정생성 - useradd useradd cafe24 cafe24 라는이름의계정을생성 tail /etc/passwd 계정이잘생성되었는지 /etc/passwd 파일을확인 ----------------------------------------------------------------------------------------------------------------------- sshd:x:74:74:privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpcuser:x:29:29:rpc Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:anonymous NFS User:/var/lib/nfs:/sbin/nologin xfs:x:43:43:x Font Server:/etc/X11/fs:/sbin/nologin haldaemon:x:68:68:hal daemon:/:/sbin/nologin avahi-autoipd:x:100:156:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin dovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologin mysql:x:500:500::/usr/local/mysql:/bin/bash psh:x:501:501::/home/psh:/bin/bash cafe24:x:502:502::/home/cafe24:/bin/bash 생성된계정을볼수있음 ----------------------------------------------------------------------------------------------------------------------- /etc/passwd 파일설명 502:502 UID(UserID) 가 502, GID(GroupID) 가 502 라는것을의미 /home/cafe24 생성된 cafe24 계정의홈디렉토리위치가 /home/cafe24 라는의미 /bin/bash cafe24 계정은 bash shell을사용한다는의미 ll /var/spool/mail -rw-rw---- 1 cafe24 mail 0 5 ù 28 17:38 cafe24 cafe24 계정에대한메일함생성됨 -rw-rw---- 1 mysql mail 0 6 ù 4 2012 mysql -rw-rw---- 1 psh mail 0 11 ù 19 2012 psh -rw------- 1 root root 4979330 5 ù 29 04:02 root -rw-rw---- 1 rpc mail 0 6 ù 4 2012 rpc 1 계정생성명령어 : useradd [ 생성할계정명 ] 2 옵션 -d : 홈디렉토리위치를지정할때사용합니다 -M : 홈디렉토리를만들지않고계정을생성합니다 -u : UID를지정하여계정을생성합니다 -g : 그룹을지정할때사용합니다 이경우에는지정할그룹이미리생성되어있어야합니다 -G : 기본그룹이외에추가적으로지정그룹에속하게할경우사용합니다 -c : 계정에대한코멘트 (comment) 를입력할경우사용합니다 -s : 사용자가사용할쉘 (shell) 을지정할때사용합니다 -D : /etc/default/useradd 에설정된기본정보를볼때사용합니다 (/etc/default/useradd 파일을 vi 에디터로보아도값은동일합니다 )
리눅스계정생성 - useradd useradd cafe24_2 -d /etc/cafe24_2 -u 1000 -s /bin/csh cat /etc/passwd ----------------------------------------------------------------------------------------------------------------------- cafe24:x:502:502::/home/cafe24:/bin/bash cafe24_2:x:1000:1000::/etc/cafe24_2:/bin/csh ----------------------------------------------------------------------------------------------------------------------- /etc/passwd 파일의각필드설명계정 Id : 패스워드 ( 보안을위해 x 로표시됨 ) : UID : GID : 설명 ( 코멘트 ) : 홈디렉토리위치 : 쉘스크립트 1 옵션을적용하여 Cafe24_2 라는이름의계정을생성하였습니다 2 생성된 cafe24_2 라는계정의 UID는 1000, 홈디렉토리는 /etc/cafe24_2, 사용할쉘스크립트는 csh(c shell) 로설정된것을볼수있습니다 리눅스계정생성 skel 디렉토리 [root@localhost /etc/skel]# ls -l 초기 /etc/skel 디렉토리는비어있음 ÇÕ è 0 [root@localhost /etc/skel]# touch readmetxt readmetxt 파일을생성 [root@localhost /etc/skel]# [root@localhost /etc/skel]# ls -l ÇÕ è 0 -rw-r--r-- 1 root root 0 5 ù 29 18:28 readmetxt readmetxt 파일확인 [root@localhost /etc/skel]# [root@localhost /etc/skel]# useradd cafe24_3 cafe24_3 계정생성 [root@localhost /etc/skel]# [root@localhost /etc/skel]# ls -l /home/cafe24_3 cafe24_3 계정홈디렉토리확인 ÇÕ è 0 -rw-r--r-- 1 cafe24_3 cafe24_3 0 5 ù 29 18:28 readmetxt readmetxt 파일이복사됨을확인 [root@localhost /etc/skel]# 1 유저를생성할때기본적으로 /etc/skel 디렉토리에있는파일들을사용자의홈디렉토리에복사하게됩니다 2 따라서특정파일들 ( 사용안내, 환경설정파일등등 ) 을 /etc/skel 디렉토리에넣어놓으면계정을생성시매번복사해서넣을필요가없습니다
리눅스계정패스워드설정 - passwd passwd cafe24 cafe24 계정의패스워드를설정 Changing password for user cafe24 New UNIX password: 패스워드입력 BAD PASSWORD: it does not contain enough DIFFERENT characters 입력된패스워드가너무짧다는경고 무시가능 Retype new UNIX password: 패스워드확인을위해패스워드재입력 passwd: all authentication tokens updated successfully 패스워드설정완료 tail /etc/shadow 패스워드저장파일을확인 mysql:$1$r6m4cjir$kqvfawlzpmq0tstinalli0:15495:0:99999:7::: cafe24:$1$irwvzkfz$brk5hwniiv97nhjwdwqlw:15855:0:99999:7::: $1$iRwVZK~~ 로암호화된패스워드가등록된 cafe24_2:!!:15854:0:99999:7::: 것을확인할수있다 아직패스워드를설정하지 cafe24_3:!!:15854:0:99999:7::: 않은 cafe24_2,cafe24_3 계정은해당필드가 비어있는것을볼수있다 1 패스워드설정 ( 변경 ) 명령어 : passwd [ 계정명 ] 2 계정을생성하였다면해당계정이로그인할때사용할패스워드를생성해줘야합니다 3 설정된패스워드는 /etc/shadow 파일에암호화되어저장됩니다 리눅스계정삭제 - userdel userdel cafe24_3 café24_3 계정삭제 tail /etc/passwd /etc/passwd 파일에서계정삭제확인 rpcuser:x:29:29:rpc Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:anonymous NFS User:/var/lib/nfs:/sbin/nologin xfs:x:43:43:x Font Server:/etc/X11/fs:/sbin/nologin haldaemon:x:68:68:hal daemon:/:/sbin/nologin avahi-autoipd:x:100:156:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin dovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologin mysql:x:500:500::/usr/local/mysql:/bin/bash psh:x:501:501::/home/psh:/bin/bash cafe24:x:502:502::/home/cafe24:/bin/bash cafe24_2:x:1000:1000::/etc/cafe24_2:/bin/csh cafe24_3 계정은삭제됨을확인 1 계정생성명령어 : userdel [ 삭제할계정명 ] 2 옵션 -f : 사용자계정을시스템에서강제 (force) 로삭제합니다 사용자가로그인중이더라도삭제가됩니다 -r : 사용자계정의홈디렉토리, 메일함까지모두삭제할경우사용합니다
리눅스그룹관리 groupadd, groupdel tail /etc/group dovecot:x:97: mysql:x:500: psh:x:501: cafe24:x:502: cafe24_2:x:1000: groupadd cafe24_group -g 505 tail /etc/group dovecot:x:97: mysql:x:500: psh:x:501: cafe24:x:502: cafe24_2:x:1000: cafe24_group:x:505: groupdel cafe24_group tail /etc/group dovecot:x:97: mysql:x:500: psh:x:501: cafe24:x:502: cafe24_2:x:1000: 현재그룹확인 cafe24_group 이란느그룹을 GID 505로생성 생성된그룹을확인 cafe24_group 라는이름의그룹이생성됨을확인 cafe24_group 그룹삭제 그룹삭제확인 1 그룹생성명령어 : groupadd [ 생성할그룹명 ] 2 옵션 -g : 특정 GID번호로그룹을생성합니다 -r : 0~500 번대사이의 GID 중에서가장큰숫자로그룹을생성합니다 3 그룹에대한정보는 /etc/group 에담겨있습니다 1 그룹삭제명령어 : groupdel [ 삭제할그룹명 ] 2 단, 삭제하려고하는그룹에속하는사용자가있을경우에는해당그룹은삭제가되지않습니다
리눅스계정정보조회 id id 계정을지정하지않고입력하면현재로그인한계정의정보를출력해줌 uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) id cafe24 uid=502(cafe24) gid=502(cafe24) groups=502(cafe24) id cafe24_2 uid=1000(cafe24_2) gid=1000(cafe24_2) groups=1000(cafe24_2) 1 계정정보조회명령어 : id [ 계정명 ] 2 입력한계정의 UID, GID, GROUP 정보를보여주는명령어입니다 리눅스계정정보조회 - groups groups root bin daemon sys adm disk wheel root 계정이속한그룹들이출력됨 groups cafe24 cafe24 : cafe24 cafe24 계정이속한그룹들이출력됨 groups xfs xfs : xfs groups cafe24_2 cafe24_2 : cafe24_2 1 계정정보조회명령어 : groups [ 계정명 ] 2 입력한계정이속한그룹을보여주는명령어입니다
리눅스계정정보수정 - usermod cat /etc/passwd cafe24:x:502:502::/home/cafe24:/bin/bash cafe24_2:x:1000:1000::/etc/cafe24_2:/bin/csh usermod -d /home/cafe24_2 -u 10001 cafe24_2 ---------------------------------------------------------------------------------------------------------------------------------- cafe24:x:502:502::/home/cafe24:/bin/bash cafe24_2:x:10001:1000::/home/cafe24_2:/bin/csh cafe24_2 계정의홈디렉토리와 UID 변경됨 ---------------------------------------------------------------------------------------------------------------------------------- root@localhost /root]# 1 계정정보수정명령어 : usermod [ 수정하려는계정명 ] 2 옵션 -c : 계정의설명 (comment) 를변경합니다 -d : 계정의홈디렉토리를변경합니다 -m : 홈디렉토리변경시파일도함께이동시킵니다 -s : 기본쉘을변경합니다 -u : 계정의 UID를변경합니다 -g : 계정의기본 GID를변경합니다 -G : 계정의추가그룹을변경합니다 -L : 계정의패스워드에 Lock을걸어로그인을불가능하게합니다 -U : Lock이걸린계정을해제합니다
리눅스 FTP 관리매뉴얼 작성일자 : 201305 카페 24 IDC 사업팀
FTP 계정생성 - useradd useradd cafe24_ftp_test cafe24_ftp_test 계정생성 passwd cafe24_ftp_test 패스워드설정 Changing password for user cafe24_ftp_test New UNIX password: 패스워드입력 BAD PASSWORD: it does not contain enough DIFFERENT characters Retype new UNIX password: 패스워드재입력 passwd: all authentication tokens updated successfully cat /etc/passwd ----------------------------------------------------------------------------------------------------------------------- cafe24_ftp_test:x:501:501::/home/cafe24_ftp_test:/bin/bash 계정생성완료확인 ----------------------------------------------------------------------------------------------------------------------- 1 리눅스 FTP 계정? FTP계정은리눅스의사용자계정을그대로사용합니다 간단히말해 useradd 명령어로리눅스에일반사용자계정을생성하였다면, 이계정으로 FTP 접속을한다는의미입니다 2 cafe24_ftp_test 라는계정을생성하여 FTP 접속을해보겠습니다 FTP 설치확인 rpm -qa grep vsftpd vsftpd-205-28el5 vsftpd가설치되어있음을확인 yum install vsftpd vsftpd가설치되어있지않은경우설치명령어 Loaded plugins: fastestmirror, security Determining fastest mirrors * base: datanicehostingcokr * extras: datanicehostingcokr * updates: wwwftpnejp base 11 kb 00:00 extras 21 kb 00:00 updates 19 kb 00:00 1 FTP 접속을위해먼저서버에 FTP 프로그램이설치되어있는지확인합니다 ( 리눅스에서는이러한프로그램들을 daemon 이라고합니다 ) 2 rpm qa grep vsftpd 명령어를입력하여 vsftpd가설치되어있는지확인합니다 3 설치되어있지않은경우 yum install vsftpd 명령어로설치합니다
FTP 데몬실행확인 netstat -nlpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0000:80 0000:* LISTEN 19794/httpd tcp 0 0 0000:22 0000:* LISTEN 1469/sshd /etc/rcd/initd/vsftpd start Starting vsftpd for vsftpd: [ OK ] netstat -nlpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0000:80 0000:* LISTEN 19794/httpd tcp 0 0 0000:21 0000:* LISTEN 2035/vsftpd vsftpd 데몬이실행됨 tcp 0 0 0000:22 0000:* LISTEN 1469/sshd 1 vsftpd가설치되었다면이제실행이되어있는지확인할차례입니다 2 netstat nlpt 명령어를입력하여 21번포트 (FTP는 21번포트를사용 ) 에 ftp데몬이있는지확인합니다 3 vsftpd가실행되어있지않다면 /etc/rcd/initd/vsftpd start 명령어로실행시켜줍니다 vsftpdconf 설정 1 파일위치 : vi /etc/vsftpd/vsftpdconf 2 역할 : vsftpd 데몬의설정값을담고있는파일입니다 3 적용 : vsftpdconf 파일을수정한후, /etc/rcd/initd/vsftpd restart 명령어로적용합니다 4 설정값에대한간략한설명 - anonymous_enable=yes : 익명의사용자로그인허용여부설정 보안을위해 NO로변경 - write_enable=yes : 쓰기권한을설정 주석처리할경우파일이나디렉토리생성불가능 - local_umask=022 : 디렉토리나파일생성시퍼미션을설정 - xferlog_enable=yes : 파일업 / 다운로드시관련로그를기록할것인지설정 - xferlog_file= 경로 : xferlog 파일의위치를지정 보통 /var/log/xferlog로설정한다 - ilde_session_timeout : ftp 접속세션에대한타임아웃시간을설정 - session_support=yes : YES로설정시 wtmp에 ftp 관련기록이남게됩니다 따라서 last 명령어로 ftp 접속기록의확인이가능합니다 - max_clients= 숫자 : 최대접속자수를제한할수있습니다
FTP 데몬실행확인 비밀번호입력 - 계정의비밀번호를입력합니다 계정정보입력 - 앞에서생성하였던계정을입력합니다 예 ) cafe24_ftp_test 호스트정보입력 - 접속할서버의 IP를입력하거나해당서버가도메인으로연결되어있다면도메인을입력하여도됩니다 1 Filezilla, 알 ftp 등의 ftp 클라이언트프로그램을이용하여위에설정한 cafe24_ftp_test 계정으로 서버에접속하여 ftp 를사용합니다
FTP passive mode 설정하기 1 FTP 접속은 Active / Passive 두가지의연결방법이있습니다 일반적으로 FTP클라이언트가방화벽이나 NAT( 일반적으로공유기 ) 환경을사용할경우액티브모드로는정상적인데이터전송이불가능한경우가발생하게됩니다 이때 FTP서버를 Passive 모드로설정함으로써문제를해결할수있습니다 2 Active Mode - 모든클라이언트에서서버측 21번포트로접속 (login) 을시도하고클라이언트가사용할두번째포트를서버에알려줍니다 - 서버는클라이언트에게 ack를보내고서버의 20번포트는클라이언트가알려준두번째포트로접속을시도하게됩니다 * 문제점 : 일반적인 TCP/IP의특징인클라이언트가서버에접속을시도하는것이아니라서버 --> 클라이언트로접속을시도하기때문에만약클라이언트 PC등에방화벽이나공유기가있어외부에서접속을허용하지않는다면, 서버 (20번포트 ) ---> 클라이언트 (1024~65535포트) 의접속이정상적으로되지않아 FTP에로그인은되지만데이터전송및디렉토리, 파일리스트를받지못하는문제가발생하는경우가있습니다 3 Passive Mode - 모든클라이언트에서서버측 21번포트로접속 (login) 을시도합니다 - 서버는클라이언트에게서버에서사용할두번째포트 (1024~65535포트) 를알려줍니다 - 클라이언트는다른포트를열어서버가알려준이포트로접속을시도하고데이터를전송하게됩니다 * 문제점 : 서버에서클라이언트가접속할수있도록방화벽에서 1024~65535 사이의포트를개방해야하는번거로움이발생합니다 하지만대부분의 FTP프로그램에서 passive 접속범위를제한할수있는기능이있어, 1024~65535 포트중일부포트만선택하여사용할수있습니다
FTP passive mode 설정하기 vsftpdconf 파일수정 vi /etc/vsftpd/vsftpdconf ---------------------------------------------------------------------------------------------------------------------------------- # Make sure, that one of the listen options is commented!! #listen_ipv6=yes pam_service_name=vsftpd userlist_enable=yes tcp_wrappers=yes pasv_enable=yes 패시브모드활성화 pasv_min_port=50000 패시브모드에서사용할포트범위설정 pasv_max_port=50001 ---------------------------------------------------------------------------------------------------------------------------------- 1 vsftpdconf 파일의하단에다음과같이 passive mode 관련설정을추가합니다 FTP passive mode 설정하기 방화벽에서 passive 포트개방 /etc/sysconfig/iptables save 우선먼저현재 iptables 내용을저장 Saving firewall rules to /etc/sysconfig/iptables: [ OK ] vi /etc/sysconfig/iptables ----------------------------------------------------------------------------------------------------------------------------- # Generated by iptables-save v135 on Mon Jul 23 13:22:04 2012 *filter :INPUT ACCEPT [65:4940] -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT INPUT 체인에추가 -A INPUT -m state --state NEW -m tcp -p tcp --dport 50000 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 50001 -j ACCEPT :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [60:6032] COMMIT # Completed on Mon Jul 23 13:22:04 2012 ------------------------------------------------------------------------------------------------------------------------------ 1 먼저현재 iptables 설정을저장하고 /etc/sysconfig/iptables 파일에의 INPUT 체인에 passive 접속용포트 (50000~50001) 를설정합니다
FTP passive mode 설정하기 iptables, vsftpd 재시작 /etc/sysconfig/iptables start iptables 재시작 Flushing firewall rules: [ OK ] Setting chains to policy ACCEPT: filter [ OK ] Unloading iptables modules: [ OK ] Applying iptables firewall rules: [ OK ] Loading additional iptables modules: ip_conntrack_netbios_n [ OK ] [root@localhost /]# iptables L 방화벽변경확인 Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ftp ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:50000 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:50001 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@localhost /]# [root@localhost /]# /etc/rcd/initd/vsftpd start vsftpd 재시작 Starting vsftpd for vsftpd: [ OK ] [root@localhost /]# netstat -nlpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0000:80 0000:* LISTEN 1421/httpd tcp 0 0 0000:21 0000:* LISTEN 2035/vsftpd tcp 0 0 0000:22 0000:* LISTEN 2672/sshd 1 Iptables, vsftpd 를재시작하여변경된사항을적용합니다