wonder
정보보안 스터디 - 8주차 7일 - Email서버 구축, Iptables 방화벽 본문
☞ email 서버 구축
리눅스에도 outlook과 같은 프로그램이 있습니다.
그래픽 기반의 프로그램이며
smtp(25)는 발신이며 pop3(110)는 수신입니다.
암호화 되지 않았으므로 패킷을 캡쳐 후 smtp, pop3 검색을 하면 평문화로 되어
follow tcp stream에 보면 오고간 내용은 물론이고 비밀번호도 확인할 수 있습니다.
그래서 암호화 메일서비스(메일)도 존재합니다.
설치를 해주고
yum -y install sendmail dovecot-server
활성화를 해줍니다.
systemctl enable --now senmail dovecot
systemctl status dovecot
sendmail
도메인, 허락ip 관련 설정을 해줍니다.
sendmail.cf는 주 설정파일이며 여기에 몰아 설정하거나
sendmail.mc 보조 설정파일에 써서 include할 수 있습니다.
local-host-names에 메일서버 DNS를 넣어주고
access에도 dns를 포함하여 허용/차단(relay/reject)할 주소들을 릴레이방식으로 넣어줍니다.
makemap hash access.db < access access.db는 데이터파일이므로 cat으로 확인이 불가합니다. access에 내용을 써서 연결해줍니다. |
string access.db 안에 내용을 확인할 수 있습니다. |
dovecot
사용자 메일 박스 관련 설정
경로지정해줍니다. /var/spool/mail 에 user1 user2
ssl, 암호화기능이 기본설정이지만 테스트를 위해 끕니다.
ps -ef | grep 패키지 netstat -ntpl | grep 패키지 한번씩 프로세스 작동, 리슨상태인지 확인합니다. |
cat /etc/service | grep 서비스 포트번호 확인 |
정식적으로 보내기전에 주고받는지 테스트를 할 수있도록 하는
메일 프로그램을 설치합니다.
mailx user1@wonder.com > 제목, 내용 보내기
su - user1
mailx > 1 > q 메일 확인
클라이언트1, 2에서
evolution을 설치해주고
서버 mail.wonder.com으로 계정을 만든 뒤
이메일 테스트를 진행합니다.
☞ NMAP
포트 스캐닝으로 사용하는 프로그램입니다.
보통 열려있거나 sync를 허용했다면 open으로 탐지됩니다.
원래는 일일이 telnet 등등 되는지 않되는지 손수 확인했지만
더 빠르게 하기 위해 자동화 한 것입니다.
nmap -sS -sV 192.168.2.200 tcp 열려있는 포트를 검색하며 해당 포트의 버전까지 확인이 가능합니다. |
nmap -sU -p 80,443 UDP는 너무 많아 검색이 느리므로 특정포트만 지정해서 확인합니다. |
하지만 누구에게나 본인의 ip를 탐지할 수 있도록 열어준다는 것은 보안상 버전도 노출이 되고 열려있는 포트마다 취약한 곳을 노려 공격을 할 수 있습니다.
정해진 특정사용자 주소 또는 특정서비스를 제외하고는 sync를 허용하지 않도록 차단해야합니다.
☞ iptables
그러기 위해서 만들어진 리눅스의 방화벽입니다.
centos 6버전을 기준으로 이하로는 iptables 를 많이 사용해왔고
centos 7버전 이상은 firewalld 방화벽을 사용합니다.
하지만 이전버전을 사용하는 서비스환경이 아직까지 많기 때문에 알아둬야합니다.
현재 방화벽을 끄고 진행하겠습니다.
원하지않는 설정이 기본설정이 되어있기 때문에
기본설정을 ssh 로 변경해주면 restart했을 때 설정이 유지됩니다.
service iptables save
네트워크 명령어인 access-list와 비슷하게 리스트에 올려두면 순서대로 허용/차단하기 때문에
순서를 잘 맞춰서 등록하도록 합니다.
체인과 룰로 이루어집니다.
체인 유형
INPUT 서버에 들어오는 연결을 차단/허용 FORWARD 통과하는 연결을 차단/허용 OUTPUT 서버에서 만들어져 나가는 연결을 차단/허용 |
룰 유형
ACCEPT 패켓을 허용한다. DROP 패켓을 드랍(차단)한다. REJECT 거부 응답 메세지를 전송하며 패켓을 드랍(차단)한다. LOG 매칭 시 로그를 발생한다. |
일단 먼저 허용할 서비스의 포트를 생각해둡니다.
IP 192.168.2.201/24에 대해서
TCP- http, https/ssl, telnet, ssh, SMTP, POP3(암호화안된) (22,23, 80 443 25,110)
UDP - dns
ICMP
를 허용하겠습니다.
나머지는 차단합니다.
[SERVER2]
iptables -A INPUT -p tcp -s 192.168.2.201/24 -m multiports --dports 22,23,25,80,110,443 -j ACCEPT |
iptables -A INPUT -p udp -s 192.168.2.201/24 --dport 53 -j ACCEPT |
iptables -A INPUT -p icmp -s 192.168.2.201/24 --icmp-type echo-request -j ACCEPT request만 허용합니다. |
iptables -A INPUT -i lo -j ACCEPT 인터페이스 루프백을 허용합니다. |
iptables -m state --state ESTABLISHED,RELATED -p all -j ACCEPT 오는 패킷을 허용하지만 서버에서 요청하는 패킷 설정을 일일이 하기 어려우므로 주는 패킷은 모두 허용합니다. |
iptables -P INPUT DROP public을 모두 차단으로 설정합니다. |
---
[if network]
access-list 110 permit tcp host 192.168.2.201 0.0.0.255 host 192.168.2.199 0.0.0.255 eq 22 access-list 110 permit tcp host 192.168.2.201 0.0.0.255 host 192.168.2.199 0.0.0.255 eq 23 ... access-list 110 permit tcp host 192.168.2.201 0.0.0.255 host 192.168.2.199 0.0.0.255 eq 443 |
access-list 110 permit icmp host 192.168.2.201 0.0.0.255 host 192.168.2.199 |
access-list 110 deny ip any any |
인바운드 아웃바운드 설정까지 합니다.
---
iptables -D INPUT 1 또는 iptables -D INPUT -p tcp -s 192.168.2.201/24 --dport 22 리스트를 삭제합니다. |
iptables -L INPUT -v --line-numbers 라인넘버가 뜨며 자세하게 확인이가능합니다. |
설정이 끝나고 나서 nmap이 통하는지, 실제 주소접속도 해보고, ping telnet 등 서비스가 작동하는지 확인합니다.
'Security > 리눅스' 카테고리의 다른 글
정보보안 스터디 - 9주차 2일 - 리눅스 전체 서버 구성 (0) | 2022.12.10 |
---|---|
정보보안 스터디 - 9주차 1일 - 방화벽 Firewalld 구성 (2) | 2022.12.09 |
정보보안 스터디 - 8주차 6일 - 리눅스 DNS서버 구축 (0) | 2022.12.06 |
정보보안 스터디 - 8주차 5일 - tomcat, JSP (0) | 2022.12.05 |
정보보안 스터디 - 7주차 7일 - httpd 웹서버 구성 (0) | 2022.11.30 |