EC2 서버 접속 오류: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key se..
2022.08.18
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
팀원들한테 리눅스 서버 계정 만들어 줬다가 저런 에러가 떴다. 일단 왜 저런 에러가 떴냐 하면....... 파일 권한 설정을 잘못해서 그런 것 같았음 각 팀원들에게 슈퍼 유저 권한을 가지고 있는 사용자 계정을 생성해 주었는데 파일질라로 폴더 옮길 때 B 계정이 A 계정의 파일에 접근이 안 되는 거였다. A-user 라는 사용자 계정과 B-user라는 사용자 계정이 있는 리눅스의 디렉토리 구조를 살펴 보면 bin boot ... home ㄴ A-user ㄴ B-user var 이런 식으로 구성되어 있음 그러니까 home 폴더 안에 각각의 계정이 관리할 수 있는 폴더들이 있는 거죵...... A-user로 접속했을 때 A-user@ubuntu:~$ 이렇게 뜨는 ~ < 얘는 /home/A-user 라는 뜻이다..
2022.07.15
ubuntu 방화벽 포트 열었는데 접속이 안 될 때
회사에서 업무용 본체 하나 (윈도우 ex.192.168.0.10), 서버 및 데이터 폴더 저장용 본체 하나 (우분투 ex.192.168.0.11) 가지고 사용하고 있는데 보통 사내 git 저장이나 내부망을 이용한 작업을 하게 되면 우분투 서버를 이용해서 작업을 하고 있다. 윈도우 컴퓨터로 원격 데스크톱을 이용해서 우분투 서버에 접속을 하는데 뭘 작업을 잘못했는지 3389 포트를 아무리 열어도 (ufw allow 3389 < 이거) 계속 네트워크 접속이 안 되는 것이었다...... 며칠 내내 방화벽 allow 하고 delete 하고 xrdp 깔았다 지우고 해도 윈도우 컴퓨터에서 접속이 안 됨 ㅡㅡ 심지어 8000 포트도 192.168.0.11:8080 을 윈도우 컴에서 접속하려고 해도 화면이 안 뜸!!!!..
2022.06.10
no image
HTTPS, SSL 인증서
HTTP - Hypertext Transfer Protocol (html을 전송하기 위해서 만들어진 통신 규약) 도메인이나 url을 입력할 때 http:// < 라고 적는 것이 이런 이유임 HTTPS에서 S는 Over Secure Socket Layer의 약자다. 보안 장치가 결합되어 있는 통신 방식임. http에서 데이터를 전송하게 되면 제 3자가 감청하고 조착하거나 털릴 수 있음 그런 것을 방지하기 위한 포괄적인 기술 체계를 https 라고 생각하면 됨 그래서 https를 사용하게 되면 데이터가 암호화 되기 때문에 제 3자가 도청할 수 없게 됨 HTTPS와 SSL의 차이점 같다면 같고 다르다면 다름 SSL 위에서 HTTPS가 돌아감 SSL / TLS (같은 거) 대부분 SSL 이라고 부름 ㅡㅡㅡㅡㅡㅡ..
2022.01.19
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:{**************}.
Please contact your system administrator.
Add correct host key in C:\\Users\\{user}/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\{user}/.ssh/known_hosts:17
ECDSA host key for {ip} has changed and you have requested strict checking.
Host key verification failed.

pem 키로 접속하려던 도중 저런 에러 메세지가 떴다. 

에러 메세지를 보면 .ssh 폴더의 known_hosts 파일에 문제가 생겼다는 것 같은데 이것은 내가 ssh 키로 접속한 내역들?을 저장한 것 같음 

AWS의 인스턴스 ip들이 충돌하거나 그래서 생긴 문제이니 17번째에 있는 레거시를 지워주고 실행하면 정상적으로 접속이 된다. 

 

그래도 안 된다면 known_hosts 파일을 아예 삭제하고 해도 됨! (그치만 전에 접속했던 것들을 다시 설정해야 하니까 문제가 되는 줄만 지워 주자.......)

팀원들한테 리눅스 서버 계정 만들어 줬다가 저런 에러가 떴다. 

일단 왜 저런 에러가 떴냐 하면....... 파일 권한 설정을 잘못해서 그런 것 같았음 

 

각 팀원들에게 슈퍼 유저 권한을 가지고 있는 사용자 계정을 생성해 주었는데 파일질라로 폴더 옮길 때 B 계정이 A 계정의 파일에 접근이 안 되는 거였다.

