증상 발생

  • 우분투 업그레이드를 진행하였는데 업그레이드 진행한 이후 쉘 접속이 끊기는 문제가 발생하였습니다. 업그레이드는 다음과 같은 명령어를 사용하여 진행하였습니다.
# 배포 패키지 업그레이드 
sudo apt update 
sudo apt upgrade
sudo apt dist-upgrade

# 리눅스 릴리즈 업그레이드
sudo apt install update-manager-core
sudo do-release-upgrade
  • 서버에 직접 모니터를 물려서 확인해보니 물리 네트워크 인터페이스가 인식이 되지 않는 것이 문제였습니다. 해당 문제는 아래 명령어를 통해 확인하였습니다.

    ifconfig -a | grep eth0 
    # 결과값이 출력되나 IPv4 가 할당되지 않음. (평소였다면 할당되었어야 함)
    

결과값이 출력되지 않음.

  • 이후 구글링을 통해 원인을 찾았습니다.

apparmor.d 가 문제.

  • 업그레이드 직후 apparmor.d 가 문제였습니다. (그렇다고 기본 네트워크를 아예 못쓰게만드냐...)

  • 확인해보니 apparmor 는 SELinux 와 유사한 리눅스 보안 모듈이라 합니다.

해결

  • apparmor.d 정책 중 dhclient 에 대한 것을 비활성화하였습니다.

    # apparmor.d 를 비활성화
    sudo ln -s /etc/apparmor.d/sbin.dhclient /etc/apparmor.d/disable/  
    sudo /etc/init.d/apparmor reload
  • apparmor 에서 특정 정책 complain 모드로 변경하여 해결할 수도 있습니다. 여기서 complain 모드란 정책을 제한하진 않되, 로그로만 기록해 두는 모드입니다.

     sudo aa-complain /usr/sbin/dhclient
  • 아래는 비활성화 명령어 History 를 캡쳐한 부분입니다.

이으며..

  • 이 방법은 완전한 해결 방법이 아닌데다가, aa-status 명령어를 치면 나오는 모든 모듈들의 정책이 어긋나서 나온 문제로 보입니다. 해당 모듈들에 대해서 정상적인지 테스트를 해야할 듯합니다.
  • 임시로 문제가 발생하는 모듈에 대해서 aa-complain /usr/sbin/tcpdum 등의 명령어로 풀어갈 생각입니다.
  • 룰을 계속 추가하면서 사용하려니 너무 번거로워 지금은 apparmor.d 를 사용안하도록 변경하여 사용하고 있습니다. (내부망에서만 사용하는 서버니까..)

+ Recent posts