Linux
Linux ssh 보안 설정
걸어서뉴욕까지
2023. 8. 5. 23:33
sudo 권한이 있는 유저 생성 & root ssh 접근 제어
모든 권한을 갖고 있는 root 계정으로 ssh 접근을 막기 위해서 sudo 권한이 있는 유저를 생성하고 root 계정의 ssh 접근을 비활성화 시킨다.
useradd -m sudouser # sudouser를 홈디렉토리와 함께 생성
passwd sudouser # password 변경
usermod -aG sudo sudouser # sudo 그룹에 추가
/etc/ssh/sshd_config 파일에 아래 값들을 수정하여 root 계정의 외부 접속을 막고 접속을 허용할 계정들을 추가합니다.
※ 아래 부터 나오는 설정값들은 모두 /etc/ssh/sshd_config 파일입니다.
PermitRootLogin no # yes : 허용, no : 차단, prohibit-password : key 파일을 통한 로그인 허용
AllowUsers sudouser # sudouser 유저의 접속을 허용
ssh 기본 port 변경
ssh 의 기본 포트는 22로 설정되어있다. 해당 port 값을 모르는 사람은 없으므로 특정 포트로 변경한다.
Port 22222 # 22에서 변경하고 싶은 포트로 변경하되 well known port는 피해서 변경한다.
패스워드 없이 로그인하지 못하도록 설정
PermitEmptyPasswords no # 주석 해제
로그인 및 Access 시도 횟수 제한
MaxAuthTries 5 # 최대 로그인 횟수 제한을 설정한다.
SSH 버전 2 사용
Protocol 파라미터를 추가하여 많은 취약점이 보안된 ssh version 2 사용합니다,
Include /etc/ssh/sshd_config.d/*.conf
Protocol 2 # 추가
TCP 포트 포워딩 및 X11 포워딩 설정
ssh를 통해서 다른 시스템에 대한 접근 권한을 받을 수 없도록 tcp forwarding과 x11forwarding 설정을 no로 설정합니다.
AllowTcpForwarding no
#GatewayPorts no
X11Forwarding no
ssh 접속 IP 제한
vi /etc/hosts.allow
# 아래 내용 추가 sshd 접속 ip 대역 제한
sshd : 10.0.10.0/24 : ALLOW
Client Idle 타임 아웃 설정
접속한 유저의 활동이 없을 시 ssh 연결을 종료할 시간 설정
ClientAliveInterval 600 # 주석 해제 및 값 설정
ssh 모니터링을 위한 설정
LogLevel INFO # 주석 해제
Mac 알고리즘 적용
클라이언트와 서버간에 데이터 전송을 확인하고 검증하기 위해서 mac 알고리즘을 적용시킨다.
Include /etc/ssh/sshd_config.d/*.conf
Protocol 2
MACs hmac-sha1,hmac-sha2-256,hmac-sha2-512 # 추가
ssh daemon reload
변경된 포트로 접속을 위해 방화벽과 selinux에 해당 포트를 등록한뒤 sshd를 재시작한다.
# 방화벽 포트 추가
firewall-cmd --permanent --zone=public --add-port=22222/tcp
firewall-cmd --reload
# selinux ssh_port_t에 포트 추가
semanage port -a -t ssh_port_t -p tcp 22222 # 삭제는 -a 를 -d로 변경
# restart
sudo systemctl restart sshd # sshd.service not found시 ssh로 작업
※ 문제가 생겼을 시 롤백을 위해 기존 터미널은 끄지 않고 새로운 터미널에서 접속해본다.