2023. 12. 23. 21:51ㆍInformation Security 정보보안/System Security 시스템 보안
배울 내용:
디렉터리 이동제한
사용자 접근통제
리눅스 방화벽 제한 설정
특정 사용자 접근 통제
vsftpd
FTP-Server
특정 파일(확장자) 업로드제한
특정 파일 숨기기
시스템 Ping 응답 차단
제가 지금 부터 작성하는 모든글은 제가 공부기록용이기 때문에 정확하지 않을수 있음을 알려드립니다.
틀린게 있으면 댓글로 써주시면 고치겠습니다.
오늘은 FTP 서버에
디렉터리 이동 제한을 배워 보자
왜냐면 지난시간보면
이곳에 로그인 하게되면 일반사용자도
루트에 접속할수있기때문이다!
이는 보안으로 보면 굉장한 취약점으로 분명 안전의 문제가 나올것이다.
이번엔 이를 지워보자 그럼
chroot_local_user=YES <- FTP서버
allow_writeable_chroot=YES <- 이건써줘야함 FTP 서버 허용
chroot_local_user=NO 이게 NO면 루트디렉터리까지 다 접근가능함
그래서 자신의 디렉터리로만 쓰게하려면 YES로 해야함
이렇게 바꿔주자.
그런데
그럼 어디서 바꿀수 있을까?
환경 설정 파일에서 바꾸는것이란걸 이제 어느정도
알수있겟다
/etc 가 환경설정파일을 건드는 거니깐 여기서알수있고
ftp 이니깐 vsftpd 인걸알다 그럼 얼추
cd /etc/vsftpd 로 가면
vsftpd.conf 가 있을것다
이건 vsftpd. configuration 이라는 것으로
FPT 서버 환경설정 할수있는걸 유추할수있다.
잘 기억해두자
/etc/vsftpd/vsftpd.conf
이번엔
디렉터리 이동제한하는데
특정 사용자만 상위 디렉터리 이동제한을 해보자
다시 가서
vi /etc/vsftpd/vsftpd.conf
101 chroot_local_user=NO
102 chroot_list_enable=YES
104 chroot_list_file=/etc/vsftpd/chroot_list
이렇게 설정해줌
그리고
systemctl restart vsftpd
그리고 vsftpd 쪽에서 chroot_list 만든뒤에 안에 user1 user2 넣음
그러면
다시 알드라이브로 FTP 서버로 접근하면
user1, user2 만 root 디렉터리로 이동못함 (나머진 계정은됨)
이렇게 막힌다
물론 다른것들은 접속이 되는것을 알수있다.
이번엔 특정사용자를 제한아는게 아니라
특정 사용자만 허용해 보자!
다시 ftp환경설정파일로가서
101 chroot_local_user=YES
102 chroot_list_enable=YES
104 chroot_list_file=/etc/vsftpd/chroot_list
이렇게 local_user 하고 list_enable을 YES 로 바꿔주자
systemctl restart vsftpd
이러면 user1, user2 만 가능함
이번엔 접속을 하더라도
특정 파일( 확장자) 업로드를 제한해보자
이번에도 똑같은 설정파일로 가성
deny_file={*.mp3,*.zip}
이렇게 빈칸을 추가해주자!
이렇게 업로드를하면 확장자가 mp3, zip 인
test.mp3, test.zip 은 뺀 test.txt 만 업로드가 된다
물론 특정 파일 숨기기 도가능하다
이번엔 설정파일에서
hide_file={*.txt}
txt는 모두 가려짐
아 참고로 *은 뭐든지 올수있다는것이다
리눅스를 한사람이거나 배운사람이면 알지만
살짝 설명하자면
파일이 4개가있다고하면
hi.txt
hi2.txxt
hi3.txt
hi4_txt
이 4개중에 *.txt 에 해당하는건
hi.txt
hi3.txt
이것들인걸 알겠지?
이젠 FTP 서버는 내려놓고
시스템 Ping 응답 차단 에 대해서 알아보자
먼저
#cd /proc/sys/net/ipv4
여기로 간뒤에
vi icmp_echo_ignore_all
을 해본다 .
여기엔 0 이라는 것 밖에 없다
참고로 여기에선 수정 이 불가능하다! default 값은 0 이다
0이라면 다른 서버에서 ping 192.168.10.101(서버)
하면
잘되는걸 볼수있다 그러나 이걸 1로 바꾸면
이렇게 설정하고 window에서 로그인시
안되는걸 확인할수있다
이걸 가르치시는 유능하신 강사님이 어떤 보안 IT 회사에 들어갈때 그회사 홈페이지?에
ping 했을때 전송이 되면 거르라던...
쨋든
이건 아까 파일에서는 vi 로 열어서 수정이 불가능하다!
그래서 명령어로 써줘야하는데
echo 0 > icmp_echo_ignore_all -> 명령어로 0을 써줌(응답허용)
이건 허용이고 차단하려면 0을 1로 바꿔주면 된다 .
참고로 자신에게도 ping 테스트 할수있는데
ping localhost
이렇게하면 된다
또다른방법은
sysctl -w net.ipv4.icmp_echo_ignore_all=1
sysctl -w net.ipv4.icmp_echo_ignore_all=0
이렇게 하면댐
(w - write)
그러나
위에방법은 reboot하면 취소 됨
그러면
영구로 적용 하는법을 알아보자
vi /etc/sysctl.conf
앞에#은 없애주고
net.ipv4.icmp_echo_ignore_all=1
이렇게 해주면된다
그러나
이거는 reboot 해야지 적용이됨
참고하도록 ! ㅋㅋ
마지막으로
방화벽에서 차단하는법을 보면
< 연결 차단>
# firewall-cmd --permanent --add-icmp-block=echo-request
# firewall-cmd --permanent --add-icmp-block=echo-reply
# firewall-cmd --reload (적용하기)
이렇게 하면된다 전에 많이쓰던 명령문이라 조금 익숙할것이다
# firewall-cmd --list-all (열려있는 포트보기)
이걸로 확인하고 연결시도하면 차단된걸 볼수있다
그리고 한번 열려있는걸 보면 차단
참고로 허용은 remove 로 바꿔주면된다.
<연결 허용>
# firewall-cmd --permanent --remove-icmp-block=echo-request
# firewall-cmd --permanent --remove-icmp-block=echo-reply
# firewall-cmd --reload
헷갈릴수있는데 이렇게만 생각해보자
앞에선 icmp_echo_ignore_all 에 1 이들어가면
차단이란걸 알수있다
그럼 default 값이 0 이였으니 그떄는 ping 이됐고
1이면 안됐으니 0에서 add (1) 가 되면 차단되고
1을 (remove)로 0으로 만들어주면 된다고 생각하면
어느정도 헷갈림이 사리질것이다.
그럼 20000