본문 바로가기
정보보안

정보보안5 8차시

by IT매니절 2024. 8. 25.

지난 수업에서는 DMZ 호스트에 POSTROUNTING을 잘못 넣어줘서 통신이 되지 않았다

DMZ 호스트의 게이트웨이를 NIDS로 설정하고

NIDS 호스트에서만 PREROUTING, POSTROUTING을 설정해주면 된다.

 

  ← NAT를 통해 경유 →  
외부
( VMnet8 )
NIDS
[192.168.100.6/24,
 192.168.100.10/24,
 192.168.100.11/24,
10.10.11.253/24]
( VMnet1 )
DMZ
[10.10.11.10/24]
내부 → 외부 (SNAT) 10.10.11.10 -> 192.168.100.10          POSTROUTING
외부 → 내부 (DNAT) 192.168.100.10 -> 10.10.11.10         PREROUTING
* NIDS에는 VMnet8과 VMnet1 어댑터 두 개가 셋팅되어 있어 외부와 내부를 둘 다 통신, 경유지로 사용된다
* VMnet1, 8은 VM웨어 환경

 

*복습
DNAT (포트 활용 방법)
sudo iptables -t nat -A PREROUTING -i ens160 -p tcp --dport 80  -d 192.168.100.10 -j DNAT --to 10.10.11.10:80
sudo iptables -t nat -A PREROUTING -i ens160 -p tcp --dport 443 -d 192.168.100.10 -j DNAT --to 10.10.11.10:443
SNAT (IP 전체 활용 방법)
sudo iptables -t nat -A POSTROUTING -o ens160 -s 10.10.11.10 -j SNAT --to 192.168.100.10

 

 

실습

10.10.11.11/24 호스트 추가로 만들어 연결하고, 도커(아파치 웹서버 설치) 설치까지 완료하기

 

NIDS 호스트에 규칙 추가

$ sudo iptables -t nat -A PREROUTING -i ens160 -p tcp --dport 80  -d 192.168.100.11 -j DNAT --to 10.10.11.11:80
$ sudo iptables -t nat -A PREROUTING -i ens160 -p tcp --dport 443 -d 192.168.100.11 -j DNAT --to 10.10.11.11:443

$ sudo iptables -t nat -A POSTROUTING -o ens160 -s 10.10.11.11 -j SNAT --to 192.168.100.11

 

DMZ2 에 IP 셋팅을 해주고

방화벽 삭제 sudo dnf -y remove firewalld

 

도커설치

sudo dnf install -y dnf-utils

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo systemctl --now enable docker

 

시행착오

# yum update
created by dnf config-manager from https://down 341  B/s | 388  B     00:01
Errors during downloading metadata for repository 'download.docker.com_linux_centos_docker-ce.repo':
  - Status code: 404 for https://download.docker.com/linux/centos/docker-ce.repo/repodata/repomd.xml (IP: 18.244.61.7)
오류: repo를 위한 메타자료 내려받기에 실패하였습니다 'download.docker.com_linux_centos_docker-ce.repo': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
=> 도커 설치시 에러가 나면서 제대로 설치되지 않았다. yum update해도 마찬가지.

 vi /etc/yum.repos.d/download.docker.com_linux_centos_docker-ce.repo.repo

문제를 일으긴 repo파일을 vi로 열어서 enabled=1을 0으로 변경하고 다시시도하자 해결됨

참고 : http://www.gisdeveloper.co.kr/?p=14186

 

sudo mkdir -p /project/tomcat

docker pull tamcat:latest 를 사용했는데 계속 인증에러... 같은게 나서

docker pull tomcat:9.0 이렇게 버전을 명시해서 땡겨왔다

docker run -d -it -p 8080:8080 -p 443:443 -v /project/tomcat:/usr/local/tomcat/webapps/ROOT/limanet --name tomcat9 tomcat:9.0

 

index.jsp

docker exec -it tomcat9 /bin/bash

도커 run 했다가 삭제했다가 하면서 캐시가 남았을때 삭제
sudo service docker stop
sudo rm /var/lib/docker/network/files/local-kv.db
sudo service docker start

잘못 생성하여 정지시킨 도커 삭제
docker rm 도커id
또는 docker container prune

포트가 이미 사용중일때
# sudo lsof -i -P -n | grep 443
httpd    777       root    6u  IPv6  25989      0t0  TCP *:443 (LISTEN)
httpd    799     apache    6u  IPv6  25989      0t0  TCP *:443 (LISTEN)
httpd    800     apache    6u  IPv6  25989      0t0  TCP *:443 (LISTEN)
httpd    802     apache    6u  IPv6  25989      0t0  TCP *:443 (LISTEN)
# sudo kill -9 799
# sudo kill -9 800
# sudo kill -9 802
# sudo kill -9 777

참고 : https://a-half-human-half-developer.tistory.com/18

 

 

접속

 

 

 

이번엔 톰캣 싹 지우고 아파치 설치 (원래 아파치 설치해야 하는데 톰캣 설치했다)

docker pull httpd

docker run -d -p 80:80 -p 443:443 -v /project/apache:/usr/local/apache2/htdocs --name=apache httpd

 

