2023. 12. 21. 23:58ㆍInformation Security 정보보안/System Security 시스템 보안
배울 내용:
리눅스 방화벽 설정
수동 모드 데이터 포트 고정
사용자 접근 통제
vsftpd
FTP-Server
PAM
사용자 접근통제
해킹과 취약점
Firewall
제가 지금 부터 작성하는 모든글은 제가 공부기록용이기 때문에 정확하지 않을수 있음을 알려드립니다.
틀린게 있으면 댓글로 써주시면 고치겠습니다.
이번 포스팅엔
FTP Server
를 보자
먼저 vi /etc/vsftpd/vsftpd.conf 에
젤밑에 빈칸에 listen_port=2121 써주자
이렇게 해주면 port를 ftp로 2121 으로 연결해주는거임
그뒤 systemctl restart vsftpd
이제 windows 10 에서 알드라이브로 연결할건데
안깔려있다면 알드라이브를 깔기 바란다.
간단하게 구글에 검색하면 나온다
그뒤에
접속하기 한뒤에 포트를 2121 해주고 아이디 비번 하면 된다 .
그러나 window에 알드라이브로 연결하면안되는데
그이유는 포트는열여줘도
방화벽에서 막아버린다
그래서 다시 서버(centos)로 가서
명령어로 firewalld-cmd --permanent --add-port=2121/tcp
firewalld-cmd --reload
해준뒤에 연결하면 연결은 된다
그러나 아직 지만 또 잘 안되는걸 볼수있다 .
이떄 systemctl stop firewalld 하면 되긴하는 데 이러면 의미없기에
다시 listen_port=2121 밑에 이렇게 써줌
pasv_max_port=5000
pasv_min_port=5000
그리고 방화벽도 설정해주고
systemctl restart firewalld
# firewall-cmd --permanent --add-port=5000/tcp
# firewall-cmd --reload
이러고 window 알드라이브 다시 들어가면 됨
(이때 포트2121그대로)
(방화벽을 5000번으로 고정시켰기 떄문)
passive 모드로 바꾸면 자동으로 dynamic port로 바뀐다는걸 알아야함
(원래는 랜덤인데 위에 처럼고정시키면 서비스 제공받을수있음)
이제 어떻게 하는지 알았으면 다시 돌아와서
아까햇던거 원래대로 돌리기
vi /etc/vsftpd/vsftpd.conf
firewall-cmd --permanent --remove-port=5000/tcp
firewall-cmd --permanent --remove-port=2121/tcp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
systemctl restart vsftpd
그뒤에 window에서 포트 21로 다시돌아와서 하면 잘됨
이제 이렇게 보면
01. 운영 모드
>능동 모드 (active)
>수동 모드 (passive)
02. 수동 모드 데이터 포트 고정
listen_port=2121
pasv_max_port=5000
pasv_min_port=5000
2번까지는 완료 했다
그럼 위에 썻던걸 어떻게 작동하게 됬던걸까?
vsftpd 는 wellknown 포트가 디폴트면 20번 data를 생성하는데 변경되면
passive Mode로 작동하게됨.
이떄 dynamic port 로 바뀌고 20번 session을 쓰지않음
이때부터 5000번
근데 이게 랜덤포트로 되기떄문에 5011이되든 다른 포트가 될수도있기때문에
아까처럼 5000만잡게 고정시켜주는것임.
pasv_max_port=5000
pasv_min_port=5000
이렇게
아니면 방화벽 사용하지 않던가
서버쪽에서 포트를 고정시켜서 client에 알려주던가
이중에서 우리는 후자를 선택한것.!
이제 3번째 것을 보면
03. 사용자 접근 통제
자체 접근 통제
- /etc/vsftpd/user_list
해당 파일에 사용자 등록(차단)
> PAM을 이용한 접근통제
-/etc/vsftpd/ftpusers
(users 임! )
- /etc/vsftpd/ftpusers 이것들이 다 모여있다
-rw-------. 1 root root 125 6월 10 2021 ftpusers
-rw-------. 1 root root 361 6월 10 2021 user_list
-rw-------. 1 root root 5177 12월 18 20:41 vsftpd.conf
-rwxr--r--. 1 root root 338 6월 10 2021 vsftpd_conf_migrate.sh
user_list에
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
이중에 root를 주석처리 해주고
ftpusers에서도 지워야함
그리고
systemctl restart vsftpd 해주고
그러면 window에서 telnet으로도 root 접속이 가능함! (원래는안됨)
만약 user1 차단하고 싶으면 user1을 추가해주면됨
이번엔 등록된 사용자를 허용하기
vi /etc/vsftpd/vsftpd.conf 에
userlist_enable=YES
userlist_deny=NO
이거 추가해주면 아까 위에 설정되있던애들만 통과됨 (user1이 userlist에 만 있기떄문에 가능)
default는 yes yes임
userlist_enable=YES
userlist_deny=YES
root도 통과하게 하려면 ftpusers에서 주석 처리해줘야함
systemctl retart vsftpd 해주고
window에서연결
아니면
userlist_enable=no 하면 되는데 userlist가 아예작동안하는것이기 떄문에 무용지물임 . !!
#vi /etc/pam.d/vsftpd 에서
auth required pam_listfile.so item=user sense=allow file=/etc/vsftpd/ftpusers onerr=succeed
sense에 deny되있던걸 allow로 바꿔주고
vi /etc/vsftpd/ftpusers 에 root 주석처리한걸 풀어주면
root가 로그인가능해짐
추가로 그룹으로도 가능하다!
auth required pam_listfile.so item=group sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
로 group으로 할수있음
그러면
vi groupusers (groupusers 파일만들기)
그리고 안에는 이렇게 작성
그리고 나가서
groupadd korea (korea라는 그룹만들기)
groupadd korea1 (korea1이라는 그룹만들기2)
usermod -G korea user1 (korea그룹에 user1 추가)
이렇게한뒤에 systemctl restart vsftpd 하고 user1 로그인하려고 하면 안댐
(sense가 deny 이니깐)
아직도 헷갈리면
한번 직접 만들어보자
그럼 더 이해되기 쉽다