#1. Rocky 리눅스 초시 설정
Rocky 리눅스가 부팅되면 관리자( root ) 계정으로 로그인 한다.
localhost login : root
password : 관리자_비밀번호
pssword는 Rockey 리눅스 설치중 지어한 관리자( root ) 계정의 비밀번호를 입력하여 준다.
다음으로 vi 편집기를 사용하여 Rocky 리눅스 설치과정에서 추가한 사용자 계정에 관리자 명령 실행( sudo ) 권한을 부여해준다.
# vi /etc/sudoers
~~ 이 하 생 략 ~~
##
## Allow root to run any commands anywhere( 지정한 sudo 명령을 사용할 수 있게 설정 )
root ALL=(ALL) ALL
saakmiso ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
## Same thing without a password( 지정한 sudo 명령을 사용시 비밀번호 입력 생략 설정 )
# %wheel ALL=(ALL) NOPASSWD: ALL
사용자_계정 ALL=(ALL) NOPASSWD: ALL
사용자 계정에 관리자 명령 실행( sudo ) 권한을 추가하여 주었다면 사용자 계정으로 전환한다.
# su - 사용자_계정
사용자 계정으로 전환 되었다면 Rockey 리눅스를 최신버전으로 Update하여 준다.
$ sudo dnf -y update
Update가 완료되면 Rockey 리눅스 사용에 필요한 패키지들을 차례로 설치해 준다.
$ sudo dnf install -y epel-release
$ sudo dnf install -y curl
$ sudo dnf install -y npm
$ sudo dbf install -y net-tools
$ sudo dnf install -y kernel-devel
$ sudo dnf install -y wget
$ sudo dnf install -y vim-enhanced
$ sudo dnf install -y tar
$ sudo dnf install -y unzip
$ sudo dnf install -y rsync
$ sudo dnf install -y cronolog
$ sudo dnf install -y dhcp-client
위 순서대로 하나씩 설치해 준다.
패키지 업데이트 및 설치가 완료되었다면 Roceky 리눅스를 재부팅 하여 준다.
$ sudo shutdown -r now
재부팅 이후에는 관리자( root ) 계정이 아닌 사용자 계쩡으로 로그인 하여 준다.
localhost login : 사용자_계정
password : 사용자_비밀번호
#2. Rockey Linux - OpenSSH 설치 및 사용
1) openssh-server 패키지 설치 확인
'openssh-server' 패키지는 SSH 서버 기능을 제공한다.
SSH 서버는 원격 사용자가 SSH 클라이언트를 통해 서버에 접속할 수 있도록 한다.
① 원격 접속 허용 : 사용자가 원격에서 서버에 안전하게 접속하여 명령을 실행하거나 파일을 전송할 수 있도록 한다.
② 보안 터널링 : 데이터를 암호화된 터널을 통해 안전하게 전송한다.
③ 공개 키 인증 : SSH 키를 사용하여 비밀번호 없이도 보안이 유지된 채로 접속할 수 있다.
아래 명령어를 이용하여 'openssh-server' 패키지 설치 유무를 확인한다.
$ dnf list installed openssh-server
openssh.x86_64 8.7p1-38.el9 @baseos
2) opsenssh 패키지 설치 확인
'openssh' 패키지는 SSH 클라이언트 기능을 제공한다.
'openssh' 패키지를 사용하여 사용자는 SSH 서버에 연결 할 수 있다.
① 원격 서버 접속 : 사용자가 SSH 서버에 연결하여 명령을 실행하거나 파일을 전송할 수 있다.
② 보안 접속 : 연결된 서버와의 모든 통신이 암호화되어 전송된다.
③ 포트 포워딩 : 원격 서버와의 안전한 통신을 위해 포트 포워딩 기능을 제공한다.
아래 명령어를 이용하여 'openssh' 패키지 설치 유무를 확인한다.
$ dnf list installed openssh
openssh.x86_64 8.7p1-38.el9 @baseos
3) openssh-askpass 패키지 설치
'openssh-askpass' 패키지는 GUI 환경에서 SSH 비밀번호나 SSH키의 패스프레이즈를 입력받을 때 사용된다.
일반적으로 CLI 환경에서 SSH를 사용할 때는 터미널에서 비밀번호를 입력하지만,
GUI 환경에서는 별도의 창이열려 비밀번호를 입력 할 수 있도록 지원한다.
① GUI 비밀번호 입력 : SSH 연결을 시도할 때, 비밀번호나 패스프레이즈가 필요할 경우 작은 팝업 창이 오픈되며
여기에 입력하여 접속할 수 있다.
② 편리성 : GUI 환경에서 터미널을 사용하지 않더라도 SSH 세션을 쉽게 열 수 있도록 도와준다.
'openssh-askpass'는 dnf 명령을 통해 설치를 진행해야 한다.
$ sudo dnf install -y openssh-askpass
4) OpenSSH 설정 파일 수정하기
필요한 패키지의 설치 유무 검증이 마무리 되었다면, vim 편집기를 사용해 sshd_config 파일을 수정하여준다.
Port 22를 찾아 주석( # )을 해제해 주기만 하면 된다.
$ sudo vim /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 22 // 주석( # ) 제거
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
~ 이 하 생 략 ~
주석을 제거하고 저장해 주기만 하면 된다.
5) OpenSSH 서비스 구동
$ sudo systemctl start sshd.service
#3. 방화벽( FireWall ) Port 허용하기
1) 방화벽( FireWall ) 실행
먼저 FireWall이 실행중인지 확인해 본다.
$ sudo firewall-cmd --state
running( 실행중 ) / not running( 실행중이 아님 )
실행중이 아니라면 FireWall을 실행하여 준다.
$ sudo systemctl start firewalld
Linux 재부팅시 FireWall을 자동으로 실행되로록 설정하여 준다.
$ sudo systemctl enable firewalld
2) 특정 TCP 포트의 접속 허용
가장 먼저 SSH를 통한 원격지 접속을 허용하기 위하여 22번 Port부터 접근권한을 부여한다.
① 22번 PORT 허용 - 보안 셸
먼저 22번 Port에 대한 방화벽을 열어준다.
$ sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
success
22번 TCP Port로의 접근이 허용되었다.
다음으로 방화벽 설정을 다시 로드하여준다.
$ sudo firewall-cmd --reload
success
② 80번 PORT 허용 - Web 트래픽
$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
success
③ 443번 PORT 허용 - 보안 Web 트래픽
$ sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
success
④ 21번 PORT 허용 - 파일 전송 프로토콜
$ sudo firewall-cmd --zone=public --add-port=21/tcp --permanent
success
⑤ 20번 PORT 허용 - FTP Active Mode( 능동 모드)
$ sudo firewall-cmd --zone=public --add-port=20/tcp --permanent
success
클라이언트 측 방화벽에서 데이터 연결을 열어주어야 하므로 방화벽 설정이 까다로울 수 있습니다.
⑥ 50000 ~ 50100번 PORT 허용 - FTP Passive Mode( 수동 모드 )
$ sudo firewall-cmd --zone=public --add-port=50000-50100/tcp --permanent
success
서버 측에서 지정된 범위 내의 포트를 열어주어야 하며, 클라이언트의 방화벽 문제를 줄여줍니다.
⑦ 25번 PORT 허용 - 메일 전송 프로토콜
$ sudo firewall-cmd --zone=public --add-port=25/tcp --permanent
success
⑧ 53번 PORT 허용 - DNS( 도메인 네임 시스템 )
$ sudo firewall-cmd --zone=public --add-port=53/tcp --permanent
success
3) 방화벽( FireWall ) 재시작
사용할 PORT의 지정이 완료되었다면 FireWall을 재시작해 준다.
$ sudo firewall-cmd --reload
success
4) 방화벽( FireWall ) 확인
아래 명령어를 활용하여 지정한 PORT들의 사용이 허가 되었는지 확인해 보자
$ sudo firewall-cmd --list-all-zone
~~ 이 하 생 략 ~~
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports: 22/tcp 80/tcp 8181/tcp 8080/tcp 1521/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
~~ 이 하 생 략 ~~
#4. 원격지에서 Rocky 리눅스 Server에 접근하기
OpenSSH 설치 및 방화벽( FireWall ) 설정이 마무리 되었다면,
원격지 컴퓨터에서 Rocky 리눅스 에 접근을 시도해 보자.
1) SSH 원격 접속 - 터미널 에뮬레이터( Terminal Emulator ) 다운로드
Windows 컴퓨터를 사용한다라는 전제하에 아래 3가지 프리웨어( FreeWare ) 프로그램들을 추천한다.
① Tabby Terminal( https://tabby.sh/ )
② Termius( https://termius.com/ )
③ MobaXtrem( https://mobaxterm.mobatek.net/ )
④ Putty( https://www.putty.org/ )
위 4가지 프로그램을 필자는 추천하는 바다.
( 필자는 주로 Tabby를 사용한다. )
2) Linux Server - IP 주소 확인
SSH 접속프로그램을 다운 받았다면 이제 아래 명령어를 통해
Linux Server( Rocky Linux )의 IP Address 정보를 확인하고
접속프로그램을 이용하여 원격지에서 Linux Server로 접근을 진행해 보자.
① Linux IP주소 확인 : ip addr show
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 0.0.0.0/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 02:dd:86:aa:f5:64 brd ff:ff:ff:ff:ff:ff
inet 0.0.0.0/0 brd 0.0.0.0 scope global dynamic eth0
valid_lft 2151sec preferred_lft 2151sec
inet6 fe80::dd:86ff:feaa:f564/64 scope link
valid_lft forever preferred_lft forever
② Linux IP주소 확인 : ifconfig
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 0.0.0.0 netmask 0.0.0.0 broadcast 0.0.0.0
inet6 fe80::dd:86ff:feaa:f564 prefixlen 64 scopeid 0x20<link>
ether 02:dd:86:aa:f5:64 txqueuelen 1000 (Ethernet)
RX packets 2179214 bytes 639742744 (610.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2531954 bytes 419425421 (399.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 0.0.0.0 netmask 0.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2112393 bytes 128679342 (122.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2112393 bytes 128679342 (122.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3) SSH 원격 접속 - 접속 정보 입력
IP Address | Linux Server의 IP 주소 |
PORT | 기본 포트는 22 |
Username | Linux 사용자 계정 |
Password | Linux 사용자 계정의 비밀번호 |
#5. VSFTPD 설치하기 - 작성 대기중
먼저 dnf 명령을 이용하여 vsftpd의 설치를 진행한다.
$ sudo dnf install -y vsftpd
VSFTPD의 설치가 완료되면 설정을 변경하기 위해 종료 시켜준다.
$ sudo systemctl stop vsftpd
chroot 제한 설정을 적용 할 사용자 목록 파일을 작성한다.
$ sudo vim /etc/vsftpd/chroot_list
chroot_제한_사용자_계정_01
chroot_제한_사용자_계정_02
아래와 같이 vim에디터를 이용하여 VSFTPD의 설정을 변경한다.
$ sudo vim /etc/vsftpd/vsftpd.conf
~~ vsftpd.conf 설 정 파 일 최 하 단 에 아 래 내 용 을 추 가 ~~
# FTP 서버에 로그인한 사용자의 홈 디렉토리를 chroot 환경으로 제한
chroot_local_user=NO
# 특정 사용자에 대해서만 chroot 제한을 적용
chroot_list_enable=YES
# chroot 제한을 받을 사용자 목록 관리 파일
chroot_list_file=/etc/vsftpd/chroot_list
# chroot 환경에서도 쓰기 권한이 허용
allow_writeable_chroot=YES
# 패시브모드 활성화
pasv_enable=YES
# 패시브모드에서 사용할 포트 범위 설정
pasv_min_port=50000
pasv_max_port=50100
# FTP 서비스에 대한 일반적인 로그를 기록 / FTP 프로토콜에 대한 디버그 정보를 기록
dual_log_enable=YES
# FTP 프로토콜에 대한 세부적인 정보를 로그 파일에 기록
log_ftp_protocol=YES
# vsftpd 서버가 FTP 연결을 처리할 때 사용할 시스템 사용자를 지정( nobody 권장 )
ftp_username=nobody
위 내용을 vsftpd.conf 파일 가장 하단에 기입하여 준다.
vsftpd.conf 파일 수정이 완료되었다면 VSFTPD를 다시 시작하여 준다.
$ sudo systemctl start vsftpd
재실행 하였다면 VSFTPD 상태를 확인해 보자.
$ sudo systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; preset: disabled)
Active: active (running) since Sun 2024-09-01 16:41:51 KST; 4s ago
Process: 1482 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 1483 (vsftpd)
Tasks: 1 (limit: 11106)
Memory: 712.0K
CPU: 3ms
CGroup: /system.slice/vsftpd.service
└─1483 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
9월 01 16:41:51 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon...
9월 01 16:41:51 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
위와 같다면 VSFTPD가 실행되고 있음을 확인 할 수 있다.
마지막으로 VSFTPD를 CentOS7 재실행시 자동으로 시작되게 설정한다.
$ sudo systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
VSFTPD의 설치가 완료 되었다면 접속할 사용자 디렉토리에 대한 권한 변경 한다.
만약 사용자 계정이 존재하지 않는다면 아래 포스팅을 참고하여 신규 사용자_계정을 생성하고 진행하자.
먼저 cat 명령을 사용하여 사용자 계정 확인 /home/ 디렉토리안의 사용자_계정 디렉토리의 접근권한을 가진 계정의 존재 유무를 확인 한다.
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
사용자_계정:x:1000:1000:사용자_계정:/home/사용자_계정:/bin/bash
가장 하단의 내용을 확인하면 사용자 계정이 존재한다.
사용자_계정:x:1000:1000:사용자_계정:/home/사용자_계정:/bin/bash
그럼 이제 /home/사용자_계정 디렉토리 접근 권한 변경 하여 준다.
$ sudo chmod 755 /home/사용자_계정
$ ls -al /home/
합계 0
drwxr-xr-x. 4 root root 38 2월 22 19:08 .
dr-xr-xr-x. 17 root root 224 2월 22 18:12 ..
drwxr-xr-x. 2 사용자_계정 사용자_계정 99 2월 22 19:19 사용자_계정
'LINUX > Rocky Linux' 카테고리의 다른 글
[Linux] Rocky 리눅스 - 비밀번호 변경시 BAD PASSWORD 발생 (0) | 2024.11.14 |
---|---|
[JENKINS] Rocky Linux에 JENKINS CI / CD 도구 설치하기 (0) | 2024.09.05 |