docker exec -it apache /bin/bash

접속

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/booking.key -out /etc/ssl/certs/booking.crt

ssl 인증서 만들기

 

vi /etc/apache2/sites-enabled/booking.conf

(vi가 없어서 apt-get update 하고 apt-get install vim 로 설치)

 

$ sudo iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
   11   572 DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
    8   480 MASQUERADE  all  --  *      !docker0  172.17.0.0/16        0.0.0.0/0
    0     0 MASQUERADE  tcp  --  *      *       172.17.0.2           172.17.0.2           tcp dpt:443
    0     0 MASQUERADE  tcp  --  *      *       172.17.0.2           172.17.0.2           tcp dpt:80
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
    0     0 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL
Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination 
    0     0 RETURN     all  --  docker0 *       0.0.0.0/0            0.0.0.0/0  
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 to:172.17.0.2:443
    4   208 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:172.17.0.2:80

도커 설치 실행시 iptables에 자동으로 DOCKER 체인이 설정된다

 

+ 오픈소스 도메인 ssl 설치 참고 : https://myvelop.tistory.com/191

+ 참고2 : https://wyj.kr/39

 

https 적용은 강사님이 다음 시간에...

 

 

+ 도커 컨테이너를 자동으로 재시작 하게 하려면 --restart 옵션을 주면 된다고 함

(참고 : https://velog.io/@wlstjdwkd/SSL-docker-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-ssl-%EC%A0%81%EC%9A%A9 )

 

책 추천 : Rocky Linux 8로 Docker 핵심 이해하기

 

--

 

방화벽 추가하기 -I 옵션
-A 옵션은 마지막에 추가되고 -I 옵션은 지정한 룰번호에 추가할 수 있다

 

기존

$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 33395 packets, 110M bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       1.1.1.1              0.0.0.0/0   
    0     0 DROP       all  --  *      *       2.2.2.2              0.0.0.0/0   
    0     0 DROP       all  --  *      *       3.3.3.3              0.0.0.0/0 

$ sudo iptables -I INPUT -s 4.4.4.4 -j DROP

$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 33395 packets, 110M bytes)
 pkts bytes target     prot opt in     out     source               destination 
    0     0 DROP       all  --  *      *       4.4.4.4              0.0.0.0/0   
    0     0 DROP       all  --  *      *       1.1.1.1              0.0.0.0/0   
    0     0 DROP       all  --  *      *       2.2.2.2              0.0.0.0/0   
    0     0 DROP       all  --  *      *       3.3.3.3              0.0.0.0/0 

=> 아무 번호를 지정하지 않았더니 제일 첫 번째로 삽입되었다

 

$ sudo iptables -I INPUT 2 -s 5.5.5.5 -j DROP

$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 33425 packets, 110M bytes)
 pkts bytes target     prot opt in     out     source               destination 
    0     0 DROP       all  --  *      *       4.4.4.4              0.0.0.0/0  
    0     0 DROP       all  --  *      *       5.5.5.5              0.0.0.0/0   
    0     0 DROP       all  --  *      *       1.1.1.1              0.0.0.0/0   
    0     0 DROP       all  --  *      *       2.2.2.2              0.0.0.0/0   
    0     0 DROP       all  --  *      *       3.3.3.3              0.0.0.0/0 

=> 2번으로 지정하자 두번째 자리에 삽입되었음

 

 

방화벽 룰 초기화 하기 -F

$ sudo iptables -F
$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 33568 packets, 110M bytes)
 pkts bytes target     prot opt in     out     source               destination 
Chain FORWARD (policy ACCEPT 163K packets, 1083M bytes)
 pkts bytes target     prot opt in     out     source               destination 
Chain OUTPUT (policy ACCEPT 8610 packets, 482K bytes)
 pkts bytes target     prot opt in     out     source               destination 

=> 모든 룰이 초기화되어 아무것도 등록되지 않았다

 

단, 빌트인체인에 (policy DROP)일 때는 룰을 초기화해선 안된다 (보안위험)

(policy ACCEPT)는 일치하는 룰이 없을 경우 패킷 허용

(policy DROP)는 일치하는 룰이 없을 경우 패킷 차단

 

모두 막고 허용할 것만 허용하는 화이트리스트 정책을 사용하는 경우

룰을 초기화하면 모든 접속을 차단하게 된다

 

$ sudo iptables -P INPUT DROP

=> INPUT 체인을 DROP으로 변경해본다

실습을 위해 putty ssh 연결 환경으로 사용중이었는데, 연결이 끊어졌다

( 룰이 하나도 없을 때 DROP으로 변경하면 연결이 끊어진다고 한다 )

그래서 콘솔로 확인했음 drop 으로 변경된 것이 보인다

ACCEPT로 바꿔줘야 푸티 원격접속 가능하다

 

 

'정보보안' 카테고리의 다른 글

정보보안6 2차시  (0) 2024.09.01
정보보안6 1차시  (0) 2024.08.31
정보보안5 7차시  (0) 2024.08.24
정보보안5 6차시  (0) 2024.08.18
정보보안5 5차시  (0) 2024.08.17