A-user 라는 사용자 계정과 B-user라는 사용자 계정이 있는 리눅스의 디렉토리 구조를 살펴 보면 

bin

boot

...

home

 ㄴ A-user 

 ㄴ B-user

var

 

이런 식으로 구성되어 있음 그러니까 home 폴더 안에 각각의 계정이 관리할 수 있는 폴더들이 있는 거죵...... A-user로 접속했을 때 A-user@ubuntu:~$ 이렇게 뜨는 ~ < 얘는 /home/A-user 라는 뜻이다 ㅇㅇ 

 

왜지? B 계정이 슈퍼 유저 권한을 가지고 있으면 A 계정의 폴더에도 들어가져야 하는 거 아닌가? 이런 생각을 가졌고 무지막지했던 나는 그대로 A-user 폴더와 B-user 폴더에 chmod 777 * 을 날려버린다 ㅋㅋㅋ 이러면 안 됩니다 여러분...... 왜 그러면 안 되는지는 저도 알고 싶지 않았습니다 

 

changing permissions of '폴더이름' 이라는 오류가 떴는데 대수롭지 않게 여기고 넘겼었는데 포트를 열어야 할 일이 생겨서 sudo 권한을 썼더니 sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set  이런 에러가 떴던 것이다...... root 계정으로 들어가서 작업을 하긴 했는데 이러면 안 되는 거 아시죠? 내가 사수가 있었다면 진짜 뒤지게 혼나지 않았을까 싶음 

 

그러다가 다른 팀원들도 sudo 에러가 생겨서 안 되겠다 고쳐야겠다 싶어서 구글링을 *나게 했다 

일단 원인은 chmod 권한을 전체에다가 뿌려버려서 root에 대한 sudo 권한이 꼬였던 것 같음 

/usr/bin/sudo는 uid 0이 소유해야 하고 setuid 비트가 설정되어 있어야 한다 < 라는 말이 sudo가 엑세스 권한을 잃었고 root로 아무것도 실행할 수 없다는 뜻임. sudo 루트 권한이 덮어씌워져서 sudo의 사용이 제한되었다는 것...... 

 

리눅스에서 UID는 User Identification 즉 권한 부여를 하기 위한 id임 리눅스의 총 권한을 가지고 있는 root 계정은 UID가 0으로 지정되어 있다. 즉 uid를 0으로 설정하면 모든 계정이든 root의 권한을 가질 수 있는 것이다. (또한 root 계정은 보안 검사를 하지 않는다고 함)

하지만 동일하게 지정하면 사용자 감시 추적이 중복으로 기록되어서 추적이 어려워진다는 취약점이 있기 때문에 보통 uid는 각각 다른 숫자로 부여된다고 한다...... 그리고 해킹 같은 것도 사용자 계정의 uid를 0으로 직접 하드코딩해서 넣게 되면 

구글링으로 이런 개념을 알게 되었지만 어떤 전공 책을 찾아야 이런 개념을 습득할 수 있을지 ㅠ 잘 모르겠다 좀 더 자세히 알고 싶은데 정보의 한계가 있음....... 

 

일단 해결법은 간단하다 

리눅스 grub에 들어가서 복구 모드로 셸 스크립트 작성하는 방법이 있었는데 복구 모드에 ptsd가 오던 나는 다른 방법을 찾기 시작함....... 방법이 있을 거야.....! 

 

chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

cmd 창에 요걸 입력하면 되는데 루트 계정으로 접속을 해서 쳐야 한다 

처음에 모르고 사용자 계정으로 터미널에 입력을 하니까 chown: changing ownership of '/usr/bin/sudo': Operation not permitted

이런 오류가 떴음 

 

root@ubuntu:/home/user# chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
root@ubuntu:/home/user# exit

 

이렇게 아무 이상 없이 작동이 되나 싶었는데 다시 사용자 계정으로 sudo를 적용해 보니 

더보기

sudo: error in /etc/sudo.conf, line 0 while loading plugin "sudoers_policy"
sudo: /usr/lib/sudo/sudoers.so must be only be writable by owner
sudo: fatal error, unable to load plugins

또 이런 에러가 떴다 ㅡㅡ 

sudoers_policy 라는 거에 대해서 문제가 있나 봄 

다시 root 로 들어가서 

pkexec chown root:root /usr/bin/sudo
pkexec chmod 4755 /usr/bin/sudo

이 명령어를 입력했는데 이것도 잘 안 됐음...... 애초에 pkexec가 뭐야? 하 

 

