태그 글 보관함: 우분투 팁

무차별 대입 공격? 아파치 에러 메시지

아파치 웹서버의 에러 로그에 아래와 같은 에러가 다발하고 있었다.

아파치에서 디폴트로 잡혀있는 DocumentRoot 디렉토리(/var/www/html)에 공격 할만한 php 스크립트가 있는지 알아보려고 이런저런 이름의 php 파일명으로 대입해 보고 있는 로그이다.

아래 명령으로 디폴트 사이트 설정을 꺼버리면 워드프레스를 사용하고 있기 때문에 워드프레스의 루트에서 검색 되어지므로 일단 에러 메시지는 사라진다.

fail2ban을 쓰라는 글도 있던데 굳이 거기까지 할 필요성은 못 느껴서… 좀 생각해보고 적용하게 된다면 방법을 공유해 보겠다.

우분투 14.04->18.04 워드프레스 이행

워드프레스가 PHP 5.3을 더이상 지원하지 않아서 워드프레스 업데이트가 되지 않았다.
이전에 워드프레스 버전업을 하지 않아서 워드프레스가 해킹 당한적이 있기 때문에 바로 PHP 버전을 올려서 워드프레스를 업데이트 하려 했지만, 우분투 14.04에서는 PHP 5.3 이상을 공식적으로 지원하지 않고, PHP 7.x대에 저장소도 14.04 버전은 없어져 버려서 업데이트 불가. 결국 우분투 버전을 올리기로 결정.

가상 서버를 하나 더 생성해서 우분투 18.04 설치 후, 이행하기로 했다.

할일.
0. 서버 설치 후 설정
1. 아파치, PHP, DB를 설치
2. 워드프레스 이행
3. DB 이행
4. 워드프레스 접속 확인
5. 기타 서버 이행 작업

0. 서버 설치 후 설정

서버 설치하면 항상 하는 서버 IP 고정 설정과 SSH 포트 변경부터 했다.

IP 설정하는 파일이 바뀌었다.

50-cloud-init.yaml 파일 내용

변경내용 적용, 확인, 구글에 접속 테스트.

SSH 포트 변경
포트 부분만 바꿔주고 저장 후, 서비스 재시작.

1. 아파치, PHP, DB를 설치

우분투 18.04에 APM 설치하는건 apt install 만 하면 되니까 생략.은 아니고…
일단 아파치는 설치 되어 있다.
이전 우분투 서버에서 conf 파일을 옮겨 온다.

SCP로 복사하면 간단.

사이트 설정 파일을 enable로 심링크.

아파치 리로드 후에 문제가 생기는 경우에 확인.
주로 모듈이 설치 되지 않아서 생기는 경우가 많은데 해당 모듈을 설치해 주면 된다.

내 경우는 proxy_ajp가 활성화 되지 않아서 에러가 났으므로 proxy_ajp를 활성화.

이후, 아파치 리로드 해 보니 문제 없이 기동 되었다.

2. 워드프레스 이행

기존 서버에 워드프레스에 테마라든지 이런저런 이유로 파일을 수정해서 사용하고 있었기 때문에 새 서버에 워드프레스를 설치해서 데이터를 옮기지 않고, 기존 서버에 워드프레스 파일들을 그대로 가져 와서 사용하기로 했다.

기억하고 있던 tar로 압축하려 했으나 실패하고 요즘 주로 쓰고 있던 zip로 압축.(하려 했으나 zip이 없어서 설치)

winscp로 파일 전송 후에, 압축 해제.(하려 했으나 unzip이 없어서 설치)

아파치가 워드프레스 디렉토리를 사용 할 수 있도로 권한을 변경해준다.

3. DB 이행

mariadb(이후 mysql로 부름)를 설치했다.

루트 아이디가 패스워드가 없이 설치 되기 때문에 패스워드 없이 mysql에 접속 된다. mysql_secure_installation을 실행해서 루트 패스워드를 설정. 루트 패스워드를 넣고 mysql에 접속 확인.

데이터베이스 단위로 덤프를 떠서 bzip으로 압축.

새 서버로 압축한 파일을 옮긴 후에 bzip으로 압축 해제한다.

임포트하기 전에 mysql 에서 데이터베이스를 생성하고, 덤프 파일을 임포트.

4. 워드프레스 접속 확인

브라우저로 서버IP로 접속해 보고, 아파치에서 내보내는 에러라면 일단 아파치에 접속은 되는 것이니 에러 로그를 확인하고, 접속 조차 안되는 것 같으면 억세스 로그도 확인해 본다.

