ubuntu의 mint os를 사용하였다.
알아야할 개념
1. 인증 방식
명령어
sudo passwd root
# sudo : 관리자 권한으로 실행
# passwd : 계정암호 설정 명령
su root
# root 계정으로 로그인
ubuntu 계열에서는 apt가 패키지 관리자이다.
openssh-server(sshd)는 보통 root 로그인을 허용하지 않는다.
vi /etc/ssh/sshd_config
:set nu를 하고
34번째 줄에
#PermitRootLogin prohibit password -> PermitRootLogin yes로 변경
다시 접속하면 잘된다.
서버 방화벽 설정
[root@web-srv ~]# yum install -y httpd
# 웹서버 설치
[root@web-srv ~]# echo test > /var/www/html/index.html
# 인덱스 파일 생성
[root@web-srv ~]# systemctl enable --now httpd
# 서버 동작
[root@web-srv ~]# curl localhost
test
#웹서버는 기능적으로 잘동작함/ 외부에서 url을 통해 잘 동작함을 확인
[root@web-srv ~]# systemctl restart firewalld
[root@web-srv ~]# curl localhost
test
# 방화벽 이후에도 기능적으로는 문제가 없다 하지만 url을통해 접속은 불가하다.
내부에서 httpd라는 데몬이 동작을 하고 있고, 심지어 80번포트로 서비스(7계층)를 제공하도록 구성되어있지만, 방화벽을 활성화하면 외부에서는 80번 포트로 접근이 불가능하다. 방화벽에 의해 물리적인 포트(4계층)가 막히기 때문.
[root@web-srv ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens32
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
방화벽을 켜도 ssh 접속이 가능한 이유 = 방화벽에서 ssh라는 서비스(7계층)를 허용 해놓은 상태.
여기서 80번포트로 web서비스를 제공하고 싶으면 정책을 추가한다.
[root@web-srv ~]# firewall-cmd --permanent --add-port=80/tcp
# --permanent : 재부팅되어도 정책 유지.
[root@web-srv ~]# firewall-cmd --reload
# 변경사항 반영
[root@tomweb ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens32
sources:
services: dhcpv6-client ssh
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
다시 url을 통해 들어가면 접속이 잘된다.
[root@web-srv ~]# firewall-cmd --permanent --remove-port=80/tcp
# 정책 제거
[root@web-srv ~]# firewall-cmd --reload
FTP 방화벽 구성
20,21 tcp 포트를 사용한다.
[root@web-srv ~]# yum install -y vsftpd
# ftp 설치
[root@web-srv ~]# echo ftp-test > /var/ftp/test.txt
# 간단한 테스트파일을 ftp의 루트디렉토리에 생성.
[root@web-srv ~]# systemctl enable --now vsftpd
#방화벽이 동작중인 상태.
client를 통해 테스트
centos를 통해 vmnet8에두고, IP:211.183.3.110/24 로 설정
[root@client ~]# yum install -y ftp
# ftp 명령이 없는경우 설치
[root@client ~]# ftp 211.183.3.110
ftp: connect: No route to host
#방화벽으로 인해 접근 불가
[root@web-srv ~]# firewall-cmd --permanent --add-port=20/tcp
[root@web-srv ~]# firewall-cmd --permanent --add-port=21/tcp
[root@web-srv ~]# firewall-cmd --reload
# 20,21/tcp를 열고 설정 반영.
# 파일전송에 실패하는 이유? FTP의 경우는 20,21번 이외에 추가적으로 랜덤하게 포트를 할당해서 파일을 송수신한다. 이건 내가 어떤 포트가 열릴지 모르기때문에 어떤 포트를 열어야할지 모름.
# 이런 경우에는 port를 추가하는게 아니라 방화벽에 서비스를 등록
[root@web-srv ~]# firewall-cmd --permanent --remove-port=21/tcp
[root@web-srv ~]# firewall-cmd --permanent --remove-port=20/tcp
[root@web-srv ~]# firewall-cmd --reload
# 서버쪽에서 허용한 포트를 제거하고,
[root@web-srv ~]# firewall-cmd --permanent --add-service=ftp
[root@web-srv ~]# firewall-cmd --reload
# ftp 서비스 추가후 반영.
[root@web-srv ~]# firewall-cmd --list-all
# 그럼 ftp를 통해 test.txt를 가져올수 있다.
표준(standard) - 출발지 주소(IP)만 제어
<1-99> or <1000-1999>
확장(Extended) - 출발지, 목적지 주소 및 포트까지 제어
<100-199> or <2000-2699>
ex) 내가 확장 ACL을 구성하고 싶다면 ‘access-list 100…’으로 시작을 하면 됨
이런식으로, 번호로 ACL을 구분 가능하기도 하고, 번호뿐만 아니라 정책의 이름으로도 구성이 가능하다.

R1#conf t
R1(config)#int f1/0
R1(config-if)#ip add 10.10.1.250 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int f0/0
R1(config-if)#ip add 10.10.10.100 255.255.255.0
R1(config-if)#no sh
R2#conf t
R2(config)#int f0/0
R2(config-if)#ip add 10.10.10.200 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int f0/1
R2(config-if)#ip add 10.10.2.250 255.255.255.0
R2(config-if)#no sh
R2(config-if)#ip route 10.10.1.0 255.255.255.0 10.10.10.100
# R2의 라우팅
R1(config-if)#ip route 10.10.2.0 255.255.255.0 10.10.10.200
# R1의 라우팅
# 10.10.1.0 /24 과 10.10.2.0 /24가 서로 통신이 되는걸 확인.
vm들도 각 대역에 두자!
[root@web-srv ~]# systemctl stop firewalld
# 웹서버의 방화벽을 끄고
실습
표준ACL을 통해 10.10.1.0 /24 대역에 대해 웹접속을 차단하는 정책을 만들고 싶다.
R2(config)#access-list 1 deny 10.10.1.0 0.0.0.255
# 10.10.1.0/24만 차단하고, 다른 대역은 허용하겠다 라면
R2(config)#aceess-list 1 permit 0.0.0.0 255.255.255.255
R2(config-if)#ip access-group 1 in
# access-list 1 을 in 방향으로 반영 시키겠다.
오늘의 수업은 SSH와 ACL을 배웠다 원래 시험 풀이도 하였기때문에 작성할려고 하였으나 시험은 따로 작성하는 것이 좋을 것 같기도 하고 또 다음주에 리눅스 마스터 시험도 있어서 공부를 해야해서 추후에 시간 날 때 되돌아보는 시간으로 풀이를 작성하도록하겠다. 이런걸 이제 적어놔야겠다.