#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/ )
Tabby - a terminal for a more modern age
Tabby is a free and open source SSH, local and Telnet terminal with everything you'll ever need.
tabby.sh
② Termius( https://termius.com/ )
Termius - SSH platform for Mobile and Desktop
Termius helps to organize the work of multiple DevOps and engineering teams. It reduces the admin work for managing users. Enterprise compliance. SOC2 II report.
termius.com
③ MobaXtrem( https://mobaxterm.mobatek.net/ )
MobaXterm free Xserver and tabbed SSH client for Windows
The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!
mobaxterm.mobatek.net
④ Putty( https://www.putty.org/ )
Download PuTTY - a free SSH and telnet client for Windows
Is Bitvise affiliated with PuTTY? Bitvise is not affiliated with PuTTY. We develop our SSH Server for Windows, which is compatible with PuTTY. Many PuTTY users are therefore our users as well. From time to time, they need to find the PuTTY download link. W
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의 설치가 완료 되었다면 접속할 사용자 디렉토리에 대한 권한 변경 한다.
만약 사용자 계정이 존재하지 않는다면 아래 포스팅을 참고하여 신규 사용자_계정을 생성하고 진행하자.
[CentOS7] 사용자 계정 생성 및 Directory 만들기
먼저 useradd 명령을 이용하여 새로운 사용자 계정을 생성한다. $ sudo useradd 사용자_계정 새로운 사용자 계정이 생성되었다면해 생성한 사용자 계정에 대한 비밀번호를 변경하여 준다. $ sudo passwd
saakmiso.tistory.com
먼저 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 |