에러 로그에 뜬 플러그인에서 발생하는 에러를 구글에서 검색, curl, php7.3-curl가 없어서 그러는 것 같으니 설치. 아파치 재기동 후 다시 에러 로그를 확인.

에러 로그에 PHP 함수 preg_replace() 에서 에러 발생.
PHP 7.3에서는 -문자 앞에 \으로 이스케이프 시켜야 한단다.

워드프레스에서 DB 접속이 안된다. info.php로 확인해 보니 mysql 모듈이 없어서 설치 후 아파치 재기동.

워드프레스 첫 화면은 잘 보이는데 다른 페이지로 이동하면 404 에러 발생. 아파치 rewrite 모듈이 활성화 되어 있지 않아서 생기는 문제라 모듈 활성화 후 재기동.

5. 기타 서버 이행 작업

cron 으로 하던 작업 이행 할 것.
fail2ban 설치해서 ssh 로 계속 접속 시도하는 경우에 밴.

서버 타임존 설정

키보드 레이아웃 설정

마무리

이 정도 작업을 하면 서버 이행 작업이 끝난다.
여러 날에 걸쳐서 해서 정확하지는 않지만, 6시간쯤 정도 걸린듯.

수고 했다.

우분투 14.04 LTS cron crontab 설정 및 로그파일 확인

DNSZi의 DNS 서버로 변경하고 서버의 IP를 DDNS로 자동 갱신하기 위해서 우분투에서 crontab 설정을 찾아봤더니 제대로 나온게 안보여서 포스팅해 본다.

현재 등록된 작업내용을 확인

새작업 추가하기

명령을 실행하면 사용할 에디터를 고르라고 나오던데 추천하는 nano를 선택.
등록할 작업을 파일에 써 넣고 저장하고 종료하면 된다.

‘sudo crontab -e’를 하면 root로써 작업을 등록할수도 있다. 하지만 DDNS 갱신명령 정도는 그렇게까지 할 필요가 없어서 그냥 유저 계정으로 등록했다.

등록한 작업이 실행되는지는 크론탭 로그 파일을 보면 되는데

이 명령으로 확인 가능하다. (tail을 파일 끝을 보는 명령 -F 옵션은 파일이 갱신되면 추가적으로 표시되는 옵션)

우분투 14.04에서 크론 로그는 /var/log/cron 찾아봐야 없으니 /var/log/syslog 안에서 찾자.

sudo 패스워드 입력 생략 시간 제한 늘리기

우분투 서버 14.04 LTS 에서 sudo 명령을 사용하면 패스워드 입력을 요구받는데, 기본값으로 15분간은 패스워드를 재입력할 필요가 없이 sudo 명령을 사용할 수 있다. 이 패스워드 재입력 시간 제한을 늘리는 방법을 설명한다.

아래 명령어로 편집할 sudoers 파일을 열 수 있다. 우분투에서는 나노 nano 텍스트 에디터로 열리게 된다.

sudoers 파일이 열리게 된다.
sudoers 파일이 열리게 된다.

이 라인을 아래와 같이 수정한다. 가장 뒤에 30은 30분을 뜻한다. 두시간동안 패스워드 입력을 생략시키려고 할 때는 120을 입력하면 된다. 0을 넣으면 항상 패스워드를 물어보게 된다.

나노 에디터에서는 키보드의 화살표로 커서를 이동시키고, 저장은 Ctrl+X 키를 누르고 Y 키를 입력하고 엔터를 치면 된다. 만약 수정이 잘못됐을 경우에는 친절하게 알려주니 E 키로 재편집을 하면 된다.

편집이 끝나고 저장을 하게 되면 바로 적용이 된다.

참조 – RootSudoTimeout

우분투 root 계정 사용하기 / 잠그기

우분투에서는 보안관계상 기본적으로 root 계정을 사용하지 못하게 되어 있다.
root 계정이 필요할 경우에는 sudo나 su 명령을 쓰게 되어 있는데, root 계정에 비밀번호를 설정하면 root 접속이 가능해진다.

아래 명령으로 root 계정의 패스워드를 설정하면 root 계정을 사용할 수 있게 된다.

아래 명령을 치고, 위에서 설정한 패스워드로 root 계정으로 접속.

위처럼 root 계정을 활성화하면 보안상으로는 그리 좋지 않기 때문에 root 계정을 사용하는 것은 되도록 자제하는게 좋겠다.

다시 root 계정을 비활성화하기 위해서는 아래 명령을 사용한다.

root 계정이 잠긴 상태는 아래 명령으로 확인할 수 있다.

L이면 잠긴 상태 P이면 풀린 상태이다.