다시 도전

chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
sudo -l

sudo -l을 입력하니까 해당 디스크립션이 뜸 

더보기

Matching Defaults entries for root on 우분투계정명:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User root may run the following commands on 우분투계정명:
    (ALL : ALL) ALL

저게 뜨면 아마 성공인 것 같다! 

sudo -l이 무슨 커맨드인 것인가....... -l이면 list인 건데 sudo list 했다고 왜 되는 건지는 잘 모르겠다 

 

아무튼 저 두 줄 명령어를 치고 사용자 계정에 들어와서 sudo 적용을 하니 정상적으로 작동함! 

 

 

회사에서 업무용 본체 하나 (윈도우 ex.192.168.0.10), 서버 및 데이터 폴더 저장용 본체 하나 (우분투 ex.192.168.0.11) 가지고 사용하고 있는데 보통 사내 git 저장이나 내부망을 이용한 작업을 하게 되면 우분투 서버를 이용해서 작업을 하고 있다. 

윈도우 컴퓨터로 원격 데스크톱을 이용해서 우분투 서버에 접속을 하는데 뭘 작업을 잘못했는지 3389 포트를 아무리 열어도 (ufw allow 3389 < 이거) 계속 네트워크 접속이 안 되는 것이었다...... 며칠 내내 방화벽 allow 하고 delete 하고 xrdp 깔았다 지우고 해도 윈도우 컴퓨터에서 접속이 안 됨 ㅡㅡ 심지어 8000 포트도 192.168.0.11:8080 을 윈도우 컴에서 접속하려고 해도 화면이 안 뜸!!!!! 떠야 하는데!!!!! 

근데 또 putty로 들어갔을 때는 ssh 연결이 됐다 

윈도우 원격 데스크톱 문제인가 해서 윈도우에서도 뻘짓 다 해 봤는데 결국 되는 건 없었음 

 

그러다가 내가 docker로 airflow를 깔아놨었는데 8085 포트는 또 들어가지는 것이다 그래서 이건 윈도우 문제가 아니라 100% 우분투 방화벽 문제라고 생각했음 드디어 검색 키워드를 알아 차린 거지 ㅋㅋㅋㅋ 

 

결론은 firewall zone에 public.xml파일이 없어서 문제가 된 것이었음 왜 삭제가 된 건지 아직도 이해를 못 하겠다 

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp

/etc/firewalld/zones/public.xml zones 폴더 안에 public.xml 파일이 아예 없었고 docker.xml 파일만 있었다. 그래서 안 된 거였음....... 

 

해당 명령어를 입력하면 public zone에 8080 TCP 포트를 열어준다는 뜻이고

nano /etc/firewalld/zones/public.xml 을 터미널에 입력하고

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not$
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <port port="8080" protocol="tcp"/>
  <port port="3389" protocol="tcp"/>
</zone>

이것을 입력해 주면 된다...... 추가하고 싶은 포트를 <port port="포트번호" protocol="tcp" /> 저렇게 추가하거나, 아니면 sudo firewall-cmd 어쩌고~ 이 부분으로 추가하면 될 것 같다 

 

저처럼 뻘짓하지 말고 광명 찾으세요

 

HTTP - Hypertext Transfer Protocol (html을 전송하기 위해서 만들어진 통신 규약)

도메인이나 url을 입력할 때 http:// < 라고 적는 것이 이런 이유임

 

HTTPS에서 S는 Over Secure Socket Layer의 약자다. 보안 장치가 결합되어 있는 통신 방식임. 

 

http에서 데이터를 전송하게 되면 제 3자가 감청하고 조착하거나 털릴 수 있음

그런 것을 방지하기 위한 포괄적인 기술 체계를 https 라고 생각하면 됨 

 

그래서 https를 사용하게 되면  데이터가 암호화 되기 때문에 제 3자가 도청할 수 없게 됨

 

HTTPS와 SSL의 차이점 

 

같다면 같고 다르다면 다름 

SSL 위에서 HTTPS가 돌아감 

 

 

SSL / TLS (같은 거) 대부분 SSL 이라고 부름 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

SSL 디지털 인증서 

 클라이언트와 서버간의 통신을 제3자가 보증해 주는 전자화된 문서 

 

  • 통신 내용이 공격자에게 노출되는 것을 막을 수 있다 

        -> 암호화가 필요 

  

대칭키 openssl 이라는 소프트웨어를 이용해서 암호를 복호화, 암호화 함