SSH 구성하고 보안 강화하기
SSH
SSH(Secure Shell)는 원격으로 리눅스 시스템에 접속할 수 있도록 하는 보안 프로토콜
암호화된 연결을 제공하여 안전한 원격 접속을 가능하게 함
명령을 받아들여 커널로 변환해 하드웨어를 관리한다.
(Hardware > 커널이 관리 > Shell이 관리)
기본적으로 22번 포트를 사용하나 /etc/ssh/sshd_config 파일에서 변경 가능하다.
기본 사용법
ssh username@remote_server_ip
SSH 보안설정
- Idle Timeout Interval (비활성화 시간 설정)
비활성 사용자의 SSH 세션을 자동 종료하여 보안을 강화한다.
# 설정파일 열기
sudo vi /etc/ssh/sshd_config
# 다음 두 줄 추가 또는 수정
ClientAliveInterval 300 # 300초 (5분)마다 연결 확인
ClientAliveCountMax 0 # 응답이 없으면 즉시 연결 종료
# 설정 적용
sudo systemctl restart sshd
- 루트 사용자 로그인 차단
보안 강화를 위해 root 계정의 SSH 접속을 비활성화
# 설정 파일 수정
sudo vi /etc/ssh/sshd_config
# 다음 줄을 PermitRootLogin no로 변경
PermitRootLogin no
# 설정 적용
sudo systemctl restart sshd
- 빈 암호 로그인 차단
비밀번호 없이 로그인하는 계정 차단하여 보안 강화
# 설정 파일 수정
sudo vi /etc/ssh/sshd_config
# 다음 줄을 PermitEmptyPasswords no로 변경
PermitEmptyPasswords no
# 설정 적용sudo systemctl restart sshd
- 특정 사용자 또는 그룹만 SSH 접속 허용
보안 강화를 위해 지정된 사용자만 SSH 접속 가능하도록 제한
# 설정 파일 수정
sudo vi /etc/ssh/sshd_config
# 접속 가능한 사용자 지정
AllowUsers user1 user2
# 또는 특정 그룹만 SSH 허용
AllowGroups sshusers
# 설정 적용
sudo systemctl restart sshd
- 기본 22번 포트 변경
해커의 자동 스캔 피하기 위해 SSH 포트 변경
# 설정 파일 수정
sudo vi /etc/ssh/sshd_config
# 다음 줄을 수정
Port 2222
# 방화벽에서 새 포트 허용
sudo firewall-cmd --add-port=2222/tcp --permanent
sudo firewall-cmd --reload
# 설정 적용
sudo systemctl restart sshd
# SSH 접속시 포트 지정
ssh -p 2222 user@remote_server_ip
SSH 키 기반 인증
비밀번호 없이 SSH 접속을 위해 공개 키 & 개인 키 사용
- SSH 키 생성
# 로컬 컴퓨터에서 실행
ssh-keygen -t rsa -b 4096
~/.ssh/id_rsa → 개인 키 (절대 공개하면 안 된다)
~/.ssh/id_rsa.pub → 공개 키 (서버에 저장)
- 서버에 공개 키 복사
ssh-copy-id user@remote_server_ip
# 또는 수동으로 복사
cat ~/.ssh/id_rsa.pub | ssh user@remote_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
- SSH 키 인증만 허용 (비밀번호 로그인 차단)
# 서버의 SSH 설정 파일 수정
sudo vi /etc/ssh/sshd_config
# 비밀번호 로그인 차단
PasswordAuthentication no
PubkeyAuthentication yes
# 설정 적용
sudo systemctl restart sshd
네트워킹 관리
Static IP vs DHCP (동적 호스트 제어 프로토콜)
- Static IP (고정 IP)
사용자가 수동으로 설정
항상 동일한 IP 주소를 유지
서버, 네트워크 장비 등에 사용 - DHCP
자동으로 IP 주소를 할당받음
IP 주소가 변경될 수 있음
일반 사용자 PC, 모바일 기기에 사용됨
IP 주소 (Private vs Public)
- Private IP (사설 IP)
내부 네트워크 통신 용도로 사용
외부 인터넷과 직접 통신 불가 (NAT 필요)
범위: 192.168.x.x, 10.x.x.x, 172.16.x.x ~ 172.31.x.x - Public IP (공인 IP)
인터넷에서 직접 접근 가능
서버, 웹사이트 등에 사용됨
IP 주소 확인
ip addr show
OS 네트워크 구성 요소
- 네트워크 인터페이스 (NIC, Network Interface Card)
다른 컴퓨터와 통신하기 위한 장치.
고유한 MAC 주소를 갖는다. (변경 가능하지만 기본값은 불변)
[인터페이스 종류]
유선 네트워크 카드 : eth0, eth1
무선 네트워크 (wifi) : wlan0
가상 네트워크 (Loopback 등) : lo (127.0.0.1)
인터페이스 목록 확인
ip link show
- 서브넷 마스크 (Subnet Mask)
IP 주소를 네트워크 주소와 호스트 주소로 나누는 값
같은 서브넷에 속한 장치끼리는 직접 통신 가능
서브넷 마스크 확인
ip addr show eth0
- 게이트웨이 (Gateway)
다른 네트워크 (서브넷, 인터넷)와 연결하는 출입구 역할
일반적으로 라우터(인터넷 공유기)가 게이트웨이 역할을 수행
기본 게이트웨이 확인
ip route show
# 또는
route -ni
-> 기본 게이트웨이 192.168.34.2 를 통해 외부 통신
- DNS (Domain Name System)
호스트이름 (도메인) -> IP 주소 변환
/etc/resolv.conf 파일에서 DNS 서버 주소 확인 가능
현재 DNS 서버 확인
cat /etc/resolv.conf
네트워크 관리 (NetworkManager)
GUI (Gnome-settings), TUI(nmtui), CLI(nmcli) 제공
- NetworkManager 상태 확인
systemctl status NetworkManager
- NetworkManager 시작
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager
- 네트워크 변경 시 재시작
sudo systemctl restart NetworkManager
nmcli (CLI 기반 네트워크 설정)
- 네트워크 상태 확인
nmcli general status
nmcli device status
- Wi-Fi 네트워크 검색
nmcli device wifi list
- 새로운 Wi-Fi 연결
nmcli device wifi connect "MyWiFi" password "mypassword"
- 네트워크 인터페이스 활성화/비활성화
nmcli connection up eth0
nmcli connection down eth0
- 고정 IP 주소 설정
nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
nmcli connection modify eth0 ipv4.gateway 192.168.1.1
nmcli connection modify eth0 ipv4.dns 8.8.8.8,8.8.4.4
nmcli connection modify eth0 ipv4.method manual
nmcli connection up eth0
고정 IP(192.168.1.100), 게이트웨이(192.168.1.1), DNS(8.8.8.8) 설정 후 활성화.
nmtui (TUI 기반 네트워크 설정)
터미널에서 실행 가능한 텍스트 기반 인터페이스
- 실행
nmtui
- 실행 후 메뉴 선택
Edit a connection → 네트워크 설정 변경
Activate a connection → 네트워크 인터페이스 활성화
Set system hostname → 시스템 호스트네임 변경
GNOME Settings (GUI)
데스크톱 환경에서 GUI 기반 네트워크 설정 가능
IP 설정, DNS 변경 등 가능.
- 경로
Settings → Network → Ethernet / Wi-Fi → Configure
네트워크 설정 관련 파일
/etc/sysconfig/network-scripts/ : RHEL/CentOS에서 네트워크 인터페이스 설정 파일이 저장됨 (ifcfg-eth0 등)
/etc/hosts : IP 주소와 호스트 이름을 매핑하여 로컬 네임 해석을 제공
/etc/hostname : 시스템의 호스트네임을 저장
/etc/resolv.conf : 시스템의 DNS 서버 주소를 설정
/etc/nsswitch.conf : 호스트 이름 해석 순서를 정의 (예: /etc/hosts → DNS 순)
네트워크 관리 명령어
- ping (네트워크 연결 확인)
ICMP echo request 패킷을 보내고 응답 (echo reply)을 받으면 연결 성공
네트워크 상태, 지연 시간 확인 가능
ping www.google.com
[옵션]
-c <숫자> : ping 횟수 지정
-s <크기> : 패킷 크기 설정
- ip (네트워크 인터페이스 정보 확인)
IP 주소 확인
ip addr show
인터페이스 상태 확인
ip link show
인터페이스 활성화/비활성화
ip link set eth0 up
ip link set eth0 down
- netstat (네트워크 상태 확인) -- ss로 대체됨
net-tools 패키지 설치 필요
netstat -tulnp
[옵션]
-t : TCP 포트만 표시
-u : UDP 포트만 표시
-l : 리슨 중인 포트 표시
-n : IP 및 포트를 숫자로 표시
-p : 해당 포트를 사용 중인 프로세스 표시
- traceroute (라우팅 경로 추적)
목적지까지의 경로(라우터)를 추적
traceroute www.google.com
목적지까지 몇 개의 라우터를 거치는지 확인 가능
- tcpdump (패킷 캡쳐 및 분석)
네트워크 트래픽을 실시간으로 캡쳐하여 분석
모든 패킷 캡쳐
sudo tcpdump -i eth0
특정 포트 (예 - 80번 포트) 패킷 캡쳐
sudo tcpdump -i eth0 port 80
- nslookup / dig (DNS 조회)
간단한 DNS 조회 (nslookup)
nslookup www.google.com
자세한 DNS 정보 (dig)
dig www.google.com
- ethtool (네트워크 카드 정보 확인)
인터페이스 정보 확인
ethtool eth0
네트워크 속도 확인
ethtool eth0 | grep Speed
파일
파일 아카이브 및 압축
- tar (파일 및 디렉토리 묶기)
파일/디렉토리 아카이브 생성
tar -cvf archive.tar directory/
압축 해제
gzip file.txt
- gzip (파일 압축)
파일 압축
gzip file.txt
압축 해제
gunzip file.txt.gz
FTP (File Transfer Protocol)
서버 간 파일 전송 프로토콜. 기본포트는 21번이다.
일반적으로 vsftpd를 사용한다.
- FTP 서버 설치 (vsftpd)
sudo yum install vsftpd # RHEL, CentOS
sudo apt install vsftpd # Ubuntu, Debian
# 설정 파일 수정 (/etc/vsftpd/vsftpd.conf)
sudo vi /etc/vsftpd/vsftpd.conf
# 설정 변경
anonymous_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
# FTP 서비스 시작 및 자동 실행 설정
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
- FTP 클라이언트 사용
# FTP 설치
sudo yum install ftp
# FTP 접속
ftp [FTP 서버 IP]
# 명령어
put file.txt # 서버로 파일 업로드
get file.txt # 서버에서 파일 다운로드
bye # 종료
SCP (보안 복사 프로토콜)
SSH 기반의 파일 전송 프로토콜 (기본포트 : 22)
FTP 보다 보안 강함
- SCP 사용법
# 로컬 -> 원격 서버 파일 전송
scp file.txt user@remote_server:/home/user/
# 원격 서버 -> 로컬 다운로드
scp user@remote_server:/home/user/file.txt .
# 디렉토리 복사 (-r 옵션)
scp -r myfolder user@remote_server:/home/user/
'Study > 리눅스' 카테고리의 다른 글
RHCSA 정리 (5) - SELinux, Storage, NFS, Samba (0) | 2025.02.27 |
---|---|
RHCSA 정리 (4) - Shell, 작업 스케쥴링, 시스템 성능 튜닝, ACL (0) | 2025.02.27 |
RHCSA 정리 (2) - File Permission, Monitoring (0) | 2025.02.19 |
RHCSA 정리 (1) - File System, File Editor, User Account (0) | 2025.02.11 |
[RHCSA] 실습환경 설정 & 로컬 SSH 접속 (2) | 2025.02.06 |