Linux Server - FTP 실습 (2 / 2) : 사용자 제한 ( ftpuser / user_list )
● 실습 1 - 사용자 제한 설정
- ftpuser 파일과 user_list 파일을 이용하여 FTP 서버로 접속하는 사용자를 제한한다.
- ftpuser 파일과 user_list 파일은 서로 동기화되지 않기 때문에, 각 파일의 설정을 조율하는 것이 중요하다.
- ftpuser 파일은 목록에 있는 유저의 접근을 막는다.
- user_list 역시 목록에 있는 유저의 접근을 막지만, 설정을 통해 목록에 있는 유저만을 접근 허용시킬 수 있다. (userlist_deny)
- user_list 파일의 옵션
userlist_enable userlist_deny 의미
yes yes user_list 파일에 등록된 사용자는 접속이 불허
yes no user_list 파일에 등록된 사용자만 접속이 가능
no 무관 userlist_enable이 no로 설정되면
userlist_file은 사용되지 않는다
◎ 결론
1. ftpuser 목록에 있는 유저는 접근이 제한됨
2. user_list 목록에 있는 유저는 userlist_enable 옵션이 Yes, userlist_deny 옵션이 Yes일 경우, 접속이 제한됨
3. user_list 목록에 있는 유저만 userlist_enable 옵션이 Yes, userlist_deny 옵션이 No일 경우, 접속이 허용됨
① ftpusers file을 사용한 사용자 제한
- userlist_enable 옵션을 No로 설정
→ user_list 파일을 사용하지 않겠다는 의미
▼ 설정
[root@DNS-Server ~]# vi /etc/vsftpd/ftpusers
[root@DNS-Server ~]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
#bin
#daemon
#adm
#lp
#sync
...
→ ftpuser 파일의 수정 : root 계정을 제외하고 모든 유저를 접근 허용한다.
▼ 접속 시도
[root@Apache ~]# ftp 192.168.10.175
Connected to 192.168.10.175.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.175:root): root
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
→ 접속 실패
② user_list file을 사용한 사용자 제한
- userlist_enable 옵션을 Yes로 설정
→ user_list 파일을 사용하겠다는 의미
※ 사전에 user_list 파일에 영향을 줄 수 있는 ftpuser 파일의 내용은 전부 주석처리 해둔다.
②-1) userlist_deny 옵션 Yes : 목록에 있는 유저 전부를 제한
▼ 설정 (vsftpd.conf)
[root@DNS-Server ~]# vi /etc/vsftpd/vsftpd.conf
...
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
tcp_wrappers=YES
▼ 설정 (user_list)
[root@DNS-Server ~]# vi /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
a1
#bin
#daemon
#adm
#lp
...
▼ 접속 시도
[root@Apache ~]# ftp 192.168.10.175
Connected to 192.168.10.175.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.175:root): root
530 Permission denied.
Login failed.
→ 접속 실패
→ ftpuser 파일로 제한했을 때와 접속 실패과정이 살짝 차이가 있다.
: user_list를 통한 제한에서는 password 조차 묻지 않고 deny 된다.
②-2) userlist_deny 옵션 No : 목록에 있는 유저를 제외한 모든 유저를 제한
▼ 설정 (vsftpd.conf)
[root@DNS-Server ~]# vi /etc/vsftpd/vsftpd.conf
...
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
▼ 설정 (user_list)
- 위와 같음
▼ 접속 시도
[root@Apache ~]# ftp 192.168.10.175
Connected to 192.168.10.175.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.175:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
→ 접속 성공
● 실습 2 - ftpuser 파일을 사용하여, user_list의 옵션 설정을 적용해보기
- PAM 서비스의 옵션을 사용하면 ftpuser 파일로도 목록에 있는 유저를 제외한 나머지 유저의 접근을 제한할 수 있다.
- /etc/pam.d/vsftpd 파일을 열람하면 파일의 내용 중 sense = deny 라는 설정이 있다.
- sence = allow로 변경해주면 ftpuser 목록에 있는 유저들이
user_list 옵션의 userlist_deny = NO의 옵션을 내게 된다.
▼ 설정
[root@DNS-Server ~]# vi /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
→ 기존의 설정대로라면, root 만을 접근 제한하는 의미
※ /etc/pam.d/vsftpd 파일을 수정
[root@DNS-Server ~]# vi /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=allow file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
→ sense = deny를 sense = allow로 변경
※ 사전에 실습이 user_list 파일의 영향을 받지 않게 userlist_enable 옵션을 NO로 설정
[root@DNS-Server ~]# vi /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd
userlist_enable=NO
#userlist_deny=NO
tcp_wrappers=YES
▼ 접속 시도
[root@Apache ~]# ftp 192.168.10.175
Connected to 192.168.10.175.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.175:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
→ 접속 성공
- ftpuser 파일과 user_list 파일을 이용하여 FTP 서버로 접속하는 사용자를 제한한다.
- ftpuser 파일과 user_list 파일은 서로 동기화되지 않기 때문에, 각 파일의 설정을 조율하는 것이 중요하다.
- ftpuser 파일은 목록에 있는 유저의 접근을 막는다.
- user_list 역시 목록에 있는 유저의 접근을 막지만, 설정을 통해 목록에 있는 유저만을 접근 허용시킬 수 있다. (userlist_deny)
- user_list 파일의 옵션
userlist_enable userlist_deny 의미
yes yes user_list 파일에 등록된 사용자는 접속이 불허
yes no user_list 파일에 등록된 사용자만 접속이 가능
no 무관 userlist_enable이 no로 설정되면
userlist_file은 사용되지 않는다
◎ 결론
1. ftpuser 목록에 있는 유저는 접근이 제한됨
2. user_list 목록에 있는 유저는 userlist_enable 옵션이 Yes, userlist_deny 옵션이 Yes일 경우, 접속이 제한됨
3. user_list 목록에 있는 유저만 userlist_enable 옵션이 Yes, userlist_deny 옵션이 No일 경우, 접속이 허용됨
① ftpusers file을 사용한 사용자 제한
- userlist_enable 옵션을 No로 설정
→ user_list 파일을 사용하지 않겠다는 의미
▼ 설정
[root@DNS-Server ~]# vi /etc/vsftpd/ftpusers
[root@DNS-Server ~]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
#bin
#daemon
#adm
#lp
#sync
...
→ ftpuser 파일의 수정 : root 계정을 제외하고 모든 유저를 접근 허용한다.
▼ 접속 시도
[root@Apache ~]# ftp 192.168.10.175
Connected to 192.168.10.175.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.175:root): root
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
→ 접속 실패
② user_list file을 사용한 사용자 제한
- userlist_enable 옵션을 Yes로 설정
→ user_list 파일을 사용하겠다는 의미
※ 사전에 user_list 파일에 영향을 줄 수 있는 ftpuser 파일의 내용은 전부 주석처리 해둔다.
②-1) userlist_deny 옵션 Yes : 목록에 있는 유저 전부를 제한
▼ 설정 (vsftpd.conf)
[root@DNS-Server ~]# vi /etc/vsftpd/vsftpd.conf
...
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
tcp_wrappers=YES
▼ 설정 (user_list)
[root@DNS-Server ~]# vi /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
a1
#bin
#daemon
#adm
#lp
...
▼ 접속 시도
[root@Apache ~]# ftp 192.168.10.175
Connected to 192.168.10.175.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.175:root): root
530 Permission denied.
Login failed.
→ 접속 실패
→ ftpuser 파일로 제한했을 때와 접속 실패과정이 살짝 차이가 있다.
: user_list를 통한 제한에서는 password 조차 묻지 않고 deny 된다.
②-2) userlist_deny 옵션 No : 목록에 있는 유저를 제외한 모든 유저를 제한
▼ 설정 (vsftpd.conf)
[root@DNS-Server ~]# vi /etc/vsftpd/vsftpd.conf
...
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
▼ 설정 (user_list)
- 위와 같음
▼ 접속 시도
[root@Apache ~]# ftp 192.168.10.175
Connected to 192.168.10.175.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.175:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
→ 접속 성공
● 실습 2 - ftpuser 파일을 사용하여, user_list의 옵션 설정을 적용해보기
- PAM 서비스의 옵션을 사용하면 ftpuser 파일로도 목록에 있는 유저를 제외한 나머지 유저의 접근을 제한할 수 있다.
- /etc/pam.d/vsftpd 파일을 열람하면 파일의 내용 중 sense = deny 라는 설정이 있다.
- sence = allow로 변경해주면 ftpuser 목록에 있는 유저들이
user_list 옵션의 userlist_deny = NO의 옵션을 내게 된다.
▼ 설정
[root@DNS-Server ~]# vi /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
→ 기존의 설정대로라면, root 만을 접근 제한하는 의미
※ /etc/pam.d/vsftpd 파일을 수정
[root@DNS-Server ~]# vi /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=allow file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
→ sense = deny를 sense = allow로 변경
※ 사전에 실습이 user_list 파일의 영향을 받지 않게 userlist_enable 옵션을 NO로 설정
[root@DNS-Server ~]# vi /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd
userlist_enable=NO
#userlist_deny=NO
tcp_wrappers=YES
▼ 접속 시도
[root@Apache ~]# ftp 192.168.10.175
Connected to 192.168.10.175.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.10.175:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
→ 접속 성공
댓글
댓글 쓰기