일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- kubernetes
- airflow
- PostgreSQL
- grafana
- kubectl
- Packet
- CVAT
- MAC address
- docker
- jvm
- tcp
- aws s3
- Network
- OS
- ip
- Kafka
- kubeadm
- zookeeper
- Spring
- EC2
- CSV
- JavaScript
- AWS
- Python
- Vision
- Operating System
- log
- helm
- java
- Trino
- Today
- Total
JUST WRITE
SFTP 전용 유저 생성 본문
SFTP 전용 유저 생성
보안상의 이유로 SFTP용 유저를 생성할 미션이 생겼다.
요즘 파일 공유는 Google Cloud, Naver MYBOX 등 다양한 서비스 들이 존재한다.
하지만 사내 내부망에서는 보안 상의 이유로 쓸 수가 없다.
이번에 사내에서 Linux Server를 파일 배포 Server로 활용한다고 하여 원초적인 방법으로 진행하기로 하였다.
SFTP 유저를 2개 만들어서 Admin은 Upload, Download가 가능, 일반 User는 Download만 가능하도록 하였다.
FileZilla를 이용하여 파일을 Upload, Download 하는 것이다.
일련의 과정을 정리해보려 한다.
SFTP용 폴더 생성
먼저 SFTP용 폴더를 하나 만들어 해당 Path에 Admin과 일반 User가 접근 가능하도록 하였다.
대신 Admin만 Write 권한을 주도록 설정하였다.
유저 생성 과정은 생략하였다.
# sftp 특정 폴더 -> /u01/ftp/files
$ mkdir -p /u01/ftp/files
$ chwon -R adminftp:adminftp /u01/ftp/files
$ chmod -R 755 /u01/ftp/files
해당 Path의 소유자를 Admin에 주었다.
Path의 권한을 소유자에게 전 권한을 그리고 다른 유저는 Read, Execute 권한을 주었다.
그리고 각 유저의 HOME Directory 아래에 SFTP용 폴더를 Mount 할 폴더를 생성하였다.
HOME Directory 밑 SFTP 폴더와 SFTP용 폴더를 mount 하여 연결하였다.
# 각 유저에 sftp 특정 폴더 mount할 폴더 생성
$ su - adminftp
$ mkdir -p ~/sftp
$ su - userftp
$ mkdir -p ~/sftp
# 각 유저 sftp 폴더와 sftp용 폴더 mount
$ vi /etc/fstab
...
/u01/ftp/files /home/userftp/sftp none bind,defaults 0 1 # 추가
/u01/ftp/files /home/adminftp/sftp none bind,defaults 0 1 # 추가
...
$ mount -a
SFTP용 유저 설정
SFTP용 유저 설정을 진행하였다.
해당 미션에서 필요한 SFTP용 유저는 SSH로 접속 못하고 오직 SFTP로만 접근 가능한 것이다.
그리고 각 유저의 HOME Directory만 접근 가능하고 상위 폴더는 접근 못하도록 하는 것이다.
해당 설정은 SSHD 설정을 해주면 된다.
$ vi /etc/ssh/sshd_config
... 추가
Match User adminftp
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication yes
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
Match User userftp
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication yes
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
...
$ systemctl restartd sshd
SSHD 설정은 /etc/ssh/sshd_config를 수정해주면 된다.
아래 설정값을 정리하였다.
- Match User : 적용할 유저명
- ChrootDirectory : 가상 Root 폴더 path 설정, %h는 유저의 HOME Directory를 의미
- ForceCommand : internal-sftp는 openssh 자체적으로 sftp 수행
- PasswordAuthentication : 접속 시 Password 인증 허용 여부
- PermitTunnel : ssh 터널링 허용 여부
- AllowAgentForwarding : ssh Agent 포워딩 허용 여부
- AllowTcpForwarding : TCP 포워딩 허용 여부
- X11Forwarding : 원격에서 X11 포워딩 가능 여부
ChrootDirectory를 유저 HOME Directory로 지정해 상위 폴더를 접근하지 못한다.
그리고 PermitTunnel설정을 No로 하여 ssh로의 접근을 막았다.
$ chown root:root /home/adminftp
$ chown root:root /home/userftp
추가적으로 ChrootDirectory의 권한 Root가 가지고 있어야 한다.
유저가 shell login을 못하도록 shell 권한을 nologin으로 변경한다.
$ usermod -s /sbin/nologin adminftp
$ usermod -s /sbin/nologin userftp
이렇게 하면 SFTP용 유저를 만들 수 있다.
[참고사이트]
'OS > Linux' 카테고리의 다른 글
NTP 설정 (0) | 2023.02.19 |
---|---|
RAID Disk 구성 - Spare Disk (0) | 2023.02.12 |
DNS 체크 (0) | 2023.01.31 |
120TB Disk EXT4로 포맷 (0) | 2023.01.18 |