문제

Flutter run --release 나 Xcode 에서 릴리즈 모드로 실행시에도 정상 실행이 되는데 배포만 하면 스플래시 화면에서 하얀색(white, blank) 화면이 나오며 정상 작동이 안되는 경우.

 

해결 방법

나에게 적용된 해결 방법

: 파이어베이스를 사용 안하더라도 만약 애드몹을 사용하고 있다면 파이어베이스 해당 프로젝트 추가 후 설정하고난 후 flutter build ios --release 후 다시 xcode 에 들어가서 Archive 파일을 만든 후 배포

- 그냥 xcode 에 바로 들어가서 Archive 파일을 만들고 배포하는게 아닌 그 전에 flutter build ios --release 후에 하는게 중요하다.

- 애드몹과 파이어베이스의 의존성이 chatgpt나 stackoverflow에서 없다고 하는데 프로젝트가 파이어베이스에 등록되고 프로젝트에 설정을 하지 않으면 안되네요 ㅋㅋ

 

다른 해결 방법.

1. Signing & Capabilities 확인.

2. 실제 기기의 testflight 업데이트 하기.

3. testflight 에서 테스트할 앱을 삭제 후 가장 최신 버전 다운로드 하기.

4. flutter upgrade 후에 다시 배포 하기.

5. pod update 하기.

6. cocoapod 최신 버전으로 업데이트

fail2ban

무차별 비밀번호 대입을 통해 로그인을 시도하는 프로그램 및 해커들로부터 서버를 보호해준다.

똑같은 IP로 n번 로그인 실패를 했을 경우 정해진 시간동안 접속이 불가능하게 설정도 가능하다.

 

보통 SSH에 많이 적용하고 클라우드 상에서 fail2ban을 사용해서 접속을 막는 방법도 많이 사용한다.

 

왜 사용할까?

journalctl -f

해당 명령어를 통해 우리의 서버에 침투중인 상황을 실시간으로 볼 수 있다. 계속 로그가 올라오는게 침입 시도이다.

ctrl + c를 활용하여 빠져나올 수 있다.

 

설치 방법

sudo apt install fail2ban

설치와 동시에 시작되어 방어를 해준다.

 

설정 방법

sudo vi /etc/fail2ban/jail.local

이란 파일을 만든 뒤 내용을 작성하여 적용해 줘야한다.

 

형식 

[DEFAULT]

ignoreip=192.168.0.0/24

bantime=100000

maxretry=3

findtime=100000

 

[sshd]

enabled = true

port=22

filter=sshd

logpath=/var/log/auth.log

 

# (선택) 메일 알림 기능

destemail = 사용자 이메일 ex) user@naver.com

sender = fail2ban@my-server.com

mta = sendmail

action = %(action_mwl)s

 

[DEFAULT] : fail2ban에 지정할 모든 서비스에 대한 설정

ignoreip : 설정을 적용하지 않을 IP 리스트. 보통 내부에서의 접속들은 적용하지 않는다.

bantime : 이상 접속을 감지한 경우 접속을 불가능하게 할 초 단위.

maxretry : 허용 접속 가능한 횟수.

findtime : 이상 접속의 횟수를 총괄 낼 초 단위 시간

[sshd] : ssh 접속 서비스에 대한 설정.

enable : 동작 여부를 나타낸다

port : 감지할 포트. 여러 포트를 사용할 경우 ex) port=22,23,24

filter : 이상 동작이라고 판단할 문자열. 정규식 사용 가능.

logpath : 필터링 할 전체 문자열 파일.

 

형식 전체 해석 : logpath에서 filter 항목을 찾아 findtime 시간 동안 maxretry 횟수 만큼 접속을 시도한 IP를 batime 만큼 차단한다.

 

작성 끝난 후 service fail2ban restart

 

현재 차단 현황 보는 방법과 풀어주기

현황보기 : sudo fail2ban-client status sshd

 

차단 풀어주기 : sudo fail2ban-client set sshd unbanip ip주소

변경 이유는?

인터넷에 서버를 공개하게 되면 즉, 로컬 서버로 서비스를 내게 되면 수많은 악성 프로그램들이 자동으로  로그인을 시도한다. 그러면 서버 부하로 인해 자신의 프로그램을 돌리기 힘들거나 전기세도 많이 나갑니다.
그래서 외부에서 SSH로 서버에 접속 가능한 계정 정보가 노출되더라도 기본 포트(22번)보다 변경된 포트를 사용하는 그나마 보안상 좋기 때문이다.

 

변경 방법
  1. sudo vi /etc/ssh/sshd_config
  2. Port 22 부분은 원하는 포트로 변경 후 저장 ex) Port 2022
  3. service sshd restart 로 ssh 재시작

만약 도메인을 구입하거나 클라우드 서비스를 이용하는게 아닌 로컬 서버인 경우 iptime 공유기 설정 화면에 들어간다

그 후 고급 설정 - NAT/라우터 관리 - 포트포워드 설정 항목에서 새 규칙을 추가한다.

ex)

규칙 이름 : 서버_ssh

내부 IP : 서버 주소(IP)

프로토콜 : TCP

외부 포트 : 새로 변경한 포트 번호 ~ 새로 변경한 포트 번호

내부 포트 : 새로 변경한 포트 번호 ~ 새로 변경한 포트 번호

 

변경 후 재접속 해봤는데 접속이 안될경우

ufw 방화벽으로 인해 해당 포트가 잠겨 있을 수 있으므로

ufw allow 새로 변경한 포트번호 ex) ufw allow 13212

하고 재접속을 시도하면 된다.

 

외부 접속 기록을 확인하는 방법
  1. 접속 시도 기록 : cat /var/log/auth.log
  2. 로그인 기록 : last

 

+ Recent posts