2022-02-03 · 2분
[기능반] 서버구축 4.
전 토폴로지에서 추가된 점은 router2가 추가된 것과 Vmnet2를 새롭게 만든다는 것, client\_server를 만든 것 입니다. 기존에서 바꿔줘야하는 것은 이전에서 맘대로 했던 도메인 주소를 통일할려고 합니다. 모두 slave-server에서 설정을 합니다!
2022-01-27 · 7분
이 글은 작성된 지 2년이 넘었어요. 내용이 오래됐을 수 있어요.
알아야할 내용 :
더보기
**[기능반공부/네트워크] - [네트워크] NAT에 대해서**](https://nabomhalang.tistory.com/entry/네트워크-NAT에-대해서) [[네트워크] NAT에 대해서 NAT 내부 네트워크에서 외부로 나갈 때 내부 ip 주소를 다른 ip로 변환하여 외부로 나가게 해줍니다. ① NAT Static : 출발지와 목적지의 ip를 미리 매핑하여 고정해논 NAT ② NAT Dynamic : 출발지나 목적 — nabomhalang.tistory.com
Client가 외부서버 : main_srv, slave_srv 로는 통신가능하게, 외부서버가 client과는 통신이 안되게 설정할 것인데 이것을 NAT를 사용할 것 입니다. masqurade라는 기능을 사용할 것 입니다.

vim /etc/sysctl.conf
28번째줄이 net.pv4.ip_forward=1이 주석화 되있을텐데 이것을 #을 지워서 주석을 없애주고 :wq로 나와줍니다.
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ip4.ip_forward = 1
위 2개의 명령어중에 되는걸로 해줍니다.
iptables -A FORWARD -o ens33 -j ACCEPT
iptables -A FORWARD -o ens37 -j ACCEPT
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
ens33(내부) ens37(외부)에서 접속이 가능하게 전부 ACCPET를 해줍니다. 그리고 위 3개의 명령어들을 차례대로 입력해 줍니다. 그러면 이제 Window Client에서 main_server로 핑이 보내집니다.

window Client → main-server
이제 window Client에서 ssh가 접속이 되게 설정할 것 입니다. main-server에서 진행합니다.
apt install openssh-server
sudo systemctl status ssh
install openssh-server로 ssh를 설치해 줍니다.
※ openssh가 설치가 되지 않는다면 ifconfig를 쳐보고 ens33이 꺼져있는지, ens37이 켜져있는지 확인해 봅시다. ens33은 가상네트워크라 패키지 다운받을 때는 꺼져있어야하고 패키지를 받기 위해서는 ens37이 켜져있어야 합니다.
설치 후 두번째 명령어를 입력해서 실행 중인지 확인해 봅시다.

실행 중인 것을 확인할 수 있습니다. 이제 이러면 window client에서 ssh로 접속이 될 것 입니다. main에서 만들었기 때문에 저 같은 경우는 main-server의 hostname이 main이기 때문에 ssh [email protected] 으로 접속이 가능합니다.

window terminal에서 main-server에 접속한 상황
이제 root로 한번에 접속이 가능하게 할겁니다. 혹시 ssh [email protected]으로 될거라고 생각하시면 한번 해보세요. 아마도 안될 것 입니다. 그러면 root로 접속이 가능하게 설정해 봅시다.
※ 만약 Window Client에서 ssh로 접속이 안된다면, main-server에서 22번 포트가 안열려있을 경우가 있을 수 있습니다. 그럴경우 main-server에서 ufw allow ssh 또는 ufw allow 22를 입력해서 포트를 다시 열려 봅시다.

vim /etc/ssh/sshd_config
위의 경로에서 vim으로 들어가서 바꿔주면 됩니다.
Port 22
- ssh가 사용할 기본 포트 지정합니다.
Allowusers user1 root
- 로그인 허락할 계정을 기록합니다.
LoginGraceTime 600
- 유저의 로그인이 성공적으로 이루어지 않았을 때 이 시간 후에 서버가 연결을 끊는 시간입니다.
- 기본값은 600초입니다.
PermitRootLogin no
- root 로그인을 허용여부를 결정하는 것입니다. yes, no, without-password를 사용할 수 있습니다.
PasswordAuthentication yes
- 패스워드 인증을 허용한다. 이 옵션은 프로토콜 버전 1과 2 모두 적용됩니다.
인증할 때 암호기반 인증 방법의 사용 여부를 결정합니다.
강력한 보안을 위해 이옵션은 항상 no로 설정되있어야 합니다.
여기서 루트 로그인을 허용하기 위해서는 PermitRootLogin를 yes로 바꿔주면 ssh [email protected]으로 접속이 가능할 것 입니다. 포트번호도 바꾸고 싶다면 Port 22에서 22를 원하는 포트로 변경해 주면 됩니다. 그럴경우에는 ssh [email protected] -p [포트] 로 접속하면 됩니다.

설정
위의 예시에서는 22000 포트에서 열고 RootLogin를 허용해 주었습니다.

ssh [email protected] -p 22000
위와 같이 root로 잘 접속이 되는 것을 볼 수 있습니다. 이제 apache로 웹 서비스를 해볼 것 입니다.
apt install apache2
위의 명령어를 입력하면 apache2가 설치가 됩니다.
※ 이제부터는 ens33과 ens37 껏다 키고하는 것들은 스스로 하셔야합니다.
아파치가 성공적으로 설치가 되셨으면 window client로 가 인터넷 창을 켜 주시고, main-server의 아이피를 입력해봅시다. 그러면 apache2의 기본적인 사이트 화면이 뜰겁니다. 이제 우리는 기본 탬플릿을 지워주고 "Hello World"를 입력해 봅시다. 그러면 아래와 같은 화면이 나올거에요.

22.1.24.10
잘 나오는 것을 확인할 수 있습니다. 이제 slave-server에는 nginx를 설치해서 아파치에서 설정했던 거와 마찬가지로 설정해주겠습니다.
apt install nginx
vim /var/www/html/index.nginx-debian.html
이것도 설치가 완료가 되면 아파치와 마찬가지로 아이피로 접속이 가능해 집니다.

vim /var/www/html/index.nginx-debian.html
위와 같이 잘 바꿔 주셨으면 다시 window client로 이동해서 이번엔 slave-server의 IP를 인터넷창에 넣어주면 아파치에서 설정했던거와 동일하게 화면에 띄여지는 것을 확인할 수 있습니다.

apache2
apache2는 총 2가지의 파일을 바꿔야합니다. 일단 /var/www/html/ 가 기본 디렉토리인데 이것을 /home/main/server/로 바꿔 봅시다.
vim /etc/apache2/apache2.conf
vim /etc/apache2/sites-available/000-default.conf
위 2파일에서 수정을 해줘야합니다.

vim /etc/apache2/apach2.conf
164줄에 있는 /var/www/html/ 이라 적혀있는 곳을 /home/main/server/ 로 바꿔 줍니다.

vim /etc/apache2/sites-available/000-default.conf
DocumentRoot에 적혀있는 /var/www/html/ 파일을 /home/main/server/ 로 바꿔줍니다. 그 후 /home/main/server 디렉토리 안에 index.html를 작성하여 기본적인 html파일을 만들어 줍니다. 그 후 apache2를 재시작해 줍니다.
systemctl restart apache2
service apache2 restart
둘 중에 하나만 되면 됩니다.

적용 후
적용 후 아주 잘 변경된 것을 볼 수 있습니다.
nginx
nginx는 매우 간단합니다. 단 하나의 파일만 바꿔주면 됩니다.
vim /etc/nginx/sites-enabled/default

vim /etc/nginx/sites-enabled/default
server에서 root에 있는 /var/www/html/ 를 /home/slave-server/server/로 바꿔줍니다. 그 후 재시작하면 정상적으로 작동하는 것을 볼 수 있습니다.

적용 후
테이블(Table)
액션(Action)
체인(Chain)
매치(Match)
타켓(target)
위에 것들을 잘 활용한다면 대부분 모든 정책을 설정하실 수 있을꺼에요 간단하게 문제입니다. 라우터에서 main-server에서 오는 80port를 차단해봅시다. 차단에 성공하면 window client에서 22.1.24.10 아파치 서버로 열었던게 안들어 가지겠죠?
다 하셨나요... 정답을 공개합니다.
iptables -I FORWARD -d 22.1.24.10 -p tcp --dport 80 -j DROP
위 코드를 라우터에 입력해주신 다음 window client에서 22.1.24.10에 접속해 보시면

이제 다시 iptables -F를 입력하신 후에 다시 접속을 해봅시다.

다시 잘 연결되는 모습을 확인할 수 있습니다. 만약 라우터가 아닌 main-server자체에서 80포트를 막고 싶다면
iptables -I INPUT -p tcp --dport 80 -j DROP
과같이 적어주시면 똑같이 window client에서는 접속이 안 됩니다.
오늘은 여기까지입니다.
원문: tistory — 2022-01-27 발행, 이 블로그로 이전됨.
…